by mike_hearn | 2025-04-21 20:28:10+00:00
Good thoughts and the desktop is overdue for some disruption. Here's a bit of feedback, meant in the spirit of helping out with a shared goal. This post is going to sound super negative, but please don't be discouraged: I really want people to find new desktop paradigms that work!

A lot of these ideas have been not only had before but actually implemented and then thrown away, so it's worth studying why they didn't work out. It turns out there's some common themes that you didn't touch on.

1. What you're calling an item based OS was already implemented by both Apple and Microsoft in the 1990s. Apple's version was called OpenDoc and was a more purist version of the data first idea, Microsoft's was OLE and was less so, but they both attempted to rebuild the desktop OS as a primarily data-focused experience in which the app was less central. In OpenDoc you created a new document and then dropped app components into it, and the document, the UI and the file format were all managed by the OS rather than being owned by a specific app. Instead of apps there were pre-canned document templates called "stationary" (yes more paper metaphors).

This tech didn't work out for a few reasons. One was timing: Apple was bleeding money and OpenDoc got cut when Jobs came back, another was that it was very hard to write components for these systems. Those are fixable: the harder one was it was theoretically elegant but the UX was terrible, and it didn't solve a problem users really had. The app-first metaphor made sense to them.

2. Single-language/single-VM OS. Other than Smalltalk, Sun attempted to build a JavaOS and Microsoft ran a decade+ research project called Midori attempting to do the same thing in C#. These didn't work out because: (a) there's no language that is universally good at every task, in particular when it comes to efficiency, (b) the benefits of being single language was less than the benefits of being highly efficient and supporting existing apps written in any language, and (c) the process abstraction does a lot of different things and once you have it the benefits of a shared language mostly go away anyway.

3. Network transparency. So much has been written about this. Old dream, never worked. Network-exposed services are fundamentally different in several ways to in-process or same-machine components.

4. Tagged files. Already implemented since forever in every OS. It's there in macOS, Win 11 and Linux distros. People don't use it, largely because most don't really understand documents or files as first-class concepts to begin with. Nowadays even young people need remedial lessons in how to work with files when they start at university. The more intuitive interface turned out to be app centric, where the user starts an app and then sees their recent/shared documents along with a search bar.

5. Indexed filing systems. BFS gets lionized more than it deserves: its indexing support was very crude and barely usable. Most people who praise it have read about it but not tried to use it as a developer. I haven't either but I at least read the BeFS API docs, which is more than most people have done. Anyway Microsoft invested heavily in the idea of a powered-up filing system in the early 2000s (WinFS), but the project was a total failure and had to be scrapped. Most files are system files not user files, so indexing is of little value, but apps are hyper-sensitive to file access latencies. Doing any additional work on FS hot paths just makes everything sluggish. Also, UX: see (4).

6. Highly dynamic Smalltalk-style VM. Modern operating systems have gone in the opposite direction and lock everything down against changes. One reason is security, another is that apps that hack their way past carefully designed extension interfaces to modify arbitrary stuff cause a ton of system instability and broken upgrades.

7. Intent-based GUIs. This was the XML vision: full separation of data from presentation. It didn't work out partly for random web-specific reasons, partly because XSL:T sucked and was hard to use, but mostly because you don't get much value from separating the two. XML was justified by reference to future AI; the future arrived and the only markup it uses is Markdown i.e. purely presentational. Search engines don't rely on markup much and screen readers - where semantics matter most - seem to be satisfied with lightly decorated node trees.

Sometimes I like to while away some time and daydream about a better desktop OS, but I'm sure it can't be done without buying in 500% to AI and LLMs. For one, any talk of a new way to write apps or GUI toolkit is DOA without addressing the existence of web apps, which are what your user will spend all their time working with and which won't care about anything your new OS does. AI on the other hand could potentially knock up adapters and screen-scrapers on the fly. And if you have pervasive integration of LLMs then things like tagging or indexing become a lot less important to get right, as a sub-optimal UI is only sub-optimal for the AI which can brute force its way through.

If I were to design a new desktop OS today, I'd try and do an "intelligence first" design that assumed pervasive availability of advanced AI, and ask what that lets you re-imagine. I think the result would look nothing like the Alto.