Some software bloat is OK

(waspdev.com)

32 points | by senfiaj 6 hours ago

18 comments

  • karmakaze 10 minutes ago
    No software bloat isn't ok. Tech debt can be ok, and software bloat can be the consequence of tech debt taken on with eyes open. But to say that (some) software bloat without considerations is ok is how we have the fastest machines imaginable and still end up with UI that can't keep up visually with keystrokes.

    Quoting Knuth without the entire context is also contributing to bloat.

    > Programmers waste enormous amounts of time thinking about, or worrying about, the speed of noncritical parts of their programs, and these attempts at efficiency actually have a strong negative impact when debugging and maintenance are considered.

    > We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. Yet we should not pass up our opportunities in that critical 3%.

  • benrutter 31 minutes ago
    Tangent, but software bloat always leaves me wondering what hardware/software could be if we had different engineering goals.

    If we worked hard to keep OS requirements to a minimum- could we be looking at unimaginably improved battery life? Hyper reliable technology that lasts many years? Significantly more affordable hardware?

    We know that software bloat wastes RAM and CPU, but we can't know what alternatives we could have if he hadn't spent our metaphorical budget on bloat already.

  • aaaashley 3 hours ago
    The "development time is more important than performance" motto treats bad performance as the problem with software, when in reality poor performance is a symptom of growing software complexity. I'm sure that each individual coder who has contributed to software bloat believed that their addition was reasonable. I'm sure everyone who has advocated for microservices fully believes they are solving a real-world problem. The issue is that we don't treat complexity as a problem in-and-of-itself.

    In physical disciplines, like mechanical engineering, civil engineering, or even industrial design, there is a natural push towards simplicity. Each new revision is slimmer & more unified–more beautiful because it gets closer to being a perfect object that does exactly what it needs to do, and nothing extra. But in software, possibly because it's difficult to see into a computer, we don't have the drive for simplicity. Each new LLVM binary is bigger than the last, each new HTML spec longer, each new JavaScript framework more abstract, each new Windows revision more bloated.

    The result is that it's hard to do basic things. It's hard to draw to the screen manually because the graphics standards have grown so complicated & splintered. So you build a web app, but it's hard to do that from scratch because the pure JS DOM APIs aren't designed for app design. So you adopt a framework, which itself is buried under years of cruft and legacy decisions. This is the situation in many areas of computer science–abstractions on top of abstractions and within abstractions, like some complexity fractal from hell. Yes, each layer fixes a problem. But all together, they create a new problem. Some software bloat is OK, but all software bloat is bad.

    Security, accessibility, and robustness are great goals, but if we want to build great software, we can't just tack these features on. We need to solve the difficult problem of fitting in these requirements without making the software much more complex. As engineers, we need to build a culture around being disciplined about simplicity. As humans, we need to support engineering efforts that aren't bogged down by corporate politics.

    • Gravityloss 1 hour ago
      We do see the same in physical engineering too. At some point some products have plateaued, there's no more development. But still you need to sell more, the designers need to get paid and they are used as status symbols and so on.

      One example is skirt length. You have fashion and the only thing about it is change. If everybody's wearing short skirts, then longer skirts will need to be launched in fashion magazines and manufactured and sent to shops in order to sell more. The actual products have not functionally changed in centuries.

  • rossant 4 hours ago
    > There are still highly demanded optimized programs or parts of such programs which won't disappear any time soon. Here is a small fraction of such software: > ... > Such software will always exist, it just moved to some niche or became a lower level "backbone" of other higher level software.

    Yes. I’ve been working for years on building a GPU-based scientific visualization library entirely in C, [1] carefully minimizing heap allocations, optimizing tight loops and data structures, shaving off bytes of memory and microseconds of runtime wherever possible. Meanwhile, everyone else seems content with Electron-style bloat weighing hundreds of megabytes, with multi-second lags and 5-FPS interfaces. Sometimes I wonder if I’m just a relic from another era. But comments like this remind me that I’m simply working in a niche where these optimizations still matter.

    [1] https://datoviz.org/

    • sgarland 1 hour ago
      Please keep doing what you’re doing; I appreciate the effort and mentality.
  • Grumbledour 4 hours ago
    The question is of course always where someone draws the line, and thats part of the problem.

    Too many people have the "Premature optimization is the root of all evil" quote internalized to a degree they won't even think about any criticisms or suggestions.

    And while they might be right concerning small stuff, this often piles up and in the end, because you choose several times not to optimize, your technology choices and architecture decisions add up to a bloated mess anyway that can't be salvaged.

    Like, when you choose a web framework for a desktop app, install size, memory footprint, slower performance etc. might not matter looked at individually, but in the end it all might easily add up and your solution might just suck without much benefit to you. Pragmatism seems to be the hardest to learn for most developers and so many solutions get blown out of proportion instantly.

    • ndiddy 32 minutes ago
      > Too many people have the "Premature optimization is the root of all evil" quote internalized to a degree they won't even think about any criticisms or suggestions.

      Yeah I find it frustrating how many people interpret that quote as "don't bother optimizing your software". Here's the quote in context from the paper it comes from:

      > Programmers waste enormous amounts of time thinking about, or worrying about, the speed of noncritical parts of their programs, and these attempts at efficiency actually have a strong negative impact when debugging and maintenance are considered. We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil.

      > Yet we should not pass up our opportunities in that critical 3 %. A good programmer will not be lulled into complacency by such reasoning, he will be wise to look carefully at the critical code; but only after that code has been identified.

      Knuth isn't saying "don't bother optimizing", he's saying "don't bother optimizing before you profile your code". These are two very different points.

    • sgarland 57 minutes ago
      It is forever baffling to me that so many devs don’t seem to appreciate that small performance issues compound, especially when they’re in a hot path, and have dependent calls.

      Databases in particular, since that’s my job. “This query runs in 2 msec, it’s fast enough.” OK, but it gets called 10x per flow because the ORM is absurdly stupid; if you cut it down by 500 microseconds, you’d save 5 msec. Or if you’d make the ORM behave, you could save 18 msec, plus the RTT for each query you neglected to account for.

    • arethuza 4 hours ago
      I've never interpreted "Premature optimization..." to mean don't think about performance, just that you don't have to actually implement mechanisms to increase performance until you actually have requirements to do so - you should always ask of a design "how could I make this perform better if I had to".
      • aleph_minus_one 4 hours ago
        To me, it rather meant: "Ultrahard" optimization is perfectly fine and a good idea, but not before it has become clear that the requirements won't change anymore (because highly optimized code is very often much harder to change to include additional requirements).

        Any different interpretation in my opinion leads to slow, overbloated software.

        • arethuza 4 hours ago
          Yeah - I've heard that described as "It's easier to make working things fast than fast thing work" - or something like that.
    • AlotOfReading 4 hours ago
      I've found that mentioning bloat is the fastest way to turn a technical conversation hostile.

      Do we need a dozen components of half a million lines each maintained by a separate team for the hotdesk reservation page? I'm not sure, but I'm definitely not willing to endure the conversation that would follow from asking.

  • SurceBeats 4 hours ago
    The article is kind of right about legitimate bloat, but "premature optimization is evil" has become an excuse to stop thinking about efficiency entirely. When we choose Electron for a simple app or pull in 200 dependencies for basic tasks, we're not being pragmatic, we're creating complexity debt that often takes more time to debug than writing leaner code would have. But somehow here we are, so...
    • 0xEF 4 hours ago
      Thinking is hard, so any product that gives people an excuse to stop doing it will do quite well, even if it creates more inconveniences like framework bloat or dependency rot. This is why shoehorning AI into everything is so wildly successful; it gives people the okay to stop thinking.
    • rossant 4 hours ago
      Yes. Too many people seem to forget the word "premature." This quote has been grossly misused to justify the most egregious cases of bloat and unoptimized software.
      • SurceBeats 4 hours ago
        Yeah, somehow it went from don't micro optimize loops to 500MB Electron apps are just fine actually hahaha
        • stared 3 hours ago
          I hope Tauri gets some traction (https://v2.tauri.app/). The single biggest benefit it drastically smaller build size (https://www.levminer.com/blog/tauri-vs-electron).

          A 500MB Electron app can be easily a 20MB Tauri app.

          • brabel 3 hours ago
            Not sure. Tauri apps run on the browser and browsers are absolute memory horders. At any time my browser is by far the biggest culprit of abusing available memory. Just look at all the processes it starts, it’s insane and I’ve tried all popular browsers, they are all memory hogs.
        • cpt_sobel 4 hours ago
          The latest MS Teams update on MacOS fetched an installer that asked me for 1.2GB (Yes, G!) of disk space...
          • thaumasiotes 39 minutes ago
            I recently set up a new virtual machine with xubuntu when I stopped being able to open my virtualbox image.

            Turns out modern ubuntu will only install Firefox as a snap. And snap will then automatically grow to fill your entire hard drive for no good reason.

            I'm not quite sure how people decided this was an approach to package management that made sense.

        • bluetomcat 3 hours ago
          And consequently, "you need 32GB of RAM just to be future-proof for the next 3 years".
    • nly 3 hours ago
      Fortunately many apps seem to be moving to native webviews now instead of shipping electron
    • m-schuetz 3 hours ago
      I'd argue that the insane complexity of fast apps/APIs pushes many devs towards super slow but easy apps/APIs. There needs to be a middle ground, something that's easy to use and fast-enough, rather than trying to squeeze every last bit of perf while completely sacrificing usability.
    • empiko 3 hours ago
      What is often missing from the discussion is the expected lifecycle of the product. Using Electron for a simple app might be a good idea, if it is a proof-of-concept, or an app that will be used sparsely by few people. But if you use it for the built-in calculator in your OS, the trade-offs are suddenly completely different.
      • pjmlp 3 hours ago
        A large majority of Electron crap could be turned into a regular website, but then the developers would need to actually target the Web, instead of ChromeOS Platform and that is too hard apparently.
        • Incipient 1 hour ago
          I've recently gone back to more in depth (but still indie) Web dev with vuejs and quasar, and honestly I don't even find myself thinking about "targeting Web" any more - I just write code and it seems to work on pretty much everything (I haven't tested safari to be fair).
    • eitau_1 3 hours ago
      The sad reality is that easy tech explores solution space faster
    • sublinear 2 hours ago
      On the flip side, what you're saying is also an overused excuse to dismiss web apps and promote something else that's probably a lot worse for everyone.

      I've never seen a real world Electron app with a large userbase that actually has that many dependencies or performance issues that would be resolved by writing it as a native app. It's baffling to me how many developers don't realize how much latency is added and memory is used by requiring many concurrent HTTP requests. If you have a counterexample I'd love to see it.

  • eviks 3 hours ago
    > A significant part of this bloat is actually a tradeoff

    Or actually not, and the list doesn't help go beyond "users have more resources, so it's just easier to waste more resources"

    > Layers & frameworks

    There are a million of these, with performance difference of orders of magnitude. So an empty reference explains nothing re bloat

    But also

    > localization, input, vector icons, theming, high-DPI

    It's not bloat if it allows users to read text in an app! Or read one that's not blurry! Or one that doesn't "burn his eyes"

    > Robustness & error handling / reporting.

    Same thing, are you talking about a washing machine sending gigabytes of data per day for no improvement whatsoever "in robustness"? Or are you taking about some virtualized development environment with perfect time travel/reproduction, where whatever hardware "bloat" is needed wouldn't even affect the user? What is the actual difference between error handling in the past besides easy sending of your crash dumps?

    > Engineering trade-offs. We accept a larger baseline to ship faster, safer code across many devices.

    But we do not do that! The code is too often slower precisely because people have a ready list of empty statements like this

    > Hardware grew ~three orders of magnitude. Developer time is often more valuable than RAM or CPU cycles

    What about the value of time/resources of your users ? Why ignore reality outside of this simplistic dichotomy. Or will the devs not even see the suffering because the "robust error handling and reporting" is nothing of the sort, it mostly /dev/nulls a lot of user experience?

  • Cthulhu_ 4 hours ago
    I work in enterprise, B2C software, lots of single page apps / self service portals, that kind of thing. I don't think our software is bloated per se; sure it could be faster, but for example when it comes to mobile apps, it's a tradeoff between having the best and fastest apps, being able to hire people, development speed, and non-functional requirements.

    It's good enough, and for example React Native is spending years and millions in more optimizations to make their good enough faster, the work they do is well beyond my pay grade. (https://reactnative.dev/blog/2025/10/08/react-native-0.82#ex...)

    • liampulles 4 hours ago
      As far as internal services go, I agree, being able to easily add stuff is the main priority.

      For customer facing stuff, I think it's worth looking into frameworks that do backend templating and then doing light DOM manipulation to add dynamism on the client side. Frameworks like Phoenix make this very ergonomic.

      It's a useful tool to have in the belt.

    • bombcar 4 hours ago
      95% of portals could be done with 2000s tech (since they're basically CRUD apps) - the question is what it is worth to make them that way.

      And the answer is almost always "nothing" because "good enough" is fine.

      People like to shit on development tools like Electron, but the reality is that if the app is shitty on Electron, it'd probably be just as shitty on native code, because it is possible to write good Electron apps.

      • eviks 3 hours ago
        > but the reality is that if the app is shitty on Electron, it'd probably be just as shitty on native code

        Right off the bat it'll save hundreds of MB in app size with a noticeable startup time drop , so no, it won't be just as shitty.

        > because it is possible to write good Electron apps.

        The relevant issue is the difficulty in doing that, not the mere possibility.

  • InMice 5 hours ago
    When I click on some of stuff on the page Im getting redirected to spammy opera download pages
    • binaryturtle 4 hours ago
      I guess that's that acceptable software bloat the site probably is talking about. :) (I have not clicked. I first read comments to find out if it's worth clicking.)
      • InMice 3 hours ago
        Lol. It's the behavior I see when there's a malicious chrome plugin installed. A link on a page loads a spam site randomly in a new tab, but the links works normal after that. Im pretty sure it's none of my plugins I guess.
  • liampulles 4 hours ago
    The performance of a web service is largely dependant on how many calls and how quickly it can make calls to external services. If a given system is making 2 DB calls when it could instead make one, then that should be the initial focus for optimisation.

    Indeed, if a language and framework has slow code execution, but facilitates efficient querying, then it can still perform relatively well.

  • vbezhenar 3 hours ago
    Sometimes bloat is forced on you.

    I had to write Android app recently. I don't like bloat. So I disabled all libraries. Well, I did it, but I was jumping over many hoops. Android Development presumes that you're using appcompat libraries and some others. In the end my APK was 30 KB and worked on every smartphone I was interested (from Android 8 to Android 16). Android Studio Hello World APK is about 2 MB, if I remember correctly. This is truly madness.

    • pjmlp 3 hours ago
      The reason being that Android used to advocate how great it was versus J2ME fragmentation, a marketing move that only impressed those without experience, turns out that a great deal of appcompat code is actually to deal with Android fragmentation across OEMs and devices.
  • raincole 3 hours ago
    Sometimes I feel the biggest contribution React made to the world isn't it speeded up frontend dev or something. It's showing how much discussion about performance is pure paranoid.
  • foofoo12 3 hours ago
    Bloat is OK when the alternative is worse. But have you really done the analyzes on how bad and how bigger the bloat is going to get? But it's still justified if the alternative is worse.
  • usrbinenv 4 hours ago
    If I could make one law related to software, it would be to ban React and React-like frameworks (includes Vue and Svelte I believe): if you have to put more than one line of HTML in your JavaScript, if you have VDOM, if you have a build step - I want this to be illegal. It is entirely possible to write a js-framework that attaches itself to DOM from the top, without any kind of expensive hydration steps or VDOM or templating (I've built one). React is a horrible complex monster that wastes developers time, heats up users' CPUs and generally feels super slow and laggy. 99% percent of websites would work a lot better with SSR and a few lines of JavaScript here and there and there is zero reason to bring anything like React to the table. React is the most tasteless thing ever invented in software.
    • athanagor2 2 hours ago
      > React and React-like frameworks (includes Vue and Svelte I believe)

      Putting React with those two is a wild take.

      > 99% percent of websites would work a lot better with SSR and a few lines of JavaScript here and there and there is zero reason to bring anything like React to the table.

      Probably but as soon as you have a modicum of logic in your page the primitives of the web are a pain to use.

      Also, I must be able to build stuff in the 1% space. I actually did it before: I built an app that's entirely client-side, with Vue, and "serverless" in the sense that it's distributed in the form of one single HTML file. Although we changed that in the last few months to host it on a proper server.

      The level of psychological trauma that some back-end devs seem to endure is hilarious though. Like I get it, software sucks and it's sad but no need to be dramatic about it.

      And btw, re forbidding stuff: no library, no process, no method can ever substitute to actually knowing what you're doing.

      • usrbinenv 2 hours ago
        You can do very complex stuff without any need for React like approach. I literally said I've written a very sophisticated framework that was exceptionally snappy - that's what should be used for that 1% (not my framework, but the approach). Even better, I could introduce it very gradually and strategically on different SSR pages and then (if I wanted to) I could turn the whole app into an SPA - all without needing to "render" anything with JavaScript, VDOM or other such nonsense.
    • graemep 3 hours ago
      > It is entirely possible to write a js-framework that attaches itself to DOM from the top, without any kind of expensive hydration steps or VDOM or templating (I've built one)

      Can you elaborate more on how this works? Do you mean JS loading server generated HTML into the DOM?

      • usrbinenv 3 hours ago
        Server renders the page. Suppose you have a element there which reads like <div data-component="HenloComponent">...</div>. Then the .js framework which was loaded on that page queries the DOM in search of any elements with data-component attribute and creates instances of HenloComponent (which is a class written by you, the developer, user of the framework). It's a bit more complicated than that, but that's the essence of it.

        Note that with this approach you don't need to "render" anything, browser already done it for you. You merely attaching functionality to DOM elements in the form of Component instances.

        • graemep 3 hours ago
          Yes, that is what I was asking about.

          I entirely agree. It is what I do when I have to - although I mostly do simple JS as I am a backend developer really, and if I do any front end its "HTML plus a bit of JS" and I just write JS loading stuff into divs by ID.

          When i have worked with front end developers doing stuff in react it has been a horrible experience. In the very worst case they used next.js to write a second backend that sat between my existing Django backend (which had been done earlier) and the front end. Great for latency! It was an extreme example but it really soured my attitude to complex front ends. The project died.

          • athanagor2 2 hours ago
            > In the very worst case they used next.js to write a second backend that sat between my existing Django backend (which had been done earlier) and the front end.

            That's hilarious.

            Casey Muratori truly is right when he says to "non-pessimize" software (= make it do what it should do and not more), before optimizing it.

          • usrbinenv 2 hours ago
            Oh no, they do that? I thought Next.js is a fully functional backend itself, like Django. But I'm shocked to learn that it's just a middleman-backend to render templates that are already served from another backend.
    • anon-3988 4 hours ago
      Why not ditch HTML itself? People are already downloading binary blobs on a daily basis anyway, just download some binary once, execute them in some isolated environment. So you only have to transmit data.
      • usrbinenv 3 hours ago
        I don't see a problem with HTML. It's easy to learn, easy to use and a very nice format for web. CSS is also great. JavaScript is pretty great too. My point is that modern web is horrible because people with no taste and no understanding of the underlying technologies turned it into a horrible shitshow by inventing frameworks that turn the web upside down and making a bloat out of it. I don't hate many things in life, but this one - with passion, because every time I visit a website, I can just feel it's made with React because of how slow and laggy it is.
      • graemep 3 hours ago
        Do not know to what extent you are serious, but I think the idea is that content should be HTML and apps should be just JS.

        We could go further and have a language written to run in a sandbox VM especially for that with a GUI library designed for the task instead of being derived from a document format.

        • usrbinenv 3 hours ago
          Yeah, I think my point was misunderstood: part of what I'm opposed to was writing HTML (or worse, CSS) inside .js files.
      • WesolyKubeczek 3 hours ago
        Ehrm, have you seen how fancy UI stuff is being implemented in so-called "native apps" these days? Anything more complicated than a button or label or other elements familiar since 1993 gets shoved into a webview and rendered with HTML and CSS.
  • pjmlp 3 hours ago
    Some maybe, however we have moved away beyond it being ok.
  • everyone 3 hours ago
    I'm curious, can you vibe code assembly? Perhaps the AI's havent been trained on much of it.. But in theory you could get amazing performance without all the work? .. The only downside is you would have zero idea how the code works and it would be entirely unmaintainable.
    • nineteen999 2 hours ago
      I'm doing a bit with Z80/6502/x86_64 assembly with it, and a little C with sdcc and gcc. It's more fun than I thought it would be.
  • sanskarix 4 hours ago
    [dead]
  • rubymamis 3 hours ago
    I want to benchmark how much battery life Electron apps drain from my computer compared to the equivalent native apps. Then, we can talk about if bloat is OK.

    P.S. Does someone know anyone who tested this?

    • esafak 8 minutes ago
      You've used Electron and you need a benchmark to tell you if it is bloated?