Defining KDE Contribution: work submitted to kde, for the benefit of kde. This can take the form of code, artwork, documentation, translations etc.
Calling it a "road to kde contribution" is really over-stating the matter. It's not so much a road as a sidewalk. For being such a large and complex project KDE has one of the lowest barriers for contributers I have ever seen. If you want to work on an open source project this really is the best place to start. The following is based on my experiences and observations thus far, in hopes that it may serve as a quick guide to those of you considering becoming a part of the kde project.
Step 1: Deciding where you want to contribute to kde:
Determining which opensource project to contribute to is an important matter. Think about it, you are committing time and effort into this project, so choose your investment wisely. You want to pick a project that you are passionate about and that you will use. That way you will be able to consider the application from both viewpoints, developer and user, and in effect help make it that much better.
That said, if you choose kde as your project you have at your disposal numerous applications that you could contribute to as well as quite a few backends. If this is your first time joining a large opensource project I would recommend doing what I did. Find a small application with a simpler codebase that way you can learn the ropes without getting burned. In my experience kjots was an excellent starting application. There are many others, just have a look through the kde.org site for more kde applications that you could help with. In general if it's a simple application, it will likely have a simple codebase (though exceptions probably exist). That said, it's more important to work on an application you enjoy using.
Step 2: Approaching the developers.
Once you have chosen your project it is now time to approach the developers of that project to ask them where your services would be most useful. My preference in this case is email, but email is only useful if the application is small and there is only really one main developer. If you have chosen a larger application then the relevant mailing list would be the place to start. You'll want to subscribe to the mailing list in any case.
This step is "optional" but if you intend to continue contribution on a long-term basis and your not just submitting a single patch then it's probably a good idea to introduce yourself to the people you'll be working with. My experience with this step has been very positive. You'll find that the kde developers/artists etc. are generally very kind and considerate. You'll also quickly learn that they know their stuff and thus working on kde provides you with a very good opportunity to learn from some of the best developers out there. Keep in mind these are people that are doing this because they enjoy it, so it's not just a matter of churning out code, a lot of thought and effort is put into each project. Thus passions will arise, and from that you'll see a lot of good work. (Please, understand that being passionate about something does not equal you being rude to everyone who has a different idea, argue your points respectfully. No one ever changed their opinion on something because someone called them blind or stupid).
This step is "optional" but if you intend to continue contribution on a long-term basis and your not just submitting a single patch then it's probably a good idea to introduce yourself to the people you'll be working with. My experience with this step has been very positive. You'll find that the kde developers/artists etc. are generally very kind and considerate. You'll also quickly learn that they know their stuff and thus working on kde provides you with a very good opportunity to learn from some of the best developers out there. Keep in mind these are people that are doing this because they enjoy it, so it's not just a matter of churning out code, a lot of thought and effort is put into each project. Thus passions will arise, and from that you'll see a lot of good work. (Please, understand that being passionate about something does not equal you being rude to everyone who has a different idea, argue your points respectfully. No one ever changed their opinion on something because someone called them blind or stupid).
Step 3: Miscellaneous Items
Some final items to note when starting your kde journey.
Well, I hope you found this helpful and enlightening. If you have any questions feel free to ask me, or ask on irc. If you need help finding something to do, the people on irc are very helpful for that. They helped me a lot in that regard.
- Just because your the greatest developer since RMS doesn't mean you won't make mistakes here or there. When you do, usually some one will likely try and correct you (based on my observations). It's best not to worry about your ego at this point and thank the person for their correction. It's not an ego thing, it's okay to make mistakes it's human (just as long as your not deliberately sabotaging things).
- Working on KDE is fun, don't let it get in the way of your life, or your job, or your schoolwork etc. People understand if you have to study for a test.
- If your going to be working on code, I highly recommend you spend some time reading the code at websvn.kde.org . This is an excellent way to improve your programming skills and to learn the kde framework. Also, you want to try to stick to the code-conventions of the applications your working on.
- One final note for developers: COMMENT YOUR CODE! I don't know what you were thinking at 3 a.m. four months ago. I don't know what I was thinking at 3 a.m. four nights ago! So if your doing something non-trivial please leave a quick comment explaining what this is. I don't mean that every time you declare a variable you should put in a comment stating that you are declaring a variable. But if you just added a function that involves a semi-complex algorithm let us know what that is for and what it does. This is especially useful when debugging or trying to learn new api etc.
Well, I hope you found this helpful and enlightening. If you have any questions feel free to ask me, or ask on irc. If you need help finding something to do, the people on irc are very helpful for that. They helped me a lot in that regard.