Take the 2-minute tour ×
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've thought for about six months now that I should join an open-source iPhone or iPad project to hone my skills in Objective-C, but every time I go to do it I see thousands of lines of code on huge projects that I end up convincing myself I would never understand. I always think that my commits would just end up being a hassle for project admins and more senior contributors, so I always back out at the last second.

My question essentially is, is it a hassle when an intermediately-experienced programmer joins an open-source project?

share|improve this question
1  
Macke's answer is more exhaustive, but the succinct answer to your emboldened question is: no. –  Chris Browne Oct 24 '11 at 23:27
1  
@ChrisBrowne: Good point. I've edited my answer to match. :) –  Macke Oct 25 '11 at 20:26

3 Answers 3

up vote 15 down vote accepted

No, it's not.

If the code-base of projects you look at is too daunting, consider:

  • Choosing a (even) smaller project to work with.
  • Choose a smaller task within the project:
    • Write an example/tutorial/demo for something
    • Update and fix documentation (all projects, OS or no, need better docs)
    • Fix many low-priority but easy to fix bugs (great exposure to code, devs are usually happy, low risk)
  • There are ways to contribute without commit access to the core source, such as:
    • Submitting patches, which can be commented on.
    • Forking and submitting pull requests (see above)
    • Forking and working away on your own, just to see where it takes you. If you're happy, ask the devs to take a look at whatever you've done to see if it makes sense.

To overcome your "fear" of not having your commits accepted, go for safe points at first. This will allow both you and the dev-team to gain confidence in your relation, and to learn each other's way of thinking. As you improve (both in skill, experience, code quality and understanding of your OS project's team and it's dynamics) you will be able to tackle greater task while introducing less hassle.

It also helps in asking for suitable starting points, and see what the team might find suitable for you.

As an example, I've contributed a bit to Buildbot over the years. I started just fixing a few small issues, then I bumped the quality of the Mercurial source steps by fixing some glaring bugs. Finally, I rewrote most of the Web-pages and swapped out html-pasting in code to a template based HTML generation solution. The latter was a few hundred commits over a few months of hard work.

I've also done some Mercurial work, but those guys are more picky and the technology is more complicated, so I haven't yet gotten any fixes into the core. I've made a few bug reports and written a few small extensions, but I haven't gotten anything bigger off there at the moment.

Hope it helps.

share|improve this answer
    
+1 for buildbot - it's a fantastic project, with very nice, helpful maintainers. If you want a good project to start with, it's definitely worth a look. –  Nate Oct 24 '11 at 22:39

Go for it. There's tons of beginners doing the same. The project lead can help find you things to work on that aren't out of your league. You gradually grow into the rest.

Oh, and just because you don't understand the code doesn't mean it's good. I've seen some seriously horrible code out there. Some of it's hard to understand because it's poorly written and made to be much more complex than it should be.

share|improve this answer

Jump in. Monitor the development lists for a while and introduce yourself when you feel comfortable. Many projects have some easier Jobs in bug-fixing or documentation which the regulars will be happy to point out to you. Most Projects are quite friendly to new hands, and they will bring you up to scratch fast enough so that you may become a real asset to the Project.

After a while you will be familiar with the structure and the most important parts of the code base. Learning to understand code like this is a really important part of programming, and open source is a great way to learn it.

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.