Benefits in contributing to Open Source
What the benefit will i get, if i contribute to Open Source? This is the frequently asked question by many people. I just want to pen down the benefits which i know and i hope you will agree with it.
Open Source is free to use and very few successful project owners are paid well. Remaining others are struggling for a sponsor, but still as a project owner, they know how to survive and move ahead. They know they have to face lot of difficulties to make their project successful and useful to others.
Now, You may ask, Even the project owners are struggling, What benefit will i get in contributing to a project? Below are few.
Practical knowledge:
In college, we learn mostly theory. What we learn in college and what we work is totally different. There is a huge gap between college and industry. If you contribute to Open Source project by spending time in reading the code, Try to understand how they have written , Try to fix a bug or add additional feature. During the course of the work, you will learn a lot. Say for example, If you pick a Content Management System (CMS), you will learn about archiving, searching and lot more.
Certificate / Acknowledgement of work:
By contributing, you may request for a Certificate or Acknowledgement for your work. Project owner are obliged to do that. If you contribute regularly then they will list your name in their contributors list and provide a link to your profile page. You could request for a recommendation from project owner, from your Linked in user account. This will increase your chance of getting selected in other companies. Your resume will be easily picked up by the consultants.
Money / Perks:
Well funded open source projects may pay you for your contribution. Few may give out some perks / gifts like T-shirt, Mugs etc to motivate the contributors.
Identity / Recognition:
If you regularly contribute, you will get identified / recognized within the project community, user group and mailing lists. You could answer the queries raised in the forum. You will get an identity.
Consulting:
I know, two of the people here in Bangalore work for full time in an open source project. They do work from home and their parent company is in US. They are paid in dollars and it is big money. Open Source project might have started in a country but it require presence in every other country / state / city. You could take initiative in bringing up the community. You could provide consulting for the project in your place. If you get an identity, people will have faith in you.
Give back to the society:
We accumulate wealth for our need but some times it is pleasure to give some money back to social cause. Similarly it is good to share our knowledge for others by contributing to open sorce projects.
I hope this article may motivate you guys to start contributing. Just check out our previous article, how to contribute to Open Source.
How to learn from open source projects
Consider a java programmer wants to access database via ORM tools like Hibernate. In this case pick any open source projects which use database. The choice could be content management system or forum software. Among that pick Java projects and see which all use Hibernate to connect to database. Shortlist one or two and download their source. Search the source for hibernate related keywords. Most of the projects are object oriented and only one or two class will be responsible to access it to the database. Pick the class and learn the code. Reuse if possible.
If you want to learn anything related to generating charts, then pick projects related to reporting and analyze its source. If you want to learn any PHP based framework, then pick a CMS project which uses that.
Again this is should be a one time task. If you search, when there is a urgent requirement then you will waste more time in searching projects. This should be a like a habit, learn about one open source projects once a day or a week. Read their site and learn their design. What all the components they use to build their projects. Download the source and peep in to the lib directory to get the list of dependency. There are many small libraries which could make our life easier. Bookmark it and use whenever required.
Please feel to add your comments and write how would you learn.