So you want to be one of the few, the proud, the Linux kernel developers do you? Well, it’s not easy. But, if you’ve got the right stuff, Linux is looking for a few good programmers.
On August 13th, the Linux Foundation, the nonprofit organization dedicated to supporting Linux, published a guide to how to participate in the Linux kernel community. This 30-page ebook, How to Participate in the Linux Community, was written by noted Linux authority and executive editor of LWN.net (formerly Linux Weekly News) Jonathan Corbet.
The book got its start, Amanda McPherson, Linux Foundation vice president of marketing and developer programs, explained at the Linux Foundation’s April meeting in Austin Tex. There, McPherson said, several hardware and software developers talked about their troubles in finding who they should talk to in the Linux community to address their concerns, or, for that matter, how they could contribute to Linux. One of the results was the Linux Application Checker, which enables ISVs (independent software vendors) to more easily create applications that will run on multiple Linux distributions and the other is Corbet and the Linux Foundation’s new Linux Developer Network book
In this book, according to the Foundation, “Readers will learn why contributing code to the mainline kernel is desirable, how the contribution process works, and how to avoid common pitfalls along the way. Since the Linux kernel depends on outside contributions for its continued success, it’s vitally important to make participating in that community easy for new developers. While the kernel community is thriving with more than 1,000 developers at more than 100 companies contributing just last year, the Linux Foundation, in collaboration with its vendor and technical advisory councils, wants to encourage participation through education and promotion.”
This is not a programmer’s guide to the kernel. Instead, it’s a discussion of the process by which the kernel is developed, It includes sections on the kernel release cycle and the mechanics of merge windows; how early-stage planning works; what’s involved in the coding process, including patch requirements and review, and how to work with patch reviewers. It also addresses how to manage patches with Git, the Linux kernel version control system.
In a statement, Corbet said, “While the Linux kernel development process is quite open, it can sometimes be surprising or intimidating to new developers. This guide should help aspiring kernel developers and their managers understand how kernel development works, how to avoid common pitfalls and how to join our community in making the kernel better for everybody.”
In an e-mail interview, Corbet expanded on just what you need to actually help develop Linux. “?In general, it’s a matter of what sort of work you want to do. If you want to replace the core VM (Virtual Machine) page replacement algorithms, you need to have quite a bit of experience behind you. If you want to contribute certain kinds of documentation, you may not need any development experience at all.”
“In general,” Corbet continued, “somebody who wants to do development work needs a solid understanding of the C language and some understanding of systems-level programming. But nobody starts out as an experienced Linux kernel programmer; that kind of ability comes from actually working in the community and looking at a lot of code. Developers with some background, some talent, and a willingness to learn will become experienced kernel developers soon enough.
“More than anything else,” Corbet added, would be kernel developers need “A desire to learn. Everything else, really, is best learned directly from the community.” You should also be aware that at the top level, Linus Torvalds has his own sometimes brutally frank way of managing Linux development. Linux development is not for wusses.
Want to know more? You can comment on the guide in the Linux Developer Network and post questions in the forum devoted to Linux development. The Linux Foundation plans on translating the book into other languages including Chinese, Japanese, Korean, and Spanish. Translations in other languages will follow.