This guide is for project maintainers to help manage contributions effectively while maintaining project quality and vision.
1. Initial Triage (within 24-48 hours)
-
Add appropriate labels:
bug,enhancement,documentation, etc.good first issuefor beginner-friendly tasksneeds-triageuntil reviewedhelp wantedif you'd welcome community contributions
-
Quick assessment:
- Is it clear and well-described?
- Is it aligned with project vision? (See DESIGN_PRINCIPLES.md)
- Does it duplicate an existing issue?
2. Initial Response
Thanks for opening this issue! We'll review it and get back to you soon.
[If it's a bug] In the meantime, have you checked our [troubleshooting guide](docs/troubleshooting/index.md)?
[If it's a feature] You might find our [design principles](DESIGN_PRINCIPLES.md) helpful for understanding what we're building toward.3. Decision Making
Ask yourself:
- Does this align with our design principles?
- Is this something we want in the core project, or better as a plugin/extension?
- Do we have the capacity to support this feature long-term?
- Will this benefit most users, or just a specific use case?
4. Issue Assignment
If the contributor checked "I am a developer and would like to work on this":
For Accepted Issues:
Great idea! This aligns well with our goals, particularly [specific design principle].
I see you'd like to work on this. Before you start:
1. Please share your proposed approach/solution
2. Review our [Contributing Guide](CONTRIBUTING.md) and [Design Principles](DESIGN_PRINCIPLES.md)
3. Once we agree on the approach, I'll assign this to you
Looking forward to your thoughts!For Issues Needing Clarification:
Thanks for offering to work on this! Before we proceed, we need to clarify a few things:
1. [Question 1]
2. [Question 2]
Once we have these details, we can discuss the best approach.For Issues Not Aligned with Vision:
Thank you for the suggestion and for offering to work on this!
After reviewing against our [design principles](DESIGN_PRINCIPLES.md), we've decided not to pursue this in the core project because [specific reason].
However, you might be able to achieve this through [alternative approach, if applicable].
We appreciate your interest in contributing! Feel free to check out our [open issues](link) for other ways to contribute.Priority:
priority: critical- Security issues, data loss bugspriority: high- Major functionality brokenpriority: medium- Annoying bugs, useful featurespriority: low- Nice to have, edge cases
Status:
needs-triage- Not yet reviewed by maintainerneeds-info- Waiting for more information from reporterneeds-discussion- Requires community/team discussionready- Approved and ready to be worked onin-progress- Someone is actively working on thisblocked- Cannot proceed due to external dependency
Type:
bug- Something is brokenenhancement- New feature or improvementdocumentation- Documentation improvementsquestion- General questionsrefactor- Code cleanup/restructuring
Difficulty:
good first issue- Good for newcomershelp wanted- Community contributions welcomeadvanced- Requires deep codebase knowledge
Before diving into code:
- Is there an associated approved issue?
- Does the PR reference the issue number?
- Is the PR description clear about what changed and why?
- Did the contributor check the relevant boxes in the PR template?
- Are there tests? Screenshots (for UI changes)?
Red Flags (may require closing PR):
- No associated issue
- Issue was not assigned to contributor
- PR tries to solve multiple unrelated problems
- Breaking changes without discussion
- Conflicts with project vision
1. High-Level Review
- Does the approach align with our architecture?
- Is the solution appropriately scoped?
- Are there simpler alternatives?
- Does it follow our design principles?
2. Code Quality Review
Python:
- Follows PEP 8
- Has type hints
- Has docstrings
- Proper error handling
- No security vulnerabilities
TypeScript/Frontend:
- Follows TypeScript best practices
- Proper component structure
- No console.logs left in production code
- Accessible UI components
3. Testing Review
- Has appropriate test coverage
- Tests are meaningful (not just for coverage percentage)
- Tests pass locally and in CI
- Edge cases are tested
4. Documentation Review
- Code is well-commented
- Complex logic is explained
- User-facing documentation updated (if applicable)
- API documentation updated (if API changed)
- Migration guide provided (if breaking change)
Positive Feedback (important!):
Thanks for this PR! I really like [specific thing they did well].
[Feedback on what needs to change]Requesting Changes:
This is a great start! A few things to address:
1. **[High-level concern]**: [Explanation and suggested approach]
2. **[Code quality issue]**: [Specific example and fix]
3. **[Testing gap]**: [What scenarios need coverage]
Let me know if you have questions about any of this!Suggesting Alternative Approach:
I appreciate the effort you put into this! However, I'm concerned about [specific issue].
Have you considered [alternative approach]? It might be better because [reasons].
What do you think?Situation: Contributor wrote quality code, but solved the problem in a way that doesn't fit our architecture.
Response:
Thank you for this PR! The code quality is great, and I can see you put thought into this.
However, I'm concerned that this approach [specific architectural concern]. In our architecture, we [explain the pattern we follow].
Would you be open to refactoring this to [suggested approach]? I'm happy to provide guidance on the specifics.
Alternatively, if you don't have time for a refactor, I can take over and finish this up (with credit to you, of course).
Let me know what you prefer!Situation: Contributor submitted PR without going through issue approval process.
Response:
Thanks for the PR! I appreciate you taking the time to contribute.
However, to maintain project coherence, we require all PRs to be linked to an approved issue that was assigned to the contributor. This is explained in our [Contributing Guide](CONTRIBUTING.md).
This helps us:
- Ensure work aligns with project vision
- Prevent duplicate efforts
- Discuss approach before implementation
Could you please:
1. Create an issue describing this change
2. Wait for it to be reviewed and assigned to you
3. We can then reopen this PR or you can create a new one
Sorry for the inconvenience - this process helps us manage the project effectively.Situation: Well-intentioned feature that doesn't fit project goals.
Response:
Thank you for this suggestion! I can see how this would be useful for [specific use case].
After reviewing against our [design principles](DESIGN_PRINCIPLES.md), we've decided not to include this in the core project because [specific reason - e.g., "it conflicts with our 'Simplicity Over Features' principle" or "it would require dependencies that conflict with our privacy-first approach"].
Some alternatives:
- [If applicable] This could be built as a plugin/extension
- [If applicable] This functionality might be achievable through [existing feature]
- [If applicable] You might be interested in [other tool] which is designed for this use case
We appreciate your contribution and hope you understand. Feel free to check our [roadmap](link) or [open issues](link) for other ways to contribute!Situation: You requested changes, but contributor hasn't responded in 2+ weeks.
After 2 weeks:
Hey there! Just checking in on this PR. Do you have time to address the feedback, or would you like someone else to take over?
No pressure either way - just want to make sure this doesn't fall through the cracks.After 1 month with no response:
Thanks again for starting this work! Since we haven't heard back, I'm going to close this PR for now.
If you want to pick this up again in the future, feel free to reopen it or create a new PR. Alternatively, I'll mark the issue as available for someone else to work on.
We appreciate your contribution!Then:
- Close the PR
- Unassign the issue
- Add
help wantedlabel to the issue
Situation: PR introduces breaking changes that weren't discussed.
Response:
Thanks for this PR! However, I notice this introduces breaking changes that weren't discussed in the original issue.
Breaking changes require:
1. Prior discussion and approval
2. Migration guide for users
3. Deprecation period (when possible)
4. Clear documentation of the change
Could we discuss the breaking changes first? Specifically:
- [What breaks and why]
- [Who will be affected]
- [Migration path]
We may need to adjust the approach to minimize impact on existing users.Thank you for taking the time to contribute! We really appreciate it.
After careful review, we've decided not to merge this PR because [specific reason related to design principles].
This isn't a reflection on your code quality - it's about maintaining focus on our core goals as outlined in [DESIGN_PRINCIPLES.md](DESIGN_PRINCIPLES.md).
We'd love to have you contribute in other ways! Check out:
- [Good first issues](link)
- [Help wanted issues](link)
- Our [roadmap](link)
Thanks again for your interest in Open Notebook!We're closing this issue due to inactivity. If this is still relevant, feel free to reopen it with updated information.
Thanks!Thanks for reporting this! To help us investigate, could you provide:
1. [Specific information needed]
2. [Logs, screenshots, etc.]
3. [Steps to reproduce]
This will help us understand the issue better and find a solution.Merged! 🎉
Thank you so much for this contribution, @username! [Specific thing they did well].
This will be included in the next release.- Thank contributors for their time and effort
- Assume good intentions
- Be patient with newcomers
- Explain why, not just what
- Don't leave ambiguity about next steps
- Be specific about what needs to change
- Explain architectural decisions
- Set clear expectations
- Apply the same standards to all contributors
- Follow the process you've defined
- Document decisions for future reference
- It's okay to say "no"
- Prioritize long-term maintainability
- Don't accept features you can't support
- Keep the project focused
- Respond to issues within 48 hours (even just to acknowledge)
- Review PRs within a week when possible
- Keep contributors updated on status
- Close stale issues/PRs to keep things tidy
Ask yourself:
- Does this align with our design principles?
- Will we be able to maintain this feature long-term?
- Does this benefit most users, or just an edge case?
- Is there a simpler alternative?
- Would I want to support this in 2 years?
If you're unsure, it's perfectly fine to:
- Ask for input from other maintainers
- Start a discussion issue
- Sleep on it before making a decision
Remember: Good maintainership is about balancing openness to contributions with protection of project vision. You're not being mean by saying "no" to things that don't fit - you're being a responsible steward of the project.