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
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.
Kick off your day with ZDNet's daily email newsletter. It's the freshest tech news and opinion, served hot. Get it.
Talkback
All makes sense
Certainly it makes sense to start small and work your way up.
Agreed
But it's not free or open ...
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.
actually...
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.
Your reasoning is flawed
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?
Systems programming is tough
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.
Very well said
Playing devil's advocate ...
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.
A better way of putting it...
But now you're back to ...
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.
Pure ideology only works...
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).
Why you're incorrect.
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.
Lots of opinion here ...
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.
Balance
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.
You make good points. Forking of Linux has ALWAYS been possible. But, Linus
FOSS doesn't necessarily mean
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.
Idealistic Approach vs Productive Approach
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.
So, then FOSS in general and Linux in particular should NOT ...
"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.
But with open source...
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.
I can understand this distinction ...
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."