Guidelines For Package Maintainership
Last updated at 12:00 pm UTC on 17 January 2006
In the past we've found that without maintainers for the core Squeak packages, the community suffers from a "dilution of responsibility" effect. Nobody feels the responsibility for maintaining those packages, nor does anyone feel empowered to change them. In the interest of enabling our community to evolve these core packages, we need to assign maintainers to these core packages (in much the same way that packages on SqueakMap have maintainers). We've observed that maintainership works for packages registered on SqueakMap and we want to apply that success to the core packages in Squeak.
Responsibilities of a Maintainer
The only responsibility that a maintainer has is to ensure that the needs of the community with respect to his/her package are being addressed. That can mean that the package maintainer is actively developing their package, or it could mean that the maintainer is simply acting as an overseer, making sure that contributions to the package (bug fixes, enhancements, etc) are getting reviewed, tested, and incorporated. The maintainer might simply delegate all of these tasks to others, but it is the responsibility of the maintainer to make sure these tasks are accomplished. Finally, a maintainer should relinquish his role if he is unable to satisfy the needs of the community.
Here are some typical things that the community will need:
- Bug tracking
- Incorporation of bug fixes
- Incorporation of enhancements
Delegating Maintainer Responsibilities (co-maintainers)
We encourage package maintainers to delegate tasks to others. The maintainer may even choose to designate certain "co-maintainers" that will frequently take on the responsibilities of package maintainership. It is the sole decision of a package maintainer to designate "co-maintainers." Delegating responsibilities has serveral benefits:
- it engages others in the activities of a maintainer
- it reduces the work load of the maintainer
- it reduces the community's reliance on a single person
We expect that there will be times when a maintainer is not fulfilling his/her responsibility to the community. Here are some guidelines to follow when these situations arise.
When you are the underperforming maintainer:
- If you simply do not have the time to continue the role of maintainer, be respectful of the needs of the community and consider yielding your maintainership to someone else who does have the time.
When someone else is the underperforming maintainer:
- Remind the maintainer of what needs to be done, hopefully this will be enough to get him back on track.
- Offer your assistance to the maintainer and suggest that he delegate some of the work to you.
Involuntary Removal of a Maintainer
In rare cases, it may be necessary to remove a maintainer involuntarily. This procedure is called "involuntary removal" and should be an absolute last resort. Furthermore, it is a goal of the community never to invoke this procedure. If the community is frustrated with the performance of a maintainer, and all attempts to encourage that maintainer to better serve the community have failed, the community can follow these steps to remove the maintainer:
- One or more persons may petition the Guides to have a maintainer removed...this is called a "petition for involuntary removal".
- The Guides should then address the matter with the maintainer.
- If the Guides feel that the maintainer is not performing and will not correct the situation himself, the Guides may choose a new maintainer at their sole discretion (it is their discretion whether or not to remove the maintainer, and to choose a replacement).