In last month's Ask the Experts column, we talked to insiders about how to get paid to work on Linux. The experts replied with a variety of useful tips but one piece of advice was common among all of their comments: get involved in the community. So, this month we've reached out to another group of experts to learn what exactly are the best ways to contribute and/or participate in the Linux and open source software communities.
Our panel this month includes:
Cat Allman, Program Manager, Open Source Programs Office
Mark Charlebois, Director of Open Source Software Strategy
Qualcomm Innovation Center (QuIC)
Jon Corbet, Editor and Linux Kernel Developer
Linux Weekly News (LWN.net)
Photo Credit: Ross Burton
Richard Purdie, Linux Foundation Fellow
The Linux Foundation
Contributing to Linux or another open source project can seem intimidating, but our experts say that it shouldn't. If you're sincerely interested in the work and find an area where you can add value, you will quickly become a recognized member of the community. We talked to our panel to get some advice on how to get started and how to navigate your way through the process of contributions.
Linux kernel developer, LWN.net editor and author of The Linux Foundation's Linux Weather Forecast Jon Corbet told us: "Find a project which interests you and dig into the code. You will certainly find things that need improvement." But Jon adds: "Follow the mailing lists for a few weeks before jumping in in any big way. Every community has its own ways of communicating and working; getting a sense for the ground rules and conventions will make your entry into the community smoother."
Cat Allman, who does developer relations for open source projects at Google, agrees: "Do your homework before you get started. It will make your entry into the project so much smoother. Almost every project will have an archive of mailing list(s), a wiki, code repository; look at what has been done in the past, discussed and/or argued over on the list."
Qualcomm's Director of Open Source Software Strategy Mark Charlebois says "Be familiar with coding style, contribution practices, community email etiquette, and copyright assignment practices for the project you are contributing to." He adds: "Most of all, have fun! Don't be discouraged by strong personalities in the community and try to understand other people’s perspectives. "
Jon says that reviewing code is a really good way to add value fast. "There is no project out there which does not suffer from a lack of code review. It's a great way to learn about the system and to make a real contribution, which will help to build your reputation in the community. Yes, it can be intimidating to raise potential issues in a submission by an established contributor, but any competent developer appreciates more eyes on the code."
Cat told us that students interested in a career in open source development can also get involved in the Google Summer of Code (GSoC) program. GSoC is hosted by Google and is a global program that offers student developers stipends to write code for carefully selected open source software projects. She says that since its inception in 2005, the program has brought together more than 4500 student and 3000 mentors from around the world.
"What makes GSoC especially successful at helping students begin working in open source development is the one-to-one mentoring provided by the FOSS projects that serve as mentoring organizations," Cat explains. "GSoC participants work entirely online on real code that is often entered into the project code base, so that they come out of the program with connections, real world development experience, and code they can point to, sometimes for course credit, and definitely for employment when they are out of school."
There are plenty of other resources where developers - students and non-students alike - can learn more about open source development and getting involved. Jon tells us, though, that the community itself is your best resource. " Developers tend to be busy people, but they will usually take some time to help somebody who is making a genuine effort to help the project. If you have questions after having read the materials the project makes available - ask!" he says. Jon also advises to review project documents: "Every project is different in this regard; some have better documentation than others. In the kernel community, we have a number of documents (under Documentation in the source tree) describing how the development process works and how to get patches merged. One of those documents was also published by the Linux Foundation as a white paper: How to Participate in the Linux Community.
Embedded Linux Offers Immediate Opportunities to Get Involved
Embedded Linux is a hot area for developers right now and job openings abound on hundreds of boards across the web. Linux is being used by nearly every device maker and systems builder in the world to accelerate time to market, reduce costs and increase innovation where it counts. To help developers take advantage of this opportunity, The Linux Foundation recently published a new white paper: "10 Ways to Get Started in Embedded Linux Development."
The Qualcomm Innovation Center hosts a variety of embedded Linux projects and Mark Charlebois also has some important advice on how to get involved here. He says that if you want to pursue this area that there are several ways to get involved: "For starters, you can download the SDK for a mobile OS such as Android or WebOS and start creating applications. If you decide you’d like to get more familiar with Android, try loading CyanogenMod on a development handset and modifying it with your enhancements. You can also attend some of the Linux developer events, such as those put on by The Linux Foundation, to meet fellow developers and see what problems they’re working to solve."
Mark also points to specific best practices and resources in this area:
* Working upstream is in your best interest long-term;
* maintaining code forks is suboptimal and requires an ongoing resource commitment;
* be prepared to support the code you provide the community;
* there are more collaboration styles when using open source for commercial devices, so flexibility and adaptability are key;
* developing happens quickly and the mobile Linux ecosystem is constantly evolving; and
* consider training courses are also available for those who want a jump-start. There are Android Classes offered by The Linux Foundation, for example.
An interest and commitment to collaboration in embedded Linux can pay off big. The Linux Foundation Fellow Richard Purdie has first-hand experience with how getting involved in the Linux community can lead to a rewarding career. "All of my full-time jobs since university stem from open source projects, starting with my involvement in OpenEmbedded. My first job came about after being approached on IRC. I'd never have believed I'd end up on the journey I've been on."
Richard's passion for embedded Linux started when he picked up a Sharp Zaurus handheld because it ran on Linux. "I tried to read books on it and became frustrated as the jog wheel on the side of the device didn't scroll the page. I had the simple objective of fixing it."
Richard's story is familiar to many of today's most respected Linux kernel developers: finding an itch that needs scratched and having passion for getting to the bottom of it.
He continues: "What happened next is kind of an epic story, which started with learning about build systems, BuildRoot, OpenEmbedded, then porting Zaurus kernel support to 2.6 kernels, getting it into mainline, helping to re-write OpenEmbedded and Bitbake, joining OpenedHand as its third employee, creating Poky, OpenedHand being acquired by Intel and then becoming a Fellow at The Linux Foundation."
Did you get all that?
His words of advice: "Find something that is interesting and you think could be improved, then go and do it. Persevere if you find any obstacles but do listen, learn and adapt. You never stop learning."
If you're interested in embedded Linux, Purdie suggests finding a Linux device that interests you and go forth and play. "Having some real world objective is key. Who knows where things might lead, I certainly had no idea!"
He also suggests becoming involved in projects like Yocto: "Yocto is very open to improvements, and you will find that if you give things back to a project in the form of patches and improvements (even for the documentation), you will get help in return now and again. I'm certainly grateful for some of the helpful hints I've had from people like Greg K-H and Thomas Gleixner at various points in time when I was really stuck."
So, what are you waiting for?