Hello everybody out there using minix - I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones... I'd like to know what features most people would want. Any suggestions are welcome, but I won't promise I'll implement them :-)
In 1991, 22-year old Finnish computer programmer Linus Torvalds released his own operating system. Opening with the message "Hello everybody out there," (a now-iconic phrase among Linux fans), he posted the source code online. People alternately contributed their abilities to improve it where they could or went off to build their own things with it.
Now, some 23 years later, Linux is everywhere. It powers your Android smartphone. It sorts mail for the US Postal Service. It runs the controls for CERN, the world's largest particle physics laboratory, it steers nuclear submarines, and it powers more than 95 percent of the world's 500 fastest supercomputers. Linux is free, open, and incredibly capable, and Torvalds is a brand-name guy based on work that he started "just for fun."
Torvalds continues development on Linux to this day in his role at the non-profit Linux Foundation, and he was kind enough to answer some of our questions via email this week. He's an outspoken guy with well-informed opinions on everything from intellectual property law to computer science education. Here are the main takeaways from our conversation, and the full interview appears below that.
- He's quite happy with how far Linux has come. "I think programming is fun, and the community around the kernel is great, but a project has to be relevant too."
- The patent system is fundamentally flawed. "There are tons of honest people who are trying their best to do what they really think is right, and not all patents are crap. But the systemic incentives are just out of whack, both on the patent application/granting side and on the litigation side."
- No regrets over making Linux open source. "Me trying to make a business around Linux would have been a total disaster. It would have made it impossible to get the kind of community around Linux that we have, and that was so instrumental in making Linux what it is today."
- Torvalds family gear is largely Linux-based. "We're a Linux household, surprise surprise. The computers I have may have originally come with Windows or OS X pre-installed, but for some odd reason they all run Linux in the end."
- Computer programming is not for everyone. "I think it's reasonably specialized, and nobody really expects most people to have to do it. It's not like knowing how to read and write and do basic math."
BUSINESS INSIDER: What’s it like to know that various iterations of a software you developed over 20 years ago are now key in powering all kinds of things today, from phones to stock exchanges?
LINUS TORVALDS: On a purely technical side, I'm really very happy with how Linux gets used in a very wide set of different areas. It's important for development: being used in different niches not only makes the system much more balanced (input from many different use cases), but there have been lots of technologies that have been developed for one area, and that a few years later end up being really important in another one. For example, the fact that servers became very important for Linux pushed the SMP development, and then a few years later SMP became very important in the embedded area too. And going the other direction, we had lots of power management code developed for mobile devices, and then a few years later the server people became very aware of power use.
On a personal side, I'd argue that everybody wants to do something that matters, and the fact that Linux has had a huge impact on the tech market and is used virtually everywhere is obviously very personally satisfying. I think programming is fun, and the community around the kernel is great, but a project has to be relevant too.
BI: What do major software companies get right/wrong when it comes to intellectual property nowadays?
LT: I think the term "intellectual property" should be avoided, not because it's a bad term, but because it mixes things up that shouldn't be mixed up. There are different forms, and they hardly have anything to do with each other. (And some people dislike the term for other reasons, but whatever.)
The main black spot tends to be patents.
And I don't think it's so much that the companies get things wrong, as just the fact that particularly US patents are just a horribly broken system. So then you inevitably see companies gaming it.
And I'm not just talking about the most egregious patent trolls. The patents themselves are crap, because the Patent and Trademark Office isn't seriously able to say no to them. Even if the examiners were to be skilled in the art and really wanted to say no to something, it just generates more work for them (since the applying company will just amend the application and try to push it through again). And companies actually prefer vague and over-broad patents that are hard to judge, because then you can try to apply them in wildly inappropriate situations, and it's not like the threat is the patent itself — it's the litigation. So as a result, you have all these insane licensing and cross-licensing agreements that aren't even about the worth of the patent itself, but simply about the cost of litigating it.
It's the Cold War all over again, and there's a lot of vested interest in the balance. So even though pretty much everybody knows it's all horribly broken and you won't find anybody sane to actually defend it honestly, you'll certainly find shills (often from the legal side—cui bono?) talking about how it "helps innovation and innovators".
It's all bullsh-t, sane people know it's bullsh-t, but making real change is difficult. Politically, the US patent system also tends to help US companies, because once you get into a court of law, it's not about the law any more (and it's certainly not about the patent, which is crap and which neither the judge, the lawyers, nor the jury will understand anyway), and it's much easier to sell as an "us vs. them" story.
How do I love patents? Let me count the ways.
And don't get me wrong. There are tons of honest people who are trying their best to do what they really think is right, and not all patents are crap. But the systemic incentives are just out of whack, both on the patent application/granting side and on the litigation side.
Copyrights have much fewer problems. You have some of the same issues on the litigation side (see the whole bogus SCO-vs-IBM saga), but in that area it's the crazies that cause the occasional brouhaha. In contrast, patent warfare has been institutionalized, and the inmates are running the insane asylum.
BI: Do you ever wish you had licensed or monetized Linux more seriously from the outset?
LT: Hell no. I get that question every once in a while, but the thing is, me trying to make a business around Linux would have been a total disaster. It would have made it impossible to get the kind of community around Linux that we have, and that was so instrumental in making Linux what it is today.
Plus, quite frankly, I'd have sucked at it. One of the reasons I like open source is that it allows people to work on the parts they are good at, and I don't mean just on a technical level; some people are into the whole selling and support, and that's just not me. Being open source meant that I could work on the technical side (along with lots of other people), and others who had the interest and inclination could start up companies around it.
In fact, for the longest time I made very sure that I did not get involved with any of the commercial Linux companies, exactly so that I would be neutral and not ever seen as "working for the competition". So I worked for a startup that wasn't really doing Linux (although they used Linux and were more than happy to let me work on it and supported me), exactly because that way I wouldn't be seen as biased. And I think that too was good for Linux.
Now, for the last ten years I have actually been getting paid for doing Linux, so these days it really is my "real work". But I still make sure I'm not seen as being "competition" to people and companies doing Linux, working for a non-profit industry consortium (Linux Foundation). That way everybody can trust me as a maintainer.
And the thing is, I'm not poor. I may not be insanely rich, but I do very well, thank you.
BI: Do companies like Microsoft or Apple figure into your personal life? What kind of "gear" do you rely on?
LT: Yeah, we're a Linux household, surprise surprise. The computers I have may have originally come with Windows or OS X pre-installed, but for some odd reason they all run Linux in the end ;)
The actual gear we have is varied. My main desktop is just a random franken-box that is put together from different hardware, some donated, some bought. That box started out as a development box for pre-production Intel hardware, but has gotten upgraded piece-meal since, so the only parts remaining of the original box is the enclosure and the power supply, I think.
I used to use a MacBook Air as my laptop, because it's the right form-factor (well, close to: the correct form factor for a laptop is obviously 12" and 2 lbs, and I don't understand why everybody gets that wrong). But I got fed up with the horrible screen, so I've gone through a few trials since (including a Pixel Chromebook) and am currently enjoying a 11" Sony Vaio Pro that actually comes in at lighter than my 2 lbs target weight, and has a reasonable screen). The kids use the old Macbook Airs now.
We've got various Android phones and tablets, and a couple of Chromebooks.
I don't think we have anything particularly odd in terms of gear. The geekiest thing I have is likely my MakerBot Replicator, which gets occasional use (mainly through my eldest daughter, who sometimes has a project for me to print out—it's busy printing out something for one of her classmates right now, in fact).
BI: How will collaborative development scale to projects of incredible complexity, like the nuclear fusion research project ITER? At some point it seems the limiting factor is people's ability to communicate with one another.
LT: So I don't think complexity is the stopper—in fact I would (and do) seriously argue that especially in the face of complexity you absolutely have to have an open and collaborative development process, exactly because it's the only thing that scales. However, it's not enough to be open and collaborative — it needs to be distributed as well.
I use nature and evolution as an example of this: the only thing we know of that is more complex than modern engineering is biological. Which is very much an example of a very distributed and collaborative development process. Of course, in that area the "collaboration" tends to be called "sex" ;)
However, since you mention ITER, I do want to say that the problem there is the fairly obvious lack of that whole "distributed" thing. If you have an actual single piece of equipment that costs billions to build, it's rather hard to have lots and lots of people work on it independently and in a distributed manner. There's a very real choke-point there that is quite hard to avoid.
And I realize that in ITER they are trying to distribute the building of the different pieces, but that's not at all what I'm talking about when I say "distributed". I mean the massive parallel kind where everybody can replicate the whole thing. And that is very much not what's going on (or an option) in ITER.
So I'm not at all convinced that collaborative development can scale all that well in that example. Software is special — there are very few choke-points like that (I'm not saying "none", because we've seen them in Linux too — not everybody has access to huge machines with thousands of processors, and that can make it hard to test and develop things for certain loads). With software, you really can replicate and do a lot of very real and active development in parallel, and actually try it out and see what works. Going back to the biology example: there aren't very many models that are known to scale, but "trial and error" sure as hell is one of them.
Of course, in engineering you'd want to be more directed than random, so I'm not equating biological processes with open source, but I do think there are lots of commonalities.
There are other areas where the open collaborative model has worked well (Wikipedia isn't perfect, but it sure is better than what I grew up with), but it does seem to require that you really can distribute the resources and the development fairly widely without having big barriers. In general, that tends to mean that it works best on non-tangible things ("information"—whether it's programming or encyclopedic knowledge), but it certainly doesn't need to be *purely* non-tangible. But the physical parts you need would seem to need to be cheap, standard and common enough to distribute widely. In hardware design, FPGA's and common platforms like Arduino have been able to generate that kind of experimentation.
But ITER? With a huge, complex, expensive piece of hardware that you'll have one (or eventually just a handful) of? Yeah, I'm going to go out on a limb and say that there's a lot of red tape and politics and bureaucracy, to the point where collaboration is going to be really hard. A lot of committees... There's a lot of people hoping for a simpler, smaller, and yes, more scalable solution.
BI: There seems to be a blanket dictate coming from Silicon Valley that everyone’s "gotta learn to code, gotta learn to code." If it were up to you, what would computer science education look like nowadays?
LT: I actually don't believe that everybody should necessarily try to learn to code. I think it's reasonably specialized, and nobody really expects most people to have to do it. It's not like knowing how to read and write and do basic math.
That said, I think people should have some way of getting exposure to it, just so that people who find that they enjoy it and have the aptitude know about the possibility. Not because everybody will want to or need to learn, but just because it is a great vocation, and there may well be lots of people who never realized that they might actually like telling computers what to do. So in that sense I think computer courses in schools are a great idea, even if I do not believe in the "everybody should learn to code" thing.
BI: What can or should people do to improve their relationship with technology?
LT: You know, I'm probably the very last person to ask that question, since I grew up with computers and just love tinkering with them.
And I'm afraid that's not very good advice: "Grow up with it and tinker with anything technical you can. Take things apart, see if you can put them together again." For the people who need the advice, it's probably a bit too late ;)
But hey, maybe it's never too late to start...