Open source software is one of the classic concepts in the field of software development and computer science in general. The best part of this way of software development is freedom to have your own version of anything that you like, we can start developing any of our favorite applications and this development can start at the very moment when we determine to do. And this development will teach us things that most of the classrooms or several of the books can't teach. Of course there are several other bonus profits like many of the open source softwares giving freedom in terms of money also. And another awesome thing is the ultimate community support that any interested guy would get.
But its very sickening to know that such a beautiful concept is not properly known by a majority of my fellow classmates and other students of my college. The first and probably the only thing that comes to mind when FOSS is mentioned is that the software or the application is freely available for download. The development and learning part is no where in sight. In many cases having a version/flavor of Linux Installed and running it is a big thing. Running it very often for non-programming things like listening to songs or watching videos or movies is really a godly thing. But those very few who do that know the fun and the simplicity involved.
Anyways that apart, there are some greener patches also. There are many intelligent people out here who have understood the basics pretty well and are very much capable of doing a proper software development. But unfortunately they do not know the ways to contribute thought they want to. Most of the open source applications have massive code bases and freshers generally get lost into that and eventually lose interest when they are unable to figure out ways. And this blog post tries to address this issue. I recently got into open source development and I hope to continue forever. Now I will try and put in ways to get started based on what I have tried and understood. So here it is, The path for new open source developers.
If you want to do proper software development then either you can develop your own application right from scratch or get involved with one of the several wonderful applications already being developed.
The first one is pretty difficult. Many a times people start with development of new applications but fail due to lack of support. An application built by a single person does not become a really useful application. I have myself seen several NEW Open source stopping at pre v1.0 and just hanging at a point where it is not really useful. This happens with most of the new projects unless its a totally revolutionary idea, in which case you will get a good community following and eventually good developers also. But that is a total different ball game. Here I would like to talk about the second case - Getting involved with one of the several big things already going on in the OSS community.
There are a lot of stable open source communities with you which you can start your work. One good place to look for the list of such communities is the Google Summer of Code homepage. Once you start exploring you will surely find many more. Now the steps to poke your nose:
1) Get used to the application first. Use the application and explore the various things that it provides.
2) Familiarize yourself with the community. Generally they have a dedicated IRC channel on Freenode network. (Check out my other blog entry for using IRC). Go and hang around in that channel. Or find out if they have got a mailing list and if yes then subscribe for that. Look at the forums. Interact there. Watch out for the people and the discussions that go on. Ask sensible doubts at times. Make yourself identified in the community.
3)Along with this ask those people for resources to get to know more about the application. Use those resources appropriately and understand the working of the application.
4) Look at the bugs and the feature request listing for the application. (Popular applications will have plenty of both). Try and learn more about the issues causing the bugs or lack of a particular feature.
5) The best place to start actually contributing is probably bug fixing. Because not all can start with major feature additions and all that stuff. Bug fixing will narrow down your problem to a very specific thing and hence as a fresher you will not be scared at the various things associated which you encounter when doing feature addition.
6) Once you start your work with bug fixing you will understand a lot of intricate details of the application and also get excited at the amazing things. You will meet the core developers (whom you probably had just heard about or the pictures of whom were printed in a technical magazine.. cool.. ah).
There you are, An Open source contributor. You have formally started developing applications.
After the bug fixes you will be well known in the community and developers will probably start delegating work to you. If not you can probe them and offer to work on something that they need. And it will go on.
All along this PERSISTENCE is the only challenging thing. Never ever lose hope and never ever be afraid of starting. Your mistakes are not going to cost you much. So just get in, but with appropriate tools and attitude. Because the incompetent can't have a place and those lacking passion are not given a place.
Thats the end of the story and the theory part. Get to the practicals and give back something to the open source community which has given you and the world so many things.