Not going to defend particular implementations, but requirements? Those have definitely grown more than we give them credit.
that said 2GB is acceptable considering the state of everything
not saying i wouldn't like to have QNX class back
That's the job of the GPU driver, mostly.
> 3D everything
That's the desktop compositor. Windows 7 already had one and ran on 1 GB of RAM.
> accessibility
Not everyone needs it, so it should be an optional installable component for those who do.
> fancy APIs for easier development allowing for more features
That still use win32 under the hood. Again, .net has existed for a very long time. MFC has existed for an even longer time.
> support for large amounts of devices
No one asked for Windows on touchscreen anything. Microsoft decided that themselves and ruined the UX for the remaining 99% of the users that still use a mouse and a keyboard.
> backwards compatibility
That's what Microsoft does historically, nothing new here.
> browsers are almost unrecognizable in featureset to the point they resemble an OS unto themselves
No one asked for this. My personal opinion is that everything app-like about browsers needs to be undone, yesterday, and they should again become the hypertext document viewers they were meant to be. Even JS is too much, but I guess it does have to stay.
The UI has to be designed from the ground up to support accessibility.
Also, disability may not be permanent. I recently underwent major surgery and for at least a few days afterwards using my cell phone was nearly impossible. I resorted voice control a few times because I did not have the coordination or cognitive function to type. (Aside: cell phones in general are accessibility dumpster fires, but it took a major life event to demonstrate to me how bad it really is.)
So no, accessibility is not just a toggle switch or installable library. In fact, I hope future UI design incorporates some kind of non-intrusive learning and adaptability, such that when the system detects the user continually making certain kinds of errors, the UI will adapt to help.
Of course. Navigating around the install process without accessibility already enabled is going to be a non-starter for many.
As for why all the bloat? I speculate it's because accessibility features are a second-class citizen at best, and when it comes to optimizing and streamlining, all the effort in development goes into the most-used features, whether or not they are the most essential.
I think you have to reason this one out. Your statement, to me, doesn’t hold water.
Let’s start with HDR. That requires the content that’s being rendered to have higher bit depth. Not all of this is stored in GPU memory at once, a lot is stored in system RAM and shuffled in and out.
Now take fluid animations. The interpolation of positions isn’t done solely on the GPU. It’s coordinated by the CPU. I don’t think this one necessarily adds ram usage but I think your comment is incorrect.
And lastly with resolutions, the GPU is only responsible for the processing and output. You still need high resolution data going in. This is easily observed by viewing any low resolution image. It will be heavily blurred or pixelated on a high resolution screen. That stands to reason that the OS needs to have high enough resolution assets to accommodate high resolution screens. Now these aren’t all stored on disc necessarily as high resolution graphics but they have to be stored in memory as such.
——
As to the rest of your points, they basically boil down to: I don’t want it so I don’t see why a default install should have it. Other people do want a highly feature full browser that can keep up with the modern web. And given that webviews are a huge part of application rendering today, the browser actively contributes to memory usage.
Could we stop shuffling it out? Do more of the work there, directly?
The more work you do on the GPU, the more you need to shuffle because the more GPU memory you’d use AND the more state you’d need to check back on the CPU side, causing sync stalls. It’s not insurmountable, and macOS puts a lot more of its work on the GPU for example. Windows is a little more conservative in that regard.
Here are some more confounding factors:
- Every app needs one or more buffers to draw into. Especially with hidpi screens this can eat up memory quick. The compositor can juggle these to try and get some efficiency, but it can’t move all the state to the GPU due to latency.
- you also need to deal with swap memory. You’d ultimately need to shuffle date back to the system ram and then to disk and back which is fairly slow. It’s much better theoretically on APUs though.
Theoretically, APUs stand to solve a lot of these issues because they blur the lines of GPU and CPU memory.
It’s largely applicable mainly to games where resource access is known ahead of time.
HDR can still fit in 32bit pixels. At 4k X 2k we have 8 megapixels or 32MB frame buffer. With triple buffering that's still under 100MB. Video games have been doing all sorts of animation for decades. It's not a lot of code and a modern CPU can actually composite a desktop in software pretty well. We use the GPU for speed, but that doesn't have to mean more memory.
The difference between 2000 and 2023 is the quantity of data to move and like I said, that about 100MB
You didn't ask. It is, as you say, your personal opinion.
From my POV, current Web is fine and the fact that browsers are powerful liberated us from writing specialized desktop apps for various OSes. I am much happier writing a Web UI than hacking together Win32 or Qt-based apps. Or, God forbid, AVKON Symbian OS UI. That was its own circle of hell.
I use macOS and I very much dislike anything built with cross-platform GUI toolkits, and especially the web stack. And it's always painfully obvious when something is not native. It doesn't behave like the rest of the system. It's not mac-like. It draws its own buttons from scratch and does its own event handling on them instead of using NSButton. I don't want that kind of "liberation". I want proper, native, consistent apps. Most other people probably do too, they just don't realize that or can't put it into words.
The only counter-example out there known to me is IntelliJ-based IDEs. They're built with Swing, but they do somehow feel native enough.
Also, developer experience is not a something users care about. And I'm saying that as a developer myself. Do use fancy tools to make your job easier, sure, but avoid those of them that stay inside your product when you ship it.
macOS (and iOS) have incredibly good screen reader support, as well as all of the things you're complaining about in your original comment at the top of this thread. Clearly those things are absolutely gobbling memory, and yet you don't seem to connect the dots that they're directly contributing to high memory requirements of macOS?
I mean, 8GB on stock machines today is barely manageable. You can't buy a Mac with less than 8GB today; you can't even buy a phone with 2GB or less. I'm not sure you're in an position to rail against high-memory bloat in computing today.
p.s. I say this as someone who uses macOS as their daily driver and has for a very long time
Running several instances of Chromium though... You'll probably run one anyway at all times as your actual web browser, but additional ones in the form of "oh so easy to build" Electron apps don't help. In Apple's eyes, though, you should absolutely ignore other browsers and use Safari exclusively. It might not be as much of a memory hog as Chrome — I haven't researched this, this is simply my guesses.
I also heard that M1 Macs are better at memory management compared to Intel. Again, I don't have any concrete evidence to back this up, but knowing Apple, it's believable.
Nobody is a hypocrite for buying X gigabytes of ram but also wanting the naked operating system to use a much smaller amount, or wanting single programs to use a much smaller amount.
> macOS (and iOS) have incredibly good screen reader support, as well as all of the things you're complaining about in your original comment at the top of this thread. Clearly those things are absolutely gobbling memory, and yet you don't seem to connect the dots that they're directly contributing to high memory requirements of macOS?
What makes a screen reader gobble memory?
And it definitely shouldn't gobble memory when it's not running.
Users might not care about developer experience, but everything is a trade off: developer time is a cost, the cost of producing software is an input into how much it needs to cost. Users seem to want features delivered quickly, without much regard to implementation quality.
But I understand, that most of my complains are complains of power user with 25+ years of experience and muscle memory, and I'm not target auditory for almost any new app. You win :-(
a) nice looking, but less capable apps,
b) more expensive apps, or, apps that have to be paid even if they could be free in an alternate universe,
c) limited availability - app X only exists for Windows and not Mac, because either a Mac programmer isn't available or would be too expensive.
Developing for multiple UIs at once is both prone to errors and more expensive, you wind up paying for extra developers, extra testers/QA, extra hardware and possibly extra IDEs and various fees. Such extra cost may be negligible for Google, but is absolutely a factor for small software houses outside the richest countries, much more so for "one person shows" and various underfunded OSS projects.
I remember the hell that was Nokia Series 60 and 90 programming. Nokia churned out a deluge of devices that theoretically shared the same OS, but they had so many device-specific quirks and oddities on the UI level that you spent most of the time fighting with (bad) emulators of devices you could not afford to buy. This is the other extreme and I am happy that it seems to be gone forever.
OSS projects are completely different story, of course, no questions to OSS developers.
I prefer to pay $200 for native application than $100 for Electron one.
Oh, whom do I try to fool? Of course, it will be Electron app with $9.95/month subscription now :-(
As I said in my previous comment, this is quite expensive, and people inside Silicon Valley rarely understand how cash-strapped the software sector in the rest of the world is. In Czech, we have a saying "a person who is fed won't believe a hungry one" and SV veterans that are used to reams of VC cash supporting even lossy businesses like Uber have no idea that the excess spending needed to hire another developer for several months somewhere in Warsaw or Bucharest may kill a fledgling or small company.
In this, the unity of the Web is a life-saver.
But, again, I'm prefer to make one thing good than two things good enough.
I understand that bigger stuff and better graphics involve more RAM and the switch to 64 bit doubled the pointer sizes (which is why you can't meaningfully run Windows 7 x64 on 1GB of RAM like you can the 32 bit version) but with 4GB of system RAM you should be able to fit everything in and then some.
You actually can, as various Linux distributions demonstrate. The algorithms and APIs aren't as well developed, but better window control/accessibility APIs don't take up more than a megabyte of RAM.
People do ask for many Microsoft features, such as the appification of the interface and the Microsoft store. Just because you didn't ask for it, doesn't mean it's not necessary. However, Microsoft has known for years how to build and implement those requests in a much more compact environment.
My take is still the same old cynical one: as resources become cheaper, developers become lazier. I don't want to go back to the days of racing the beam with carefully planned instructions but the moment Electron gained any popularity the ecosystem went too far. "Yes but our customers want features more than a small footprint" is the common excuses I hear, but that's ignoring all the people calling various support channels or just being miserable with their terribly slow machine.
At most places I've worked it's a struggle to get time allocated towards necessary refactoring that'll ensure new features can be delivered in a timely fashion.
I'd love to spend time making the product more efficient but unless I can demonstrate immediate and tangible business value in doing so, it's never going to be approved over working on new features.
Compiz ran fine with a 128MB GPU and 512MB of RAM.
Now that I think about it, Mac OSX was doing GPU compositing back in 2000/2001 and those machine usually only had about 16MB of VRAM. I remember it running fairly well on a 2005 MacMini G4 with 32MB of VRAM.
I have several devices, including a couple Linux PC's, an M1 macbook air, and a Microsoft Surface Go. If Windows 11 didn't support touchscreens, I would have gone with an iPad. However, Windows 11 is the _best_ touchscreen OS to-date.
Unlike iOS or iPadOS, Windows 11 runs desktop apps and combines the convenience of touchscreen scrolling/interaction with the desktop experience. Windows 11 does this very, very well.
I don't use Windows anymore but I remember thinking "this is exactly what I've always wanted from a convertible/touch-support-in-desktop OS"...
But this of course is in the metrics of how you measure. Windows 3.1 for example was a huge crashing piece of crap that was locking up all the damned time. MacOS at the time wasn't that much better. Now I can leave windows up for a month at a time between security reboots. Specialized Windows and Linux machines in server environments on a reduced patching schedule will stay up far longer, but generally security updates are what limits the uptime.
I remember running Windows applications and receiving buffer overflow errors back then. If you got a buffer overflow message today you'd think that either your hardware is going bad or someone wrote a terrible security flaw into your application. And back there were security flaws everywhere. 'Smashing the stack for fun and profit' wasn't wrote till '95, well after consumers had started getting on the internet in mass. And if you were using applications like Word or Excel you could expect to measure 'crashes' per week rather than the crashes per month, many of which are completely recoverable in applications like office.
This needs application support, by this broad definition all operating systems "saves state and comes back right where you started on a security update reboot".
> No one asked for this. My personal opinion is that everything app-like about browsers needs to be undone, yesterday, and they should again become the hypertext document viewers they were meant to be. Even JS is too much, but I guess it does have to stay.
People did ask for this, because it made them a lot of money.
You should recognize your opinion is a minority one outside of tech (and possibly, there too).
To wit, virtually no one is jumping to Gopher or Gemini.
What people want is a way to run amazon.com (and gmail and slack and so on), on any of their devices, securely, and without the fuss of installing anything.
Ideally the first-time use of amazon.com should involve nothing more than typing "amazon" and hitting enter. It should to show content almost instantly.
Satisfying that user need doesn't require a web browser. If OS vendors provided a way to do that today, we'd be using it. But they don't.
OS vendors still don't understand that. They assume people forever want to install software via a package manager. They assume software developers care about their platform's special features enough to bother learning Kotlin / Swift / GTK / C# / whatever. And they assume all software users run should be trusted with all of my local files.
Why is docker popular? Because it lets you type the name of some software. The software is downloaded from the internet. The software runs on linux/mac/windows. And it runs in a sandbox. Just like the web.
The web - for all its flaws - is still the only platform which delivers that experience to end users.
I'd throw out javascript and the DOM and all that rubbish in a heartbeat if we had any better option.
Guess what, both GMail and Slack have video calls. They use WebRTC. The browser has to support it. So the WebRTC code is a part of it.
> Ideally the first-time use of amazon.com should involve nothing more than typing "amazon" and hitting enter. It should to show content almost instantly.
And it does. Open an incognito tab, type amazon.com, it's pretty crazy how fast it loads, with all the images.
Yes; that's my point. That's the bar native apps need to reach to be competitive with the web.
Java tried exactly this, and it never took off in the desktop OS world. It wasn't significantly slimmer than browsers either, so it wouldn't have addressed any of your concerns.
Also, hyperlinking deep into and out of apps is still something that would be very very hard to achieve if the apps weren't web native - especially given the need to share data along with the links, but in a way that doesn't break security. I would predict that if you tried to recreate a platform with similar capabilities, you would end up reinventing 90% of web tech (though hopefully with a saner GUI model than the awfulness of HTML+CSS+JS).
I'm not proposing that. I didn't propose any solution to this in my comment. For what its worth, I agree with you - another java swing style approach would be a terrible idea. And I have an irrational hate for docker.
If I were in solution mode, what I think we need is all the browser features to be added to desktop operating systems. And those features being:
- Cross platform apps of some kind
- The app should be able to run "directly" from the internet in a lightweight way like web pages do. I shouldn't need to install apps to run them.
- Fierce browser tab style sandboxing.
If the goal was to compete with the browser, apps would need to use mostly platform-native controls like browsers do. WASM would be my tool of choice at this point, since then people can make apps in any language.
Unfortunately, executing this well would probably cost 7-10 figures. And it'd probably need buy in from Apple, Google, Microsoft and maybe GTK and KDE people. (Since we'd want linux, macos, ios, android and windows versions of the UI libraries). Ideally this would all get embedded in the respective operating systems so users don't have to install anything special, otherwise the core appeal would be gone.
Who knows if it'll ever happen, or if we'll just be stuck with the web forever. But a man can dream.
You'll then have to convince Microsoft, Apple, Google, IBM RedHat, Canonical, the Debian project, and a few others, to actually package this VM with their OSs, so that users don't have to manually choose to install it.
Then, you need to come up with some system of integrating this with, at a minimum, password managers, SAML and OAuth2, or you'll have something far less usable and secure than an equivalent web app. You'll probably have to integrate it with many more web technologies in fact, as people will eventually want to be able to show some web pages or web-formatted emails inside their apps.
So, my prediction is that any such effort will end-up reimplementing the browser, with little to no advantages when all is said and done.
Personally, I hate developing any web-like app. The GUI stack in particular is atrocious, with virtually no usable built-in controls, leading to a proliferation of toolkits and frameworks that do half the job and can't talk to each other. I'm hopeful that WASM will eventually allow more mature GUI frameworks to be used in web apps in a cross-platform manner, and we can forget about using a document markup language for designing application UIs. But otherwise, I think the web model is here to stay, and has in fact proven to be the most successful app ecosystem ever tried, by far (especially when counting the numerous iOS and Android apps that are entirely web views).
I think this is the easy part. Everyone is already on board with webassembly. The hard part would be coming up with a common api which paves over all the platform idiosyncrasies in a way that feels good and native everywhere, and that developers actually want to use.
I trust you are aware Microsoft did exactly that, and the entire tech world exploded in annger, and the US Government took Microsoft to court to make them undo it on the grounds that integrating browser technology into the OS was a monopolistic activity[0].
[0]https://en.m.wikipedia.org/wiki/United_States_v._Microsoft_C....
We could have lived in an alternative universe where we succeeded to teach people the basics of how to use the computer as a powerful tool for themselves.
Instead, corporations rushed to make most of the things super easy to make billions on the way.
I’d even say that this wasn’t really a problem until they realized that closed computers allowed them more control and more money.
So yeah, now we are stuck with web apps on closed systems and most people are happy with it, that’s true.
And, as the time passes, we are loosing the universal access to "the computer". Instead of a great tool for enabling power to the people, it’s being transformed to a prison to control what the people can do, see and even think.
ps : When I say "computer" I include PC, phones, tablets, voice assistants … everything with a processor running arbitrary programs.
I agree that JS is not a gold standard. Still it works most of the time and with typescript stapled on top it is acceptable.
Time has proven again and again (not only in tech) that the simple solutions will prevail. Want to change it? Build a simpler and better solution. I don't like that too but that's human nature at work.
Maybe, instead of shutting those opinions down, you should reflect on how you, in whatever capacity you serve our awful tech overlords, can work to make these voices more heard and included in software/feature design
There is a small resurgence of the gopher protocol that I believe is rooted in this sentiment.
Windows didn't really see a lot of actual progress in this area since the Win2k days. Lots of activity and churn yes, but little actual progress.
Accessibility has actually gone down with the switch to web applications. Microsoft had an excellent accessibility framework with subpar but usable tooling built in, and excellent commercial applications to make use of the existing API, all the way back in Windows XP. Backwards compatibility hacks such as loading old memory manager behaviour and allocating extra buffer space for known buggy applications may take more RAM but don't increase any requirements.
Inagree that requirements have grown but not by the amount reflected in standby CPU and memory use. Don't forget that we've also gained near universal SSD availability, negating the need for RAM caches in many circumstances. And that's just ignoring the advance in CPU and GPU performance since the Windows XP days, when DOS was finally killed off and the amount of necessary custom tailored assembly drastically dropped.
When I boot a Windows XP machine, the only thing I can say I'm really missing as a user is application support. Alright, the Windows XP kernel was incredibly insecure, so let's upgrade to Windows 7 where the painful Vista driver days are behind us and the kernel has been reshaped to put a huge amount of vulnerable code in userspace. What am I missing now? Touchscreen and pen support works, 4k resolutions and higher are supported perfectly fine, almost all modern games still run.
The Steam hardware survey says it all. The largest target audience using their computer components the most runs one or two 1080p monitors, has 6 CPU cores and about 8GB of RAM. Your average consumer doesn't need or use all of that. HiDPI and HDR are a niche and designing your OS around a niche is stupid.
SSDs won't replace RAM but many RAM caches aren't performance critical; sometimes you need your code to be reasonably fast on a laptop with a 5400 rpm hard drive and then you have very little choice of data structures. With the random access patterns SSDs allow this complication quickly disappears. You won't find many Android apps that will cache 8MB block reads to compensate for a spinning hard drive, for example.
and to be honest, nowadays the biggest issue is the web browser and the sheer amount of memory and processing that modern websites use.
it's unbelievable.
Browsers are still going to be the sticking point, but with agressive adblockers/noscript and hardware that's not terribly old (NVMe storage is priority 1), and you should be set.
But of course, snappiness isn't free and you have to spend some time doing first time set-ups and maintenance.
The problem is the web browser.
I’ve got 16 gb of ram and the browser is using most of them. I can literally see the swap space emptying when i have (as in “im forced to”) sacrifice my browsing session (xkill the browser) due to constant swap out to disk.
And I’m using a pci gen 3 nvme disk, and already lowered swappiness.
The problem is the web browser.
If even there you have no success, I'd suggest you try something like EndeavorOS. Browsers have issues but that is not normal. You're not using Debian stable on the desktop, right?
At this point, my primary use case for ad blocking isn't the ad blocking itself, it is 1. the security of blocking ads, one of the worst vectors for attacks in the while and 2. the greatly reduced system resources my browser uses. The ad blocking itself is a further bonus.
May I remind of https://www.enlightenment.org/
20 years ago, there were "live cds" that could do most of what you mention, at maybe 512 MB ram.
It definitely was pretty for the day, though.
It was also rendering Display PostScript on a 25Mhz '040. One of the first machines in its day that allowed you to drag full windows, rather than frames on the desktop. High tech in action!
I mean we have larger resolution support amd scaling for hidpi, better/faster indexation, better touchpad support. Can you name anything else? Localization hasn't progressed that much, I remember already being able to select some barely spoken dialects on linux 20y ago?
Soo the feature windows 7 had? I remember running 3D desktop with compositor and fancy effects on 1GB RAM laptop on Linux...
RAM requirements for Windows as OS are ridiculus.
I know that it installs various libraries. I do not know why those libraries are dozens of megabytes each.
I agree and I find the apologists to be completely wrong. I run a modern system: 38" screen, 2 Gbit/s fiber to the home. I'm not "stuck in the past" with a 17" screen or something.
The thing flies. It's screaming fast as it should be.
But I run a lean Debian Linux system, with a minimal window manager. It's definitely less bloated than Ubuntu and compared to Windows, well: there's no comparison possible.
Every single keystroke has an effect instantly. After reading the article about keyboard latency, I found out my keyboard was one of the lower latency one (HHKB) and yet I finetuned the Linux kernel for USB 2.0 polling of keyboard inputs to be even faster. ATM I cannot run a real-time kernel because NVidia refuses to modify a non-stock kernel (well that's what the driver says at least) but even without that: everything feels and actually is insanely fast.
I've got a dozen virtual workspace / virtual desktops and there are shortcuts assigned to each of them. I can fill every virtual virtual desktop with apps and windows and then switch like a madman on my keyboard between each of them: the system doesn't break a sweat.
I can display all the pictures on my NVME SSD in full screen and leave my finger on the arrow key and they'll move so quickly I can't follow.
Computers became very fast and monitor size / file sizes for a regular usage simply didn't grow anywhere near close as quickly as CPU performances.
Windows is a pig.
It doesn't look the same for everyone, of course. It's not about some universalizable value like minimalism. But this is a great example of one of the dimensions in which a Linux desktop can just feel really great in an almost physical way.
- most motherboards reduce the DDR clock when using > 2 sticks.
- higher capacity RAM sticks use more “ranks” (AKA “banks”), which increases latency.
as of 2 years ago, 2x single rank DDR would limit you to 64GB. but 2 years is a long time in computerland: 64GB single rank sticks sound plausible.
It's not particularly interesting or pretty, but it works well and does most if not everything that you might need, so is my choice for a daily driver. Here's the debian Wiki page on it: https://wiki.debian.org/Xfce
Apart from that, some folks also like Cinnamon, MATE, GNOME or even KDE. I think the best option is to play around in Live CDs with them and see which feel the best for your individual needs and taste. Do note that Ubuntu as a base distro might give you fewer hassles in regards to proprietary drivers, if you don't care about using only free software much.
I was already leaning towards XFCE so i will give that a try.
Also i did some reading on the proprietary drivers (nvidia, etc.) I'm going to install dual boot Debian/XFCE and Pop!_OS for the gaming.
I still can't believe that Windows has turned into such a bloatware/mess that i'm actually at a point i can't live with it anymore...
That is quite unfortunate, especially because there is some software that I think Windows does better - like MobaXTerm or 7-Zip (with its GUI), FancyZones (for window snapping) and most of the GPU control panels.
That said, as that article of mine shows, Linux on the desktop is actually way better than it used to be years ago and gaming is definitely viable, even if not all of the titles are supported. Sadly, I don't think that'll happen anytime soon, but it's still better than nothing!
I'll still probably go the dual boot route with Windows and Linux, or maybe will have a VM with GPU passthrough for specific games on Linux, although I haven't gotten it working just right, ever. Oh well, here's to a brighter future!
FreeBSD can be comfortably used on systems with 64 MiB of RAM for solving simple tasks like a small proxy server. It has always been good at this — back in the day cheap VPS often used it (and not Linux) precisely because of its small memory requirements.
There are smaller window managers but I choose this one as an example as it gives a similar experience to the windows xp of olds.
I have done the experience on slimming as much as possible a desktop. But once you start a web browser with more than 3 tabs memory usage goes through the roof. In the end if you want to run an old system with 512mb of ram you are kind of forced to use the web sans javascript and images. You are almost better off using links or w3m and tui apps for everything. Netsurf can work too if you are limiting the number of tabs open.
One a 1GB system you can definitely use a modern web browser but you definitely need the ad/trackers removal extensions and have to take good care of not opening more than 2-3 tabs or you will start swapping a lot.
I've taught high performance data structures to dev teams. I've tried to explain how a complex problem can sometimes be solved with a simple algorithm. I've spent decades on attempting to show coworkers that applying a little comp-sci can have a profound effect in the end.
But no. Unfortunately, it always fails. The mindset is always "making it work" and problem solving is brute-forcing the problem until it works.
It takes a special kind of mindset to keep systems efficient. It is like painting a picture, but most seem to prefer doing it with a paint roller.
I'm all for dedicating time and effort towards producing performant code, but it does come at a cost - in some cases, a cost of maintainability (for an extreme example there's always https://users.cs.utah.edu/~elb/folklore/mel.html). In fact I'd suggest in general if you design a library of functions where obviousness/clarity/ease-of-use are your primary criteria, performance is likely to suffer. And there are undoubtedly cases where the cost of higher-grade hardware (in terms of speed and storage capacity) is vastly lower than that of more efficient software. I'd also say performance tuning quite often involves significant trade-offs that lead to much higher memory usage - caching may well be the only way to achieve significant gains at certain scales, but then as you scale up even further, the memory requirements of the caching start to become an issue in themselves. If there were a simple solution it would have been found by now.
Let's say I build a sorting algorithm that is O(N^2) complexity and works fine for small inputs (takes <1 millisecond), but it is going to be used for large data systems. Suddenly it takes hundreds of thousands of hours to sort the data.
One of the corps I worked with went full scalability in their architecture. One-click deployments, dynamic scaling of servers, rebalancing of databases, automatic provisioning of storage. They were handling 40-50k requests pr. second with their 15-ish large server farm, which could sale down to 5 servers, or up to 50-ish before it began to wobble.
I got called in because the company had gotten a large client that needed 100k requests pr. second. They tried scaling the system to fit the need, but the whole thing got unstable and their solution was "more operations people to manage it".
I built a custom solution for the backend. Took about two months. The new system could do about 2100k requests pr. second on one server. Scalability of the new system was ~90% efficient as well, so lots of capacity for the future.
None of their developers understood computers or the science behind them. They were all educated and experienced developers, but none of that were applied to the problem. They were just assembling parts from the hardware store until something worked, and the resulting Frankenstein's Monster was put into production.
No, I'm talking about handling requests. In this particular case, requests (32 to 64 bytes) were flowing through several services (on the same computer). I replaced the processing chain with a single application to remove the overhead of serialization between processes. Requests were filtered early in the pipeline, which made a ~55% reduction in the work needed.
Requests were then batched into succinct data structures and processed via SIMD. Output used to be JSON, but I instead wrote a custom memory allocator and just memcpy the entire blob on to the wire.
Before: No pre-filtering, off-the-shelf databases (PSQL), queue system for I/O, named pipes and TCP/IP for local data transfer. Lots of concurrency issues, thread starvation and I/O bound work.
After: Agnessive pre-filtering, succinct data structures for cache coherence, no serialization overhead, SIMD processing. Can saturate a 32 core CPU with almost no overhead.
[1] https://www.techempower.com/benchmarks/#section=data-r13&hw=...
How about all those sandboxes, protections and mitigations?
Nowadays people care about security waaay more than people did 20-30 years ago.
But this isn't just Windows, currently I am on Kubuntu 22.04 and it is using about 1.5GB to get to the Desktop! Yes it is very smooth and flash but it seems like a bit much to do this.
This is why I am interesting in projects like Haiku and Serenity OS, they may bring some sanity back into these things.
I guess that with careful selection of GUI components one can fit empty desktop to 60 MB.
Until you start browser anyway.
But good to know that we can still 'Hyper-mile' our OS.
https://en.m.wikipedia.org/wiki/GEOS_(8-bit_operating_system...
Obviously there were huge limitations but it shows what can be done. This fit on one 170K floppy and ran on a 1.44mhz 8 bit machine with 64K of RAM.
In the 1990s I ran both Linux and Windows on less than 64M of RAM with IDEs, web browsers, games, and more.
If I had to guess what were possible today I’d fall back on the fairly reliable 80/20 rule and posit that 20% of todays bloat is intrinsic to increases in capability and 80% is incidental complexity and waste.
Yet, I could do
* word processing
* desktop publishing
* working with scanned documents
* spreadsheets
* graphics
* digital painting
* music production
* gaming (even chess)
* programming (besides BASIC and ASM I had a Pascal compiler)
* CAD and 3D design (Giga CAD [1], fascinated me to no end)
* Video creation [2]
For all this tasks there were standalone applications [3] with their own GUI [4]. GEOS was an integrated GUI environment with its own applications and way ahead of its times [5].
It still blows my mind how all this could work.
My first Linux ran on a 386DX with 4M of RAM, but this probably as low as on can get. Even the installer choked on that little RAM and one had to create a swap partition and swapon manually after booting but before the installer ran. In text mode it was pretty usable though, X11 worked and I remember having GNU chess runnning, but it was quite slow.
[1] https://youtu.be/ZEf9XMrc5u8
[2] OK, this one is a bit of a stretch but there actually was Videofox for creating video titles and shopping window animations: https://www.pagetable.com/docs/scanntronik_manuals/videofox....
[3] Some came on extension modules which saved RAM or brought a bit of extra RAM, but we are still talking kilobytes. For examples see https://www.pagetable.com/?p=1730
[4] Or sort of TUI if you like; the strict separation of text and graphics mode wasn't a thing in the home computer era.
[5] The standalone apps were still better. So, as advanced GEOS was, I believe it was not used productively much.
But if you had to use that software now, you'd say (justly) that it's extremely basic and limited, and that interoperability with other systems is not great.
What can be done ≠ what's comfortable to use.
For me it's more about the excitement that the bright future lay ahead of us so clearly mixed with a slight disappointment that I sometimes feel we could have made more out of it.
Zawinski’s Law - every program on windows attempts to expand until it can be your default PDF viewer. [cloud file sync, advertising display board, telemetry hoover, App Store…]
When we see egregious examples like Windows, then it's arguable having constraints might be desirable. It is well-known that "limitation breeds creativity". It's certainly true outside of "tech" companies. I have witnessed it first hand. "Tech" companies are some sort of weird fantasy world where stupidity disguised as cleverness is allowed to run rampant. No more likely place for this to happen than at companies that have too much money.
edit: This remind me a some rants from Casey Muratori about VS[0] and windows terminal[1]
Linux with a lightweight GUI for example can still run okay with just 128MB. I ran Debian with LXDE on an old IBM T22, and it worked perfectly well. Running Firefox was a problem (but did eventually work), but something more stripped down like NetSurf or Dillo is blazingly fast.
[1] https://www.seamonkey-project.org/
[2] https://noscript.net/getit/ [scroll down to bottom, note there is no support]
https://github.com/gorhill/uBlock-for-firefox-legacy
Also, there's a forked dillo called dillo-ng
https://github.com/w00fpack/dilloNG
with mpv support on context menu that works fine with these sites:
https://simple-web.org/projects/simplytranslate.html
https://simple-web.org/ (several services without js). On the Invidious video links, simply right click the link and choose open with mpv".
Also, on Gopher (lynx it's good for this) gopher://magical.fish has a huge service list usable on text mode.
Software efficiency is a serious equity and environmental issue, and I wish more people would see it that way.
Nobody has any actual clue what they're doing, everyone keeps writing code for the compiler hoping for the best and the rest of the world has to buy new machines because the programmers of the last decades sucked.
That, btw, includes most of you people reading this. You're fucking welcome.
Companies will invest in what pays the bills. And hyper optimising for customers with no money isn’t it.
A top-of-the-line laptop CPU from 20 years ago likely just doesn't support addressing more than 4GB or RAM. Forcing it to work on modern resource-heavy Web pages and media is like forcing a GPU from 20 years a go to run Skyrim. It's just not adequate.
• Read the news
• Post on social media
• Make video calls
• Use instant messaging
• Create and edit word documents/presentations/spreadsheets
Today I use my computer for all of those same things... and yet they all require drastically more memory (and CPU, GPU, etc). What happened, and how does this benefit consumers? Yeah, modern web pages are resource-heavy—but to what end†?
In some cases, the requirements really did change. For example, I can now watch videos in 4K; my 2008 computer could handle 1080p, but I imagine it wouldn't have handled 4K as well. However, I suspect many users of old machines would be perfectly happy to drop down to a lower resolution.
---
† Something I find amusing in all this... people often say they're glad Flash applets died because they were slow. Nowadays, instead of Flash, we use browser apps written in Javascript. I wonder how "slow" those apps would run if you threw them on a computer from the Flash era. (This isn't to discount other problems with Flash, although I do think it has a worse reputation than it deserves.)
I think that Apple just recently stopped to sell 4 GB computers. And their phones from the last year sells with 4 GB RAM while being perfectly able to do all the things you've mentioned as well.
I used to have a 2016 dual core macbook pro with integrated graphics and 8gb of RAM or something. The machine was great when I got it, but 18 months ago it was limping along and I finally decided to get rid of it.
And it wasn't any 3rd party apps that killed the machine. Every time the machine started up, iphotoanalysisd or some random spotlight service or something would be eating all my CPU. It was always a 1st party Apple app which was making it slow. And the graphics felt laggy. Just moving windows around felt bad a lot of the time, even when I didn't have anything open. Xcode would sometimes lag the machine so much that it would drop keystrokes while I was typing. I had RAM to spare - it was a CPU problem.
In the process of wiping the machine, I booted into Recovery mode and it booted the 2016 recovery image of macos. Holy smokes - the graphics were all wicked fast again! I spent a couple minutes just moving windows around the screen in recovery mode marvelling at how fast it felt.
I wonder if reverting to an old version of macos would have fixed my problems. As far as I can tell, this was all Apple's fault. They piled up macos with so much crap that their own computers couldn't cope with the weight. I also wonder if they broke the intel graphics drivers in some point release somewhere along the way, or they started relying on GPU features that Intel's driver only had software emulation for.
Modern macos still has all that crap - the efficiency cores in my M1 laptop are constantly spinning up for some ridiculous Apple service or something. But at least now that still leaves me with 8 P-cores for my actual work. Its ridiculous.
I bet linux would have worked great on that old laptop. I wish I tried it before turfing the machine.
Compare the memory usage of:
• 2008-era Skype and iChat vs Slack, Teams, and Discord.
• 2008-era web pages (including with Flash embeds) vs modern web pages.
• Microsoft Office 2007 vs current Microsoft 365.
And it's not only or even primarily memory, but also CPU requirements and so on.
That has never been a reasonable expectation in the history of computing.
> That has never been a reasonable expectation in the history of computing.
Yes, but again, why? As I see it, everyone has been conditioned to this lie that computers naturally slow down over time, because that's the way it has always been relative to the speed of current software. Originally, that was for a good reason—I'm glad programs now use full-color GUIs. But now?
What would actually happen if Moore's law ended tomorrow, and we were no longer able to make computers faster than they are today? I suspect that a (slim) majority of computer users would actually benefit. Not hardcore gamers, not scientists, and certainly not software developers--some people really do need as much performance as they can get. But for the people who just need to message friends, write documents, check email, etc., the experience would be unchanged—except that their current computers would never slow down!
Years ago while I was at a startup, I accidentally left my laptop at work on a Friday. I wanted to write some code over the weekend. Well, I had a raspberry pi kicking around, so I fired up nodejs on that and took our project for a spin. But the program took ages to start up. I hadn't noticed the ~200ms startup time on my "real" computer, but on a r.pi that translated to over 1 second of startup time! So annoying! I ended up spending a whole morning profiling and debugging to figure out why it was so slow. Turns out we were pulling in some huge libraries and only using a fraction of the code inside. Trimming that down made the startup time ~5x faster. When I got into the office on monday, I pulled in my changes and felt the speed immediately. But I never would have fixed that if I hadn't spent that weekend developing on the raspberry pi.
Since then I've been wondering there's a way to do this systematically. Have "slow CPU tuesdays" or something, where everyone in the office turns off most of our CPU cores out of solidarity with our users. But I'm not holding my breath.
Recently it's become less possible to run the same software for 10+ years because so many things are subscription only and have unnecessary networking, which makes it necessary to patch security flaws, and then you have to accept whatever downgrade the vendor forces on you.
Older applications that you used to be able to just install run just as well as they did the day they came out on the hardware available at the time. The idea that computers "get worse" is entirely a phenomenon of the industry being full of incompetence. Even (or perhaps especially) programmers at FAANG companies are just not very good at their jobs.
Check out the argument Casey Muratori got into with the Microsoft terminal maintainers about how slow the thing was. He got the standard claims about how "oh it's so complex and Unicode is difficult and he's underestimating how hard it is", so he wrote a renderer in a few hours that was orders of magnitude faster, used way less memory, and had better Unicode support.
File system fragmentation was a very significant problem when most people still used HDDs as their primary mass storage media. SSDs are far less affected by fragmentation because of much faster random access times, but HDDs and thus performance suffered.
The Windows Registry is an arcane secret not even Microsoft fully comprehends at this point, and it can get very messy if a user installs and uninstalls lots of programs frequently. This is, of course, a problem with uninstallers not uninstalling cleanly and not a problem with Windows or the users. With so much crap moving to Chrome online-software-as-a-service outfits, users aren't (un)installing as many programs as frequently anymore, but an unkempt Windows installation can definitely slow down over time.
Software in general also just gets more and more bloated as the moons pass. More bloated software means less efficient use of hardware, meaning less performance and more user grief over time.
These was (is? - Not sure) a version of Firefox for PowerPC MaxOSX - TenFour Browser - that brought forward modern features/support of Firefox to Macs that were long past their prime. They mentioned that their favorite story in time of development was "One of my favourite reports was from a missionary in Myanmar using a beat-up G4 mini over a dialup modem; I hope he is safe during the present unrest. "
http://tenfourfox.blogspot.com/2020/04/the-end-of-tenfourfox...
This is what can happen when things are optimized for the people, not the business. This is part of why I still use a Core 2 Duo as my daily runner, if it ain't broke don't fix it.
But isn't the primary application for these machines going to be the web browser, which is pulling in so much JS insanity that the web sites won't render well anyway?
Windows 10 (and I assume 11) has an option to "refresh" Windows in Settings.
But it doesn't really have enough RAM to run a modern web browser. A few tabs and we are swapping. That's unusably slow. A processor that's 5 or 20x slower is tolerable often. Working set not fitting in RAM is thrashing with a 1000x slowdown. And so this otherwise perfectly useful computer is garbage. Not enough RAM ends a machine's useful life before anything else does these days, in my experience.
Atom n270 netbook, go figure.
Also, run this to get a system wide adblocker:
git clone https://github.com/stevenblack/hosts
cd hosts
sed -n '/Start Steven/,$p' < hosts > hosts.append
sudo cat hosts.append >> /etc/hosts
EDIT: wrong URLOf course it can't run all today's bloated software, but we're talking about the operating system, here, not the applications.
https://aiimpacts.org/trends-in-dram-price-per-gigabyte/
DRAM density and cost isn't improving like it used to.
Also memory efficiency is about more than just total DRAM usage; bus speeds haven't kept pace with CPU speeds for a long time now. The more of the program we keep close to the CPU -- in cache -- the happier we are.
making 10% of users unreachable in order to more easily reach the other 90%. yeah, it’s a fine business strategy. though i do wish devs would be more amenable to the 10% of users who end up doing “weird” things with their app as a result. a stupid number of chat companies will release some Electron app that’s literally unusable on old hardware, and then freak out when people write 3rd party clients for it because it’s the only real option you left them.
in my previous job rather than give people root access to their laptops we had to do things like running a docker image that ran 7zip and we piped the I/O to/from it, and I'm not kidding we all did this and it was only bearable thanks to bash aliases and the fact that we had 16GBs of RAM