Maintainer is the term given to a technical expert of an inner sourced capability who maintains it and helps others.
- They are an expert. Not at ‘being a maintainer’, but at whatever they are maintainer of.
- They are all different, with diverse areas of expertise. But they are all trusted to make few mistakes. That is earned by practice (having previously learnt from making lots of mistakes!).
- The maintainer responsibility is about spending time lending that expertise to other contributors to help them make less mistakes themselves.
- No-one is a full-time maintainer, it is a responsibility within their ‘normal’ role. It is usually recognised to take 10-20% of their working time (e.g. 1-2 days of a 2 week sprint).
The objectives of a maintainer are:
- It remains operationally safe for those who use the capability. New releases do not break existing deployments. Security updates are promptly applied.
- Facilitate contributions, helping to get them merged and released quickly.
- Evangelise capability re-use to solve the problems it is designed for.
- Forward change is sustainable. New experts are mentored to replace maintainers who leave. Technical debt is actively managed.
Since all maintainers have different expertise they will contribute to these objectives in different ways. For example:
How Do You Become a Maintainer?
How new maintainers are nominated and recognised as such should be agreed by the existing maintainer group of an capability. It is usually accompanied by an elevated set of repository privileges to reflected their trusted status (e.g. rights to approve & merge PRs into protected
main or release branches).
There are usually 2 pre-requisites to become a maintainer:
- Trusted not to make many mistakes. It is important to note this does not mean they are expert at everything within their domain! It means they have the knowledge and experience to know when they need to ask others for a 2nd opinion, but enough confidence to advise and progress independently if safe to do so.
- Can contribute their time. Being an expert is not enough to be a maintainer – you must also be realistic about the time commitment required: to align with other maintainers; to understand the different deployment topologies; to advise contributors and review their contributions. This time commitment is usually 10-20% of your working time (e.g. 1-2 days of a 2 week sprint).
How Many Maintainers are Required?
How many maintainers you need will depend on your own context and circumstances, but commonly this is a group of between 4-8.
- Maintainers need to know and trust each other, and align on significant changes – this gets progressively harder as the group gets larger.
- There need to be enough maintainers to share the work required, including times when several maintainers may be out of the office or too focused on a specific deliverable to help others.
- To promote divisional independence a maintainer in each regularly contributing team is desirable
In practice the number of potential candidates with the time, level of expertise and motivation required to act as a maintainer is usually the limiting factor.