1 How to Start Contributing

gawk development is distributed. It’s done using electronic mail (email) and via branches in the Git repository (or repo) on Savannah, the GNU project’s source code management site.

In this chapter we use some Git terminology. If you’re not at all familiar with Git, then skim this chapter and come back after reading the rest of the Web page.

gawk is similar to many other Free Software projects. To begin contributing, simply start! Take a look at the TODO file in the distribution, see if there is something of interest to you, and ask on the mailing list if anyone else is working on it. If not, then go for it! (See Development Stuff for a discussion of some of the technical things you’ll need to do. Here we describe the process in general.)

Your contribution can be almost anything that is relevant for gawk, such as code fixes, documentation fixes, and/or new features.

NOTE: If possible, new features should be done using gawk’s extension mechanism. If you want to add a user-visible language change to the gawk core, you’re going to have to convince the maintainer and the other developers that it’s really worthwhile to do so.

Changes that improve performance or portability, or that fix bugs, or that enable more things in extensions, will require less convincing, of course.

As you complete a task, submit patches for review to the mailing list, where you’ll be given feedback about your work. Once your changes are acceptable, the maintainer will commit them to the Git repository.

Over time, as the maintainer and development team gain confidence in your ability to contribute, you may be asked to join the private gawk developers’ mailing list, and/or be granted commit access to the Git repository on Savannah. This has happened to more than one person who just “came out of the woodwork.”

Until that happens, or if you don’t want to join the list, you should continue to work with private branches and submission of patches to the mailing list.

Once you have commit access, if you want to make a major change or add a major feature, where the patch(es) would be very large, it has become the practice to create a separate branch, based off of master, to host the feature. This way the maintainer can review it, and you can continue to improve it, until it’s ready for integration into master.

NOTE: Because of the GNU project’s requirements for signed paperwork for contributions, the gawk project will not work with pull requests from GitHub or any other Git-based software hosting service. You must submit patches to the mailing list, and be willing to sign paperwork for large patches (see Assigning Copyrights to the FSF).

The mailing list is not private. Anyone may send mail to it, and anyone may subscribe to it. To subscribe, go to the list’s web page and follow the instructions there. If you plan to be involved long-term with gawk development, then you probably should subscribe to the list.