I like creating software.
In truth, I like solving problems. I like making annoying problems disappear, especially before people encounter them. I enjoy the realization that a little bit of work on on my part will make the world a little bit cleaner, a little bit simpler, and a little bit nicer.
Sometimes I have to write code to do that.
I have no desire to be a pumpking, however.
What Your Pumpking Does
People like Nicholas Clark and Rafael Garcia-Suarez also love to write code. They love to clean up ugly problems and replace it with elegant solutions. They love efficient code, and tidy code, and bug-free, stable code.
They're a special class of person called a pumpking. In the Perl world, the pumpking has ultimate responsibility for leading and releasing stable versions of Perl. Think of them as Larry's lieutenants.
If you love writing code and solving problems, that sounds great. You won't catch me volunteering, however, because a pumpking must also:
- Manage bugs, including triaging them and fixing the ugly ones no one else wants to fix.
- Manage patches, rejecting them when appropriate, revising them when necessary, and applying them and watching for black smoke when unfortunate. They must also do this in a timely fashion so as not to drive away volunteers.
- Manage volunteers, helping direct their energy and enthusiasm in productive ways while responding quickly enough to take advantage of their available time but not blocking the project on promises they can't quite fulfill.
- Write documentation.
- Manage test reports, identifying when and where a commit caused problems and which commit might fix them.
- Understand various portability concerns, not just of Perl code but of core code, across operating systems of expanding lineages and hardware platforms but compiler and library support.
- Uphold the implicit support and deprecation policy, even in the face of often competing goals for features and bugfixes.
- Communicate the direction of the project through development to stabilization and release and support even to handoff to another pumpking.
- Understand the long term maintainability concerns of proposed features, existing code, and development policies.
- Liase with the maintainers of core modules, especially when a release is imminent and full release stability and behavior is important.
- Keep Perl perlish.
Sometimes they get to write code.
Nothing but Praise
I've written critically about the existing Perl 5 development process here, and I expect to do so in the future. I want to be very clear about one fact, however.
I have nothing but respect for anyone who voluntarily does the job of a pumpking. It is a difficult, thankless position. It requires someone with an amazing attention to detail and a superhuman ability to manage a lot of fiddly, underappreciated work.
Past, present, and future pumpkings deserve our praise and support and thanks.
I'm critical of the process by which we develop Perl. I have no intention to criticize the people who develop Perl, and I offer my most sincere apologies and appreciation to everyone who's felt criticized or attacked or slighted.
Now how do we make the job of a pumpking easier?