Slashdot Log In
Torvalds Says It's No Picnic To Become Major Linux Coder
Posted by
CmdrTaco
on Mon Aug 18, 2008 09:36 AM
Jack Spine writes "Linus Torvalds has given an interview to ZDNet.co.uk about the trials and tribulations of becoming a Linux kernel developer. 'Torvalds said that, while it is relatively easy for coders and organisations 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 recognising the name and start trusting the developer to do the right things.""
Related Stories
[+]
Developers: Linux Foundation Paving Way for New Kernel Developers 46 comments
Jack Spine writes "The Linux Foundation has published a how-to document for developers who want to negotiate the hidden shoals of open source. According to both the Linux Foundation and the Open Source Consortium, developers can get frustrated with the processes in open source coding, especially for enterprise-class projects like Linux. 'A guide to the kernel development process' aims to encourage participation from new programmers by explaining what's involved. Some developers and businesses attempting to submit changes to the Linux kernel find themselves tangled up with the processes used, according to the guide, which was written by Jonathan Corbet, executive editor of lwn.net and himself a Linux developer."
Submission: Torvalds: No picnic to become major Linux coder by Anonymous Coward
This discussion has been archived.
No new comments can be posted.
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
Full
Abbreviated
Hidden
Loading... please wait.
huh (Score:3, Insightful)
In other words, it's hard because I make it hard.
Re: (Score:3, Interesting)
Still easier than coding the Windows Kernel (Score:5, Insightful)
Qualify "luck". It seems to me that any large distributed development effort is going to require some sort of process - the anarchic development model isn't terribly successful.
With that in mind, developing the Windows kernel requires you to be employed by Microsoft etc, whereas developing for the Linux kernel just requires you to follow some established open processes.
What's the problem with that?
Parent
Re: (Score:3, Insightful)
By the time you are working on the Linux kernel as a contributor, you'd have accumulated enough knowledge/experience to get employed at Microsoft. I think at that point, it's more a matter of ideology.
At Microsoft, working on the kernel pays as a fulltime job, while you still have to find a way to get money if you're just working on the Linux kernel as a hobby. And if you can get employed by some corp to get paid working on the Linux kernel, I'd think their employment standards would be comparable to MS's.
Re:Still easier than coding the Windows Kernel (Score:5, Funny)
At Microsoft, working on the kernel pays as a fulltime job
They pay monkeys to bash keys nowadays?
Parent
Re:Still easier than coding the Windows Kernel (Score:5, Insightful)
http://www.desktoplinux.com/news/NS8745257437.html [desktoplinux.com]
Anyway he didn't start small at all. Go Ego
Parent
Re:Still easier than coding the Windows Kernel (Score:5, Funny)
His experiences are far from unique. The problem is the gnome guys have huge egos and anyone offering suggestions are often meet with disdain.
In the link provided above, it's not like Linus' comments are off base in the least. That's hardly egotistical. From the article it's obvious he already did the footwork. He already made an effort. The developers even confirmed it not only does not do what he wanted but they would not do it. He then went off to put his money where his mouth was. To summarize, this means Linus did the right thing and the Gnome developer are shamed and proved impotent, because of their own huge egos.
While I much prefer Gnome to KDE, it has long been screwed over by ignorance and huge egos from none other than Gnome's own Miguel Icaza.
Parent
Re:huh (Score:5, Insightful)
Nope.
It is hard because.
1. Programming is hard.
2. System's programming is even harder.
3. Kernel code is mission critical code which is really hard.
4. When you are the new person it takes time before people trust that you know what you are doing.
In other words it is just like everything else. The difference is that if you want to make changes to your Kernel you can. If you want to put up a site with your patches you can.
If you want your code adopted in the "official" kernel you have to play by the rules and write good code.
So it works exactly as it should and really can not work any other way.
Parent
Re:huh (Score:5, Insightful)
One additional point: don't try to take over a whole subsystem in one rewrite. Contribute small patches that are easily reviewed to get your feet wet and get noticed. Then, as you're better known and respected within the community, start scaling up your contributions.
It works the same way in any open source community. The new guy who rewrites half the code all at once isn't going to get a review of his code. Show that you can do the small changes right first.
Actually, it works this way in almost any cooperative group. You don't show up to your first meeting at Kiwanis, the Jaycees, or the Lions and start making resolutions. You don't sit in on drums once for a band and start telling them how to write songs. The US Senate even has a rotating term cycle so that there are always Senators with more experience to get the junior Senators acquainted with how things work.
People who think they should suddenly be in charge of a large portion of an established organization they've just joined are showing signs of detachment from society or megalomania. If you've never contributed anything worthwhile, you're nobody special compared to the people who have been doing the work. Don't expect to be a big part of a group without being a small part first. Some people move up the ranks faster than others through skill and hard work, but everyone pays some dues.
Parent
Re:huh (Score:5, Insightful)
And the honest truth is that.
Unless you are some kind of super prodigy or have years of experience writing systems code odds are your complete subsystem rewrite is total junk.
It takes time to be good at anything.
Parent
Re:huh (Score:5, Insightful)
I am no kernel developer, but I think Linus is getting at why "it works exactly as it should and really can not work any other way" has some demerits, and that it not being able to work any other way is why we are in a fix.
In other words, it works as it should, but it is very slow, so how can we improve the process and make better patches faster?
If the answer is that there is no better way, then that is a sad awakening for a lot of us, because it means precisely that Linux isn't going anywhere sooner than it has since the current state has been established.
But there has to be a better way, and I think Linus is trying to find it, as are many others.
Parent
Re:huh (Score:4, Interesting)
Would you let a doctor fresh out of med school slice and dice in heart surgeries?
Would you let pilots start out flying fully loaded commercial jets?
In my limited experience, you don't let a n00b make permanent or long-lasting changes till they have gotten their training wheels off and you know that the n00b knows what the fuck they are doing or at least understand what is going on.
Not to say they couldn't be more welcoming to new developers, but a single bad line (sound familiar debian devs?) and a whole bunch of stuff could stop working.
Parent
Re:huh (Score:4, Informative)
>Would you let a doctor fresh out of med school slice and dice in heart surgeries?
Yes, if that was their residency specialty. Do you know much about med school matriculation?
Parent
Re:huh (Score:5, Insightful)
Parent
Re:huh (Score:5, Funny)
Mod parent down. I don't recognize him, therefore he can't know what he's talking about.
Parent
Re:huh (Score:5, Insightful)
Parent
Re:huh (Score:5, Insightful)
Nothing in open source has ever guaranteed that you get to contribute directly to a specific project. When a specific group of developers is maintaining a release (Linus et al, in this case) it's absolutely up to them what code gets in and what doesn't, and who they will accept contributions from. What open source guarantees is that when they make that release, you're free to take the source code they've created and modify it in any way you choose. You're free to fork the project and maintain releases just as strictly as they did, or open it up to all newcomers.
I think you'll find, though, that opening it up to any unknown person right off the bat will trash your project pretty quickly. The problem is, there are hugely varying ideas of what constitutes "correct" code and architecture, and it's just a fact that it takes time to prove that you understand what that means in terms of a large project such as this.
Parent
Re:huh (Score:5, Insightful)
I think the problem with Linux / Linus isn't so much the patch resistance, but the attitude. Countless times there have been well-written and widely-used patches that were stubbornly rejected by Linus, with little or not explanation as to why. This paints him as a fussy dictator, which may or may not be true - I don't know him personally so I can't say.
It's perfectly valid to reject bad code, and he should continue to do so, to ensure the quality and reliability of the kernel. What would be important, at least in my opinion, is to give some sort of constructive criticism to help that developer improve their code, or maybe point to a similar patch where the developers could join heads.
It's the whole "this sucks, you suck, fuck off" attitude that has built up Linus' reputation as an ego-tripper - so much that his programming ability has taken a back seat to the drama.
Parent
Re:huh (Score:5, Insightful)
I disagree. I think you have the wrong idea about what "open source" means.
Open source pertains to the code base, not to any particular repository of the code. You are quite free to read, modify, and redistribute (with modifications) the code. You cannot compell Linus to incorporate your changes into his version, any more than he can compell you to revert a change from your version.
That Linus has a widely-respected "official" version is a moot point. It really just means he has an audience for his product (i.e. the version of the code he/his team host), and you may not have one for yours (a modified version you create but which isn't accepted as part of his product).
Much like free (as in speech) speech, open source doesn't guarantee you that anyone will listen (where "listen" in this context means "run your version of the code").
As for MS -- well, getting a job at MS isn't the same as getting a job that lets you make major modifications to the Windows kernel. I'd say the sitaution with regard to the high-profile products (i.e. Windows on oen hand, the "official" Linux kernel on the other) is about the same. The difference is that you can't modify Windows without being part of the official team. Not to distribute (even if you can find an audience for your work). Not even for your own personal use. That's the difference between open and closed source.
Parent
Haven't heard of him. (Score:4, Funny)
Re:Haven't heard of him. (Score:4, Funny)
Parent
Re:Haven't heard of him. (Score:4, Funny)
It has been said that:
TFA is a wholly remarkable book. It's already supplanted Operating Systems: Design and Implementation as the standard repository of all knowledge and wisdom, for two important reasons. First, it's slightly cheaper; and secondly it has the words DON'T PICNIC printed in large friendly letters on its cover.
;)
Parent
I gave up a few times (Score:5, Informative)
This suites everyone that uses it pretty fine, except for the purist "it's got to be in the mainline" folks. Realists just pull it from a public cvs and apply it with minimal effort.
Although I might consider mainlining it again, for the moment the effort just is not worth it. The current model is workable for those that use it.
Re:I gave up a few times (Score:4, Insightful)
Although I might consider mainlining it again, for the moment the effort just is not worth it. The current model is workable for those that use it.
It sounds like your FS serves mostly a niche that isn't served by the mainline FSs. Call me a "purist", but I just don't have the time or inclination to re-compile my kernel. I did it many years ago to save a few kilobytes of memory when it was at a premium, but these days, why? If you don't care about keeping up on kernel patches and have some specific needs that aren't supplied by the mainstream kernel, then re-compiling is fine. But if not, then the mainstream kernels (vendor provided) wind up being a lot easier to work with.
Parent
Re:I gave up a few times (Score:4, Funny)
Worse? ... or... better? :-D
I dunno, all I've tried in the past is an SQL injection.
Parent
In other news... (Score:5, Funny)
This goes for every OS/FOSS project out there. (Score:5, Insightful)
And considering the widespread usage plus amount of people that rely on the Linux kernel to be stable and not explode in a horrible firestorm I can certainly understand that Linux kernel development requires a Stalinist approach.
Re:This goes for every OS/FOSS project out there. (Score:5, Interesting)
I am sure this goes for closed source as well. If the rookie comes in, he will also have to prove himself. The same goes for every other aspect in life.
If are new into a group, it is to be expected that you have to prove yourself. Whether this is with your local gang, a family you are married into or a bunch of coders is irrelevant.
Even Neo had to prove himself first. Each group will have its own rules and speed of how fast you are accepted. A group of drunk people in a bar might have a lower standard, but if you do not fit in, they will not accept you and will not listen to your sugestions, no matter how wise they are. (Stop drinking? Why? This is FREE BEER)
Parent
Learning the rules (Score:5, Funny)
Re:Learning the rules (Score:5, Insightful)
Yes, but trick is that since you can't constantly be bugging Linus for all the answers, you have to know what his opinion is without asking him. That's the tough part.
Parent
Re:Learning the rules (Score:4, Funny)
Yes, but trick is that since you can't constantly be bugging Linus for all the answers, you have to know what his opinion is without asking him. That's the tough part.
Skills required in Linux kernel development:
...
...
Mindreading
Parent
Allegiances (Score:5, Insightful)
What happens if:
1. Batman is more or less responsible for a big chunk of the kernel, e.g. the scheduler.
2. Torvalds knows Batman, and knows that Batman is employed by Redhat to work on the scheduler.
3. The Joker writes a new improved scheduler which has the potential to replace the old one.
Now, how does Torvalds react? It would be hard to tell Batman that he's no longer in charge of the scheduler. Batman's job might be on the line - why would Redhat keep paying Batman if he suddenly had a lot less work to do? Maybe Torvalds met Batman a few times and had a beer with him, making it even harder to replace his work because it becomes personal. Torvalds could harm Batman's career.
Surely this makes it hard to become a big new contributor? All the existing contributors already know eachother and they won't want to dump eachother's work.
Am I right or am I right?
Re:Allegiances (Score:5, Insightful)
Am I right or am I right?
You're a tautology.
But let's take your unproven hypothetical as given for a second. If these sorts of decisions are being made, which provide technically inferior solutions for the Linux kernel.. then over time it will become obsolete.
But way before then we'll all be using the nuLinux kernel which has all of "The Joker"s fancy code.
In other words, F/OSS can take care of itself; we're just the dumb monkeys hitting random keys.
Parent
Batman sometimes has an ego (Score:3, Insightful)
Actually, the parent was slightly overgenerous, because he mentioned only the case of Batman being a wholly nice guy (implied).
The bigger problem occurs when Batman is a regular human with a large ego and a dislike for NIH code (or worse, Not Invented By Me code), rather than an objective engineer fully willing to accept that another developer has come up with something better.
Although we heard about one high-profile case recently where this happened, with an outcome that was more political than based on en
Re:Allegiances (Score:5, Funny)
Parent
Re:Allegiances (Score:5, Funny)
3. The Joker writes a new improved scheduler which has the potential to replace the old one.
Very efficient. I like it.
Parent
I don't get it (Score:5, Funny)
Can you explain your point of view with a car analogy, please?
Parent
Andy's revenge (Score:5, Funny)
If that's the problem, wouldn't it be easier to work on it if it was a microkernel?
Re:Andy's revenge (Score:5, Interesting)
Seriously though, the problem with microkernels is that they (in theory) help the system cope with mistakes but they don't help prevent mistakes in the first place. Each component in a microkernel is isolated from others using memory protection, but they can still corrupt themselves or crash themselves.
There's very few parts of the kernel that actually need pointer arithmetic, unsafe casts, or for that matter need to operate particularly quickly. You don't have to believe me just look at the code. Open up some random source files from the kernel and look for pointer math, unsafe casts. Figuring out what locks are held when is harder, but can be done (performance being more important when locks are held).
Microkernels are solving the wrong problem. They should be focussed on preventing the errors in the first place not on recovering from them. So, a 'safe kernel' that is mostly written in a language that prevents errors, such as Limbo/Dis or for that matter Java or C#. That would be much easier to work on and an improvement over Linux style kernels.
Parent
Re:Andy's revenge (Score:4, Insightful)
If that's the problem, wouldn't it be easier to work on it if it was a microkernel?
Yes. Fortunately linux is half way to being a microkernel now. I can personally attest that writing a user-space file system (eg in FUSE) is vastly easier and quicker than hacking (let alone writing) a filesystem in the kernel.
The evidence is on my side. Look at how many filesystems Linux supports, and count how many are in FUSE, versus how many are in the kernel.
Parent
Re:Andy's revenge (Score:5, Funny)
Long answer: Fuck no.
(From Stephen Fry)
Parent
It can't be THAT hard (Score:4, Funny)
Surely you only need to know a bunch of C keywords and you should be set. Here's the bunch I know
malloc
free
<<
>>
++
--
That star thingy I see every now and again.
I might have a look at this so called complicated kernel later :)
Re:It can't be THAT hard (Score:5, Funny)
Parent
Re:It can't be THAT hard (Score:5, Funny)
at mozilla
Parent
Re: (Score:3, Informative)
Wisdumb (Score:5, Insightful)
It's no picnic to become a major anything. Major people are people who have differentiated themselves from minor people. The means by which they've done that is to do something that's more difficult, which the other people cannot do. This is a tautology masquerading as wisdom.
It's easy to get involved. (Score:3, Informative)
Just walk in, sit down, and lurk. Don't write code, just read code. Analyze what patches do. Start small.
You don't have to be friends with developers, but you shouldn't be trying to make enemies. You're dealing with highly rational people here, so keep a level head. Don't bug a developer about what a piece of code does until you study it thoroughly, and don't be surprised if they'd rather tell you about what it's supposed to do instead of what it currently does.
~ C.
No problemo. (Score:5, Funny)
Simply Photoshop [slashdot.org] yourself into a few choice picts with Linus and start blathering on about "spin locks" or some such stuff...
Gee wiz (Score:4, Interesting)
So the Linux kernel is developed like every major software project that's ever existed.
How completely and utterly unremarkable.
and remember (Score:4, Funny)
Parent