4 ms·
Some software bloat is OK
- InMice 1y agoWhen I click on some of stuff on the page Im getting redirected to spammy opera download pages
- binaryturtle 1y agoI 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 1y agoLol. 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.
- Grumbledour 1y agoThe 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.
- AlotOfReading 1y agoI'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.
- arethuza 1y agoI'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 1y agoTo 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 1y agoYeah - I've heard that described as "It's easier to make working things fast than fast thing work" - or something like that.
- sgarland 1y agoIt 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.
- Cthulhu_ 1y agoI 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#experimental-hermes-v1 https://reactnative.dev/blog/2025/10/08/react-native-0.82#ex...)
- bombcar 1y ago95% 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 1y 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.
- bitwize 1y agoWhen I think of good Electron apps, the first name that pops to my mind is Visual Studio Code. They really did a lot of work to make the editor responsive and capable of sophisticated things without blowing your RAM/disk budget. But it's still bloated compared to the editor I use, Emacs. And it's still bloated compared to a Java-based IDE of equivalent functionality. (Eclipse and IntelliJ can do much more OOTB than VS Code can.)
- 1y ago
- SurceBeats 1y agoThe 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...
- rossant 1y agoYes. 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 1y agoYeah, somehow it went from don't micro optimize loops to 500MB Electron apps are just fine actually hahaha
- cpt_sobel 1y agoThe latest MS Teams update on MacOS fetched an installer that asked me for 1.2GB (Yes, G!) of disk space...
- thaumasiotes 1y agoI 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.
- xigoi 1y agoI recently found out that Teams was taking up over 5 GB on my laptop. The incompetence of Microsoft developers knows no bounds.
- liampulles 1y agoThe 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.
- rossant 1y 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/ https://datoviz.org/
- sgarland 1y agoPlease keep doing what you’re doing; I appreciate the effort and mentality.
- rossant 1y agoThanks!
- scott_w 1y agoYou're always going to be up against "good enough" and inertia. For plenty of applications, a bloated Electron app really is good enough! The library you built looks fucking awesome, by the way. However, I think even you acknowledged on the page that Matplotlib may well be good enough for many use cases. If someone knows an existing tool extremely well, any replacement needs to be a major step change to solve a problem that couldn't be solved in existing, inefficient, tools.
- rossant 1y agoThanks. The use cases for my library are pretty clear: anytime Matplotlib is way too slow or just crashes under the weight of too much data (and 3D).
- sanskarix 1y ago[dead]
- usrbinenv 1y agoIf 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.
- anon-3988 1y agoWhy 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.
- WesolyKubeczek 1y agoEhrm, 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.
- anon-3988 1y agoAnd? I don't need any of that fancy. Does anyone need that fancy stuff? I don't think anyone complained about UIs with apps in Windows XP.
- usrbinenv 1y agoI 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.
- rubymamis 1y agoI 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?
- foofoo12 1y agoBloat 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.
- raincole 1y agoSometimes 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.
- aaaashley 1y agoThe "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 1y agoWe 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.
- vbezhenar 1y agoSometimes 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 1y agoThe 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.
- immibis 1y agoI used to release an Android app 10ish years ago (before I was banned by Google from releasing Android apps) and this was the case back then. Every time I opened Eclipse it would automatically add the 6MB "support library" to my otherwise 50kB app. There was no way to turn this off, but if you removed it, it would stay removed for that session. Usually I only noticed I'd forgotten when I built the final .apk and went to upload it to the App Store.
- deleted 1y ago[deleted]
- eviks 1y 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?
- pjmlp 1y agoSome maybe, however we have moved away beyond it being ok.
- everyone 1y agoI'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 1y agoI'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.
- benrutter 1y agoTangent, 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.
- Retric 1y agoScreens and radios do a lot to limit battery life on most modern devices even if the energy use running the OS and user software was free. If with a reasonable battery standby mode can only last a few weeks and active use is at best a few days then you might as well add a fairly beefy CPU and with a beefy CPU OS optimizations only go so far. This is why eInk devices can end up with such a noticeably longer lifespan, they now have a reason to put in a weak CPU and do some optimization because the possibility of a long lifespan is a huge potential selling point.
- 1vuio0pswjnm7 1y ago"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?" Volunteer-supported UNIX-like OS, e.g., NetBSD, represents the closest to this ideal for me I am able to use an "old" operating system with new hardware. No forced "upgrades" or remotely-installed "updates". I decide when I want to upgrade software. No new software is pre-installed This allows me to observe and enjoy the speed gains from upgrading hardware in a way I cannot with a corporate operating system. The later will usurp new hardware resources in large part for its own commercial purposes. It has business goals that may conflict with the non-commercial interests of the computer owner It would be nice if software did not always grow in size. It happens to even the simplest of programs. Look at the growth of NetBSD's init over time for example Why not shrink programs instead of growing them Programmers who remove code may be the "heros", as McIlroy once suggested ("The hero is the negative coder")
- TacticalCoder 1y ago
- karmakaze 1y agoNo 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%.
- locknitpicker 1y ago> 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. Is this actually a problem, though? The blog features a section on tradeoffs, and dedicates an entire section to engineering tradeoffs. Perceived performance is one of these tradeoffs. You complain about UI not keeping up with key strokes. As a counterexample I point out Visual Studio Code. It's UI is not as snappy as native GUI frameworks, but we have a top notch user experience that's consistent across operating systems and desktop environments. That's a win, isn't it? How many projects can make that claim? The blog post also has a section on how a significant part of the bloat is bad.
- _aavaa_ 1y agoIt is a problem. The engineering tradeoffs have to be done at each level of the stack. And as progressively more layers of the stack make the trade off away from speed the effects compound. Nothing about a cross-platform UI requires that it not be snappy. Or that Electron is the best option possible. Did VSCode do a good job with the options available? Maybe, maybe not. But the options is where I think we should focus. Having to trade off between two bad options means you’ve already lost.
- grayhatter 1y ago
- JohnFen 1y agoBloat is always bad. That said, all of engineering is a tradeoff, and tradeoffs mean accepting some amount of bad in exchange for some amount of good. In these times, though, companies seem to be very willing to accept bloat for marginal or nonexistent returns, and this is one of the reasons why, in my opinion, so much of the software being released these days is poor.
- adamzwasserman 1y agoTFA lists maintainability as a benefit of bloat ("modularity, extensibility, code patterns make it easier to maintain"). Completely ignores how bloat harms maintainability by making code unknowable. Stack enough layers - framework on library on abstraction on dependency - and nobody understands what the system does anymore. Can't hold it in your head. Debugging becomes archaeology through 17 layers of indirection. Features work. Nobody knows why. Nobody dares touch them. TFA touches this when discussing complexity ("people don't understand how the entire system works"). But treats it as a separate issue. It's not. Bloat creates unknowable systems. Unknowable systems are unmaintainable by definition. The "developer time is more valuable than CPU cycles" argument falls apart here. You're not saving time. You're moving the cost. The hours you "saved" pulling in that framework? You pay them back with interest every time someone debugs a problem spanning six layers of abstraction they don't understand
- frisbee6152 1y agoA well-optimized program is often a consequence of a deep understanding of the problem domain, good scoping, and mindfulness. It often feels to me like we’ve gone far down the framework road, and frameworks create leaky abstractions. I think frameworks are often understood as saving time, simplifying, and offloading complexity. But they come with a commitment to align your program to the framework’s abstractions. That is a complicated commitment to make, with deep implications, that is hard to unwind. Many frameworks can be made to solve any problem, which makes things worse. It invites the “when all you’ve got is a hammer, everything looks like a nail” mentality. The quickest route to a solution is no longer the straight path, but to make the appropriate incantations to direct the framework toward that solution, which necessarily becomes more abstract, more complex, and less efficient.
- adamzwasserman 1y agoI completely agree. This is the point I make here: https://hackernoon.com/framework-or-language-get-off-my-lawn-9935e1c72019 https://hackernoon.com/framework-or-language-get-off-my-lawn...
- ElevenLathe 1y ago
- metalman 1y agounfortunately the article is very offensive to anyone living outside of major urban centers, it presumes that along with our daily cake, that unlimited data and means to aquire it are only to be mentioned as trivialitys, if at all. rural devitalization is accelerating, with another article here describing how unreliable electrical power is in Calfornias country side I wont get into the details, but please imagine all the fun to be had attempting to turn off a win11 laptop, with hyper low speed and bandwidth internet, in order to try and save some battery in case the power does not come back on, which is the reality on most of our planets surface.
- jerdman76 1y agoThis article is awesome - I love the meme As a former CS major (30 years ago) that went into IT for my first career, I've wondered about bloat and this article gave me the layman explanation. I am still blown away by the comparison of pointing out that the WEBP image of SuperMario is larger in size than the Super Mario game itself!
- masfuerte 1y agoThe Mario picture is very misleading. It's not lossless. It has way too many colours. An actual lossless screenshot (albeit not as wide) is only 3KB: https://en.wikipedia.org/wiki/File:NES_Super_Mario_Bros.png https://en.wikipedia.org/wiki/File:NES_Super_Mario_Bros.png
- senfiaj 1y agoSorry. My bad. Looks like the size is also very sensitive to the method of compression and software as well (regardless of being PNG or WEBP). I found another PNG picture here https://www.freecodecamp.org/news/where-do-all-the-bytes-come-from-f51586690fd0/ https://www.freecodecamp.org/news/where-do-all-the-bytes-com... it is 64KiB. When you stretch the image, it's also likely to add kilobytes. I guess I need to update the image. But anyways, I think it's still very demonstrative when an entire game size is smaller than its picture. Also consider that even your tiny PNG example (3.37KiB) still cannot fit into the the RAM / VRAM of a NES console which shows the contrast between these eras in regards of amounts of memory.
- masfuerte 1y ago> I found another PNG picture here That image has a similar problem to yours. It has been scaled up using some kind of interpolation which introduces a load of extra colours to smooth the edges. This is not a great fit for PNG, which is why it is 64KB. The article claims that it is only 5.9KB. I guess it was that small originally and it's been mangled by the publishing process.
- 1y ago
- 1313ed01 1y agoOne thing that bothers me about extreme bloat is that I do not want every app to push against the limit of what my computer can handle. It's fine if some game or compiler or such complex software do that every now and then. A common pro-bloat argument is that software should make use of all the hardware instead of leaving it idle, and that makes sense in some contexts. But 99% of the time I would prefer smaller things that I could have lots of and never have to worry about disk or RAM use.
- vrighter 1y agoI hate that argument too. The computer is there to serve ME, not to serve the software it runs. Each application should be using as little of the hardware as possible, to make it possible for ME to make use of all the software.
- _dcez 1y agoBack in the good old days, I used to play Quake 1 multiplayer (QuakeWorld) a lot on Internet servers. You could place an "autoexec.cfg" file in Quake folder, that automatically executed commands after launching the game, including /connect [IP Address] The time needed from the moment you launched the game (clicked on the .exe) to the moment you entered the server (to the map view) with all assets 100% loaded was about 1 second. Literally! You click the icon on your desktop and BAM! you're already on the server and you can start shooting. But that was written by John Carmack in C :-) From other examples - I have a "ModRetro Chromatic" at home which is simply an FPGA version of the Nintendo Game Boy. On this device, you don't see the falling "Nintendo" text with the iconic sound known from normal Game Boys. When I insert a cartridge and flip the Power switch, I'm in the game INSTANTLY. There's simply absolute zero delay here. You turn it on and you're in the game, literally just like with that Quake. For comparison - I also have a Steam Deck, whose boot time is so long that I sometimes finish my business on the toilet before it even starts up. The difference is simply colossal between what I remember from the old days and what we have today. On old Windows 2000, everything seemed lighter than on modern machines. I really miss that.
- seba_dos1 1y agoA system like SteamOS can be made to boot within seconds - but it takes some effort to set it up like that and I don't think anybody there cares enough when most people would just put the Deck to sleep where it wakes up in a single second.
- bitwize 1y agoGame carts also have much faster access times than just about anything else contemporary because they're just ROM. If Linux, OpenGL, Vulkan, etc. were in the ROM of your Steam Deck, and your games were on ROM (not flash) carts, that'd boot up instantly too. Windows 2000 boots up fast on modern hardware. You're looking through rose-colored-ass glasses if you think it booted up that quick on the hardware available at the time of release. Windows NT was a pig in its day, but at least it was a clean pig, free of spyware and other unnecessary crapware (unless you were like a client site I visited, and just let Bonzi Buddy, Comet Cursor, and such run rampant across your sensitive corporate workstations).
- paulddraper 1y ago> Thanks to Microsoft abusing their position with GitHub to perform the legally questionable act of stealing billions of lines of GPL code I think this a strawman? But it's pretty ridiculous if anyone believes this. FOSS code can't be "stolen." The whole point of GPL and free software movement is that software should be free to use and modify.
- OkayPhysicist 1y agoFOSS code can absolutely be stolen, if it's usage is in violation of the contract that it is shared under. In the case of the GPL, that means granting your users the same freedoms you were granted, which last I checked "Open"AI absolutely is not doing.
- GuB-42 1y agoIn the article, many tradeoffs are mentioned. The thing is, many of these tradeoffs are necessary to support the bloat, that is, bloat needs bloat. - Layers & frameworks: We always had some layers and frameworks, the big one being the operating system. The problem is that now, instead of having these layers shared between applications (shared libraries, OS calls, etc...), every app wants to do their own thing and they all ship their own framework. For the calculator example, with the fonts, common controls, rendering code, etc... the global footprint was probably several MBs even in the early days, but the vast majority of it was shared with other applications and the OS shell itself, resulting in only a few extra kB for the calculator. - Security & isolation: That's mostly the job of the OS and even the hardware. But the one reason why we need security so much is that the more bloated your code is, the more room there is for vulnerabilities. We don't need to isolate components that don't exist in the first place. - Robustness & error handling / reporting: The less there is, the less can go wrong, so more robust and less errors to handle. - Globalization & accessibility: That's true that it adds some bloat, however, that's something that the OS should take care of. If everyone uses the same shared GUI toolkit, only it has to deal with these issues. Note that many of these problems were addressed in the Windows 9x era. - Containers & virtualization: Containerization is a solution to dependency hell and non-portable code, you carry your entire environment with you so you don't have to adjust to a new environment. The more dependencies you have, i.e. the most bloat, the more you need it. And going back to security and accessibility, since you are now shipping your environnement, you don't benefit from system-wide updates that address these issues. - Engineering trade-offs: that is computers are cheap, developers are expensive. We are effectively trading time to hand-craft lightweight optimized software to keeping up with the bloat. I get the author's point, but I believe that most of it is self-inflicted. I remember the early days of Android. I had a Nexus One, 512MB RAM / 1GHz single core CPU / 512MB Flash + 4GB MicroSD and it could do most of what I am doing now with a phone that is >10x more powerful in every aspect. And that's with internationalization, process isolation, the JVM, etc... Not only that but Google was much smaller back then, so much for lowering development costs.
- crq-yml 1y agoBloat mostly reflects Conway's law, with the outcome of it being that you're building towards the people you're talking to. If you build towards everyone, you end up with a large standard like Unicode or IEEE 754. You don't need everything those standards have for your own messages or computations, sometimes you find them counter to your goal in fact, and they end up wasting transistors, but they are convenient enough to be useful defaults, convenient enough to store data that is going to be reused for something else later, and therefore they are ubiquitous in modern computing machines. And when you have the specific computation in mind - an application like plotting pixels or ballistic trajectories - you can optimize the heck out of it and use exactly the format and features needed and get tight code and tight hardware. But when you're in the "muddled middle" of trying to model information and maybe it uses some standard stuff but your system is doing something else with it and the business requirements are changing and the standards are changing too and you want it to scale, then you end up with bloat. Trying to be flexible and break up the system into modular bits doesn't really stave this off so much as it creates a Whack-a-Mole of displaced complexity. Trying to use the latest tools and languages and frameworks doesn't solve this either, except where they drag you into a standard that can successfully accommodate the problem. Many languages find their industry adoption case when a "really good library" comes out for it, and that's a kind of informal standardizing. When you have a bloat problem, try to make a gigantic table of possibilities and accept that it's gonna take a while to fill it in. Sometimes along the way you can discover what you don't need and make it smaller, but it's a code/docs maturity thing. You don't know without the experience.
- hulitu 1y ago> Layers & frameworks. Modern software tends to be more complicated. Most of the time people don't write software from scratch, they usually use some library or framework. Some. But when some reaches the value of more than 80 (i did today an ldd in /usr/bin and i puked), something must be really, really wrong (hello KDE).
- cadamsdotcom 1y agoThere’re 2 constraints at work here- any piece of software only needs go as fast people will put up with. The subtler one is that if interactive software goes too fast, people get suspicious. These are human constraints, which means they’ll tend to eat up every tech improvement, dragging things back to just as slow as before. But I think they’re cultural - not innate. Better education can lead the market to demand better.