What is the general workflow when I want to add a feature to an open source application I didn't originally write? How do I get to know the code? How do I find the spot that needs to be changed or added? How do I actually make the change without breaking anything else? How do I test that everything is still working?What are the general guidelines on such a project?
Modifying an open source application
open source
There's some protocol, everybody more or less desumes it with time, but here it is, unrolled.You download the distributed source.You start navigating the code by yourself a littleIf it's a compiled program, you learn now how to compile it.If you fail compiling it, you report to the author / mailing list and ask directionsIf you don't really understand a thing about the code...Well, no, you don't ask them nigh.You drop that, as you're probably not up to par and cannot be of any real help.You submit a feature if the author(s) accepts feature requests.ElseYou find the spot you want to change.If you wonder about some minor detail, you ask the author / mailing list , and explain your intentions.You cd to the main directory of the distribution (the top one coming out of the untarring/unzipping)You diff -ur . > mypatch.pathYou send mypatch.patch to the author explaining what you did, why you did it, and (as you're already there) you state clearly that you waiver the rights on the patch to them.if the author(s) doesn't like your contributionyou check if there's a way to release your modification as a plugin of some kindin that case, now you're on your way to become a plugin mantainer.elseyou flame about the situation on your blog and release the patch there, free to download and try with your explanation and your rants, you haunt now and then the bug system / mailing list trying to buy support for your patch. Avoid getting banned.in none of these cases you fork the code, as it's a very tiring and unrewarding process you will hardly be able to keep up with time: that will leave users sad and confused. Forks shoud really only happen when a big corporation is trying to bully his decisions on a piece of OSS.elseyou receive further instructions from that author(s)On the side: there is a recent alternative to the diff -ur . patch and is the github way.You fork their code on github under your name,(now you have a copy of their code on your account)connect your git to that personal copy of yours,make your modifications on that, check them in,and tell the main author(s) to look at your github project.If they like it, they will syncronize.  Otherwise, you can link your gitfork on your blog.