What makes a “lightweight” desktop environment lightweight?

Over the last few days I was wondering what is a “lightweight” desktop. And I must say I couldn’t come up with an answer to that question.

I was considering various things like “being memory efficient” which I discarded for obvious reasons. First of all it’s difficult to measure memory usage correctly (I haven’t seen anyone, who provides numbers, doing it correctly, this includes especially Phoronix). And then it’s comparing mostly apples to oranges. Loading a high-resolution wallpaper might make all the difference in the memory usage. Also if desktop environment Foo provides features which are not provided by Bar it’s obvious that Foo uses more memory. But still it’s apples vs oranges. It’s not a comparison on memory, it’s a comparison of features. And of course one might consider the Time-memory-tradeoff.

So is it all about features? Obviously not. If there is a feature a user needs and uses it cannot be bloat. The fact that a desktop environment has only few features cannot be the key to being lightweight. Being evil now: many people say GNOME is removing features, but nobody would say that GNOME is lightweight.

What about support for old systems? That’s not lightweight, that’s support for old hardware. And it’s something which doesn’t make any sense given Moore’s law. Which raises the first question: what is old hardware? One year, two years, ten years? Is it a moving target or is a Pentium III for all time the reference? Optimizing for old hardware means not making use of modern hardware capabilities. But does that make sense to not use modern hardware if it is available? Using the GPU for things the GPU can do better than the CPU is a good thing, isn’t it? Parallelize a computation on multi-core if possible is a good thing, isn’t it? But if you do so, you are optimizing for modern hardware and not for old hardware. So saying you are good for old hardware, implies you are bad on new hardware? Also I’m wondering how one can optimize for old hardware? Developers tend to have new hardware to not have problems like this. And how can one keep support for old hardware when the complete stack is moving towards new hardware? Who tests the kernel against old hardware? Who provides DRI drivers for obsoleted hardware which doesn’t fit into modern mainboards (who remembers AGP or PCI)? Who ensures that software is still working on 32 bit systems, who would notice such a breakage for example in the X-Server? So lightweight cannot be fit for old hardware. And remember: optimizing for old hardware is not the same as optimizing for modern low-end hardware. Even the Raspberry Pi has a stronger CPU (700 MHz) than the oldest Pentium III (450 MHz) – not to mention things like OpenGL…

What’s it then? Let’s ask Wikipedia. For Xfce it tells us, that “it aims to be fast and lightweight, while still being visually appealing and easy to use”. Unfortunately there’s no link on lightweight and also no reference. Let’s try again, LXDE: “The goal of the project is to provide a desktop environment that is fast and energy efficient”. Again no real definition and just stating a goal. But it goes on:

LXDE is designed to work well with computers on the low end of the performance spectrum such as older resource-constrained machines, new generation netbooks, and other small computers, especially those with low amounts of RAM.

I have no idea what a “new generation netbook” is, but it sounds like something modern half a decade ago. But we are down to the “being good on old hardware”, which we just discarded. Interestingly Wikipedia has references to prove that LXDE is good on RAM – unfortunately it’s references to Phoronix. Shame on you, Wikipedia, that’s a “benchmark” which has been considered seriously flawed by people understanding the topic.

Ok Phoronix aside, there is one more of the lightweight desktops to check. Razor-qt: “is a lightweight, Qt-based free software desktop environment for the X Window System. Unlike the KDE desktop environment which is also based on Qt, Razor-qt usually performs well even when used in computers with older hardware”. Damn, it again only claims and no reference for anything. Who says that KDE desktop environment (what’s that again?) is not performing well on older hardware? And what does the “usually” mean in that sentence?

So all Wikipedia gives us, is buzzword bingo and various claims without any proof (and not even a “reference missing”). Let’s try different and go to the projects directly.

Xfce tells us that it “is a lightweight desktop environment for UNIX-like operating systems. It aims to be fast and low on system resources, while still being visually appealing and user friendly.” Which sounds very similar to what Wikipedia wrote. Unfortunately nothing that tells us what lightweight means or what fast is or low on system resources. Fuzzy is fuzzy.

LXDE also has the same definition as shown in Wikipedia (maybe we should mark those wiki articles as advertisement?) but at least gives us a definition for what lightweight means to them: “It needs less CPU and performs extremely well with reasonable memory.” Fuzzy is fuzzy. What’s “reasonable memory” and “less CPU”? It goes on about various other things like “fast” and “energy saving” (which even are contradicting, e.g. fast is defined as working on hardware from 1999 and not require 3D – how that can be energy saving on new hardware one has to show me). The point energy saving is quite funny as it just says they are better than “other systems”. Oh well fuzzy is fuzzy.

Last but not least: Razor-qt. Razor doesn’t say it’s lightweight:

Razor-qt is an advanced, easy-to-use, and fast desktop environment based on Qt technologies. It has been tailored for users who value simplicity, speed, and an intuitive interface. Unlike most desktop environments, Razor-qt also works fine with weak machines.

Fuzzy is fuzzy. What’s a “weak machine”, what are the “most desktop environments”? Where’s the proof for other DEs not working well on those not-defined “weak machines”?

And here, poor fool! with all my lore I stand, no wiser than before. All what I could derive from studying what lightweight means is, that one just has to claim to be lightweight. Bonus points if you include it into your name. It seems like if you repeat it often enough people will repeat it and it will turn out into truth.

157 Replies to “What makes a “lightweight” desktop environment lightweight?”

  1. Interesting post.

    But, in the end, can you suggest me a lighweight DE for my old Pentium IV pc? 😉

    Kidding aside, I’ve got KDE Plasma 4.8 on that pc and I’m happy with it.
    Anyway, I think we may need a more exact definition of what a “lightweight DE” is.
    At least, if you run LXDE or RazorQt on that old Pentium IV they are faster to load and run (almost) without any slowing down when compared to KDE Plasma (wich I like more), so there ust be some kind of difference.

    1. Yeah, KDE is a good recommendation. When I was writing my master thesis two years ago, my laptop suddenly died a month before deadline, and I had to continue my work on my former laptop a then 5-6 year old laptop with a 1.2GHz Athlon XP and GeForce 2Go and only 512Mbyte or RAM. I dist-upgraded Debian on it, and ran KDE 4.4. It worked just fine after I disabled nepomuk and disabled some animations in the style.

      KDE can run very smooth on very old hardware. You may need to configure it a bit, but being configurable is what KDE does best.

    2. I have KDE Plasma Desktop working fine on my Pentium 4 too. The only annoyance is RAM, I’m thinking of upgrading it from 1 to the maximum of 4 GiB even though the machine is very old, because stuff often ends up swapping. 🙁 E.g., Akonadi is a memory eater, Konqueror can be one too on a website with many images.

      1. Internet is something I haven’t considered in the article at all. I think (in general) that modern web sites like Facebook or Google+ are completely unsuited for a system with let’s say 512 MB of RAM. Obviously images are a huge problem (4MB background – not so uncommon).

        1. Lightweight means IT RUNS FINE OUT OF THE BOX ON A ATOM NETBOOK WITH 1GB RAM, DOH!(Those are still being sold btw)

          No current KDE SC(stupid name) distro does that at the moment, compared to LXDE they don’t .. don’t tell me they do, because they don’t.

  2. Martin, lightweight is lightweight(has low/relatively low RAM memory usage for the category the application is participating in).
    While I agree with most of the points, what do you expect them to show in a intro to the desktop environment? “not working well on those not-defined “weak machines”” – you expect people to put into the description of the project complicated specifications, CPU architectures, all kind of hardware combinations?

    1. Years ago software was provided with system requirements. Why couldn’t them write those requirements on their n Web site?
      Ok, I wouldn’t put them on the first page, but it would be nice to read them somewhere. At least to have a fuzzy idea of what I should expect when I install such “lightweight” DE on my old pc.

      Obviously it would be a lot more difficult to give such requirements for big projects like KDE Plasma, since different configurations could have very different system requirements, but for simple, lightweight DEs it should be easier I hope.

    2. It should be important to those projects themselves that they have definitions of ‘lightweight’, ‘weak’, ‘Low RAM’ etc. They claim the reason they exist as projects is to provide software with these characteristics but without definitions for those terms how do they even know themselves if they are achieving those goals? How should anyone else?

      As for wikipedia articles, it would be basic good manners to provide some means to objectively evaluate claims be made that unchallenged cast KDE in an unflattering light (which is what they do in a backhanded way: they list a bunch of characteristics most would consider positive like efficient RAM usage and then suggest these projects seek to possess that characteristic in contrast to other projects like KDE). How should a reader know that such claims have any basis in reality if no objective measures are provided?

  3. Good analysis. I agree that “lightweight” as a kind of adjective is a distraction, especially when you think of it in terms of “this is a lightweight thing” and “this is not a lightweight thing” and “lightweight things are better than heavyweight things”. Its a shallow way of comparing technologies.

    The better questions to ask are “Does this software operate in an inefficient way? Does it have an inefficient algorithm that makes it go slowly? Does it have a memory leak, or use more memory than it should? Is it of inconsistent or poor quality? Is it confusing to use? Does it get in my way, or does it enable me to do what I want to do?”

    That’s a far better ground for comparing different things, some of which call themselves “lightweight” and some of which would fall into the “heavyweight” category. It would be easier to argue, on those criteria that a large desktop projects like Plasma is still better than some of the smaller, simpler window managers, because regardless of its feature-set, it is still fast and it has consistent quality and doesn’t get in my way.

  4. Yeah, what is a light Human? A 50KG (~110LBS) heavy Girl or a Man with the double weight? Is it important, what i can and wish to do with the DE/WM? Counts the usability too?

  5. For me lightweight would be not using CPU when unasked for (background tasks), memory efficient and responsive … Plasma, nepomuk – those things break and lag the computer much too often to consider KDE lightweight … I generally love KDE but since three days Nepomuk started crashing due to MySQL crashing and when it was doing so the whole plasma UI was locked and I had to restart it several times to make it work again (out of process widgets anytime soon?). I guess in a lightweight desktop environment the dependencies for huge untested frameworks would not be as critical … but for example KWin is usually rock stable and thank you for that Martin! One question though. I have a feeling that running long uptimes (several days) the whole desktop slows down when using desktop effects on NVIDIA binary blog – could it be problem with KWin, Xorg or the drivers?
    Cheers.

  6. Martin, interesting post. May I share a few more (simple user) thoughts with you as well ?

    – indeed, frequently, project X, Y or Z claims to be lightweight, but seems to save resources on a couple of essential features that do not eat so much memory / CPU time anyway
    – if we consider DEs, it’s obvious XFCE is more “lightweight” than KDE (but definitely not on par in terms of features) however we usually end up starting the same apps and feeding them with tons of data that weigh much much more than the DE anyway and frequently other external factors like the quality of drivers or some other low-level components play the biggest role anyway
    – considering the rise of available memory on PCs, the DE seems it can be neglected nowaydays. But… Shouldn’t we also try not to make old hardware obsolete ? We all know what happens when we throw them away, and it’s not pretty.
    – you refer to optimization (either optimize to new or old hardware). Is it possible to optimize for both ? I guess the problem here is mainly lies in the lack of manpower. Also, I’m pretty sure two apps sharing the same features list, and being ‘optimized’ to the same kind of hardware can have radically different efficiencies (in mem / cpu usage) because, well, algorithms and structures differ. Thus, KDE necessarily has space for improvements in this area. I mean, it’s not because there’s no clear definition of “lightweight” that it’s not a valid issue.

    – in the end, due to my personal experience, I tend to think it’s much better in the long run and much wiser to take a great and modern DE like KDE to be more resources-efficient than to start yet another lightweight project, reinvent the wheel and make compromises that will hurt in the long run.

    Thanks again for everything, Martin !

  7. @Rsh : +1, definitely. KDE is probably pretty efficient in quite a few areas, but the overall experience is probably a bit spoiled by stuff like that. (I do appreciate the work recently contributed to Nepomuk etc., but it’s true it’s still something that makes my computer slow and I’m sure there are other examples).

  8. I forgot one point : some memory-saving features tend to have a consequence on CPU-usage. The best trade-off has to be chosen depending on the most common use-case scenario (or an automagical adaptation ?). For instance, “eye of gnome” VS Gwenview. The former is probably faster to start than the latter and uses less memory but doesn’t preload the next pictures, so it’s painful to use 🙂

    But we frequently consider both the “light-weight” and “fast” qualifying adjectives at the same time as it seems intuitive they are correlated.

  9. I wish you had linked to a better source regarding your claim that there are no good memory-comparisions of DEs/WMs, especially on Phoronix. https://blogs.kde.org/2010/03/10/benchmarks is a fluff-piece claiming something in that way, but containing not even one coherent argument.

    The funny thing is that your whole first part, what lightweight is not, describes what lightweight is. I have an old thinkpad here which can’t run unity, as everything get slow and then kicks in a background process and everything almost freezes – horrible. But using E17, everything works faster. So, clearly, E17 is more lightweight than Unity.

    Another Remark: Moore’s law is dead. And it was always irrelevant if you have some older hardware right now you wish to run software on.

    I guess when nepomuks background thread or something like that hinders old hardware to run KDE (just an example) in a manner that enables the user to do his work without fighting the lag, but one could imaging a version of the software with that part of the software removed and now the user could do his work uninterrupted, that new version of the software would be the one lightweight enough given the hardware of the user.

    Of course that is a moving target, and of course that is not a hard requirement, it’s an individual one. A project trying to be lightweight can try to pick older hardware and get its software in shape to run on that old hardware – e.g. your mentioned a pentium 2 – and try to implement the improvements for newer hardware in a way that doesn’t hinder the software to run. Again, E17 is an example for that – they implemented the desktop effects in a way that ethey use the gpu if possible, but can also be rendered by the cpu in case using the gpu is a bad idea on a specific system.

    1. I linked to that specific blog post for a reason. I know that the blog post was written in response to the “benchmark” (look at the dates) and Lubos is the only person I know who is able to correctly measure memory usage (he gave a few Akademy posts on that topic for example). Of course the post slightly ridiculates Phoronix but that’s also something I wanted to show when it comes down to using it as a reference in Wikipedia.

    2. > I wish you had linked to a better source regarding your claim
      > that there are no good memory-comparisions of DEs/WMs,
      > especially on Phoronix.

      Aside from Lubos’s post, Phoronix “benchmarks” are totally misleading from a statistical point of view. How do we tell that something is “faster”? Just by looking at the bars? Sorry, doesn’t work like that, as the small sampling size might just show an aberration (just like if we toss a coin a small number of times, we might not get 50% tails and 50% heads).

      What would be good would be a series of independent sampling tests (in the order of the tens per sample) and then a proper statistical test to see if the result is really significant (no, “mean of three runs” is not it). And of course, this doesn’t rule out the methodology (which may be flawed), or and errors in general (Type I and Type II errors).

      Apologies to Martin for this somewhat convoluted reply and for the off topicness.

    3. QML and some pure Qt apps run way slower on E17 on my laptop than on Unity or KDE. Also I see no reason why LibreOffice would start faster on E17 than on KDE.

  10. most of the time lightweight=no akonadi, no nepomuk, no plasmas. that’s often quite enough for DE to be quite light on resource usage.
    But putting all that aside I’d say taht modern linux cannot be lightweight: X server tends to consume about 500+mb ram and lots of CPU cycles, modern browsers can easily ‘eat’ up to 2 gigs of ram. Plus all the stuff like policy-kit, disk-kit, console-kit, terminal-kit, systemd-kit, otherstuff-kit.
    ALso as was already noted, plasma tends to hang/crash altogether with panel, desktop and krunner leaving user very much frustrated. This doesn’t feel like lightweight for average user.

    1. X server tends to consume about 500+mb ram and lots of CPU cycles, modern browsers can easily ‘eat’ up to 2 gigs of ram ==> Something is wrong with your System

    1. I’ll just leave this here (sorted by VIRT):
      top – 15:58:22 up 12 days, 14:41, 38 users, load average: 0.23, 0.30, 0.35
      Tasks: 445 total, 1 running, 440 sleeping, 0 stopped, 4 zombie
      %Cpu(s): 0.8 us, 0.5 sy, 0.0 ni, 98.4 id, 0.3 wa, 0.0 hi, 0.0 si, 0.0 st
      KiB Mem: 16365528 total, 16138800 used, 226728 free, 5400 buffers
      KiB Swap: 31250428 total, 8343712 used, 22906716 free, 386216 cached

      PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
      4718 root 20 0 12.6g 8.4g 67m S 3.0 54.0 621:23.59 X
      10299 libvirt- 20 0 7293m 3.9g 800 S 14.0 24.8 2835:40 kvm
      5021 rrohbeck 20 0 2452m 317m 3588 S 0.0 2.0 2:06.55 kded4
      10091 rrohbeck 20 0 1568m 193m 13m S 0.0 1.2 12:31.54 icedove
      11004 rrohbeck 20 0 1055m 130m 12m S 0.0 0.8 19:55.50 chrome
      5356 rrohbeck 20 0 615m 68m 33m S 0.7 0.4 75:39.00 konsole
      25388 rrohbeck 20 0 1978m 68m 3680 S 0.0 0.4 41:55.41 pcmanfm

  11. I believe that this discussion is similar to “bloated” monolithic kernel vs. “lightweight” micro kernel. It’s about user perception, i.e., marketing:
    Do you provide the ability to easily personalize a very minimal core by adding (third party) features as wished or do you ship a full-blown, feature rich product that has features users won’t use?
    The latter alternative is perceived as being inferior.
    A) Ignoring unused features is not possible as they are in the way (why do I need to bother updating them?);
    Thus wish to strip the product down to only what they really use;
    This is cumbersome;
    Needing to do that is bad;
    The devs do not mind the user’s needs;
    A lightweight alternative is desperately needed …
    +
    B) Ignoring unused features is not possible as people always think man power that could improve what they actually use is wasted by fixing “this other, this useless” stuff;
    Unused features become unwanted;
    The product is labeled as bloated;
    The devs do not mind the user’s needs;
    A lightweight alternative is desperately needed …
    +
    C) Ignoring unused features is not possible as feature requests are possible (Hey, it’s open source!);
    yabba yabba;
    The devs do not mind the user’s needs;
    A lightweight alternative is desperately needed …
    +

    I thank KDE Frameworks 5 for modularization and hope that from then on KDE will use it to provide an installer allowing the user to strip everything away he or she thinks won’t be needed. Just uncheck the according feature. Need it later? Check the box again. Does that sound like the idea behind kernel modules?

  12. Lightweight could also mean in dependency terms not to pull in everything plus grandma’s kitchen. I dont use akonadi / kdepim anymore, but many programs pull this as dep in.

    For example installing apper on arch demands kdepim-runtime and akonadi. Digikam needs it too, etc etc.

    I tend to avoid anything that pulls akonadi and nepomuk in, moving me more and more away from kde programs.

    Thanks for sharing your thoughts.

  13. Linux+X11 is not lightweight to begin with, so it is somewhat irrelevant.

    A demo of QNX once was shipped as a single 1,44 MB floppy disk, and contained a fully multitasking graphical OS with a filemanager, desktop utilities (calculator, notepad etc.) and a web browser.

    _That_ is lightweight.

  14. Lightweight is not a well-defined concept. However, for most people using the term, I do think the common understanding is quite close. I believe it mostly boils down to a couple of overlapping points:
    -low memory footprint
    -responsive desktop
    -default set of services and applications supporting the two above
    As much as I love KDE, I think it is pretty clear to everybody that it nowhere close to LXDE in this respect. KDE is the most resource hungry of any free desktop environment on just about any parameter you care to measure it buy (disk footprint, memory usage, CPU usage). Yes you can strip down KDE to be competitive. Kubuntu even has a low fat settings package to achieve exactly that. Yes, most components making up KDE is competitive with comparable software in most parameters. Still we have a couple of huge resource hogs in the world of KDE, the two most prominent being the kdepim+nepomuk stack and Amarok. I really love and use both, and support them in any way I can, but I have given up on using them on low memory and/or weak CPU machines. I could also add the Python based widgets to those two, most users don’t realise the memory (and CPU) usage triggered by such a simple task as using Lancelot instead of the default menu. Actually, for a smooth KDE experience, I recommend 4GB ram and avoiding Atom class CPUs. Do I want KDE to change? No way, keep the goodies coming. But I do think that the ongoing work on improving performance and memory footprint on Nepomuk is *very* important. I also enjoy seeing functionality ported from Python to C++, whether it is widgets or Amarok plugins. I still think Python is an excellent choice for rapid development and prototyping, so I love to see new Python based widgets and plugins surface. All in all it is not very black and white to me, and I do believe the lightweight concept is well understood by many. Aaand, I do not want KDE to be lightweight, ever. Most of my hardware is high end, I want a desktop that takes advantage of that.

    1. “Still we have a couple of huge resource hogs in the world of KDE, the two most prominent being the kdepim+nepomuk stack and Amarok.”

      So, since you measure “weigth” including non-workspace/desktop environment applications, how much difference is there when running, say Kontact on LXDE vs running on KDE Plasma workspace?

      1. Not sure LXDE has a default groupware client, but Gnome environments typically ship Evolution, and for KDE it is kdepim. I run KDE on all my machines (with Kontact), but I am afraid both of us might have a hard time convincing an LXDE user to pull in the kdepim suite with dependencies. Please do not misunderstand, I love kdepim, I support Nepomuk (literally), I do not mean to bash any of the great work being done, I prefer Kontact over Thunderbird or Evolution by a large margin any day of the week, but it is not because it is lightweight. Just trying to clarify a couple of issues. I don’t thing we help anybody by deception.

        1. Since you brough up kdepim I assumed you were using that as a factor that was present in both situations and thus allows to compare the workspace portion of any measured value.

          Not running Kontact on LXDE can obviously not be used as a comparison to running Kontact on a KDE Plasma workspace. That would be as ridicolous as booting Linux into single user mode and PC-BSD into a full desktop session and then claiming Linux was more lightweight.

          1. Yes, and I guess that is my point. KDE with all its goodies in use eats a lot of ram and CPU, but the features and functionality you get in return is amazing. LXDE without a proper groupware client (or Gnome with Evolution for that matter) is no full replacement for KDE + kdepim and hence it is not fair comparing the resource consumption. As I already said, comparing comparable components, KDE fairs well resource wise against alternatives. The give-it-to-me attitude of KDE (that I guess we all love) tend to add up the resource usage in the end though.

            That said, for people with less than 2GB ram I do not recommend KDE+kdepim. LXDE + web-interface as groupware client works well on systems with 1GB ram though. With the new Roundcube based web-interface in Kolab, using a web-interface is not that bad actually 😉

            1. The point is that kdepim is not part of the desktop environment. So it doesn’t make sense to include it in a comparison.

              1. That is open for discussion. I think many view the default applications as part of the desktop. Have a look around, every desktop environment tend to identify a file browser as their default. In the case of KDE you typically already pull in Nepomuk as part of the desktop, it does not make much sense not pulling in kdepim too then (not counting those who disable nepomuk due to issues that hopefully are resolved now). As I said, the various components of KDE (including applications) is competitive weight-wise, but a full KDE experience is not for the weakest hardware (which I think is a good thing). It certainly is possible to strip down KDE to the point you are hinting, I did try the low-fat-settings package on a 1GB ram machine with a Pentium4 CPU. It worked OK (while default KDE setup was sluggish), but then I missed major parts of the desktop (including a nicely integrated groupware client, and the Lancelot launcher, and the eyecandy). To the point where LXDE was a viable alternative (OK, that is stretching it a bit, there are still plenty of things I would miss in LXDE).

                1. You are hopefully aware of that “KDE” is the community and not a software. If you think about just that and read your comment you see the problem. You think of “KDE” as the desktop environment, which it no longer is. The desktop environment is just a small part of the offerings by KDE.

                  1. Spoken like a true mathematician 🙂 Some issues can be solved by defining your way out of them. I am well aware of the KDE SC definition, and have no problem with that. Still, I believe the line between desktop and applications is very blurry, especially for KDE. Pragmatically (common conception rahter than chosen definition), kdepim is in the blurry part while nepomuk clearly is part of the desktop (my personal perception obviously).

                    I do see your point though. In view of the KDE SC concept, the K desktop environment should be assessed resource wise split from all applications that is considered part of KDE SC. Still, KDE in a popular distribution (except Arch maybe) by default pull in resources that easily surpass that of a common LXDE set-up.

                    1. I don’t know how often I have said that: this is a problem of the distributions. They put together the software, KDE only provides the sources. Getting it out to the users is part of the distributions. Which might or might not do a good job (for example I was rofl-ing when Lubuntu was announced and they wanted to use Chromium)

    2. Came to the comments section to say exactly this. While I’m typically a pure lurker, I love this blog, which makes a clunker like this one all the more painful to read.

      “Lightweight” is definitely a fuzzy label, but that doesn’t make it useless, nor does an article’s worth of pointing out “this is fuzzy” prove any uselessness. We use amorphous terminology all the time. How do you quantify “funny” or “productive”? And while all such terms are necessarily subjective, and we may disagree on which things are more (subjective adjective) than others, there is value in sharing our reasoning for our opinions.

      Lightweight is actually better than either of those two, because we can actually point to a set of measurable metrics that contribute to lightweight-ness. It isn’t all about memory footprint, startup time, CPU usage, or reponsiveness (in any of its latency measurements). But all of those solid metrics contribute to overall weight or lack thereof.

  15. Using a computer for work, there is the possibility for an exact definition of “lightweight”: the time needed to get the work done. Of course, this definition is a function of the software (this obviously is wanted here), the hardware and the user and thus not really measurable in practice.

    So if you accept that definition, you can start to reason.

    – If a user’s work contains a huge CPU-intensive task, a desktop is lightweight if good algorithms are used (e.g. O(n) instead of O(n^2) if the user’s n is large), which use the available hardware efficiently (e. g. multiple cores), so that the user gets the work done quickly.

    – If a user’s work contains a lot of programs exhausting the available memore leading the system to swap on a slow hard disk, the desktop is not lightweight (assuming that the programs belong to the specific desktop)

    – If the user needs a specific functionality to solve a problem (and thus avoiding very time consuming workarounds) and the functionality is easily available (based on his experience -> user dependence), the desktop is leightweight. If the functionality is not available or is very hard to find (e.g. due to the huge amount of functionality), the desktop is not leightweight.

    So being lightweight cannot work for all use cases, as it probably boils down to some sort of weighted sum of different criteria (memory, cpu, functionality), where the weights differ for each user and even the user’s tasks.

    There might also be obscure cases, where there are optimized algorithms for every known CPU/GPU combination for a given problem. This would lead to a fast execution, but as it might produce so much code, the desktop might end being slower when a slow harddisk is used, as all that optimized code must be loaded before the program gets executed. Thus, trying to make a desktop more lightweight can lead to the opposite.

    Nevertheless, there are some things which are always right. If an algorithm can be replaced by another algorithm, which has about the same code size and about the same memory requirements, but a lower computational complexity, that is a sure win (assuming these are the only relevant criteria).

    More generally, this is a Pareto optimum (http://en.wikipedia.org/wiki/Pareto_efficiency): Although it’s often not sure what the best solution is, it is often possibly to identify poor solutions which can be improved. Theser are the simple things. Moving from one Pareto optimum point to another one is the really hard tasks which needs a lot of discussion and a clear goal for the project.

  16. I was thinking about this too since the announcement of KLyDE, and I thought that KDE runs lightly enough without Desktop Effects on my old computers. gerlos had a good point; with an environment like Razor-qt, you don’t have to sit through a splash screen.

  17. I consider “lightweight” and “heavyweight” relative terms, not absolute like what you seem to be after here. As a thought experiment think about how all the different DEs would rank in several performance categories (like startup time, increase in memory consumption after startup, increase in average cpu load) on several power classes of computers one could consider being in use today (say from modern gaming desktop to old single-core first-gen atom netbook). Now calculate average rank for each DE and call the “better” half “lightweight” and the “worse” half “heavyweight”.

    IMO features don’t factor in the lightweight/heavyweight dimension, but the ratio of the two could be called “efficiency”. I would assume KDE would be “heavyweight”, “feature rich” and “efficient”. Something like a dwm-based DE would probably be “lightweight” “low-feature” and still “efficient”.

  18. “Lightweight” software is purely a social construct. It means exactly what the other poster above said: a “lightweight” environment provides exactly the features I use.

    Which is why there are so many of these: each one exists to serve the (changing) purposes of a (moving, restricted) user base. Thus generalist desktops will never be “lightweight” because even if they did everything the other, “lightweight”, environments faster (and as Martin explains, this is frequently the case), users would still notice that more options and possibilities are available.

    And for people with a certain mindset, this is disturbing: why are developers doing things which are “useless”? “Bloat!”, they cry. My guess is that if KDEPIM guys had hidden Akonadi inside of kmail, instead of doing the sensible thing they did, there would have been much less (dumb, unfounded) complains.

    TL:DR; people wanting “lightweight” and “less bloat” as opposed to “this use case is slow” should never be listened to, because they are just being unreasonable and selfish.

  19. > Who tests the kernel against old hardware?

    Me. And many other real-world users.

    > Who provides DRI drivers for obsoleted hardware which doesn’t fit into modern mainboards

    My Radeon 9200 SE still works fine, and OpenGL 1 works. Qt 5’s asinine decision to require GLSL will force use of your “beloved” llvmpipe though. 🙁

    > (who remembers AGP or PCI)?

    “Remembers”? I still USE an AGP graphics card!

    > Who ensures that software is still working on 32 bit systems, who would notice such a breakage for example in the X-Server?

    Me. This Pentium 4 does not support Intel 64 (or EM64T as it was called back then), it was introduced only with the Prescott series (and even there not on all models), mine is a Northwood.

    1. PS: Your attitude of not caring about old hardware is why we have huge landfills in China and Africa full of electronic scrap, with locals (mostly children!) extracting the metals by burning, polluting both air and water and seriously damaging their health. (I’ve seen 2 or 3 documentaries about that on TV.) Not to mention the huge waste of money of buying a new computer every year. I want my computers to last AT LEAST 10 years, more if possible.

      Replacing a working computer just because of creeping bloat feels just VERY wrong to me, both economically and ecologically.

      1. Your attitude of not caring about old hardware is why we have huge landfills in China and Africa full of electronic scrap, with locals (mostly children!) extracting the metals by burning, polluting both air and water and seriously damaging their health.

        And nowhere in my blog post I’m showing any “attitude” that I’m not caring about old hardware and even if it would not be the cause for any of these existing problems I’m quite aware of.

        P.S. I don’t like such attitude as expressed in your P.S. and will not tolerate such comments on my blog.

        1. When you dismiss 32bit machine and act like PCI and AGP video cards are distant memories, RIGHT THERE you are displaying an attitude of not caring about old hardware. I have precisely ONE desktop and ONE laptop that have 64bit CPU and PCIe graphics (cards which don’t have working OpenGL unless I run Mesa 7.something and the UMS radeon driver). The other dozen plus fall into that “forgotten” category of yours (32bit CPU and/or AGP/PCI graphics card).

      2. You are failing to take into account the (increased) power an old inefficient computer uses over its lifetime.

        1. Any Idea how much TONS of Earth have to move, to harvest same GRAM of a rare Earth Metal? That the Workers in Asia are nothing more or less than Slaves ? And that there is much enough free Energy available?

  20. Hmm, I guess lightweight and such are better to be taken from a user perspective, not a technical one.

    Take several scenarios like “I want to write an email” or “I want to do my tax income in a spread sheet” and then take a DE and do it with standard settings. Then measure the footprints and draw conclusions.

    Those conclusions are not valid from a technical point of view, but they are clues for how the impact of using a certain DE will be on my computer. Then fuzzy terminology like “weak machine” come into play and give the user the feeling that they are talking about his 5 years olb computer.

    All fuzzy but from a user point of view still something helpful when trying to make decisions about software.

  21. I think that terms like “lightweight” are simply buzzwords – as you pointed out correctly, it is neither defined nor can it be measured, making it ideal for advertising. In fact, i heard it quite often from high-paid software consultants trying to sell overly simplistic solutions…
    What I don’t understand is why the term is used in the first place in the context of free desktop environments. Apprently words like “simple”, “small” or “fast” are not enough.

  22. “One hundred repetitions three nights a week for four years, thought Bernard Marx, who was a specialist on hypnopædia. Sixty-two thousand four hundred repetitions make one truth. Idiots!” XD

    I think lightweight in the same level of simplicity, arch has a nice description, of simplicity, but not lightweight:

    “Arch Linux defines simplicity as without unnecessary additions, modifications, or complications, and provides a lightweight UNIX-like base structure that allows an individual user to shape the system according to their own needs. In short: an elegant, minimalist approach.”

  23. Lightweight is an intuitive idea which is not meaningless but neither is it well defined or watertight when it come to making measurements and really arguing the details.

    The intuition is, “I have a low power machine” or “I don’t want to tax my machine too much” because of power usage or maximising available resources for other applications or not liking the sound of your CPU fan THEREFORE I need a desktop environment which is “lighter”, which is simply “less”.

    The intuition is not completely wrong, a DE which does less can require less CPU memory and disk and will probably boot faster but it is a rather naive picture of a more complicated world.

    We know that the time-memory trade-off is always present and if you are not using all of your memory then you are doing the wrong thing (but to use all of the memory in the right way is much harder).

  24. My definition: A desktop distribution is light weight if it:
    1. Is responsive within 512 mb of ram, and
    2. Does not take up more than 2 gb of HD Space, and
    3. Can run Opera (Browsing/Email/Addressbook) and
    4. Has a decent word processor.

    1. To me, this sounds more like a very specific set of requirements. What would you call a desktop operating system not meeting these requirements?

      1. Not light weight is my answer. I only use Opera, as an example since it meets my application needs. I would also include VLC player and AbiWord as an added ‘example’ requirements. /s/ jtg

  25. For me, the Apple II put a line on the screen with HGR:HCOLOR=16:HLINE 100,100 TO 200,200.

    Tell a 5th grader how to do Qt lines or X-windows. You can put them in a kid-pen, but how about a main-stream environment that was simple with (ipx,ipy) as global variables for mouse coordinates?

  26. Lightweight is a relative term that design depending on people view a balance of time including to learn a new interface or to remove features, less bloat *unneeded features*, low hardware ressources used compared to others releases of the WM/DE and others WM/DE, memory and interface efficiency, don’t lock user in for just a feature, replaceable/echangeable components, no near absolute opt-in features like gpu requirements that were previously unused so an opt-out with making the WM/DE unusable or have a massive peak in requirements would be ok, less libraires required so Kde apps in a pure Gtk desktop blend badly except if they have a real edge on features, standard compliant if possible and speed of use mostly …

    So if an user make his desktop anyway like on Gentoo or Arch, any DE/WM could be lightweight, for distro including a DE by default most are bloated, however even if I consider Kde bloated, Slax Kde isn’t, you don’t lose time to make it lightweight so it is by default, so if Kde would adapt itself to the hardware by default it would be lightweight on any distro.

    So for a beginner, the absolute lightweight would be Openbox with Lxpanel and Synapse, as Lxpanel give a standard menu without configuration and Synapse provide interface efficiency …

    For a developper, it should be something like Archlinux cli by default.

  27. You are, obviously, a developer with total software efficiency disregard . I wish kde could find a new kwin maintainer

  28. For me, lightweight was always KDE without Nepomuk / Strigi, but with the latest versions of KDE SC this is not true any longer as well, since the situation around Nepomuk improved drastically.

    I’ve an old laptop with 512 MB RAM, where running KDE is pretty much impossible, so I traded features for less RAM usage only booting up with XFCE, what’s pretty much what you describe in your post, lightweight is having only the most necessary features, for a lower footprint, trading comfort for resources. Sometimes necessary.

  29. I’m sure you actually understand that “lightweight” in computer software means being light on the system resources, but I’m not surprised I heard the question first from the KDE community.

    I am also sure that you understand that “lightweight” isn’t an absolute concept. It’s all about comparison.

    > “Shame on you, Wikipedia, that’s a “benchmark” which has been considered seriously flawed by people understanding the topic.”

    … and the only thing you can link to support that statement is a kde.org blog post?

    > “Optimizing for old hardware means not making use of modern hardware capabilities.”
    Not really. Optimizing for old hardware (in terms of RAM and CPU usage) means a decrease in resource usage even on newer machines, which is always a good thing in a multitasking environment.

    > “So is it all about features? Obviously not. If there is a feature a user needs and uses it cannot be bloat.”
    “A user” is quite a small minority, surprisingly also in the KDE user base.

    Over all, I’m not sure what you are trying to say. Do you mean to suggest that

    1. … and the only thing you can link to support that statement is a kde.org blog post?

      And what’s the problem with that Lubos used to blog on kdedevelopers? Does it make him less an expert in that area?

      “A user” is quite a small minority, surprisingly also in the KDE user base.

      Obviously I was not talking about one user, but a user using software. If a user uses a feature it cannot be bloat for him/her.

      1. > “And what’s the problem with that Lubos used to blog on kdedevelopers? Does it make him less an expert in that area?”

        No, but it doesn’t exactly make a credible source. It’s not a technical analysis of Phoronix, nor does it site any serious study of the techniques Phoronix uses to benchmark. To boot, it’s published on kde.org and potentially biased, having been written by someone who obviously got unfavorable results from it. And don’t throw around words like “expert” like that. I haven’t heard of the guy (and I’m not sure what (if anything) you suppose he is an expert on), and if you want to claim he’s an expert on anything, you’ll have to do better than linking a blog post where all he does is criticize Phoronix on very vague terms.

        > “Obviously I was not talking about one user, but a user using software. If a user uses a feature it cannot be bloat for him/her.”
        Oh, okay then. What is the point of the argument, then?

        Seriously, if this reductionist semantics stuff is the only way you people can defend KDE’s performance issues, maybe you should just keep quiet.

        1. And don’t throw around words like “expert” like that. I haven’t heard of the guy (and I’m not sure what (if anything) you suppose he is an expert on), and if you want to claim he’s an expert on anything, you’ll have to do better than linking a blog post where all he does is criticize Phoronix on very vague terms.

          That’s not my problem that you don’t know him. I wrote that blog post also with a target audience in mind which knows Lubos. But here especially for you: http://akademy2010.kde.org/node/463

          Seriously, if this reductionist semantics stuff is the only way you people can defend KDE’s performance issues, maybe you should just keep quiet.

          Wtf? How can one interpret this into my blog post? Just for the record: this blog post is not about KDE. Just because I’m a KDE developer and the blog post was also published on planetkde doesn’t mean it has anything to do with KDE.

          1. No, your problem is that you have to assert the credibility of this guy (and his opinion) if you want me to take his blog post seriously. Preferably whatever source you cite should present matters of fact and not just a vague rant without any technical basis.

            About reading things into your post, I’m not. I’m just taking a wild guess based on who is saying what. That’s what you expect me to be doing about this Lubos guy, anyway.

            1. No, I’m not expecting you to do wild guesses about Lubos. As mentioned the audience for this blog post knows Lubos and for everybody else it’s easy to figure out that Lubos knows about benchmarking memory usage. For example by following the links in his blog posts. But well that’s up to you. I don’t have to assert the credibility or convince you that his blog post is serious.

              But well, I don’t think that it makes any sense to continue the discussion. You already presented in the first comment that you obviously did not understand my blog post.

              1. > “I don’t have to assert the credibility or convince you that his blog post is serious.”

                That’s right, but it’s a double-edged sword in that you can’t expect me to take anything you write seriously if you pose opinions as if they were absolute facts.

                Does that attitude towards facts really play well with your insistence on people providing you with absolute definitions of “lightweight”, which is obviously a subjective but ultimately tangible concept?

                1. Does that attitude towards facts really play well with your insistence on people providing you with absolute definitions of “lightweight”, which is obviously a subjective but ultimately tangible concept

                  I didn’t know that I “insist on people providing me an aboslute definition of lightweight”. I think you really need to go back and read my blog post.

    2. “I’m sure you actually understand that “lightweight” in computer software means being light on the system resources,”

      Defined where? Which resources and traded off against which others? RAM -vs- CPU -vs- GPU? Is a system that makes the CPU work harder because it doesn’t pass off work to the GPU to enable older system support more or less lightweight?

      “I am also sure that you understand that “lightweight” isn’t an absolute concept. It’s all about comparison” Comparison between what and what? the entire point of comparisons is you have to have some absolutes to make them.

      “Not really. Optimizing for old hardware (in terms of RAM and CPU usage) means a decrease in resource usage even on newer machines, which is always a good thing in a multitasking environment”

      Which resources? Is caching to RAM to spare CPU cycles lighter weight? You use less CPU that way but more RAM. Is recalculating every value rather than caching lighter weight? Less RAM but more CPU. Is doing neither and just not having some piece of functionality lighter weight? How do you make a valid comparison between DE when one has a function and another doesn’t? If the one without the feature is “lighter” is it still so when some 3rd party app has to be installed by the majority of users to add the missing function?

      1. No, I mean light on the system resources in general. Optimize for leass resource usage in any area possible. If your desktop environment is doing something as hairy as to have you consider caching whatever it’s calculating in RAM, and if that caching would have a considerable impact on RAM usage, you’re doing it wrong from the start. It’s a desktop environment, and Commodore Workbench had the basics of it nailed down in the early 90s with significantly less resources to spare.

        > “How do you make a valid comparison”
        Usability vs. resource impact. The good thing about having the users install “some 3rd party app” to cover a missing feature is that they can install whatever application they want. If they value resources they might prefer Midnight Commander over Dolphin (two extremes, I know). This is why I prefer using bare window managers (mostly ratpoison in combination with openbox for multi-window applications) and a stack of software I picked my self underneath, as opposed to desktop environments.

        1. “No, I mean light on the system resources in general”
          as evaluated how?

          “If your desktop environment is doing something as hairy as to have you consider caching whatever it’s calculating in RAM, and if that caching would have a considerable impact on RAM usage, you’re doing it wrong from the start”

          Not according to the established practices of computer programming since pretty much back to bletchley park

          “It’s a desktop environment, and Commodore Workbench had the basics of it nailed down in the early 90s with significantly less resources to spare”

          You can still pick up old amigas and get workbench for them; do you consider this a viable solution for desktop users? Would you recommend who came to you seeking advice on what computer they needed? I have fond memories of my Amiga computing days (and my amstrad cpc464 before that) but unless you’re defining “the basics” as able to show a desktop with a mouse for a pointer and open files then thats a pretty fatuous statement to make. By the same mode of thinking Henry Ford had the car pretty much nailed down with the model T so we shouldn’t be doing all those heavyweight things like adding crumple zones, radios, ABS breaks, seat belts, automatic transmissions, electric starter motors, etc etc etc (car analogy FTW 😉

          “Usability vs. resource impact”

          what are the units of measure for these two attributes?

          “The good thing about having the users install “some 3rd party app” to cover a missing feature is that they can install whatever application they want”

          Which is great and simply stating the obvious but fails to address how you make a valid comparison between two DE, one that has a feature and one that doesn’t. Which 3rd party app becomes the “official” one for comparison’s sake? If you’re trying to make a comparison between DE do you have to do X different versions of the comparison for X different combo of 3rd party apps needed to match functionality?

          You really seem to be missing the point of this post; Martin was discussing the buzz-word nature of using the word ‘lightweight’ by projects that don’t define what it means to actually be lightweight but claim to have that quality themselves and that others don’t have it. Its great that you obviously have some feeling about what you personally think the term means but without stating it in a concrete way it is effectively meaningless. You may as well just say project A good, project B bad and be done with it; calling one ‘lightweight’ and another not without defining what that means is just as informative. It may hint at some kind of commonly held understanding but it is just far to subjective a term to have meaning in an empirical field like computing.

          1. > “as evaluated how?”

            … by examining the expense of resources you find valuable — RAM, CPU, disk usage…

            > “Not according to the established practices of computer programming since pretty much back to bletchley park”

            Oh, seems I missed a bit of history there. I didn’t know they had desktop environments at bletchley park. My point is that window management and intuitive desktop functionality isn’t really something that needs to be heavy on resources, and that if it is, some screwed up design decisions were made (or not made!).

            > “You can still pick up old amigas and get workbench for them; do you consider this a viable solution for desktop users?”

            Oh boy, another miss of mine. I didn’t know we were suddenly discussing operating systems and not desktop environments. As for the desktop environment, yes, I would seriously recommend doing it like Commodore did, leaving out any functionality of questionable general utility. But hey, since we are discussing operating systems, I guess that sentiment is totally irrelevant.

            > “By the same mode of thinking Henry Ford had the car pretty much nailed down with the model T”

            Yes, but unlike desktop environments, cars have only gotten more and more efficient since the model T. Don’t rely on vague analogies like that to give you any real insight on anything.

            > “what are the units of measure for these two attributes?”

            You are asking me to provide a unit of measure for usability when there obviously isn’t any objectivity to the concept at all. It’s all relative and ultimately subjective but it’s nonetheless an important aspect of software design. So is resource expense, with the difference that it can easily be measured.

            > “You may as well just say project A good, project B bad and be done with it; calling one ‘lightweight’ and another not without defining what that means is just as informative.”

            If you think “good” (or even “bad”) as a design goal is just as specific as “lightweight” you’re seriously burying your head in the ground. Unless the developer is totally culturally isolated, the developer has a good enough idea of what the concept means for the design decision to yield some tangible results.

            Just compare LXDE and KDE. LXDE is faster, uses less RAM, uses less disk space, has less features (ultimately making fewer assumptions about individual use cases). That is the completely obvious and tangible result of designing the software with “lighweightedness” in mind.

            From my understanding you don’t recognize subjective concepts as valid concepts at all, so I guess I might as well be talking to a wall, but in terms of CPU, RAM and disk usage, you can’t argue that LXDE isn’t lightweight compared to KDE.

            > “it is just far to subjective a term to have meaning in an empirical field like computing.”

            Empirical field? Are you telling me there are empirical studies to support every design decision in user-end software development? Boy, am I learning a lot today!

            Software design, especially when it comes to UI and user experience centric applications, is largely based on completely arbitrary and subjective decisions.

            1. @boomlinde: I find your argumenting not constructive. You fail to understand what this blog post is about, you fail to understand what others point out to you. I have to ask you to stop commenting on this blog post. Thank you.

              1. I admit that my tone is agressive and might seem condescending.

                Is it OK if I spend some time addressing every point made in your blog post in a polite and presentable matter-of-fact language, publish it and post a link to it here when I’m done to discuss the issue further in a more civilized manner?

                If not, I’ll respect your request for me to stop posting, but I really think the misunderstanding is mutual.

                1. If you go back and read my post you will notice that I don’t make any points. So I don’t see what you want to address and I’m not interested in the opinion of what someone things is “lightweight”. The only point one can derive from what I wrote is that there is no definition of lightweight.

                  1. Now you’re being unfair. You are making numerous conclusions and points in the blog post, and how can you say that you are not interested in what someone thinks “lightweight” means if your opening question is “What makes a “lightweight” desktop environment lightweight?”

          2. And yes, you are absolutely right in that I don’t get the point of the article, but I don’t believe that’s my own fault.

            The post itself is filled with completely arbitrary and sometimes factually incorrect assumptions, arriving at an utterly subjective conclusion while demanding clear dictionary definitions of design philosophies of various projects, using wikipedia quotes from badly written articles to support his idea.

            So yeah, since Martin already ruled out my conclusion that it was a thinly veiled defence of KDE bloat, I have no idea what the point of the post is.

  30. It’s pretty funny. You are an KDE User/Developer? I can, without doubt, believe that you do not understand the meaning of “lightweight desktop”.

  31. Owning hardware for more than three years allows one the experience to define what lightweight is and why its beneficial. Arguing that not using new hardware, doesn’t make sense, is only true if one has the means to upgrade at will.

    1. I’m currently using one notebook from 2008 and my main system is from mid 2010. I would disagree in saying that this hardware from 2010 is old.

  32. To me, lightweight is all about statup time and responsivness. While I am a KDE dev, I use alternative WMs on some of my computers (mostly for historical reasons, now that Kwin can be scripted, most of the features I developped in the last decade for WMs that could already be scripted at the time could be ported to very recent KWin, versions, but after spending so much time learning and developping AwesomeWM, it simply doesn’t make sense to rewrite everything just to be using more “pure” KDE setup /offtopic).

    Lets take OpenBox/Fluxbox as an example. It start in virtually no time on my first gen netbook (EEE701). KWin take 7-8 seconds because of all of the dependencies that have to load from the (slow) SD card used as the primary hard drive. After that, things like Alt+Tab take no time. This is caused by the fact that there is no animation, thumbs or compositing request involved, all it does is show a pre-rendered box menu with window title. That is fast. In Awesome (with some plugins) and KWin (default settings), such operation is quite intensive when you think about it.

    So, lightweight is:
    * No dependencies beside Xlib or XCB and a lightweight painting library (as in load time for cold boot)
    * Chopped down code paths that does the bare minimum to complete the request
    * Fast load time on 4200RPM hard drive, as those still come in recent but cheap hardware. Even fast on SDcard storage like recent “stick” PC like the MK802 or RPi. Then again, KWin load in no time on my MacBookPro Retina with the built in SSD, so on the next gen hardware, this will be “free”.
    * No idle CPU usage. While some is necessary even for reparenting WMs to handle events/inputs, no “other” CPU cycles are absolutly necessary.

    1. KWin take 7-8 seconds because of all of the dependencies that have to load from the (slow) SD card used as the primary hard drive

      The restart of KWin is not as fast as it could be as KWin is not optimized for this startup use case, but for the startup in a clean session (in an ideal world KWin will not be restarted more often). But obviously it’s not a fair comparison, because KWin is more than a window manager and KWin always links against compositing libraries – whether it’s used or not.

      1. This was not against fairness, this was about defining lightweight. Don’t be on the defensive on this, it was not the purpose of the post. You know as well as I do that it is possible to improve the dependency part of the load time problem. Dynamic/Runtime loading is slower than compile time one, but it is possible to implement staging loading code where capabilities become available only when the libs are ready. This of course make the code more complicated, more fragile to API/ABI changes, harder to maintain and some more troubles, but it is at least “possible” to reduce dependencies indiced load time. I am not saying here that it worth it. As I said, it matters only for “lightweight” (as in I/O restricted) computing platform such as stick PC, entry level Net/NoteBooks and RPi.

        Saying that it is a problem that will solve itself with moores law is a bit naive. This was said before and then NetBook came in. That was said again and then Tablets came in. And again when RPi came in. There will probably always be a new, cheaper computing platform. Who know, may be ultra thin e-paper foldable computers will someday takeoff and take us back again to the stone age when it come to CPU cycle, I/O bandwidth or storage space.

        Then again, is KWin goal to become lightweight by the definition I declared (and is my opinion) earlier? Wouldn’t a lightweight (by that definition again) KDE would be better off with another WM focussing on that particular goal? Making KWin even greater than it currently is while 100x “lighter” (by the above definition) is close to impossible for any single developper.

        Some time ago, I had a project shared by 3 clients. The 3 had diverging needs and at some point, the codebase died because of the ever increasing number of “if”. It wasn’t designed to scale that way. The original design was low-cost fast application development then grew up as managers decided to sell “shares” in the software to third party to make quick bucks and reduce cost. It actually did the opposite. At the end, we spend months forking the stuff and removing the uneeded code on a by-client basis. I think KWin would face such an issue if it tried to be both lightweight and fully featured.

        With AwesomeWM, we solved this by having a tiny core that only “hook” X11 clients and protocol events to “client” objects and have a second set of objects for “drawin”, basically a painting surface and “drawable” basically panels/titlebars/tooltips/menu area that can be painted by a drawin content. That’s it, the core does (almost) nothing else. Everything else is a plugin. This heavy modularisation was the original design and it did scale pretty well. It is limited and have performance problem of its own (it wasn’t designed to be properlly threaded), but I think do well with the lightweight ( http://ompldr.org/vaHkwag/blackburn.png ) to heavyer weight ( http://img17.imageshack.us/img17/2320/blender176.png (and yes, gradients are supported, those screenshots just don’t use them). I am not sure how well this would work for KWin because of:
        1) C++ is not natually “modulable” compared to dynamic langueages and rewriting everything in QtScript would be dumb and make things worst
        2) The ammount of time it would take to strip off all the code from all core code paths would be a nightmare for little benifits, again, so we (as in KDE) care about incomming low power (as in CPU cycle and I/O bandwidth) use cases? I don’t think so
        3) As you said, some of the dependencies are deeply entengled to KWin.

        I think we both know very well what is considered by non technical end users as being “lightweight”. While there may not be a technical definition, we cannot simply ignore that it exist and is quite well defined in the users mind for something formally lacking a definition. I don’t think KWin can meet thin undefined lightweight definition, mostly for the load time thing, but I also don’t think it is a bad thing after all.

    1. thanks. I’m very glad that you (unlike other readers) got that this blog post is about the lack of definition.

  33. While I agree a solid definition for “lightweight” is probably impossible to pin down, my “lightweight” favorite is Puppy Linux. Currently 165 mb with all of the bells and whistles I need. Not for everyone as it runs as root but it performs well on any hardware i’ve tried it on.

  34. What I would regard as heavy weight on my desktop:
    -A clock applet requiring some huge service back-end running on mysql
    -An inefficient file indexer that by default does dozens of hours of interrupt disk access, regardless of available resources or power source.
    -A sound system that requires 5% of a modern cpu to play a single sound channel
    -Little to no modularization of dependences. Which leads to huge library dependency, slow load times in other environments and difficult portability
    -A kernel that prioritizes throughput over responsiveness, making the desktop unusable during any IO load.

    But my window manager is great! Stable, fully featured and flexible. 🙂

  35. A “lightweight” environment can be needed under different circumstances, and means different things then.
    Let’s say I want to build an “appliance”, e.g. some embedded device for some specific purpose.
    In this case, I want to have a lightweight environment, and I could express quite clearly what that means:
    * the device will have a known amount of memory, and known CPU power, the environment should work with that smoothly and still leave enough room for the actual application
    * it should not have too many required dependencies, because each of them can introduce compatibility issues, maintainance work, etc.

    When talking about a general purpose computer, it becomes somewhat harder. Memory usage directly after startup doesn’t says something, but not much. Especially for KDE a lot of stuff is in shared libs, so while an “empty” desktop may be quite “heavy”, when running several KDE applications in it, it may consume less resources than when running a different desktop and several applications from different toolkits. Bad thing here for KDE is that Firefox and LibreOffice are not based on KDE, and the KDE alternatives are not yet as mature. So a mature rekonq and a mature Calligra suite will make KDE more lighweight 🙂

  36. I agree with your points about “lightweight” being somewhat ill-defined, and about that anyone can just claim it for their software because of that; and about that there’s a tradeoff between features and being “lightweight” (in whatever sense). I also agree that many people thus overlook that being “lightweight” usually means having fewer features, which in turn means you’ll need lots of extra software to get the same features as the “non-lightweight” project, which again means using more resources. Thus, comparison of “lightweightness” is something one definitely cannot claim to measure in a scientific way by firing up some program and looking at its RAM usage (*cough* phoronix *cough*). I’d even say you shouldn’t try measuring it in numbers at all.
    However, there’s two things I feel they’re missing a bit in your description, although I’m sure you have considered them:

    First, there is software which does exactly the same thing like other software, while using less resources. I can’t name a good example because projects which do exactly the same things are rare, but one obviously gets such software whenever one introduces a performance improvement in ones own program (the new version does the same thing like before, but uses less resources). So, the new version is without doubt more lightweight than the old one, for whatever sensible definition of the word you pick. And in my opinion there is projects which are sufficiently similar in functionaliy and sufficiently different in resource usage that you can claim one to be more lightweight than the other one, even without giving an exact definition of what the word means. I’d also argue that desktop environments are such a field, and that LXDE can rightfully claim to be “lightweight” (because, try to pick a definition for “lightweight” so LXDE doesn’t qualify for it — I couldn’t).

    Second, although I — as I said — agree with your rant about “lighweight” being ill-defined, there is some points which will probably be included in any sensible definition one can come up with; one of them being, the software should, in its basic configuration, use very little resources compared to software which serves roughly the same purpose, while providing a somewhat minimal set of “required” (whatever *that* means) features. I’m aware that the interpretation of this is very… stretchable as well, but in whichever way you stretch it, LXDE is very likely to match the definition while the KDE desktop is significantly less likely to do so. Try running the KDE desktop on a raspberry pi, and try with LXDE — one is usable in its default configuration, and one is not. And I think you can spend *quite* a lot of time to disable features in plasma and add bloat to LXDE until you arrive at a point where it’s the other way round. Sure, the KDE desktop will always have features LXDE can’t provide, but as long as the KDE desktop isn’t usable on the platform at all because it needs thirty seconds to process every click (because of swapping etc.), nobody cares.

    So, while I agree that the “lighweight” advertising talk sometimes claims significant performance differences where there are none, I’d argue that your point of view might be a bit too hostile against software that tries to be “lightweight” — in its own, yet not exactly specified, way.

    Cheers!

    1. but one obviously gets such software whenever one introduces a performance improvement in ones own program (the new version does the same thing like before, but uses less resources). So, the new version is without doubt more lightweight than the old one, for whatever sensible definition of the word you pick.

      Yes I thought about that and did not consider it in the evaluation because I think that bugs should be fixed and memory leaks should be fixed and also code should get optimized. So I somehow thought we should expect an ideal world in which software doesn’t leak and is sufficient. Otherwise the more “lightweight” software should be called “bugfree” 😉

      Try running the KDE desktop on a raspberry pi, and try with LXDE — one is usable in its default configuration, and one is not

      Well what is the default configuration of the “KDE desktop”. That’s the difficult question here. To me the default configuration is what kde-workspace provides. This explicitly does not include Akonadi, which gets unfortunately started in most distributions, and also not Nepomuk, which also gets started in most distributions. Funnily that’s exactly what Will is addressing and what triggered the thought process for this blog post.

      1. Yeah sure, memory leaks are a killer issue, but it’s not what I was thinking of. You can decide to spend time optimizing your memory usage, or you can decide not to do so and add new features or fix bugs instead. It’s the project’s decision, and some projects care about it very much while others don’t and tell their users to get more memory instead (I have heard that — “let’s not optimize the memory usage of this, memory is so cheap today”; I have even heard it from users, “I don’t care about memory usage, I’ll just buy more memory”). In my opinion, there is (or at least “there can be”) valid reasoning behind both decisions; it’s mainly about your project’s philosophy. By claiming to be “lightweight”, a project claims to care about optimization very much. And, let me stress that again, not every project claims to care about optimization (plus of course not every project claiming to do so actually *does*).
        I also claim that this statement is valid for proprietary software, too — maybe even more so than for free software (because it’s even easier to tell customers “your hardware is too slow” there — just put it on the box and you can easily get rid of whining people).
        If we’re assuming we’re talking about ideal applications here with ideal code and no bugs (which is an interesting thing to discuss too, of course) I can agree with your argumentation without complaints.

        About the default configuration, again you’re right, but again I must say that this is a qualitative issue which just doesn’t cut it. Take the slimmest default configuration of the KDE desktop shipped by any distro and take the fattest you can find for LXDE, I bet LXDE will still run way better on something like the raspberry pi. Which is just fine, because KDE’s philosophy — unlike the one of a “lightweight” project — simply isn’t “so, which feature could we remove to get another 5 MB of RAM free’d without crippling the software”.

        Cheers!

        1. Over the last days I was considering to buy 8 more gigs of RAM for kdevelop 😀

          By claiming to be “lightweight”, a project claims to care about optimization very much. And, let me stress that again, not every project claims to care about optimization (plus of course not every project claiming to do so actually *does*).

          I doubt that projects claiming to be lightweight also claim to care about optimization and I even more doubt that they do so. I wouldn’t be surprised if I spent more time in optimizing KWin than what went into openbox for optimization, but on the other hand openbox doesn’t have a compositor which could be optimized (apples and oranges again). If we stay on WM level: we spent lots of time optimizing KWin by porting to XCB while openbox is still XLib based.

          1. > Over the last days I was considering to buy 8
            > more gigs of RAM for kdevelop
            To stay with that example, I wouldn’t consider the kdevelop python plugin to be “lightweight”, because at several places, I choose code simplicify, features of questionable usefulness, or small gains in correctness of the analysis over execution speed / memory usage. To be honest, I don’t really care if it’s five percent slower if that makes the code more maintainable. That’s because it’s aimed at software developers with powerful hardware, and I just decided I can spend time on the project better than maintaining unreadable but fast code (it’s not “I don’t care about speed”, of course, but in some cases it’s a tradeoff of speed vs. something else, and I often choose something else).
            Also, you could say kate provides a more lightweight alternative to kdevelop: it has less features, but in the end, it serves the same purpose (which is, it allows you to write code), and uses less resources in doing so. I would consider that to be an allowed application of the word “lightweight”.

            > I doubt that projects claiming to be
            > lightweight also claim to care about
            > optimization and I even more doubt
            > that they do so.
            Okay, quite possible, it’s not like I asked them 😀
            But, at least I expect them to do what I described above: if a feature has a small gain for the software’s usefulness, but a large impact on performance, I’d expect them to choose performance. Of course, that is not a useful philosophy for every project.
            My statement reading “cares about optimization” wasn’t very well phrased and didn’t actually voice what I wanted to express, but I’m unable to do much better… maybe “prefers performance over feature-completeness or easy-to-read code”… well, not very good either, but I hope you can understand what I mean neverthereless.

            > I wouldn’t be surprised if I spent more
            > time in optimizing KWin than what went
            > into openbox for optimization, but on the
            > other hand openbox doesn’t have a
            > compositor which could be optimized
            > (apples and oranges again).
            That is quite possible, I wouldn’t be surprised either. But you have a much harder job getting down to the same resource usage as openbox, because you have way more features. Which is the second thing I wanted to point out; it’s pointless to make a contest out of “lightweightness”. But, by chosing different subsets of the set of possible features, projects chose a minimum amount of resources they can run with (modulo optimizations) — and if a project chooses a subset of features which makes it usable for a purpose while keeping resource requirements very low, I think it’s okay to call that project “lightweight”. Which doesn’t say “it’s better than X”, but only “it provides a solution for a problem [window management] using a minimum amount of resources”. If the project manages to do so while keeping all the features of the full-featured “big brother”, that’d be great of course, but it doesn’t usually happen (like in the openbox — kwin case).

            In the openbox — kwin case, I think one obvious thing you can say is that, since openbox’ features are a subset of what kwin can do, but openbox uses less memory, you’d want to use openbox if you had very little memory (64MB?), but you’d want to use kwin if you had enough memory because it lets you work more efficiently because of the extra features. And because openbox is the one people prefer with very little resources available, they call it “lightweight” — I think that’s the thing people usually want to express with that word.

            Greetings,
            Sven

  37. I was enjoying this article, excited for when I get to the part where you quantify what you think lightweight means. But now I’m confused about what your point is.

    Is it that the DEs should quantify what they mean by lightweight?

    If so, then why didn’t you?

    Is it that it’s impossible to quantify what “lightweight” means?

    If so, then it’s completely subjective, and therefore the DEs did the best they could, stating their subjective opinions on something that is completely up to personal preference.

    “Lightweight” seems fairly subjective to me. It means that it should have nearly instant responsiveness. It should do what I tell it, NOW, no matter which computer I use. Yes, this is fuzzy. I never defined what “NOW” is. It’s the absence of, “ugh, hurry up, would you, computer? I’ve got things to do.” I’m pretty impatient with my computer, so “NOW” has to be pretty damn fast. It should use as little memory as possible, by which I mean that the developers didn’t throw all the crap they could think of into it. free, top, and looking at the code gives me a sense for this.

    I also didn’t define what I mean by “no matter which computer I use,” but I assure you, I’m not on a 486. The lowest end computer I have is a 900MHz, 1MB RAM EEE PC. The difference between the DEs isn’t as noticeable on the higher end hardware, which I think is all those websites mean by “optimized for lower end hardward.” It means, that’s where those DEs really shine. It means, just try it, you’ll probably notice a difference.

    dwm on a 64bit dual core is probably an unnecessary optimization, but it’s silly to use bloated software just because the hardware can handle it. I don’t like how Moore’s Law has been giving license to software developers to be lazy about resources, wasting my hardware just so they can cut corners or so their software looks flashier. Windows 7 on a modern computer is no faster than Windows 95 was on a Pentium, and adds little in terms of functionality. It just looks fancier. My computer is not a playground for software developers to show off. It’s a tool, and I demand that my computers get faster with time, as hardware improves.

    1. But now I’m confused about what your point is.

      The point is that there is no definition of lightweight, that anybody can claim to be lightweight, that it is just a buzzword. Many people got that in the comment section.

      1. “Lightweight” has a pretty clear definition, albeit relative and subjective. It means that it consumes a low amount of hardware resources. How low is up for interpretation and comparison, and not easy to measure. But that doesn’t mean it has no definition whatsoever. Most words are pretty fuzzy. Unless we’re writing for a scientific journal, they usually work just fine.

        I’m guessing what you mean by “buzzword” is that it’s over-used and subjective, and therefore meaningless. We have over a dozen DEs, all of which claim to be “lightweight,” but never define what they mean by that. Some of them are becoming quite popular, such as XFCE and LXDE, so I think your article is apropos and makes a good point. But I don’t think “lightweight” is meaningless. I certainly notice a huge difference between GNOME and dwm. I even notice a big difference between Openbox and dwm.

        It’s subjective, but there’s no better way to describe these DEs. Anyone can use the term “lightweight,” which can dilute its meaning. By lightweight, do they mean that it’s completely stripped down to nothing, or do they mean it’s slightly more efficient than the competitors? The only way to really know is to try it out. Why would I try it out? Because they claim to be “lightweight.” So that word has a lot of meaning for me.

        I do think you make a good point, nonetheless. It would be nice if things were more quantified, rather than just throwing around fuzzy words.

        1. ““Lightweight” has a pretty clear definition, albeit relative and subjective. It means that it consumes a low amount of hardware resources”

          Again, which resources? Which is lighter, a DE that doesn’t cache calculated results in RAM so it uses less RAM but more CPU or one that caches aggressively and has low CPU usage but consumes more RAM. Is a DE that is less able to support legacy hardware because it makes full use of modern GPU capabilities to do much efficiently what would otherwise be done less efficiently by CPU lighter or heavier than one that has greater legacy support but chews up more CPU? General hand-wavey definitions of lightweight are of no use, as Martin points out it is just a meaningless buzzword used to try and pump up one project, usually whilst running down another but without having the honesty to provide an actual means for the reader to perform a meaningful evaluation

          1. Like I said, it would be nice if these things were quantified. The overuse of the term “lightweight” does dilute its meaning somewhat, but that doesn’t make it completely useless. It’s fair to say that it’s useless to you, but for most people, it just gives them a sense for what to expect. It’s hyperbole to say it’s dishonest or useless to use a word without quantifying it.

            Say I’m in the market for a new DE, because I’m tired of how unresponsive my computer has become, and I realize it’s more important to me for it to be fast than for it to be fancy. I do a Google search and find hundreds of options, each boasting dozens of features. How do I narrow the search? Well, I see a dozen or so of them claiming to be “lightweight.” That narrows my search significantly. How lightweight? What do they mean by that? Don’t really know, but it helps give me a sense for their goals. I have to try out each of them to see if they work the way I think they should and if my computer feels responsive enough when I do so.

  38. Very good article!
    I can run modern Kubuntu 12.10 on old laptop that has celeron 1,2GHz and shitty intel GPU, but performs qute well. (works for my parrents)

  39. For me the term “Lightweight” is the same as the economic “mininum principle”. I want to get a desired set of features with at least distraction* as possible.

    Distraction may occur in the form of usability or performance issues caused by unneeded features. This also means that hidden features with no negative performance impact are totally fine.

  40. Well, a definition of “lightweighted” DE could be that it has just the very very veeery basic features, aiming to use just a few resources.

    With this, it would use just enough resources and people would considered it lightweighted, even if it is not optimized at all!

  41. I think you hit the nail on the head with this one. Reading between the lines:
    Lightweight means fast startup (that means <1sec with an SSD), perceptably instant responsiveness achieved through optimization for modern hardware capabilities, all the while with reasonable memory consumption (where I define reasonable as a cold-booted system with nothing running consuming 20% or less RAM of whatever capacity is most common in the budget laptop price point; currently 4GB).
    Oh yea and please, PLEASE start marketing KDE as lightweight for fscks sake. Because it is. And while at it, don't forget powerful yet user friendly! (Even if that may be bending the truth in various dark corners..) That's what marketing and sales are all about – convincing people they need something that they actually probably don't.
    Keep up the great work; personally I'm glad KDE is getting some constructive competitivenes. Here's to hoping these efforts can be combined as the future stabilizes!

  42. Great post, Martin! To me, “lightweight” is a very subjective term. I would much prefer to see DE defining their performances using 2 more quantitative elements:

    1. A hardware target: precise model the DE is expected to perform well on.

    2. Metrics to define “perform well on”. For example:
    – maximum duration between DM stop and DE is ready
    – maximum memory usage after startup
    – maximum duration to start DE web browser
    – maximum duration for DE file manager to list a folder containing $d dirs and $f files
    – maximum duration for DE image view to load picture using $f format and size $w x $h
    – maximum duration for DE music player to index music collection of $n mp3 files

    If one were to define those set of conditions, one could say “our DE is targetted to perform like this on this specific hardware”. One could even go further and define a set of (hardware, performance-values). Of course those would probably have to be revised as time goes on and it becomes less relevant to support the target hardware. Whether those particular combinations can be qualified as lightweight or not is still purely subjective, but at least we would have quantitative numbers to express what the DE targets.

    Defining target hardware is not really practical for free software projects, since we cannot ensure access to the same hardware to enough contributors. I wonder if it would be possible to use performance-limited virtual machines to emulate such target hardware, but performances of the host would nevertheless influence performances of the guest, so it would probably not be reliable enough.

    1. those metrics sound quite well and VMs could work. What it would need then would be some kind of reliable way to measure it (maybe a script which executes the tasks in a repeatable manner?).

  43. I think somebody hit it right on the nail when they said that you can’t compare two [or more] operating systems that have different feature sets.

    But, this is my two cents on the “lightweight” desktop environment.

    When you get a DE, you get more than just a DE. Typically a DE is paired with a distribution, a repository, and a default set of applications. There is also something less easily defined, spirit of the DE+repository+distribution+default apps that imbues a special quality to the operating system. For example, Debian used to be horrendous for new hardware (especially laptops), yet there was a distribution called Sidux (I think called AptoSid now) that was far superior for laptops (circa 2009 or so). Its developers paired Debian with some scripts that allowed this. Another example of the “spirit” of an operating system. Gentoo is fairly difficult to install, yet Sabayon installs effortlessly. The spirit of each is very clear, yet they would appear to be the same variety of DE, repository, distribution…

    Anyways, so lightweight DE is not just lightweight DE, but a lot of things that culminate in the overall experience of the user.

    My definition for lightweight would be small ram footprint, either lack of processor/memory intensive features or ability to scale/choose features to suit the target hardware/environment with the specific goal of being RESPONSIVE (NO LAGGY UI), and a core of applications covering the most common activities for the target audience (let’s say, by Pareto’s law, for e.g.).

    This is generic enough to abstract out the requirement for old hardware. How long has x86 code been around. Is it necessary to write software to arbitrarily eliminate machines on their release date? I think not.

    I don’t think you can really put your finger on “lightweigt”, but the above guidelines can at least provide a litmus test. E.g., is this DE/distribution responsive/non-laggy, does this scale up or down (automatically or indirectly through customizable settings) to different hardware levels (whether it be OLD hardware or simply PALTRY hardware), does it have a decent amount of feature-rich software to satisfy the general user of the target population.

    If you wanted to, you could put values to all of these by use of metrics like milliseconds or weighted factors, but different people are going to have different thresholds of importance for those things.

Comments are closed.