I’ve been recently approached by a user looking for advice:
“I’ve never contributed to an open source project before, so what’s the procedure for contributing. Should I share a patch with some others to test before committing? Now that I have a fix, I don’t know what to do with it!”
Have a Look Around.
Welcome to the world of open source. Every open source project has their own way of working and some are more formal than others. You want to find your way around. For Hugin, I have formalized a community charter a while ago. Observe how the project works and ask on the public communication channels how to contribute.
Make it Relevant, Persistent, Known.
For your contribution to be successful, you want to make it relevant, persistent, and known.
Relevance is context. The context of your contribution is most likely the project’s codebase. Make sure your contribution relates to a recent version of the code, and that it can be easily shared and applied. In our case, assuming that you have the project’s Mercurial repository on your hard drive, make sure that your modifications are relevant to the most recent version of the code base and produce a standardized patch that is easy to apply:
hg pull hg up default hg diff > bugfix.patch
Next, find out what the project uses to track issues. Issue trackers are used for persistence. Hugin’s issue tracker is on Launchpad. Whether your patch fixes a bug or adds a new feature, make sure that it is in the issue tracker. If the bug is already known, add your patch to the existing bug report. If it is new, file a new ticket.
Last but not least, make your contribution known. Introduce yourself into the project’s communication channels and make the public aware of your tracker entry. The ball is now in the project’s camp.
Now it is time to receive feedback. Your contribution will be peer-reviewed. Chances are that you will get some. Senior code contributors may comment on your coding style or on the details of the implementation. Bleeding-edge users may integrate your contribution into their self-built binaries and report test results. Your contribution has taken the path toward integration and you have become a contributor. Don’t forget to add yourself to the author’s list. Thank you for helping make Hugin better.