views:

132

answers:

5

Hi,

I would like to start to contribute in some GNU software projects. Since some weeks I fancy with a specific project but I don't know how and when to start.

I have the feel that you have to be firm with the following:

  • A programming language
  • gcc
  • gdb
  • make
  • emacs
  • the application itself
  • patching
  • CVS
  • etc.

So I'm trying to learn them all as good as possible.

But: Do I really have to master all the listed programs/tools before I contribute or should I just join a project as soon as possible so I will learn them all "by the way"? Will I get some help with minor difficulties from GNU programmers or don't they just have the time for my "beginning problems"? Hope you can help me!

All the best,

Inno

P.S.: I would like to join as a developer not as a documentator or IRC supporter :)

[EDIT]

Thank you for your answers so far.

I already get the application compiled, debugged and running, that's not the problem anymore. Just some small things I don't get to work (I think I will follow the advice with IRC).

I would like to join the project to become familiar with C (and free software/open source software in general). I did C when I started programming and always liked it but never had the opportunity to work with it in a professional environment.

Since I earn my money from programming since 5 or 6 years I'm not a total greenhorn anymore ;).

A: 

I'd suspect that the minimum you'd have to learn to contribute would be the programming language being used and a clear understanding of the objective of the aspect of the application you were looking to contribute too.

You'll probably be submitting patches or amendments to the code in the first instance and then not directly into the source tree. It'd be good to at least be able to make the app from source and run it to check your changes before you submit them but that doesn't really mean you have to understand the make file itself, just that you are able to run make.

Lazarus
+4  A: 

If you already have a solid understanding of the fundamentals of programming, then I would recommend just joining a project, finding some easy bug fixes or features you think you could handle, and diving in. A good community will be able to help you with the details of source control and building the binary if you are passionate and willing to help. Many may even have tutorials demonstrating specifically how to do this with their project.

If you are still trying to understand the basics of programming, then you probably should keep your focus on learning the basics and building personal projects/tutorials first, though it can't hurt to check out a copy of the code base to experiment with on your own machine.

Also, note that CVS is only one of many VCS (Version Control Systems) in use. SVN and Git are two other popular options, but they all are relatively easy to learn -the main thing is to know how to create something worth versioning. ;)

Mark Hammonds
A: 

The best way is to join the IRC channel of the project in question - if you're having trouble with the toolchain and you indicate you're working on their project, most F/OSS devs will help you out.

In particular, the Mono project (C# on Linux) is really developer friendly in their IRC room, and will be very friendly and patient with new folks who want to help out

Paul Betts
+1  A: 

To make a meaningful contribution to any of the major GNU projects (gcc,gdb,emacs etc..), you really need to be an expert in the area. These are all mature projects that don't offer too much scope for a beginner.

If you are asking about Free Open Source Software (FOSS) projects in general, then you don't need to know any of the specific tools you mention. Obviously, if the proj ect is to develop a sophisticated emacs customisation (for example), you will need to know emacs. For all projects you will need to know how to use the version control system the project uses.

The bottom line for contributing to FOSS projects is to find one that deeply interests you and to which you have the technical know-how to contribute. If either of those is missing, you may as well forget the idea.

anon
+2  A: 

It is great that you are willing to contribute! Generally you can get started with a text editor of your choice, learning to use diff and patch, and whatever language is used. You may also need to use a version control system (such as subversion, CVS, git, etc.) to get the source, but not all the intricacies -- most projects I've seen want you to submit a patch before giving you commit access.

Look for something simple to fix and start contributing. It helps to look at what the other developers specifically want help with, perhaps even ask them, telling them what you're good at, if they don't have requests listed on the project website. Often using the software will give you good ideas about what needs to be improved, but you may need patience with the other developers who have different priorities.

sventech