Linus on All Sorts of Stuff
Linux Times.Net writes "
Linus Torvalds
tells of some other programming venues than the Linux kernel, predicts a shadowy outcome for GNU/Hurd, gives some advice to anyone wanting to undertake a large software project and updates us on the latest in kernel development in this email interview by Preston St. Pierre. "
He's not a god or anything, but a very down-to-earth person when it comes to software and the linux kernal in general. He is absolutely correct on what happens to "big vision" software. Too many projects that started big have fizzled, and small applications that work tend to grow and morph into ground-shaking applications as they mature. Take web-browsers for example.
JMD
When all else fails, feel free to panic.
What's with all these so-called interviews which are basically a handful of random questions asked by an interviewer who seems to be doing his junior-high homework assignment? OSNews is bad enough... can't they ask anything interesting, or actually engage in a conversation about the subject? Linus has lots of interesting things to say, but unfortunately these folks can't think of what to ask.
The interviews in ACM Queue, particular the one with Jim Gray interviewed by David Patterson, was much much more intriguing.
Make up your mind. Is it ``immensely flexible'', or ``monolithic and slow-to-change''? I'm pretty sure it's not both.
As for ``too monolithic and slow-to-change to be easy to toss onto a new PC'', try Knoppix. It makes installing Debian easier than installing Windows.
See what I've been reading.
From that description, it doesn't seem very useful for exceptional Joe either, only for GNU/Joes developing Hurd.
Be wary of any facts that confirm your opinion.
It's not entirely bad for operating systems students to get their hands dirty with either. It does have some cool things going for it--though it does seem doubtful they'll ever get anywhere with it as a mainstream OS--for example: rather than using the traditional monolithic kernel, hurd uses a multi-server running on top of microkernel approach. So it is definitely neat and interesting for os geeks to play with.
Sure, Linus can't see into the future, but he can follow the blinking red arrows that industry is posting.
There are many reasons why Linux won't go to a "shadowy fate." It is largely deployed in the enterprise. There are thousands and thousands of people either directly developing on it or for it. There is millions of dollars being shoveled into it by the likes of IBM and Novel. If all these folks thought that Linux was headed for a shadowy fate any time soon, do you think they would waste their time and effort on it? Do you even read Slashdot? (:
It's not neccesarily just about open source vs closed source, it's about superior product in the market place. Open source is a partial factor, depending on your targeted demographic. I'm not sure how its immense flexibility is a bad thing, or how Linux is too slow to change, but it's true that all people may not be able to enjoy it. Even that is rapidly changing, with easy-to-use distros like Linspire, Ubuntu (or whatever), and Fedora.
More on usability: Because I am a technically-abled person, I prefer to use Linux on the desktop (home computer and work computer). When my laymen friends ask if they should install Linux, I shrug and ask them what's wrong with their Windows? I hope that I will be able to give them an enthusiastic yes within a year or two.
Okay, maybe HURD isn't where we all want it, that is -- on our desktops and running everything... BUT...
Lets not forget, HURD is FSF/GNU, and they've proven time and time again that they are presistant, don't rush to complete their vision, and go the extra distance on a lot of things.
If HURD achieves both the standards and the quality of forethought that all the other FSF/GNU code that has been released so far, then it will doubtlessly be a marvel of OS technology. It has a tall order to fill, though, and honestly -- it there's no rush to see it pushed into production, then I'd let the politics play themselves out. However, it *is* the goal of the FSF. How it finally winds up-- well-- I'm anticipating to see like everyone else, but I've become a believer in the FSF's patience, skills, and collective vision.
In Linux, you may have to install fewer drivers, but the ones that you do have to install are difficult to do so with. This is what prevented me from making the switch to Linux a couple years ago: I couldn't get my wireless NIC running.
It's easy to say that I should buy hardware more carefully, or (as another poster said) it works on everything except "those shitty winprinters," but that avoids the problem. I need it to run on the hardware I've got already, or it becomes cheaper (and easier) for me to go buy a Windows upgrade.
I'm hardly a computer guru, but I'm definitely more competent than most people I know when it comes to them. Nonetheless, every time I've tried to switch to Linux (on average, once every year or two since '96), I've been put off by a piece of hardware I couldn't make work.
First it was sound, then it was printing, then it was a NIC, then it was a video card, then it was a wireless NIC.
*shrug*
I'm sure I could learn how to do it, but I already spend 50+ hours a week fighting with computers at work, I don't want to struggle when I get home.
Reality has a conservative bias: it conserves mass, energy, momentum...
It's only been what, like 15 years?
Who's kidding who?
The revolution will NOT be televised.
When my laymen friends ask if they should install Linux, I shrug and ask them what's wrong with their Windows?
Overwhelmingly, it seems to be adware/spyware, and the all the other stuff that people install intentionally or accidentally. Within a year or two, the average windows machine gets bloated with semi-removable crap.
The people I've moved over to linux have no problems using it. It's installing it, getting all of the hardware configured, and installing all of the strangely named multimedia software/codecs that is the tricky part. This all usually comes preinstalled on Windows, so it's an unfair comparison.
I am always sickened when I have to use a fresh Windows installation, and it comes without a DVD decoder, a CD burner, a decent text editor, a PDF reader, a popup blocker, an FTP client, or a graphics file converter - all stuff that comes standard with most linux distro, or that I can install (for free) with *one command*.
That's what's wrong with Windows.
These are truly words of wisdom! Take note, young software engineer!
I don't buy it. And perhaps it's because I fall into the young category and might be lacking the "real world" experience.
e're taught from day 1 to look at code reuse and to break large chunks of logic into smaller bits. That requires a bit of planning ahead. You need to make some good guesses about where things will go. Right now you don't need to worry about transferring data via sockets, but there's a good chance one day you will need to. So you design the way your program breaks down its funcionality so that it's a trivial matter to take the output from one function and direct it torwards another that begins/handles the transfer process.
Lets take it up a notch in complexity and look at planning the development for a 3D game. You build a modular system so as things change, you can move to a different sound engine, or 3D engine, or whatever, and don't have to rewrite half the code of the system. But to build modular, you have to plan, you have to see where, down the road, that modularity is going to give you a benefit.
That's what makes the HURD really nice is all the modularity is planned and laid out. There's a structure and you know the direction the development will take. Big picture stuff.
There's a reason the captian of the ship pilots from the bridge, where he can see what's in front of him. Linus seems to want to pilot his ship from the engine room.
There is a lot of truth to this. But if you look at the list of things you're giving (sound, printer, ethernet, video, wireless) you'll notice they're getting increasingly 'modern'. Within a year you will likely find wireless works perfectly (it already does for many devices, though my atmel wlan requires a (GPLed) driver not included in the kernel).
But that's not to say your comment won't be applicable in a year, you'll just have to say 'bluetooth' instead of wireless, or whatever the hot new technology of 2005 is. My feeling is that for most people, linux will 'just work' first time now. This was less true two years ago, and it will be even more true in two years time.
Your assumption is that it takes a lot of planning.
/now/ to build one. As their needs increase, they add to those bits and pieces. If the needs exceed the flexibility of the design, that's the time that redesign is required.
:)
:)
/not/ to do when designing software.
Take a look at CPAN for a good detraction to your argument.
Most CPAN projects start pretty small and fill only a few features. Since search.cpan.org contains a pretty thorough revision history of most of these projects, you might find that useful.
Anyways, no one builds an app in perl with one all-encompassing module. They take bits and pieces that do what they need
You can see a good example of your argument being executed poorly by examining some popular PHP applications, or you can just take a look at slashcode, which I apologize, should never have been released to the public.
PHP 4 in particular has horrid OOP support. I know perl's isn't much better, but I'll gladly take horrible perl OOP over that joke of OOP that's is the representation in PHP 4. It's much better in 5 I hear.
Anyways, that's just context, only to lead to the point. As a result, many of the applications in PHP lead to shoe-horning OOP features into a procedural interface - which is fine if you know what you're doing, but not really in anyone's best interest unless they still refuse to admit that OOP has merit and a place (only the biggest curmudgeons in the software industry - like jwz.
Either way, a lot of PHP authors try to implement things like plugins, namespaces, all sorts of crap which PHP 4 was not meant to do by craftily using includes and manipulating the names of functions.
I'm only using the PHP vs. Perl comparison because the distinct lack of features in PHP 4 that appeal to a designer of large applications fosters this kind of problem, and while it's pretty rude to make this assumption, only those who can't see that ahead of time doom themselves by writing large applications completely in PHP 4.
A good rule of software design: If you can't realize it without getting crafty, you've already done something wrong. Unnecessary complexity will always lead to failure. Take a look at windows.
Amongst other problems with PHP (like it's lack of a built-in database API that supports binds for all databases), that's why you see these applications on bugtraq all the damned time. Applications like Zope which are built on a foundation made to give the features an application like Zope needs help eliminate the most basic design flaws.
Just to bring my argument down from the heavens, I have on two occasions gone to great lengths to design giant API's that were flawed as soon as I plugged them into the editor. One of these designs kept me away from my editor for nearly 6 months, unless I was writing documentation. So, I would like to think that I'm speaking from experience on what
If I had said, "what do these things really need to do", written them, and then said, "how can I make them operate better", I don't think I would have been in that position.
Nonetheless, the hardware support of even the latest Linux distributions is inferior to that of Windows or even Mac OS X
I call shenanigans on this. The last count I saw showed that Red Hat FC2 has more than 3 times as many drivers as Windows XP out of the box, assuming that you only count Intel-compatible platforms (if you count all platforms, Linux has an even wider edge).
E.g. my scanner and TV capture card are both supported out of the box under FC2 and not supported at all under XP. The scanner came with Win95 drivers, but no newer ones are available for Win32 and the old ones don't work with Win2k and later. I can't remember exactly which Windows version broke support for the capture card. I have no intention of buying a new scanner when mine is a great workhorse oversized flatbed with true 1200x1200 resolution that still outperforms the modern cheapo models handily.
And while my wireless LAN card is theoretically supported under Windows, it locks up every 10 minutes when WPA encryption is enabled (WEP is forbidden in our environment for security reasons) but runs for weeks with no problems under Linux--and Linux supports advanced features like running it in host AP mode (as a basestation).
Windows has better support in some areas--brand new 3D graphics cards is one, new winprinters and winmodems are others--but as far as overall hardware support Linux is way ahead.
rage, rage against the dying of the light
Which would put it on a par with how useful the Linux kernel was when it was young. It wasn't useful unless one was extremely technical, and even then it lacked a lot of hardware support and one couldn't do a lot of commonly useful things with it. In time, the HURD can mature and become competitive. This doesn't mean GNU/Linux is a piece of cake for jobs people want to do.
But what I find interesting is Torvalds' answer to the question following his HURD answer:
Here, unlike in previous questions, I think Torvalds uses the word "Linux" to mean a complete operating system in which the Linux kernel is being used (typically, a GNU/Linux system), so I'll interpret the answer in that vein.
The main point I wanted to draw out is that it took ten years, by Torvalds' estimate, to get where things are now. I'd argue that that estimate is wrong by half (the free software community began 20 years ago), but even if we take the ten year figure at face value, the HURD hasn't been running on anyone's machine for ten years yet. And even now there are people (such as a fellow I had on my radio show last week who was addressing a caller saying the same thing) saying that the modern GNU/Linux system is too hard to use, too complex to install and to complex to do some jobs with when compared against Microsoft Windows or MacOS X. Those jobs include:
All of these jobs are possible but way more difficult to simply do than they ought to be. And few (if any) distributions make it easy to do these things by including the free software packages available to make them work right out of the box.
Configuration is too hard; getting these things working rely on one's skill with a command line interface or editing technical configuration files. ESR's printer essay was right on the mark when it came to his perspective on hooking up a printer--adding a printer should be automatic and the system should do more network scanning and autoconfiguration to suit what most people most of the time will want.
So, even for those who would complain the GNU/HURD system is too far out of reach, I'd say look closer to home and see the problems that exist for GNU/Linux. GNU/Linux is a heck of a lot closer to what I think people yearn for, but that's no reason to trash GNU/HURD.
Digital Citizen