Github Management
Status: Complete
Background
As members of the XMTP Labs team, we have a need to coordinate and communicate around the work that we're doing day-to-day. Likewise, there is documentation that we rely on that's applicable to our individual teams, but also has the potential to be applicable to the team more broadly.
Github is an open-ended solution with many possibilities on how to communicate and coordinate around work and documentation and we need to pick a path.
Problem
As we begin to work within Github exclusively as our task/product/project management solution, we must decide to go with multirepos for team and/or project or a monorepo.
Use cases
- Use Github Issues for general task, product, and project management with XMTP
- Issue management has the potential of being more challenging for cross-functional work
- Or requiring that people must visit many repos to understand all of their work
- Issue management has the potential of being more challenging for cross-functional work
- Use a team folders as a destination for durable documentation and record of decision-making
- Keeping a handbook for the entire team in one repo
- Have a /handbook/ folder in each team's folder, as well as a general /handbook/ directory for non-team documentation, with a shared index README that acts as a unified directory for all teams
Goals
- Provide a source of truth for the team
- For high-level project planning, a shared handbook, and likely non-engineering-related issues
- Have a reliable place for cross-functional work to get done
- Enable "ambient awareness" among the team
- Writing things into a monorepo simplifies discovery of things being done amongst the whole team
- Enable institutional knowledge within the team
- By capturing as much into Github as makes sense, we preserve a history of our decisionmaking and current state for benefit of the whole team'
- It's especially relelvant for new team members
- By capturing as much into Github as makes sense, we preserve a history of our decisionmaking and current state for benefit of the whole team'
Non-goals
- Accounting for issues/pull requests in repositories that require outside contribution
- These will need to continue being in their own repository
- Requiring all issues & PRs to go into this monorepo
- It's likely that most of engineering-related work will be done in other repos, and therefore expected related issues and PRs will remain with those repos.
Solution
- Use a monorepo for team documentation and work coordination
- Set up a robust
CODEOWNERSfile to ensure that the review process is streamlined and reduces noise
Plan
Questions
- How do keep the notification noise down and ensure notifications which don't bear relevance to a team member will be kept to a minimum?
- How can we configure CODEOWNERS to most effectively manage the monorepo?
- What negatives about code monorepos persist in monorepos more focused around documentation?