Aside from some legacy projects in mercurial, all of the code for the Cloud Services team lives in GitHub. There are over a thousand Mozilla-related repositories on there in total, but no over-arching corporate policy on How Mozilla Should Use GitHub, so it can easily get a bit confusing - this document exists to help you make some sense of it all.
It's all guidelines, not actual rules. Do what works, but please review the below as well as the top-level Github info page.
Cloud Services code is spread across two github organisations:
- The generic "mozilla" organization: https://github.com/mozilla
- A specific "mozilla-services" organization: https://github.com/mozilla-services
What code lives in which org is essentially a historical artifact. For new repositories, a simple rough guideline is:
- Projects that are mostly infrastructure-related, or are heavily specific to Mozilla's internal needs, should go in "mozilla-services". Examples include Circus and Heka as well as various puppet configuration repos.
- Projects that will be of more general interest to the Mozilla community, or that are more clearly aligned with Mozilla's mission and brand, should go in "mozilla". Examples include the Persona and Firefox Accounts application servers.
You will not have to look hard to find counter-examples to the above. Don't fret. Just do what you think is sensible.
Teams and Permissions
Access control to repositories in an organization is managed by teams. Please review the Teams Permission Model which is thankfully quite simple.
All Cloud Services Engineers should be members of the following teams:
If you're not a member (and getting a 404 when you visit the team page is a good indication that you're not) please contact an owner (see below) and they can fix it up.
We also have the following project-specific teams. If you're working on these projects, make sure you're in the appropriate team:
Make sure you have two-factor auth enabled on your account. This goes double if you're an Owner.
If you see something, say something. A good example is people who are no longer involved with a project, but are still members of a team.
If you run into an issue, contact an "owner" who has superuser privileges over the org and they'll be happy to sort it out. One of the following folks would be a good starting point:
- Ryan Kelly
- Toby Elliott
Everyone should be able to create a new repo in either org. The "all of cloudservices" teams should be adjusted to enable this.
We should seriously consider a "mozilla-archive" org into which we can move obsolete and unmaintained projects.
Document what we need to know about accepting pull-requests, wrt copyright assignment and licensing and what-not.