I think this is an impressive achievement, and certainly something I could never do. But I'm a little disappointed in the state of desktop operating systems these days. I don't see any innovation. Every OS is just splashing chrome on the same WIMP paradigm that's been available to consumers for 35 years.
Maybe I'm looking for the equivalent of a flying car, but I wish someone would come up with an OS, or even just an OS feature that makes people say "wow!"
Is there a college lab or a research department or some other place where people are trying really different things?
At the risk of sounding inflammatory (which is not my intention), what I'd like to see is the FP and RIIR crowds getting their hands dirty and write a hobby OS like this up to this level in their language of choice. If that means they need to assemble a stable ABI/API that other programmers can build against, then that's the challenge.
C/C++ programmers have been building their own hobby OS's non-stop since Linux came out. There's lots of example code out there for initializing the bare metal, writing bootloaders, task switching, controlling the MMU there for those languages. I even got a certain distance myself nearly 20 years ago, and I'm a complete hack. I only gave up because I never figured out how to initialize VESA graphics from protected mode, and I sure as hell didn't want do it with 16-bit code from the bootloader.
We all know what a disaster area C/C++ are, the number of CVE's we see in the Linux kernel and userland because of this, etc etc, we hear about it every day on HN. So I personally like to see some of those people put their money where their mouth is. I think that would be an innovation.
Yes I'm aware of this one as well. Although again, the GUI toolkit doesn't look like much yet compared to the example we're discussing. And this one is written by one guy, Redox not so much.
Great to see examples that are getting close though, although I think my point stands that they are nowhere near as numerous or complete as their C/C++ counterparts.
True, although I'd personally rather see a focus on getting the backend right -- I think that's what Redox is focusing on. There are many options for "pretty" frontends, especially on Linux, but there are very few OSes out there with a decent approach to security. (Rust's inherent safety should help with that, although it's not magic security fairy dust by any means.)
Nice! Great example. I remember seeing this a while ago and being impressed. Even more impressive is that there are no .c or .s files in that repo at all that I can see.
Although it's not clear that it has a GUI toolkit up to the level of complexity that SerenityOS is showing though. If it does it's not being shown off, and I'd love to see the performance.
I'd love to see more examples if anyone can find them.
> booting bare-metal with zero assembly is just not possible
Well that makes sense on Intel anyway, the first stage bootloader has to fit into a single 512-byte sector (the MBR) doesn't it? Not sure if this still true in these modern days of EFI.
To me to Windows95 UI (not the OS) is peak productivity usability. All UI innovations that came later were just distractions except maybe tiling window managers and the "Exposé" function in Mac Os X which later was completely botched in Snow Leopard. At some point no further innovation is required.
I'd rather see innovation on another level: Do away with C and introduce a new programming language which gets rid of the need for a MMU or preemptive Multitasking at compile time.
You don't need a new programming language for that - any type safe, memory safe language with capabilities can do it. Java or C# are good candidates. Especially with the work on Project Loom in the JVM, you could get cooperative multi-tasking controlled by the compiler rather than using processor interrupts (in theory). See Singularity for an example of what kind of interesting OS architectures are enabled by it.
The elephant in the room is Spectre. It's no longer clear you can actually keep any secrets inside an address space on speculating CPUs. So if all your code runs in a single address space, even if it works in theory, it may not work in practice. But this opens up the interesting research problem of Spectre mitigations :)
One idea I've wondered about is whether you can use the very new Intel features to rapidly change access permissions on page table entries, such that you could have a totally unified but segmented heap, but entering or leaving lower privileged code modules triggers a fast address space transition.
It turns out the perfect OS already exists: Inferno OS [1]. It doesn't need a MMU and runs with less than 1 MB of RAM. I did not dive into Limbo yet but at first glance it looks rather sane.
I think “remote resources are files” paradigm has been definitively attempted and rejected.
At its heart it’s a lie: network resources are not files. They are not yet in RAM.
Unifying two abstractions into one is great, IF the data behaves in a perfectly analogous way. Otherwise the “unification” actually makes the domain of interaction more complex.
" All UI innovations that came later were just distractions"
Don't forget search. Especially if it can correctly guess what the user is probably trying to get to. Search in Vista let me ditch SlickRun for quickly getting to stuff.
"Do away with C and introduce a new programming language which gets rid of the need for a MMU or preemptive Multitasking at compile time."
You'll still need it for hardware or compiler failures. Cosmic rays being a big source of them. On compilers, they'll sometimes optimize away security checks. Then there's side channels which require low-level view of hardware and software interactions. Probably better to keep the MMU's or some hardware protections for defense in depth.
Under the hood, there is already a very very long list covering those 35 years.. virtual memory, pre-emptive multitasking, micro kernels, mandatory and discretionary access control, advancements in file systems, system administration, etc, etc
As far as the UI is concerned, are you talking about increased productivity or just looking for the wow factor? I'm not convinced a change in UI paradigms is necessary for what people use computers for. Touch UIs are OK for consumption, but I feel severely handicapped without a keyboard/mouse when doing any moderately involved task. Email - slow, chat - slow, browsing - slow, file/photo/document management - slooow, content creation - slow, gaming - okay, programming - heh.
I think there is plenty of room for innovation in desktop operating systems but the standard paradigm doesn't really need to be rethought. But where I differ from a lot of my fellow nerds is that I think desktop operating systems with arbitrary window placement and so on are best for desktop computers with huge screens, not laptops. I think the iOS/Android/Windows 8 approach of full-screen apps (with some tiling/split screen) and a different root layer than the "Desktop" makes more sense on smaller devices.
Rust has Redox (desktop focused) and TockOS (embedded).
I happen to (wishfullly) think the next major OS will have capability-based permissions at the core level, a model a bit like Mobile permissions but composable. Good thing that Google's Fuschia is based on capabilities. It's in C++ though.
I know what you mean. but I'm also not sure what innovation can be expected from something as utilitarian as an OS. Do you have any ideas of what you'd want to see?
Boot up an old Linux distro from around 2001 and compare WindowMaker, AfterStep, Fluxbox, KDE, Gnome, Enlightenment, and half a dozen others. Compare those to fictional UIs seen in movies, Hypercard, visual development systems like the ancient Klik n Play or modern Scratch or MaxMSP, etc. Learn about OLE (object linking and embedding) and document-centric vs. app-centric computing. Think about all the different ways data can flow between components of a system and how those flows can be grouped differently. Look at alt and historic OSes like Be, TempleOS, SunOS, IRIX, DOS, VMS, OS/2, old UIs like Dosshell, Commander. Look at tablets vs phones vs desktops vs. game consoles vs appliances. Remember that bytes and bits and addresses and instructions and files and programs don't necessarily have to be the fundamental units of an OS.
Then, after all that, come back and tell us that a modern desktop is the utilitarian endgame of OS innovation :).
There's a small, if somewhat contrarian move, especially in the *nix/free software communities, that goes along those lines. You'll find a lot of people fed up with hamburger menus and nondescript icons and widgets, poor API stability (and, therefore, lack of easy scriptability (is that a word?)) and other questionable developments of the more "modern" approach to building desktop systems.
Some of the folks in this camp are firmly in the traditional Unix "camp" and mock cat -v, but there's a pretty refreshing diversity of views there. Some swear by the Unix Haters' Handbook, others come from (what's left of) the Amiga community.
I don't know if there's a central gathering place, but if you look around the Fediverse, IRC, various tildeverse servers, you'll eventually run into someone :).
I want to see a power user OS. Something designed for humans who need to analyze huge amounts of data in arbitrary ways. Something that knows how to work with cloud resources to profile new data sources, simplifying the whole ETL challenge. With great APIs at the program level, so I can always pull datasets between apps, use the best app for the job, and automate everything I need to do twice.
My blog is mostly just tech demos or tutorials with dry writing. I do think about the very deep unmet potential for technology often.
A 1995 book that somehow ended up in my old home town's public library called Tog On Software Design, describing a project at Sun to build a desktop of the future, was one influence as a kid. Definitely check out the celebrity endorsements on Amazon.
On a historical note (and most of it has come to pass, though maybe not in the way they wanted it, and certainly not as "unified" as they conceptualized it), check out the Xerox PARC project that was termed "tabs, pads, and boards":
Both of these appear to be something known as "tangible user interfaces" - or are a subset of such; if you google around, you'll find a ton of research on such systems. A similar kind of interface is the "augmented reality sandbox":
And indeed AR is a part of all of this; but rather than wearing a headset (or using a phone) to overlay virtual objects or such on the real world, instead projectors are used, which in effect makes it easier to use and more natural, while also allowing for easier collaboration.
I have a theory that LISP or a LISP-inspired language (perhaps LOGO) might also be something that could be incorporated into a new system (I honestly believe that both of these languages haven't been as fully explored as they deserve - LOGO moreso than LISP).
Lastly - the idea of a DSL (Domain Specific Language) might also have relevance to a new paradigm; I've mentioned this particular offering in the past:
I feel the same way about desktop OSs, and OSs in general really, these days. I mean, no disrespect to the author of this one because it's an impressive amount of work, but it's yet another unix. Unix is freaking ancient and even its developers went on to do it better in Plan9, but everyone keeps copying unix and its archaic paradigms. Well, except the l4 people, who seem content to keep their work completely academic.
I have a different conception of what a desktop OS should be than you seem to, though. I want one that embraces simplicity. It should elicit a resounding "meh" because it doesn't do anything particularly impressive and is just a really good execution of already existing ideas.
My favorite somewhat-rethought OS is GoboLinux, which is not as different as Plan9 since it's basically just Linux, but it totally throws out the traditional Unix folder hierarchy of /bin, /etc, /var and so on. I also like the simplicity of classic Mac OS where you install a system extension by just copying it to a special folder and you uninstall an app by just deleting it (which sort of works with current macOS but apps still strew preferences all over the place).
Believe it or not, there have been several attempts to bring that kind of application management simplicity to Linux: ROX AppDirs, GNUStep's AppBundle implementation, Klik, and AppImage to name a few.
They have all been rejected by the community at large, sadly.
Yeah the usual argument is that package managers make worrying about the tidiness of the file system unnecessary. But on Linux at least it just never really works out.
Maybe I'm looking for the equivalent of a flying car, but I wish someone would come up with an OS, or even just an OS feature that makes people say "wow!"
Is there a college lab or a research department or some other place where people are trying really different things?