Torvalds: No picnic to become major Linux coder

Summary: The Linux project lead has said new contributors should 'start small' to avoid becoming frustrated with the Linux kernel development process

Linux project lead Linus Torvalds has said it is not easy to become a major contributor to the Linux kernel.

In an email interview with ZDNet.co.uk on Friday, Torvalds said that, while it is relatively easy for coders and organizations to contribute small patches, the contribution of large patches, developed in isolation, could lead to both new and established contributors becoming frustrated.

"It's definitely not easy to become a 'big contributor'," wrote Torvalds. "For one thing, the kernel is quite complex and big, and it inevitably simply takes time to learn all the rules — not just for the code, but for how the whole development environment works. Similarly, for a new developer, it will take time before people start recognizing the name and start trusting the developer to do the right things."

However, Torvalds argued that Linux kernel processes do make it easy to contribute small patches.

"[We] make it fairly easy for people to ease into kernel development," wrote Torvalds. "It seems to be working too. We literally have thousands of people with patches attributed to them in each release."

Torvalds wrote that nobody should expect to start sending "big and complex" patches early, as it takes time for new contributors and established coders to learn how to interact effectively.

"The worst thing anybody can do is to study the kernel alone and try to learn things in private, and then, however many months later, present all the established kernel developers with a big patch that just comes out of the blue," wrote Torvalds. "That's just going to be frustrating for everybody."

Torvalds advised new contributors to "start small" by sending "trivial patches".

"It may not sound exciting but, quite frankly, I don't think anybody who starts out believing that they want to rewrite some big piece of the kernel should even bother. Reality isn't that simple."

Torvalds admitted that frustrated developers may become alienated by the Linux development process, which he said could be improved.

"I don't think a 'perfect' process exists," wrote Torvalds. "Of course, some people will be alienated, and there's no doubt that the process could probably be improved."

The developer warned that Linux kernel development was "not a 'warm and fuzzy' environment where people sing Kumbaya around the fireplace" and that some "very opinionated people" were involved.

"The kernel is about pretty harsh technical issues, and mistakes are really frowned upon," wrote Torvalds. "In an OS kernel, there are simply more security and stability requirements, and the bar is really higher in some respects. That will inevitably also reflect in the response to patches."

Nonetheless, Torvalds said the patching process in Linux was more about human interaction than a quantifiable set of steps, such as those listed in official international standards processes.

Although thousands of developers are involved in Linux kernel coding, Torvalds argued that the development process was still efficient. "I think that one of the things we've been very good at is to scale up with a good network of maintainers, so that most people involved actually don't work closely with more than a handful of people," he wrote.

Mark Taylor, president of the Open Source Consortium, told ZDNet.co.uk on Friday that, in general, enterprise-class open-source projects are designed to scale appropriately.

"The whole process scales very well," said Taylor. "Normally the people you find at the core [of open-source projects] are professional software engineers; these guys know how to run software projects."

Torvalds' and Taylor's comments follow the publication of a guide to Linux kernel development by the Linux Foundation, which aims to prevent developers becoming frustrated with the process. The guide was made available on Wednesday.

Topics: Software, Linux, Open Source, Operating Systems, Software Development

About

Tom is a technology reporter for ZDNet.com. He covers the security beat, writing about everything from hacking and cybercrime to threats and mitigation. He also focuses on open source and emerging technologies, all the while trying to cut through greenwash.

Kick off your day with ZDNet's daily email newsletter. It's the freshest tech news and opinion, served hot. Get it.

Talkback

47 comments
Log in or register to join the discussion
  • All makes sense

    If I was running a large open source project with thousands (if not millions) of people all over the world depending on me to get it right, I think I'd do things in much the same way.

    Certainly it makes sense to start small and work your way up.
    John L. Ries
    • Agreed

      I don't think there is really any other way to manage an open source project of this magnitude. I'm very impressed that they've been able to accomplish what they have using the open source model. This is not a slam on open source development, I just can't believe they can make it all work as well as they have. These guys must be absolutely brilliant!
      Tiggster
      • But it's not free or open ...

        ... if your work is not judged on its merit, but rather on your ability to negotiate the artificial project social strata. It's not equal if there are "established kernel developers", and therefore, I suppose, non-established kernel developers.

        Isn't part of the point of FOSS to do away with "the establishment"?

        This arrangement seems the inevitable outcome, not because of any real reason other than human egos are involved.
        RationalGuy
        • actually...

          ...i don't think the structure is the way it is because of human ego's. i think it's the way it is because it is simply the appropriate model to use for a project of this magnitude.

          FOSS does mean that anyone can contribute freely, but it doesn't mean it has to happen in an anarchic way. i'm sure that if one is talented enough and they "pay their dues", they will become an "essential programmer"

          i tend to compare it to the medical profession in a way. someone can be a brilliant medical student and have top notch grades etc. but it doesnt mean that they can perform major surgery even if they possess all the theoretical knowledge. one has to start small and as soon as one gains experience and other people gain confidence in ones abilities, then one can advance accordingly.
          kolvas
          • Your reasoning is flawed

            An appropriate model would consider the amount of overhead necessary to field ideas from all contributors equally. That overhead would probably be extremely large, so the current model is not appropriate, it is simply efficient. So, it's not free and open -- by necessity, since resources are scarce, it's a clique.

            The concept of "paying your dues" need not apply here. You show up with a set of ideas, and they either work or they don't. Who cares if you've been programming for a week or thirty-five years? Who cares if you've been contributing small patches since the mid-90s?

            Do you have the goods right here and right now? Is your idea worthy? That should be the only criterion.

            Fielding ideas from programmers who are not well known in the community is not "anarchic". It's time-consuming.

            If one is talented enough, one may produce "essential" code without any direct experience "in the community". Someone can be a world-class developer taking a first-time foray into FOSS and develop something brilliant (the Orson Welles of kernel development).

            Torvolds tells that person, "Get in line. Pound out some grunt work for a few years, and then maybe, when we recognize your name, we'll tell you that you're ready, and just maybe we'll consider what you have to say."

            How's that not ego?
            RationalGuy
          • Systems programming is tough

            You can always write your own kernel; or see if one of the BSD projects would be more accepting (I would suspect that OpenBSD is even tighter); or circulate your resume for one of the relative handful of paid systems programmer positions available worldwide. If you wanted, you could even distribute Linux kernel patches on your own and build a reputation for yourself (one way or the other). People do the last on a regular basis.

            Linus Torvalds may be a control freak, but it's his kernel, and he's done wonders with it since his college days. Given what's riding on a stable kernel, I think he'd be ill-advised to run his project in any other way.
            John L. Ries
          • Very well said

            I agree completely. It's amazing how quickly some are willing to criticize the man who is not only the founder and original author of the Linux kernel, but is also one of the most important and influential pioneers of the open source community.
            Tiggster
          • Playing devil's advocate ...

            I can agree that they way the Linux kernel project operates is probably the most realistic way to get a lot done with few resources. However, a key feature of the FOSS "movement" is the ideals upon which it is founded. My impression is that the whole point was to freely share ideas among a group of programmers with the goal of creating the best software.

            What is clear from this is that the key value that programmers get out of being involved in FOSS is social prestige in the FOSS community. You said it yourself -- it's "his kernel" and "his project." If it were really about the software, all FOSS contributions would be anonymous. Quite to the contrary, for most open software, attribution is the only payment.

            That is what I mean by this being ego-driven.
            RationalGuy
          • A better way of putting it...

            ...is "accountability". If your reputation is on the line, you tend to care more, and it's Linus' name on the kernel (this is why people get better customer service when the owner's the one waiting on them). In practice, I would suspect that programmers contribute to open source projects for any number of reasons ranging from raw idealism (ala Richard Stallman), to personal interest (what got Linus started), to an attempt to fix a technical problem that's bothering the programmer or his employer (Samba got started that way), to pure egotism (I'm sure there are a few). Freedom and openness are good things, but a large degree of personal responsibility is required as well to make open source work (as with everything else in life).
            John L. Ries
          • But now you're back to ...

            ... one guy putting his name on the thing, which is completely against the idea of a community of developers. It's Linus' name on the kernel, but it's not all his work.

            I would argue that Stallman is not a pure idealist by any definition of the word. Check out http://www.gnu.org/gnu/linux-and-gnu.html to see just how much he hates Linus getting all the credit. This is pure ego, and has nothing to do with "the cause" but rather with "the credit."

            Nothing I said implied that any programmer would be free of responsibility. What I said is that ideas would be judged on their merit only, not on whose mouth the idea came out of, and where that person sits in the Linux kernel project social hierarchy.

            Again, the current system is efficient, and clearly it works, but it is far from the ideological wonderland that the FOSS movements appears to stand for.
            RationalGuy
          • Pure ideology only works...

            ...if the ideology is perfect, which I think is well beyond human capacity. A dose of pragmatism is almost always a good thing.

            And yes, I think RMS has a big ego (probably wouldn't gotten as far if he hadn't), but I don't think that's why he got into the free software business to start with (there were certainly more promising avenues at the time).

            But seriously, RMS has always talked about freedom, and the OSI people about a better way to write software. Both are compatible with reasonable quality controls (and possibly an apprenticeship system) imposed by project leaders (you can always start your own project).
            John L. Ries
          • Why you're incorrect.

            "by necessity, since resources are scarce, it's a clique."

            This is a non-sequitur.

            The fact that there are a limited number of people available to perform a task does not make those people suddenly become a clique. Cliques derive from shared social values, not code quality.

            The notion that one could possibly give exactly the same consideration to every contribution, regardless of who it came from, is ludicrous. There will be some geniuses, a ton of mediocrity, and a sizable portion of utter crap contributed.

            "If one is talented enough, one may produce "essential" code without any direct experience "in the community"."

            Unlikely. Possible? Sure. But don't hold your breath.

            "Someone can be a world-class developer taking a first-time foray into FOSS and develop something brilliant (the Orson Welles of kernel development)."

            Someone could be a world-class athlete in one sport, then switch to another and do something amazing there too. It MIGHT happen. But, in real world experience, we know that this DOES NOT happen.

            Devoting talented resources to filtering the slush pile is a stupid waste.

            "Torvolds tells that person, "Get in line. Pound out some grunt work for a few years, and then maybe, when we recognize your name, we'll tell you that you're ready, and just maybe we'll consider what you have to say."

            Wrong. He said nothing remotely like this. Instead what he said is exactly what ANYONE starting in a new field of endeavor will be told. Don't whine because someone else doesn't think your code is as awesome as you do. Don't waste everyone's time with work that is not informed by interaction with others in the field.

            Take some time to learn how to interact with the community before you start contributing to that community.

            The "lone outsider changing the world" fantasy is nice for Hollywood, but 99% of "lone outsiders" are in fact, kooks, who not only do not contribute value, but actually detract from quality by inserting noise.
            bmerc
          • Lots of opinion here ...

            [i]The fact that there are a limited number of people available to perform a task does not make those people suddenly become a clique. Cliques derive from shared social values, not code quality.[/i]

            Agreed. Pardon my word choice. I should have written, "by necessity, since resources are scarce, it has become a clique."

            [i]The notion that one could possibly give exactly the same consideration to every contribution, regardless of who it came from, is ludicrous. There will be some geniuses, a ton of mediocrity, and a sizable portion of utter crap contributed.[/i]

            Agreed. The only way you find the genius ideas is to look at all of them. Einstein had some kooky ideas. Kepler's cosmology based on perfect solids was utter crap.

            [i]Devoting talented resources to filtering the slush pile is a stupid waste.[/i]

            Disagree. This is an appropriate analogy. Filtering the slush pile is the only way to find promising new talent.

            [i]He said nothing remotely like this ... Don't waste everyone's time with work that is not informed by interaction with others in the field.[/i]

            I'll call this a push. I don't think either of our interpretations of what he said are off base for content. We disagree on tone.

            [i]The "lone outsider changing the world" fantasy is nice for Hollywood, but 99% of "lone outsiders" are in fact, kooks, who not only do not contribute value, but actually detract from quality by inserting noise.[/i]

            Agreed. That's why you need a vetting process. However, that 1% is better than pure gold. He's potentially throwing that away. He admits the process could be better and that it is alienating people.

            It's all about choices. They choose an efficient system that is about the social hierarchy of "very opinionated people". Their system has garnered impressive results. Nobody can take that away. Nobody is debating whether or not it's effective.

            I'm just making the point that it's not a free and open approach.
            RationalGuy
          • Balance

            I can understand what you are saying to an extent. If you have an idea and implementation and it works then who cares about status. On the other hand this project is at the CORE of many other things...almost the entire FOSS community. A mistake here is crucial. So it wouldn't be wise to let anyone just come in and add some major component to the code that hasn't demonstrated dedication to the project and very very sound abilities. Otherwise you risk introducing bugs, security holes, code that won't be maintained and possibly even planted ideas by parties with other interests.

            However saying that this scrutiny somehow keeps the project from being free and open is incorrect. There is nothing stopping a person from developing their patch and releasing it as their own branch of the kernel geared towards some specific purpose. At least I don't know of anything stopping them. Anyone can see and modify the code. But the core branch of the project has to remain clean. This actually allows people the freedom to try a specialized kernel knowing they have the clean core branch to fall back to.
            storm14k
          • You make good points. Forking of Linux has ALWAYS been possible. But, Linus

            has a very good process and has earned our trust. Thus, no major forks, even though anybody is free to do it.
            DonnieBoy
          • FOSS doesn't necessarily mean

            that anyone can contribute freely. There are still project managers who decide what goes in the tree and what doesn't. All it means is that you can start your own tree if you don't like what the main tree is doing.

            MySQL is a good example of this. You can offer up all the patches you want but they won't accept a line of it. It's free source but closed tree. The nice thing about that is that it limits the number of copyright holders. You can fork it, but the copyrights of main tree stay with a limited number of people/corporations.
            Michael Kelly
        • Idealistic Approach vs Productive Approach

          Idealistically this would be the ultimate approach, but would likely result in an unmanageable and perhaps even a chaotic situation. A strictly defined and enforced power structure seems to me to be absolutely essential to manage a monumental open source project such as the Linux kernel.

          Large companies are staking their business futures on GNU/Linux, whose foundation is the Linux kernel. Adopting what essentially would end up being a free-for-all approach for ideological purposes would not only destabilize the project, but would also undermine the confidence of large corporations who depend on and contribute to the Linux platform.

          If Linux wants to make it beyond obscurity, maintaining a tightly controlled process for developing the Linux core is absolutely essential.

          BTW: Don't you think Linus has just a little more experience and expertise on this issue and therefore should be trusted to make the right decisions concerning this matter? Those who vigorously disagree could always fork off their own project and run its development as they saw fit. Somehow I've got the sneaking suspicion that it would be a failed strategy, but they always have that option.
          Tiggster
          • So, then FOSS in general and Linux in particular should NOT ...

            ... try to foster an air of ideological superiority over other approaches.

            "A strictly defined and enforced power structure" is neither free nor open. "If you don't like it, then get out," is a crappy attitude in any situation.
            RationalGuy
          • But with open source...

            ...you can do what you like with the code (with very minor exceptions), just as RMS wanted things. Whether or not you can get the authors to accept any changes you might want to make is up to them (they're free too). If you don't like the way the project is run, and you think you can do better, you can fork the code. Whether or not end users or other developers want to use your version, instead of the established one, is up to them (not you).

            I seem to recall Mike Royko years ago note that while there is a free press, publishers are not obliged to accept the contributions of every crackpot who comes along. If nobody wants to publish your stuff, you can always copy and distribute flyers with the rest of the nutcases.
            John L. Ries
          • I can understand this distinction ...

            ... and I think there is merit in it. I agree there has to be some kind of vetting process.

            However, this kind of announcement from Torvolds makes it clear that Linux kernel development is a closed community. Perhaps it's simply a poorly-communicated point on his part, and it may be relatively simple to get a game-changing advancement in the kernel noticed by the right people in order to get it put in the next release. I can only go on what he is quoted as saying, though, and he seems to be saying, "Don't get your hopes up".

            This idea of "if you don't like it, start your own project" is counterproductive and is the core of why Linux failed on the desktop. Pooling resources towards common goals is the whole point, not "it's my way or the highway."
            RationalGuy