Linus' Lessons On Software Dev Management
Esther Schindler writes "In this interview with Steven Vaughan-Nichols, Linus Torvalds shares hard-won wisdom about managing software development projects, including encouraging community involvement, the importance of programming tools, and ensuring the project stays on track. For instance, regarding getting people to contribute to your project, he says, 'If you start off with some "kumba-ya feeling" where you think people from all the world are going to come together to make a better world by working together on your project, you probably won't be going very far.'"
Linus said "probably", because this is the fate of a majority of projects. Also, Stallman didn't just put the idea out there and let it sit. He's been working on it and an organization dedicated to it ever since. It's taken a long long time for Free Software to get as 'mainstream' as it is, and in the mean time, we've gotten plenty of variants on the original theme, like 'Open Source' (which at a practical level isn't really any different).
It's really great, this whole Linux and GNU thing! Even if Linus isn't about kumba-ya, (Although he is, and one day he will rip his disguise off and laugh like a super-villain to reveal a t-shirt with the hammer and sickle. Mark my words, he's a closet commie, right in our midst.) ...whoa that was a long winded parenthesis. What I was going to say, was that the ingenious thing about this whole FOSS thing is that it is a building block of future anarcho-socialist utopia and at the same time the greedy capitalists can not help but contributing, since it is in their shorter term self interest. But the day will come when the people will truly be masters of the world, each and every one and computing will be a significant part of how we will do it.
Sincerelly,
Future person.
~
~
(Or did I dream it?)
Torvalds was always more pragmatic than Stallman. And Stallman is getting more out of touch with reality, not having programmed the last 20 years.
If you're trying to say Stallman is a weirdo, I agree, but there's no need to insult the good man.
Besides that, you don't know what you're talking about. His last commit (at the time of writing) to the emacs source repository was less than a month ago:
http://git.savannah.gnu.org/cgit/emacs.git/log/?qt=committer&q=stallman
How is he out of touch with reality? Really, an explanation would be handy to go with the accusation.
Stallman is more in touch with reality than most people. Imagine where BSD could have been now without the constant rape and pillaging of it? The reason it flunked is purely because of the license and that nobody ever gives anything back to the BSD community.
Had Linux been based on the BSD license it would never have taken off like it did.
HTTP/1.1 400
If you start off with some "kumba-ya feeling" where you think people from all the world are going to come together to make a better world by working together on your project, you probably won't be going very far.
A common enemy is always a better motivator than soft fuzzy stuff. The Soviets got us to the moon, bitter divorcees are better in bed than single women, and vi wouldn't be half as good if it wasn't for emacs.
Thanks, Mr. Gates.
Have gnu, will travel.
All credit to RMS for the license and making projects use it, but the projects themselves succeeded because they're run by people like Linus. The GNU Hurd failed and the GCC was upsurped by the EGCS fork and then conveniently renamed back to GCC after the FSF admitted their project was going nowhere. There's really no support for RMS or the FSF being good at running large projects, they implemented a lot of the command line tools and other simple things but their large projects flopped. If I was to take advice on running projects I'd listen to Linus any day.
That said, I think he's a little bit colored by developing a kernel and running servers where stability is a lot more important than in many other areas. On the desktop it's not that useful if I have a desktop that doesn't do what I want, no matter how stable it is at not doing it. I'm willing to be on the bleeding edge from time to time, as long as there's good communication on just how unstable it is (KDE4, I'm looking at you...)
Live today, because you never know what tomorrow brings
I don't know there are plenty of successful projects with a BSD or MIT licence. Nobody could keep up with Linux today in a proprietary sandbox. It's the fastest changing codebase in the world. The type of money required to one entity to out-develop linux would be astronomical. The X windows system is still alive even though historically people have tried to make proprietary spinoffs. Also BSD is far from dead, it just has a lot more of a conservative design philosophy which means it is deployed where long term stability is more important than cutting edge features.
“The first thing is thinking that you can throw things out there and ask people to help,” when it comes to open-source software development, he says. “That's not how it works. You make it public, and then you assume that you'll have to do all the work, and ask people to come up with suggestions of what you should do, not what they should do. Maybe they'll start helping eventually, but you should start off with the assumption that you're going to be the one maintaining it and ready to do all the work.”
That is probably the most true statement I have ever read with regards to crowd-sourcing. You have to be willing to do it all yourself with input from others.
I call it 'The Aristocrats'
Hmm. So this doesn't count everytime the Kernel APIs change and a bunch of device drivers get broken? IMHO it's the users that get hurt by the lack of stable kernel APIs since the original developers are the only people that have the skills, source and tools to make the fix - if they are still interested.
IF you do have to break compatibility do it loudly and warn people ahead of time. You don't want people loading up the next point release to all of a sudden find that their config files won't work correctly (I'm looking at you grub2)
Seriously, I got flamed a few weeks back for calling Linus the John Carmack of OSS (which is to say someone who did something revolutionary at one time, but has since mostly been riding reputation, rather than continuing to produce at the same level as in the past.)
Between the FSF and Linus there's been a continual cycle of breakage in APIs and ABIs across the system that make managing the software yourself without some form of package management and toolchain management basically impossible. Combined with a variety of gotchas in compiler/library options which can make your just updated system incompatible with the previously compiled binaries (rare today, but a common occurance when going from 2.0->2.1->2.2->2.3 series glibc, nevermind gcc 2.8.x->2.95->2.96->3.x->4.x compiler toolchains. Added to the old MAKEDEV->devfs->udev fiasco and you have a mess that's only been overlooked because almost nobody bothers to do it themselves, instead relying on distro maintainers to make sure packages JUST WORK, even when they really don't.
As someone who has been trying to put together legacy toolchains for the past few weeks to try and see how legacy code works, let me just say it really sucks ass.
1) Money-oriented: Larry Ellison, Bill Gates
2) Technology-oriented: Linus Torvalds, James Gosling
3) Socially-oriented: Richard Stallman, and... not many others in this arena
If you judge people in one group by the values of the other, they seem deficient. Torvalds failed to capitalize on his success. Ellison is a bastard. Stallman's head is in the clouds. But they are at or near the top of their own games.
I spit water onto my screen when I read those last three words. Linus may be a great programmer, but the Linux kernel development community most certainly formed in spite of his attitude toward his own community, not because of it. Patches that make it across his desk are either accepted or rejected, with nary a hint of explanation or rationale either way. He regularly calls people (and their patches, or even their methods) "stupid." Any tool that he doesn't use or didn't design is classified as pointless, or brain-dead, regardless of whether it fits someone else's needs just fine.
You don't have to very far to see this in action: http://lkml.indiana.edu/hypermail/linux/kernel/1109.2/author.html
Stallman did that already it is called HURD.
I hear next year they will finally be able to have text output on the screen.
Stallman knew that you have to be willing to write the software yourself long before Linus came along. Emacs, GCC, GlibC and various other GNU components didn't magically appear from the community. They were begun and advanced by RMS and other GNU people for years, laying the ground work for Linux's success.
HURD turned out to be over-ambitious in comparison to those other core components and once Linux came out, the need for it went away. I wonder if GNU/kFreeBSD would have emerged sooner if it hadn't been for Linux. While most of the GNU components were designed in a similar way to the Unix components they replaced, HURD is based on ideas radically different from traditional Unix kernels which still haven't proven themselves practical in general. Linux, on the other hand, was designed very much like traditional Unix kernels, ironically in direct contrast with the Minix one it most directly replaced.