Tips for new GNU maintainers
If you are new to maintaining a GNU package, whether one that you have offered to GNU or an existing one that you have adopted, it can be overwhelming to know where to start. The official email notice you received when you became a GNU maintainer has lots of details; this document is not a replacement for that email, but rather a complement, aiming to provide some tips on getting started.
Of course, what's listed here just skims the surface of GNU maintainership. Please be sure to read the GNU Maintainers Guide and the GNU Coding Standards. Indeed, you should have read them already, but they are densely enough written that careful re-readings are useful. In addition, a few experienced GNU contributors have volunteered to answer questions about GNU maintenance via <mentors@gnu.org> as well as <maintainers@gnu.org>.
First steps for new maintainers
These tasks are listed in order of priority. The labels ([All], [New], and [Adopted]) indicate the category of packages each task mostly applies to.
- [All] Update project information on
Savannah. Go to your project page
(
https://sv.gnu.org/projects/PKG
, where PKG is the name of your package), log in with your Savannah ID, and check under “Update public info” in the “Main” menu. Here, you should set the project's full name and, if needed, write both a short and a long description for it (please also send those descriptions to <maintainers@gnu.org> for use in the lists of all GNU packages). You should also set its development status to reflect the maturity of the code. It is essential to do this if you have adopted a package, since it will be marked as “Orphan”. - [All] Turn to the mailing lists. If you have a new GNU package, you should set up at least one mailing list for the package (“Select features” in the Main menu). It is strongly recommended to have one called <bug-PKG@gnu.org>; others can wait until traffic warrants. If you have adopted an existing package, send an email introducing yourself. Finally, whether lists are newly created or already existing, don't forget to subscribe yourself, as this is not automatically done. (About dealing with mail.)
- [New] Set up a repository for your source code (“Select features” in the Main menu), and import whatever is available (look up the procedures under “Source Code Manager” in the Development Tools section). Experience has shown that self-hosting is unreliable. (About back-up files.)
- [New] Upload your package to the GNU FTP site if it is ready for public release. (About the upload procedure.)
- [New] Create a GNU home page, to replace
the
PKG.html
file that webmasters have placed in your web repo (keep the same name). If you want to make this quick and easy, use our standard template. Comment out the irrelevant parts, such as Downloading and Documentation if the project has barely started; you'll complete them later on. Also put any documentation you already have in a subdirectory called “manual”. (About web pages.) - [Adopted] Check for existing bug reports if you have adopted an existing package. These may be on any or all of a Savannah bug tracker, a mailing list (mbox archives can be downloaded by HTTPS), or the GNU debbugs server. (About replying to bug reports.)
- [Adopted] Contact distro packagers. If you have adopted an existing package and it is available in downstream distros, get in contact with the packagers. It is likely that they have unresolved bug reports to be addressed, and perhaps even patches that should be applied. You may also like to get involved with the GNU Guix package manager. (About distros.)
- [Adopted] Use the software. It should go without saying that if you have adopted a GNU package, you should use it to get a feel for its current status and to discover what might need to be fixed.
- [All] Pick some tasks and start hacking! There's no substitute for spending time doing the actual work.
General tips on maintaining GNU software
- Aim for a quick first release. Whether your package is new or you've adopted an older one, your number one priority should be making a first release as soon as possible. If you've adopted a package, it's sufficient to fix a few bugs and push that out. In fact, just updating the infrastructure files (e.g., Autoconf/Automake, gnulib modules, etc.) is enough to justify a new release when you've first taken over a package. If your package is new, don't be afraid to put out an early version that is not yet feature complete. In any case, a release (with proper announcements) will draw attention to your package in the form of potential users or even other developers. It is the best way to let people know that an old package has been revived or that a new package exists at all. (About making releases.)
- Focus on fixing outstanding bugs first. This is an excellent way to start learning a new codebase, and get a feel for how the system works. Besides, new features shouldn't be given much focus if notable problems already exist. (About resources for GNU developers.)
- Don't try to rewrite the entire thing. If you've adopted a package, we strongly recommend that you not set out to rewrite the whole program from scratch. While always tempting, and an easy thing to start, completing it successfully requires a colossal effort, and experience has shown that it is an almost sure-fire way to become demotivated and lead to eventual (re-)stagnation of the project. Instead, focus on incremental improvements. Once you've become intimately familiar with the package, you will be in a better position to consider more radical changes.
- You're in charge! As a maintainer, you look after a package as part of the overall GNU project. GNU depends on you to take care of legal matters, make new releases, keep the web pages updated, reply to bug reports and otherwise communicate with users, handle patches appropriately, and all else. This is your privilege and your responsibility. Please help us maintain an active and stable collection of software. If you have questions or run into problems, do not hesitate to get in touch via <maintainers@gnu.org>. (About recruiting developers.)
- Get involved. GNU consists entirely of volunteers and your participation in the organization is what you make of it! As a maintainer, the communication received from us (read: pestering) will be low-volume. Being active within GNU is a great way to increase your contact and exposure to other like-minded volunteers. If you find an aspect of GNU in which you would like to be involved, there is almost certainly room for contribution. (About helping GNU and free software.)
To conclude this list with one final reiteration: the information and links above are just a sampling. Please refer to and (re)read the full GNU Maintainer Information and GNU Coding Standards documents for plenty more.
GNU Philosophy
This also seems like an appropriate page on which to give some links to the basic ideas of GNU and free software: