Calling Engineering Students: Why Contribute to Open Source?

Why should I contribute to open source?

How will contributing to open source help me as an individual?

We all are asked this at any open source meet-up or conference. Questions that are very valid (even if they sound selfish). In fact, because they sound _selfish_ that’s why they _are_ much more genuine.

These questions generally prop up when you _preach_ (engineering) students to get involved with open source projects — to contribute code, bug fixes, documentation, etc.

We can talk as much about the principles of Open Source and Free Software, the philosophy, why freedom matters, etc, but all this ignores the basic question that was raised by you.

Am assuming, you, the engineering student who raises this concern, want to eventually land a job as a software developer. Remember, having a knack for problem solving and a passion to achieve it by programming is a prerequisite to this concern. Unless this is true, and you’re only enrolled in an engineering course for any other reason, you should really rethink whether software development as a career option for you is the right choice. Because once you’re into the field that’s what you’d be doing for many, many years to come. If you don’t love problem solving by programming, think of working on something you don’t enjoy for a significant period of time of your life. Time to rethink your options?

If you’re still with me and reading this blog, then it only means you love to code. So, why should you contribute to Open Source?

  1. Your professors anyhow will want you to work on a project for practical evaluations. You can either work with your student fellows and submit a project, get your marks, and forget about it. Or instead, you open source your project and host at a service like sourceforge.net. This way you are opening your horizon to the whole Would Wide Web, rather than confining you ideas to a few fellow students.
    Worst that can happen? No one would take any interest in your project, and thus you won’t get any additional inputs. Which is essentially the same outcome if you would have kept your project private amongst your friends. The way I see it, you’re not losing out on anything. However, what if a bunch of people show interest in your project — they might eventually share ideas, collaborate with you, and thus you might end up with a project much, much larger than you would have otherwise thought of it. Meaning better marks and appreciation from your professors?
  2. Once you’re out of college, or during campussing interviews you can showcase your live project to potential recruiters. Now, you have _proof_ (on the Web for the whole world to see) that tells them you know what you’re talking about as compared to most other blabbering about what’s written in their resumes.
  3. Typically, a software company that would hire you would need to train you eventually in areas like how to work in a collaborative environment. If you’ve worked on and contributed to open source projects means you’re already familiar with working in a such an environment. It essentially means you’ve an edge over other candidates because your recruiter knows their training expenses on you would be far less as compared to others. Trust me, employers want you to be productive as soon as possible, and your exposure to collaborative development practices due to your involvement with Open Source gives them the confidence to recruit you.

Typically, the next question that comes in is: How/where do I start to contribute?

Well, apart from starting your own project (there are high chances many are already available as open source projects online) you can google your idea to find open source projects that essentially do the same thing. You use it, and figure out if it has all the features you’d expect. Say, something is missing or some _feature_ is really annoying you, and you think you could do it better. Contact the project leader saying you would want to work in that area. Wait for a few days for his reply. Worst case? He’s very rude — ignores you or says no thank you without any explanation. Great, you can take his piece of code, anyway available as open source, rename it, and start your own project to bake in your features in that code. Advantage? You didn’t need to start from scratch.

However, under most normal circumstances, the project lead would love to have you in, and even if he doesn’t want your feature suggestions, he would explain you why. You can evaluate it and get back to him with more queries if you have, or suggest something else.

Say, everything worked out, and you’re in, your prize will be:

  1. You learn how to work with others on a project — besides inputs on best practices on writing quality software. (There’s a difference between what’s in books and that you’re taught in college, and how the real software development world works.)
  2. Your name as the copyright holder for the source code will be indexed by search engines — something to show off to friends, professors and recruiters ;-)
  3. Hundreds, or even thousands of others are using a software application you’ve contributed to — yes, you might even get fan mails.
  4. That self-satisfaction that you’ve achieved something cool.

Back to the point, most projects have an to-do list, which will give you an idea where all they need help. Scan the list to see if you can contribute :-)

Back to the main point: A college student just like you once thought of developing an operating system kernel as part of his college project. He released it as open source so that more people can use his code, analyse and test it, and give him feedback.

In a span of few years major corporations like IBM, et al. started using that code — and eventually recruited developers to extend it.

Today, big names like IBM, Intel, AMD, Oracle, ARM, Nokia, and the whole ging-bang have developers under their rolls working to enhance that same piece of code.

By the way, it’s Linux :-)

One Comment

  1. Prateek Mathur says:

    This article is awesome….
    It has really motivated me take up contribution to open source projects seriously….

Leave a Reply

Your email address will not be published. Required fields are marked *