Slashdot Mirror


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.

35 of 639 comments (clear)

  1. Problem by sopssa · · Score: 5, Insightful

    "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.

    1. Re:Problem by Anonymous Coward · · Score: 5, Insightful

      That's all software.

    2. Re:Problem by RiotingPacifist · · Score: 4, Interesting

      If only there was somebody at the top deciding what to let it/reject in such a way to keep the bloat out! While I am a linux/gpl fanboi, i think the bsd distros don't have this problem because they have much stricter people at the top of their kernels, and i think this is yet another sign that Linus should not be the only one running the show. If Linus isn't producing the kernel desktop users need (it's bloated, has the wrong scheduler, etc) then distros should step up and work around the problem GIT makes it very easy for them to start elsewhere, their previous release tree, mm tree, etc and add the patches they require!

      Before you jump at me and say that this will ruin Linux by duplicating work, it will still be the (essentially) same code that goes into the pool, its just the administration that changes, and producing incompatible distro's isn't a problem as the userspace API is fairly stable and changes to the ABI for prop drivers can be agreed on by the major players (or they can just follow linus's changes to them, or go crazy and stabilise the ABI so that the prop drivers work)

      --
      IranAir Flight 655 never forget!
    3. Re:Problem by Galactic+Dominator · · Score: 5, Insightful

      Properly managed opensource projects deal with this appropriately, some do not.

      Properly managed proprietary projects deal with this appropriately, some do not.

      --
      brandelf -t FreeBSD /brain
    4. Re:Problem by TheRaven64 · · Score: 5, Informative

      Keeping the bloat out is not just about rejecting patches, it's about encouraging code reuse. In the BSD kernels, for example, the WiFi drivers are very small and all use the same code for everything that is not hardware-specific. I believe this is the case in Linux now, but for a while Intel had their own (almost) complete WiFi stack for their drivers and no one else used any of that code. This is a pretty endemic problem in Linux. It gets even worse when you stray a little way from x86, and find that everyone is implementing their own, incompatible, code for platform-specific features without realising that a lot of it ought to be shared everywhere above the very lowest layer.

      --
      I am TheRaven on Soylent News
    5. Re:Problem by bostei2008 · · Score: 5, Insightful

      I agree.

      The people hating messes are the developers which have to look at this day by day. Cleaning up code is never something managers care about - its always driven by developers with a sense for order and simplicity.

      That means that Open Source software has a higher chance of getting cleaned up than propietary software, because there you have a higher percentage of truly motivated developers and no managers to bug them. Sigh...

    6. Re:Problem by WinterSolstice · · Score: 4, Interesting

      The BSD distros do not have this problem, but it's not just the strict top-down management.

      It's the users.

      Linux is trying to court three major user groups wih the exact same kernel, and trying to be all things to all people. The big corporations who make up most of the Linux coding/funding/purchasing want better server performance (more processors, more RAM, etc). The desktop guys want better desktop, laptop, and netbook experiences (3D graphics, sound cards, processor power scaling). The third are the end-users who contribute almost nothing but want the system to be easy and simple.

      BSD however, really only has one user base - and they largely want the same thing. Stability, security, and performance. So all the cute little desktop friendly stuff that Linux keeps adding and all the server-specific stuff that Linux keeps adding aren't there. There's just the one major direction.

      Or at least that's my experience, and I've been using it since 2.x.

      --
      An operating system should be like a light switch... simple, effective, easy to use, and designed for everyone.
    7. Re:Problem by jhol13 · · Score: 5, Interesting

      Constant changes, i.e. lack of stable KBI (kernel binary interface) does not help.

      Eventually keeping your incompatible stack is easier than keeping up-to-date with latest and "greatest", especially if you happen to test your code.

    8. Re:Problem by renoX · · Score: 4, Insightful

      That's false of course:
      1) the deciding factor for project management is the non-commercial/commercial status of a project, not the closed/open state of the source.

      2) for non-commercial projects, both developers 'goodwill' and proper management are needed to avoid bloat; whereas for a commercial project only proper management is needed (as the management decides where the money will go).

      Note that the Linux kernel is a blend of non-commercial and commercial projects as many developers are paid to work on the Linux kernel and many aren't.

    9. Re:Problem by oiron · · Score: 5, Interesting

      It gets done because ultimately somebody says "Fuck this, I can't work on this bloated codebase any longer. We're refactoring, guys!"

      Then, if the old lead dev / maintainer / admin doesn't like it, a fork happens...

      Projects where this has happened before: The kernel itself, several times (as well as various subsystems, again several times), X (XFree to XOrg), KDE (2-3, 3-4), Amarok (1.x to 2.x), SodiPodi -> Inkscape, Firefox from 2 to 3... These are off the top of my mind, of course - there are lots more.

      Of course, there are some cases where this process has failed. I don't think the failure rate is any higher (or lower) than proprietary projects, though...

      The incentives are different, but they exist, nevertheless...

    10. Re:Problem by Lumpy · · Score: 5, Insightful

      Cleaning up code is never something managers care about

      Most managers care a LOT about cleaning up code. It's a waste of time in their eyes and most will write you up for wasting time if they discover that you are doing it.

      They wanted it done last week, cleaning up code misses deadlines and is a waste of time as far as management is concerned.

      --
      Do not look at laser with remaining good eye.
    11. Re:Problem by camperdave · · Score: 4, Funny

      Executing NOPs, I guess.

      --
      When our name is on the back of your car, we're behind you all the way!
    12. Re:Problem by DrgnDancer · · Score: 5, Insightful

      The same way people in raid guild do what they're supposed to in raids even though it's only a game and raid officers can't do anything to you really; or members of Civil Air Patrol follow military customs and courtesies toward their officers despite those officers having no actual UCMJ authority; or people in SCA listen to the nobles of their "Baronies" despite those people not having any real world authority. When you join a group or a project, you agree to abide by the rules of the group or project. If you eventually find that you can't, you generally either leave or are forced out. if the project lead on a properly managed project asks you to do some boring grunt work, you either do it or find a new project and someone else will be asked to do the work.

      If the project is generally fun or personally beneficial for you to work on, you'll do the grunt tasks you're asked to do, because otherwise you'll eventually be off the project. If the project wants to keep it's user base (and most do) it'll fix as many problems as it can to keep the users happy.

      --
      I don't need a million points of light, just two points of multi-mode fiber and a 10 Gig-E router.
    13. Re:Problem by quanticle · · Score: 4, Interesting

      Precisely. The grandparent is forgetting that, in the proprietary world, the scenario you described can't happen. I can't go to my boss and tell him, "Screw this, I'm going to spend the next month refactoring our messy code, rather than adding new functionality." However, I can do that in an open-source project.

      --
      We all know what to do, but we don't know how to get re-elected once we have done it
    14. Re:Problem by geekboy642 · · Score: 4, Funny

      C++ makes sure nothing gets to become a real mess

      You're funny. Can I have you come and perform for my birthday party?

      --
      Just another "DOJ fascist authoritarian totalitarian bootlicker" -- Zeio
  2. So, Andrew Tannenbaum by siddesu · · Score: 5, Funny

    is finally having the last laugh? /dnrtfa

  3. Linux is bloated... by jarocho · · Score: 5, Funny

    However, Minix continues to maintain its girlish figure.

    1. Re:Linux is bloated... by Chemisor · · Score: 5, Funny

      It's easy to maintain your girlish figure when you are embalmed.

  4. A Few More Bits of His Talk by eldavojohn · · Score: 5, Interesting
    I can't believe I'm relying on The Register for this but they have a few more quotes from him:

    Uh, I'd love to say we have a plan. I mean, sometimes it's a bit sad that we are definitely not the streamlined, small, hyper-efficient kernel that I envisioned 15 years ago...The kernel is huge and bloated, and our icache footprint is scary. I mean, there is no question about that. And whenever we add a new feature, it only gets worse.

    And also:

    He maintains, however, that stability is not a problem. "I think we've been pretty stable," he said. "We are finding the bugs as fast as we're adding them -- even though we're adding more code." Bottomley took this to mean that Torvalds views that the current level of integration acceptable under those terms. But Mr. Linux corrected him. "No. I'm not saying that," Torvalds answered. "Acceptable and avoidable are two different things. It's unacceptable but it's also probably unavoidable."

    I think that's very important to note. His quote by itself is very self-loathing but to add that tit's unavoidable really says a lot. You want to be popular? You have to satisfy more people and in doing so you become more bloated. He does maintain that Linux remains stable and that's usually the biggest problem I have with bloat. It decreases stability. I don't think there's any reason to get excited about level headed rational and reflection.

    --
    My work here is dung.
    1. Re:A Few More Bits of His Talk by dingen · · Score: 4, Funny

      but to add that tit's unavoidable really

      I'm more of a bottom kinda guy myself, but hey, I get it.

      --
      Pretty good is actually pretty bad.
  5. Specialist's bloat is not user's bloat by Dystopian+Rebel · · Score: 5, Insightful

    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.
    1. Re:Specialist's bloat is not user's bloat by Lord+Ender · · Score: 4, Interesting

      Java is actually damn fast if you keep the JVM running at all times. Even wimpy mobile devices like the Kindle can run Java fine. The Kindle is just Linux + JVM on a puny ARM processor.

      --
      A slashdotter who didn't build his own computer is like a Jedi who didn't build his own lightsaber.
  6. Are too many added drivers really the cause? by rpp3po · · Score: 4, Interesting

    About two years ago I tested wether my Gentoo kernel was really faster. Disabling 3/4 of the options really just improved boot time and memory footprint, but not overall performance that much, at least far from 12%. Compared to a modularized kernel with just the stuff loaded, that was needed, the difference was negligible. I'm not sure if Torvalds is telling the truth about the reasons. To me it seems that the central, overall kernel architecture has degraded over time with regard to performance.

    1. Re:Are too many added drivers really the cause? by Ash-Fox · · Score: 4, Informative

      Most drivers are compiled as kernel modules and loaded only when needed.

      --
      Change is certain; progress is not obligatory.
    2. Re:Are too many added drivers really the cause? by oiron · · Score: 5, Informative

      Drivers live in the kernel tree. They don't necessarily have to be built into the kernel... Take a look at what the M key does in make menuconfig sometime...

  7. Re:Bloat is often moot by natehoy · · Score: 4, Insightful

    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."
  8. Pick two by justthinkit · · Score: 4, Insightful

    (1) Large feature set
    (2) Compact/optimized
    (3) Fast to market

    Pick any two...

    --
    I come here for the love
  9. obvious by walshy007 · · Score: 4, Insightful

    more hardware support and more functional tasks with scope creep means larger code base. nothing to see here, move along.

  10. Ah, the ever quotable Linus. by hey! · · Score: 5, Insightful

    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.
  11. Another perspective by sootman · · Score: 4, Interesting

    Bloat isn't bad.

    Version 5.0 of Microsoft's flagship spreadsheet program Excel came out in 1993. It was positively huge: it required a whole 15 megabytes of hard drive space. In those days we could still remember our first 20MB PC hard drives (around 1985) and so 15MB sure seemed like a lot... In 1993, given the cost of hard drives in those days, Microsoft Excel 5.0 took up about $36 worth of hard drive space. In 2000, given the cost of hard drives in 2000, Microsoft Excel 2000 takes up about $1.03 in hard drive space...

    In fact there are lots of great reasons for bloatware. For one, if programmers don't have to worry about how large their code is, they can ship it sooner. And that means you get more features, and features make your life better (when you use them) and don't usually hurt (when you don't). If your software vendor stops, before shipping, and spends two months squeezing the code down to make it 50% smaller, the net benefit to you is going to be imperceptible. Maybe, just maybe, if you tend to keep your hard drive full, that's one more Duran Duran MP3 you can download. But the loss to you of waiting an extra two months for the new version is perceptible, and the loss to the software company that has to give up two months of sales is even worse.

    --
    Dear Slashdot: next time you want to mess with the site, add a rich-text editor for comments.
  12. Re:I've met the enemy by Lumpy · · Score: 4, Informative

    Problem is the "bloat" is in code only not in the running kernel.

    I can easily compile a linux kernel that runs in very little space on a super slow processor and it screams.

    Problem is the "bloat" that Linus is talking about is simply plain old kludgy coding done to get it out the door faster. Adding features need to stop and all kernel coders need to work on cleaning things up. It's the sucky part of the job that nobody wants to do, but it needs to be done. I've seen the insides of some kernel modules that will make your toes curl in fear as they are early prototypes pre-alphas at best.

    --
    Do not look at laser with remaining good eye.
  13. Re:Microkernels. Hmm... by Lumpy · · Score: 5, Informative

    Yes.

    QNX compared to a hand tuned embedded linux install is in fact Slow.

    QNX on the other hand is a faster deploy time, you dont have to spend time wrapping your own embedded distro for your product, just pay the QNX license fee and you're off.

    Back 4 years ago I proved that by making my own linux install for a company product and kicked out the QNX system. It ran far faster, but they did not want to pay to support the custom OS so we stuck with QNX, and they already paid for the QNX licensing.

    --
    Do not look at laser with remaining good eye.
  14. Re:I've met the enemy by sumdumass · · Score: 4, Insightful

    Bloat isn't a problem

    Until it causes system instability, slow performance, or increases the size of the code without adding any new features or fixing a problem. Bloat can become a problem, but it doesn't have to be. I thought I would just point that difference out because "isn't" seems to be an absolute which it shouldn't be.

  15. Microkernel by bluefoxlucid · · Score: 4, Insightful

    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"

  16. MIcrokernels - life without patches by Animats · · Score: 4, Interesting

    Let's take a look at the patch history of QNX. QNX is a message passing microkernel mostly used for embedded systems. But it can be run with a full GUI, runs on multiprocessors, and can be run as a server. Millions of "headless" embedded systems have QNX inside. I used it in a DARPA Grand Challenge vehicle. BigDog, the legged robot, runs QNX.

    Drivers are outside the kernel. All drivers. File systems are outside the kernel. Networking is outside the kernel. And they're all application programs, not some special kind of loadable kernel module.

    There have been 14 patches to QNX in the last two years. Only one is an actual kernel patch: "This patch contains updates to the PPCBE version of the SMP kernel. You need this patch only for Freescale MPC8641D boards." Only one is security-related: "This patch updates npm-tcpip-v6.so to fix a Denial of Service vulnerability where receipt of a specially crafted network packet forces the io-net network manager to fault (terminate)." Neither Linux nor Windows comes close to that record.

    There's little "churn" in a good microkernel. Since little code is going in, new bugs aren't going in. Good microkernels tend to slowly converge toward a zero-bugs state.

    QNX generally has a "there's only one way to do it" approach, like Python. Linux supports three completely different driver placement - compiled into the kernel, loadable as a kernel module at boot time, and run as a user process. QNX only supports one - run as a user process "resource manager". That simplifies things. A "one way to do it" approach means that the one best way is thoroughly exercised and tested. There are few seldom-used dark corners in critical code.

    When QNX boots, it brings in an image with the kernel, a built-in process called "proc", any programs built into the boot image, and any shared objects ".so" wanted at boot. These last two run entirely in user space; they're just put in the boot image so they're there at startup. That's how drivers needed at startup get loaded. They don't have to be in the kernel. (In fact, you can put the whole boot image in ROM, and many embedded systems do this.)

    A QNX "resource manager" is a program which has registered to receive messages for a certain portion of pathname space. The QNX kernel has no file systems; part of the initial "proc" process is a little program which keeps an in-memory table of "resource managers" and what part of pathname space they manage. This is similar to "mounting" a driver under Linux, but it doesn't require a file system up during boot. File systems are user programs which start up and ask for some pathname space, after which "open" messages are directed to that file system.

    Another QNX simplification is that the kernel doesn't load programs. "exec" is implemented by a shared library. That library is loaded with the boot image, to allow things to start up. "exec" runs entirely in user space, with no special privileges, so if there's a bug in "exec" vulnerable to a mis-constructed executable, that program load fails and everything else goes on normally.

    The price paid for this is some extra copying, since all I/O is done by message passing. This isn't much of a cost any more, because you're almost always copying from cache to cache. That's an important point. Message passing kernels used to be seen as expensive due to copying cost. But today, copying recently used material is cheap. On the other hand, some early microkernels (Mach comes to mind) worked very hard to mess with the MMU to avoid big copies, moving blocks from one address space to another by changing the MMU. This seems to be a lose on modern CPUs; the cache flushing required when you mess with the address space on recently used data hurts performance.

    I used to pump uncompressed video through QNX message passing using 2% of a Pentium III class CPU. Message passing, done right, is not a major performance problem.