Tell me more ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I am heading into my senior year in computer engineering and have gotten a internship for this summer and fall. Since I will not be doing homework I would love to take this opportunity to get involved with an open source project of some sort. I am proficient with C, C++, Java, and Python. I am also reasonably familiar with Linux, using it on my laptop at the moment and all of my classes this semester focused on it.

I was considering taking a look at Android or Ubuntu but in the past I have felt a little overwhelmed. Does anyone have any advice? Interested on what would be a good project to work on, where to get started, and if I will really able to contribute much.

And in the end how often are peoples changes actually accepted? How often would I be writing code just to have it rejected?

tl:dr Looking for more programming experience by contributing to an open source project. New to the scene need advice.

share|improve this question
6  
Sounds like a good idea, but do check the "moonlighting" rules at the company where you are doing your internship. Some places, especially if they are software shops, will be very restrictive on what you can do - even in your own time and on your own PC. – Steve Haigh Apr 28 '11 at 10:28
1  
perhaps consider learning a new programming language that is more declarative then the ones you mention. Like haskell or scala. Then work on an open source project. – mrsteve Sep 27 '11 at 0:43

3 Answers

+1 to Steve Haigh for mentioning moonlighting.

If you work for a software shop, you may find yourself in a situation where your employer claims ownership of the software you worked on in your own time. Before beginning, consult your employer to clarify the moonlighting policy at your company.

A good place to get started could be OpenHatch. They're a website devoted to helping people get involved with Open Source projects. They'll be able to give you a list of "bite-sized" bugs to get started on any of the projects that have signed up with them, and can help get you in touch with other contributors who are willing to mentor you on the project and/or language of your choosing.

Upstream acceptance of your patches will and nearly always does hinge on the quality of the patch, and if it has accompanying test cases. Many projects in fact will not accept patches unless they include a test verifying the patch.
Since the quality of your code is something that will be subjectively judged, be prepared to work with constructive criticism from upstream maintainers to improve your code.

share|improve this answer
1  
Their policy on moonlighting is something I had not even considered. Also OpenHatch.org looks rather cool. Signing up right now to check it out. – Tarmon Apr 28 '11 at 21:05
2  
Another note about moonlighting, if do ask your employer, you may want to do so via email for the paper trail. Otherwise, what's to stop them from changing their mind later and saying they never renounced their claim to your project? Just a thought. – Jeff Welling May 6 '11 at 6:09
Good point. Thanks. – Tarmon May 10 '11 at 21:09

I can't tell you what project you should choose - this is up to you actually. However, I can tell you how to get involved: if you feel a passion for some project, i.e. been using application for quite a while (for OS it might not be as easy), you can always submit patches with suggested changes (enhancements, bug fixes) and ask project owners for review/integrate.
That is fairly easy with projects on GitHub - just create your patch and submit pull request.
Anyway, the more valuable patches you submit, the more likely is they would welcome you to the core team.

share|improve this answer

For example, Mozilla is always looking for C++ programmers for developing and testing their projects. It is overwhelming for a new comer to download the massive code base and spend hours building it. Then it takes in the neighborhood of six months where you spend an average 10+ hours a week to get acquainted with it and understand a bug or defect or such a thing. Then, soon you should be able to understand how to look reproduce, isolate, fix, test, regression test, get the patch applied. As you do this more, you may get direct write access to the code base, oversee a feature or so. I believe this is true for every project that is mature with lots of people working on it.

On the other end, there are many projects dying because there is no one to develop them. It could be hard to find people who can help you or documentation in these kinds of ones.

To strike a balance between these extremes, you can find a program that you need to use often or everyday. Keep using it enough that you max out its feature set soon. Perhaps develop some kind of affinity toward using it over other options. Then, you could either submit a feature request or take it upon yourself as you are likely to be the one with most understanding of the feature you propose. On the surface, this option makes you feel like you are never going to max out a program's features. If you stay with it long enough, you will need the program to do more than what it can actually do. It could be a security/privacy fix, or a subtle thing or a usability improvement.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.