tags:

views:

1227

answers:

7

I'd like to contribute to open source but I'm not a professional programmer. I contributed an extra function to a PHP project once, but on submission it was rewritten and, in hindsight, the functionality was completely useless anyway. I was actively encouraged by the project members who were very supportive but I can't help feeling I was generating more work than was necessary for them.

I suppose the question is - Are novice programmers a hindrance to a project?

+25  A: 

Absolutely not.

Probably the best thing you could do though, might not be to actually program at all, but rather test test test. You can be great at testing because not only can you find all the little wacky problems, but you could pop open the code and find the areas causing the problems (possibly) and point them out even if you can't fix them. For instance:

You find a bug, "It looks like when I edit my own post, if it has up or down mods, I get those mod points added to my account again! Over and over even!".

So then you open the code and find the section that adds points and say, "hrm... it looks like the logic here is broken. It's lines 589-633 in file "modAdd.aspx"... I'll submit a bug report with this info".

Now, if you got in over your head and started submitting all this bad code and brazenly demanding it get included, then you are making a hindrance of yourself. But it doesn't have to be that way.

Another great thing you could do would be documentation. Telling users how to use the app in plain english. Or even work on the website for the project. Many open source projects need lots of help in these areas. Often you will go to a project's website, and have no idea what that project is even about, or how to even download it...

cmcculloh
+4  A: 

If you can be honest about your abilities and start small, then there will always be areas of a project that need work. As you get more confident in your abilities, then you'll move up to more complex areas.

If the project members are friendly and helpful, like the one you mentioned, you'll learn from them and you'll get better faster.

Peter Coulton
+8  A: 

You are the only person who knows what you are capable of. With that said, because the open source community has such a huge amount of projects laying around in every possible language for every possible technology and in every possible 'difficulty' level, it is actually up to you to decide which project you want to contribute to, and not the other way around.

If you think you are up to the challenge to help out an advanced open source project then by all means go ahead! but if you think you are not up to the task then start smaller and look for something more manageable to start with.

... but like all people with a passion for programming, it can't hurt to look around in those 'more advanced' projects! who knows you might see some simple bug or unimplemented feature other people overlooked...

Sven
+6  A: 

The easiest way to start with opensource might be to run/manage your own projects. Find an itch you want to scratch with 20 hours of coding or less.

Writing plugins for other opensource projects is a great way to contribute something in a limited scope.

If you're using PHP, try writing some WordPress plugins.

engtech
+33  A: 

The question in the title was

What level of programming should I have to contribute to open source?

and the answer to that is none at all. While smaller and newer Open Source and Free Software projects (especially when there is overlap with an existing project the community is happy with) can struggle getting the support of programmers and skilled users the number one thing you can do to help a project you support is document it from a users perspective.

While it's not the most glamorous of projects it's guaranteed to get you the love and respect of your peers on the project team.

From writing proper docs to answering questions on mailing lists and forums it all counts as support and is really, really important and lacking in all but the most professional of FOSS (I still hate that term) projects.

The second question you ask is;

Are novice programmers a hindrance to a project?

And the honest answer to that one is a difficult one to give because they can be and I hate to admit it but projects aren't schools and some people can take more from a community that they are attempting to help than they give but in all but the most mature and newbie hostile projects there are dozens of people willing to give you the support you need to get you up to speed.

Those people helping you out remember when they where the newbie asking good questions about the wrong thing or silly questions about the right thing and know that in many cases the person asking the questions now will return the favour and start answering newbie questions (exp. the ones they asked) pretty quickly.

So don't be afraid to ask a good question and get stuck in the chances are a successful team will have enough members willing to give you a helping hand up the ladder but be aware they will expect you to do the same and answer the FAQs as they come up and perhaps write the documentation for them.

What goes around comes around and documentation is the key to the door :)

sparkes
+2  A: 

I suppose the question is - Are novice programmers a hindrance to a project?

If this were true linux ( for example ) would never exist.

The answer I would say is a different question:

Are poor programmers a hindrance to a project?

i-moan
+1  A: 

My experience is that there's always a lack of people with interest and motivation (or maybe: time?) to help out in open projects. Therefore, I'm sure your contribution will be valued, no matter what.

Remember that you don't have to be a star programmer from day one. As long as you realize your skills, and are willing to grow, it will be possible for the project authors to find some valuable work for you.

Often, testing is sooooo important. If you find bugs or have suggestions, do like this:

  • report each as a separate email/ticket/whatever the project uses (not many in one)
  • provide enough details (OS type etc.)
  • if possible, provide a patch (code that corrects the behaviour)

To me, the Lua language project has been the main arena to be involved, and to which I have given patches. Doing a single feature patch does not require you to know all of the code, but it is a way into the project, and eventually you shall learn more.

Other possible areas of involvement are maintenance of project web site, activity on the mailing list, and documentation (make a good tutorial of something).

A book that is constantly in my mind, writing this response is this. There might be newer ones around, but this never expires! :)

akauppi