top | item 6973820

Ask HN: How would a new OS be different?

58 points| Jormundir | 12 years ago | reply

It seems like all of the new operating systems coming out are really just different flavors built on the unix kernel. If a new operating system were to be built from the ground up today, would it be significantly different? I know the linux core is improved all the time as an open source and constantly evolving project, but I just wonder if given the chance to build something with no legacy to maintain, would an operating system have any greatly different architectures or components?

54 comments

order
[+] hendzen|12 years ago|reply
I find the L4 Microkernel [0] pretty interesting. The goal of L4 is to make the microkernel architecture performant by making IPC fast. They did this by making the implementations processor dependent; they wrote the IPC code in optimized assembly. A variant [1] of it is actually commonly used in baseband processors. See this paper [2] for a good overview.

[0] - http://os.inf.tu-dresden.de/L4/overview.html

[1] - http://www.ok-labs.com/products/okl4-microvisor

[2] - http://homes.cs.washington.edu/~bershad/590s/papers/towards-...

[+] ek|12 years ago|reply
Not only that, but seL4 [0] is a cool NICTA effort that's been ongoing for almost a decade now to produce a secure, machine-verified microkernel based on L4. It seems like there's lots of room for L4 and its children to occupy interesting spaces in OS design.

[0] http://ssrg.nicta.com.au/projects/seL4/

[+] tptacek|12 years ago|reply
L4 is also a very clean, simple codebase. I like it a lot.
[+] asperous|12 years ago|reply
Some ideas for inspiration:

--- Low level ---

Highly reliable, flexible, and secure http://www.minix3.org/

Filesystem that's intuitive, easy to learn, and makes sense http://www.gobolinux.org/?page=at_a_glance

Declarative configuration management http://nixos.org/nixos/

Support applications and drivers written for windows http://www.reactos.org/

Better Security http://www.openbsd.org/security.html

Update software silently and instantly http://www.codinghorror.com/blog/2011/05/the-infinite-versio...

Application Permissions http://codezqr.com/blog/wp-content/uploads/2012/04/Android-P...

--- User level ---

Remove X11 http://wayland.freedesktop.org/

Application Directories http://en.wikipedia.org/wiki/Application_directory

http://rox.sourceforge.net/desktop/

Amazing basic applications http://www.apple.com/osx/apps/

Unify notifications http://growl.info/

http://www.apple.com/osx/whats-new/#notifications

[+] StefanKarpinski|12 years ago|reply
Half of these things aren't really operating system features in the narrow sense – which is what I think the OP meant. X11 isn't part of the Linux kernel, but part of your GNU/Linux system. Likewise for notification, bundled applications, etc.
[+] chipsy|12 years ago|reply
The biggest legacy of Unix is C.

With Unix, runtime provisions effectively end where C picks up. C is "good enough" to build applications on, and it can be written portably, most of the time. But there is plenty of reason to challenge the idea that we need a baseline of C. There are benefits to having richer data types built in, to having garbage collection, and all of those typical higher-level programming arguments. And if it's done at the OS level, the whole OS may also benefit from that - it opens up more options for organizing data, for configuration interfaces, and for communicating between processes. The system is likely to be more stable and more secure as well.

The downside is also known - losing lower-level control, losing lower-level performance. But each time our hardware situation morphs, there's an incentive to abandon the lower-level stuff to get better portability. So in time, as hardware usage changes(not just in terms of devices and their internal HW management, but also the increasing complexity of our networks) we're likely to incrementally adopt the higher-level paradigms.

[+] pflanze|12 years ago|reply
I found/find it interesting that the Oberon system is written in a language that has garbage collection built in (the Oberon programming language). I haven't checked how it is dealing with allocation in interrupt handlers, though. I should, it is a small system and probably deserves reading the code of.
[+] nwmcsween|12 years ago|reply
C isn't all about performance, can you map your unknown high level language with it's great features to assembly? Do you know what assembly is going to be produced out of this language? If not good luck with debugging, understanding performance.
[+] aaronem|12 years ago|reply
Greenspun's tenth rule writ large.
[+] rguldener|12 years ago|reply
Yes you certainly can: At my university they are building a new operating system from scratch with multicore/multi CPU systems in mind, their vision is that someday we might have 5-10 specialized "CPU"s in our machines for better parallelization.

Current OS have a hard time dealing with such heterogenous systems so they decided to start from scratch: The entire OS is structured as a distributed system with a dedicated mini-kernel running on each core of the processor and potentially also your network card etc. They even disallow shared memory between the core kernels and solely communicate through a message passing system.

If you are interested in their approach check out the Barrelfish website: http://www.barrelfish.org

And here is a great overview of the architecture: http://www.barrelfish.org/TN-000-Overview.pdf

[+] adamnemecek|12 years ago|reply
I know that the question was about OS architecture but I really feel like the UX is not as good as it could be. One thing I've been thinking about recently is that it could be interesting if there was some GUI system that would follow the Unix principle of having many small, task specific applications that could be easily composed together. It happens to me a lot that there are 3 applications each of which does something better than the other 2 but in the end of the day none of them is ideal. If I could pick the best of the 3 and put it together myself, that would be great.

Later, I realized that Mac OS' Automator/Applescript might have been an attempt to do something like this but it feels somewhat half-assed. Given something like this is probably impossible to bolt on later so you'd have to design the OS from the beginning to allow for this.

[+] corysama|12 years ago|reply
If I were to create a new OS today, it would basically look like an iPad-ish screen of icons as a front-end to Xen. Each "app" would be a stand-alone virtual machine image custom configured to run a /single/ application each.

I'm speaking out of my rear end, but it seems like that's where we're all headed in order to achieve the security/configurability/reliability/simplicity/etc that we all want. As examples, I point to sandboxed mobile/browser/cloud/game console apps as well as config sandboxing such as VirtualEnv and .Net's dll versioning. Might as well drop the half-measures and go all the way. Skip DLL/API/browser version hell and just ship a complete OS image that has been configured and tested to work reliably for the app.

It's my understanding that the Xbox One has basically implemented this already. Game discs contain an OS image that runs as a guest OS on the Box. In addition to improved security, this should greatly reduce the back-compat test burden as future Xbox OS revisions come out.

[+] enduser|12 years ago|reply
I think what you actually want is static linking, with an OS that supports kernel ABIs going back many years (like FreeBSD) and good process/user-level restrictions. Running an entire operating system for every application is a bit heavyweight.
[+] YZF|12 years ago|reply
Perhaps an OS that is built over distributed components. A process you run, or even a "thread", can execute in an AWS instance. Applications can be shared between multiple devices. Storage can be anywhere. A distributed web service is just an "application" under this OS.
[+] ollysb|12 years ago|reply
On the other end, would be cool if all of your devices were aware of each other and syncronised apps in realtime. For example the browser on your phone has the same tabs open as your desktop. The image you're photoshopping on your desktop is viewable on your mobile in a mobile specific version of photoshop (so all apps have multiple views for each different device).
[+] dmytrish|12 years ago|reply
I used to give some thought to OS design some time ago (I'm a hobbyist OSdev). I've come to a more conservative point of view: what problem do we try to solve with the new system design? Are our systems large and flabby enough to fall apart from within under their own weight? Are there profound hardware changes that require architectural re-thinking?

An OS kernel by definition is a small layer of hardware resources management/abstraction software. Has hardware changed? Yes and no. The most prominent changes are multi-core CPUs, ubiquitous networking, a lot of peripheral devices, support for OS virtualization, but generally hardware architecture is not that far from 70s when Unix was invented. From the software side: the beauty of programming is in its abstraction power and most of software progress is advancing at levels abstracted far from OS (html5/virtual machines/language environments/etc). So, I don't see a burning need for changing the underlying service layer. Microkernels are nice, language-based systems are nice also, but their time has not come yet, the inertia of existing code base is huge, so the incentive to depart from it must be also huge.

I agree that user-space level organization may be more consistent from modern point of view, but it's not clear where to head. Ideas are welcome, but power of organic evolution also should not to be underrated.

[+] olefoo|12 years ago|reply
It would be interesting to see an OS in which audio and video streams were first class objects. Where the primary display was a video stream composited out of main memory from a render tree that was the core data structure and which treated memory as being made of tagged video and audio buffers ( some of which were infinite in length or were memory mapped from disk or network sources ).

BeOS had some of this, but the core ideas have not been explored as fully as they might have been.

[+] perlgeek|12 years ago|reply
I think there is lots of potential for innovation in the file system area. There could be a content-adressable file system right in the kernel and serve as a base for the operating system. Or some kind of object storage. Or at least with much richer meta data (and Unicode file names!) than current file systems. And maybe with transaction support over multiple files/directories.
[+] erikj|12 years ago|reply
There is a very interesting storage system designed for Apple's Newton OS that was buried when Steve Jobs killed the Newton: http://en.wikipedia.org/wiki/Apple_Newton#Data_storage

In short, it's a modular object storage with a rich set of indexing and quering mechanisms, tailor-made for NewtonScript. It isn't some quirky experiment that never got out of CS academia's ivory tower - it had real-world applications and a noticeable installed base.

EDIT: changed the link

[+] graiz|12 years ago|reply
- Built in support for the online services from the ground up. From the filesystem to the drivers the system should be built around the idea that it can be updated easily from the web and kept up to date. - Ideas like DropBox and Backup services aren't a 3rd party feature/add-on they are core to online nature of the OS. - Perhaps a new way to manage files & folders. I can't believe we still use filename.ext. iOS has some interesting things here.
[+] jeorgun|12 years ago|reply
Isn't this pretty much ChromeOS?

* Obviously built with online services in mind

* OS is automatically updated from the web

* All (or most— downloads are sill local) data / config / etc. automatically synced with Google account

* Uses GDrive for managing files/folders

[+] hendzen|12 years ago|reply
They should call it PrismOS.
[+] zvrba|12 years ago|reply
Built-in sandboxing with user-defineable data flow policies.
[+] politician|12 years ago|reply
I'd love to see integrated package management and versioning handled by the OS in such a way that each independent language community wouldn't have to reinvent a new distribution channel. Something like Ruby's Bundler or .NET's GAC+Nuget or "App Stores for Libraries" at the OS/vendor level.
[+] lowglow|12 years ago|reply
I'm spending this next year to build a new operating system. If you're truly interested in changing the future of computer email me: dan at techendo dot co
[+] girvo|12 years ago|reply
Haiku. Yeah, it's sort of UNIX-like, but it's APIs are phenomenal, and it's focus on performance is slightly different to other OSes
[+] frik|12 years ago|reply
it's like BeOS
[+] collyw|12 years ago|reply
I really liked the sound of WinFS with a filesystem that you could query like a database.