The 5 Best Ways to Contribute to Open Source Projects
So you've got a bit of programming experience and some spare time available, and the thought of gaining experience, reputation and maybe even a paid job (hey, it worked for Linus Torvalds!) has tempted you to look at open source and maybe dip a toe in. But where to start? Well, first, you could look through open source projects, find something you like and get into it. As for places to go, there are many projects and repositories. First of all is SourceForge, the daddy of them all with 430,000 projects and 3.7 million registered users who download nearly 5 million sets of files a day. Likewise, for all things Linux, Freecode has got you covered. (Both SourceForge and Freecode are owned by Dice.) Another option: Look for projects seeking contributors. Codeplex, which is owned by Microsoft but hosts any project, has a section that lists projects with openings. Currently it has 1,378 of them, which should give you a good chance to find something that interests you. I've run two different virtual teams over the years and it's not easy. It’s kind of like balancing Jell-O on a stick. Currently, my project artist hasn't produced any artwork for over six months due to work-related issues. Everyone has different amounts of spare time available. For example, students during the summer and holidays can be highly energetic and contribute much, but then you won't hear from them for a few months while they're studying. A team needs a good leader, or leaders, who can recognize strengths and weaknesses and play to the team's strengths. Contributing doesn't necessarily mean writing and testing lots of code. It can once you gain reputation and trust, but there are many other jobs you can do first. For instance, games need graphics, sounds and music, testers etc. While much of the Internet speaks and writes English, getting translations to other languages will give you a much bigger audience. OpenTTD, the Open Transport Tycoon clone, is currently looking for translators for Persian, Irish and 10 other languages. There's also the project's administration, vital to keep it running smoothly. Who creates and maintains the website, documents development practices, organizes the builds or the build machines, manages bug tracking, version control software and backups, looks after the Wiki, etc.? And what about Linux or Mac versions? Who ports, develops, builds and manages those? These are all tasks that any project needs people to do. A great example of this is the team behind the open source racing game Speed Dreams. Now they seem organized! A third tactic: Create your own project. Take a look at the Pelles C Compiler. Basing it on an existing lightweight C compiler, developer Pelle Orinius produced a freeware C development system for Windows 32/64 bit with C99 and C11 (the next one after C99). Give it a try. It's not just a C compiler but an IDE that includes project management tools, a debugger, a profiler, a source code editor and aresource editors for dialogs, menus, string tables, accelerator tables, bitmaps, icons, cursors, animated cursors, animation videos (AVIs without sound), versions and XP manifests. It's not open source, but it is free and is a remarkable achievement. Linux started as one individual's project and 20 years on he's still working on it. Next, remember that students have all the fun. Every year Google pays some students to work in open source projects during the Google Summer of Code. Since it began in 2005, the students have collectively written 50 million lines of code. Last year 1,192 students from 69 countries participated at 177 open source organizations. Finally, you can take over a mature, no longer supported project. There are, for example, many games that have been open sourced. See this entry on Wikipedia for a large list. You can't publish those games because the copyright most likely remains with the original publisher, but you can learn how to build them. Maybe buy a copy of the original so you get the graphics and sound files (which often aren't provided with the open source files). Then learn how it works, how to build, debug and run it. Perhaps then, like OpenTTD, you can start you own open source clone of it. One thing's for sure, open source is not going away.