[Pattern Draft] Maintainer Apprentice
jmeridth opened this issue · 4 comments
Title
Maintainer Apprentice
Patlet / Summary
A user wants to work their way into becoming an Approver/Maintainer on an InnerSource repository while being given enough permissions to prove their contributions.
Problem
Sometimes a repository may want to "onboard" maintainers without giving them full write access. This means they are added to a repository to provide content/changes and able to "approve" other changes but not merge them. This could be a form of onboarding or internship on the way to approver or maintainer roles.
Context
...our idea with the lower section of the CODEOWNERS file was, that those folks doing the translation work might sort of be "maintainer apprentice", and through their involvement in the project become maintainers eventually
In this particular situation the user was in the CODEOWNERS file but did not have write permissions on the repository. This caused GitHub to label the CODEOWNERS file as having errors.
Forces
What could make this problem difficult?
- the permissions structure in the organization or repository is not present to solve this
Tradeoff(s):
- Knowing a "maintainer apprentice" is given enough permissions to contribute and approve but not merge changes.
Solutions
Any of the following:
- Make sure all reviewers/approvers/maintainers of repositories have write permissions
- Accepting that not all reviewers/approvers/maintainers of repositories have write permissions until earned
- Custom repository or organization roles (if the software allows it) (e.g, Custom Repository Roles)
Resulting Context
What is the situation after the problem has been solved?
The original context is changed indirectly by way of the solution.
Often this section can include discussion of the next possible Patterns/problems introduced.
This section can be short in content - the solution may not introduce new problems or change much context.
Known Instances (optional)
Status
Initial
Author(s) (optional)
Closing due to no interaction
Hi Jason.
I noticed you closed this pattern draft due to inactivity.
Had two reactions to it:
- kind of cool - in terms of cleaning up things in GitHub (I don't always do myself when opening issues/PRs)
- kind of sad - as you got no reaction from anybody, other than me in discussions that happened before opening the PR
Activity in our patterns community varies quite a bit at different times.
Also it seems like some people only engage via Slack, others only via GitHub.
Lastly, some conversions need to be started and restarted multiple times until something interesting happens :)
Therefore I will try to post this topic one more time in Slack, to see if anybody engages.
Some more thoughts on this:
- In our patterns repo we used the "maintainer apprentice" idea only for people that were contributing to the translations of our patterns. You could argue that this is almost a "side project" i.e. there is (a) the creating of new patterns in English, and (b) the translation of the existing patterns to other languages.
- We don't really have proof that the path of leveling up those "maintainer apprentices" into full "maintainers" through this process.
- While our patterns repo is open source (not InnerSource), we believe that mostly the same effects apply in this area. If at all, we hope it might be easier in a corporate context to level up people to truster committer / maintainer more quickly then in open source, as you have more established relationships with them already
Within Dojo from SAP we leverage the concept of Senpai. This person effectively becomes a Sensei apprentice (our Sensei are project admins). They gain write access to the repository and take on some responsibilities within GitHub and the social community at large.
We have our Sensei and Senapi in GitHub teams.
The high level approach is described in the blog article below:
Before they could become a Senpai they have to have made their green level demonstration through a belt claim (captured as a GitHub pull request). This is not so easy to do and acts as a filter.
I believe this qualifies as a known instance for SAP. @dellagustin, would you know of other known instances at SAP?