According to Linus, Linux Is "Bloated"
mjasay writes "Linus Torvalds, founder of the Linux kernel, made a somewhat surprising comment at LinuxCon in Portland, Ore., on Monday: 'Linux is bloated.' While the open-source community has long pointed the finger at Microsoft's Windows as bloated, it appears that with success has come added heft, heft that makes Linux 'huge and scary now,' according to Torvalds." TuxRadar provides a small capsule of his remarks as well, as does The Register.
"Okay, so the summary of this is that you expect that 12 per cent to be back to where it should be next year, and you expect someone else to come up with a plan to do it," joked Bottomley. "That's open source."
That is also the problem. Everyone adds pieces and eventually it starts to become a mess. Then someone else should fix it.
I've met the enemy and they is us.
[signature]
Of course nobody refers to Windows' kernel when people call it bloatware. Linus however is not talking about Linux as a distro or an operating system, it's just the kernel that's too bloated in his view. And with over 11 million lines of code, it's hardly even a flame.
Now if only he had developed a microkernel instead...
Pretty good is actually pretty bad.
What "bloat" in software means to LT as the high priest of the kernel and what bloat means to me as a user are two different things.
To a user, bloat means awkward, slow, inefficient, and needlessly large (if my storage space or bandwidth is limited). But these are all *perceived*. I don't perceive Linux to be bloated.
In fact, I find *NIX with almost any window manager to be the most efficient computer OS I have ever used. Linux is the best of them, despite being a clone of the UNIX userland.
If an OS can boot from a floppy or small USB key and be totally usable, it is certainly not bloatware. Rewrite the Linux userland in MONO or Java and then we'll talk about bloat.
Rich And Stupid is not so bad as Working For Rich And Stupid.
"Now if only he had developed a microkernel instead..."
It would be bloated AND slow.
But hey, it would look pretty in a high level UML diagram.
I always thought that building drivers into the kernel was going to be Linux's downfall. There is an un-ending supply of equipment that requires drivers and they can't all go into the kernel without some repercussions. Let alone being a black hole that continually sucks up stuff and never deletes it. This design may work well for a small system with limited hardware but is doomed to fail at some point when trying to scale it up for the real world.
I am Slashdot. Are you Slashdot as well?
Torvalds' use of the term "Bloated" in this case refers specifically to a loss of performance and an increase in size and memory usage, not of confusion.
I think there are two (competing) goals for the Linux kernel as a whole (well, there are as many goals as there are developers, of course, so the two competing goals are more of a continuum).
On one side, there is a desire for the Linux kernel to support more features so distros can be built to be more like popular mainstream operating systems like Windows and Mac. Ease-of-use, a pleasant user experience, separation/insulation from the dreaded Command Line, pretty graphics, massive hardware support, and support for more "oddball" configurations like multiple screens, etc. So it's desirable to have lots of driver support and lots of hooks into the operating system to support fancy stuff.
On the other, there is a desire for Linux to be small, sleek, and fast, particularly for embedded projects.
The former has been running the show for a while, and I think that's healthy and positive, but the kernel has gotten larger and slower at its basic job. For desktop users, this is good news since a lot of things that had to be done at "higher" levels can now be accomplished directly in the kernel, so they might actually have a faster user experience, and they've got resources to burn since most PCs are specced out for Windows, so Linux has a lot of spare growing room in that hardware.
But for embedded/minimalist supporters, it means they need to add more hardware to their machines to support the now-larger kernel, chock full of features they'll never need or want.
"This post contains words, known to the State of California to cause thought. Wash brain thoroughly after reading."
That is also the problem. Everyone adds pieces and eventually it starts to become a mess. Then someone else should fix it.
Or we can just use an old version. Unlike to the case of proprietary software, we are not being forced to upgrade to "bloated mess".
The largest prime factor of my UID is 263267.
(1) Large feature set
(2) Compact/optimized
(3) Fast to market
Pick any two...
I come here for the love
more hardware support and more functional tasks with scope creep means larger code base. nothing to see here, move along.
What do you think is extra? What would you remove? Are you able to remove it?
For Ubuntu, I can easily answer these questions because the system is transparent
and I can act on my preferences without even being a developer because the system
is flexible, modular and open.
I can even get rid of a lot of Linuses kernel code because there's been a nice shiny
happy build GUI included with the kernel since the 1.x days.
A Pirate and a Puritan look the same on a balance sheet.
This is like the salesman's nightmare, where you take the guy from engineering to visit the customer. Things are going great, the engineer can answer all the customer's questions.
Then you realize, *the stupid bastard is answering the questions honestly*.
Honesty is a basic requirement to be a halfway decent engineer. Persistent and incurable dissatisfaction with how you did the last job is another. Even if you *know* you did a great job, deep inside part of you knows you could have done it *better*.
Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
Pretty much. He argued that monolithic kernels were obsolete in the 70s, and he was right. The kind of people that argue for monolithic kernels are the same people that argue C over C++ because it's "faster" and "more portable." Possibly true in slight corner cases but completely outweighed by other use cases.
Meanwhile, everyone else important (Windows, OS X) have been using hybrid designs forever.
Often the term bloated is misused meaning the speaker is at a point where he/she personally starts to find a technology confusing to wade through.
Linux today does not boot significantly faster than it did 15 years ago. That's bloat.
the kernel modules are not its downfall, they are its biggest asset.
I have a laptop HD with my copy of Ubuntu running on it. I popped it into another model of laptop yesterday, (from a Dell D630 to a Lenovo T400) everything worked fine.
I plugged a printer in a week ago, worked fine. Connected my Cannon camera, it popped up and asked if I wanted to import the photos. I plugged in my wife's ipod, and it asked if I wanted to open Rythmbox.
On windows, I would have had to go to countless websites, download drivers (or itunes) install, and troubleshoot. With linux, all of that just worked. On XP it was a pain in the ass to switch between AHCI and compatibility mode on my laptop. With linux, I can switch whenever I want.. it just works..
What are we going to do tonight Brain?
Next year he's going to claim that Minix was doing it right all along. We've seen a lot of Linusisms to that effect... $X needs to be outside the kernel... $Y shouldn't happen the way I've been screaming for years... I told $Z to fuck off because he's stupid but he was right and we need to go do that yesterday ... it's just how Linus is. He's an opinionated fat bastard, and then one day he realizes he's fucking wrong and just goes, "SHIT! Well let's do that then >:O"
Support my political activism on Patreon.
What? No, that's not the kernel. That is:
> The BIOS - take a look at the LinuxBIOS or OpenBIOS work to see where that can be improved. But oh, my dear goodness, it can be improved.
> Incredible masses of new hardware that do need detection and configuration at boot time. That's been a sore point: it takes time to scan for all that hardware, and you can optimize it by leaving out tools, but people do like having their network cards and USB drives and graphics tablets work automatically at boot time. That's not the fault of the kernel: that's the fault of the time taken to detect and configure low-level hardware components, such as RAID controllers, which may be necessary to begin to load _any_ kernel with the actual drivers to run the operating system.
> Masses of init scripts starting up many, many, many services in a very lengthy sort of way. Those can be optimized far more than they are, and parallelized: but it takes a rewrite of the 'init' procedures to do so, and that's not the kernel's fault.
I'd like to see all of these improved: all of them are, in fact, plagued by bloat. But they're not hte kernel.
He should start a separate distro and call it leanux....not like we can't make do without another distro out there.
I did RTFA and I must say the article was poorly written - so much so that the author felt he needed to publish a correction that summarily states (what open source power users already know) that the Linux kernel can be "trimmed or fattened up." It is immaterial that Linux has gotten more bloated as the fundamental difference between it and Windows is that you as the consumer have the choice to "trim the fat." While I am an open source users, I am pragmatic and I believe it cannot be all things to all people and Windows has some advantages over Linux. For example, the choices of Linux can be downright bewildering and each distribution behaves differently with its own quirks. Windows is Windows. Even though distributions share a common kernel, they are really distinct OSes in their own right - applications run differently and have different behaviors. As Samba will tell you, sometimes compiling succeeds on three out four large distros. In theory, they should be all compatible.
I agree halfway with you there, but grasping object based design of the better reasons to stay the hell out of C++. That goddamn clusterfuck for a language manages to screw up somehow pretty much every OO concept in existence.
Want to use dynamic polymorphism? Can't do. The base class author didn't bother to make functions virtual (and you aren't the maintainer of that code).
Want to write generic routines using OO rather than templates? Good luck. There's no default class, for starters. (naturally, certain concepts that'd make the problem a non-problem don't exist in C++)
Want to alter implementation details without touching public headers? Sorry, C++ isn't like that.
Want to battle endlessly with templates, initialization order and type system oddities, learn design patterns that are completely useless anywhere else or spend a lot of time glueing incompatible code together? Hey, it must be your lucky day.
On windows, I would have had to go to countless websites, download drivers (or itunes) install, and troubleshoot. With linux, all of that just worked. On XP it was a pain in the ass to switch between AHCI and compatibility mode on my laptop. With linux, I can switch whenever I want.. it just works..
Worst of all, you would need to reactivate XP/Vista popping HD from laptop A into laptop B. This assumes they let you or you press the right monkey buttons when calling in. Switch the HD back, and reactivate again (and again).
On one side, there is a desire for the Linux kernel to support more features so distros can be built to be more like popular mainstream operating systems like Windows and Mac. Ease-of-use, a pleasant user experience, separation/insulation from the dreaded Command Line, pretty graphics, massive hardware support, and support for more "oddball" configurations like multiple screens, etc
I risk sounding like Stallman here, but in this case the distinction actually matters. We're discussing the kernel, not the OS. The OS is GNU, the kernel is Linux. There are various desktops for GNU, most people use KDE or Gnome (I like KDE). It's easy to use, like Windows there is a command line but you won't need it (at least with Mandriva) but you can write shell scripts just like with Windows you can write batch files (and GNU is far and away superior here), it has pretty graphics, far more massive hardware support (Linux will run on anything from a wristwatch to a supercomputer while Windows only runs on PCs and servers), and it is easily configurable for oddball stuff.
But the stuff I mentioned in the previous paragraph is, like your post, completely offtopic as none of them has anything to do with the kernel. You're talking about the shell/desktop when the discussion as about the kernel.
Free Martian Whores!
Um... what are you doing with that N800? Probably surfing FAT websites like Slashdot).
Now what are you doing with MINIX in 16MB of RAM? Probably not much.
How about DD-WRT micro on a WRT54G > version 6? 2MB flash, 8 MB RAM and it runs a nice router and serves up config pages, QoS, etc.