Hacker News new | comments | show | ask | jobs | submit login

I'm not knowledgeable about different philosophies when it comes to OS's, but it seems that pretty much everyone thinks that being Unix-like is a good thing. Is that true? Or is there some people that think that some different philosophy that is perhaps more or less mutually exclusive with regards to being Unix-like is better? I don't even know if that last question makes sense.

There are of course a bazillion ideas about OS design, there used to be entire conferences on them :-)

One of the features of UNIX was that it was designed by taking a few very simple ideas and more importantly simple constructs, and then building more complex constructs out of them. It made it possible for a handful of researchers to write all the bits of an OS needed to get to a multi-user prompt. Which at the time other examples had giant teams of engineers associated with them. That made it easy to understand at a fundamental level and you could reason about the effects various things would have on it should you make them.

One of my favorite books is "Operating Systems Concepts" which has a great survey of the features of any good operating system.

So is being Unix-like better? Yes if you want a simple robust operating system. No if you want a hard real-time operating system. Yes if you want a system you can flexibly add devices too. No if you want to build a security model based on capabilities. Yes if you want it to work on a small architectures with stack support. No if your processor doesn't support stacks or the C model of frame pointers.

In general though understanding what an Operating system has to do is priceless for a CS person to have in their toolkit.

Inspiring comment from Bane early this year, https://news.ycombinator.com/item?id=5624912

If you need a yacht that can carry many people on the high seas through bad weather at speed, unix is solid. But there hasn't been a great racing dinghy since the 80s.

Maybe there is an demoscene/hacking tradition out there, waiting for to be discovered.

Consider the debates that we don't have:

* Hardware abstraction. Casual audio programming is harder now than it was twenty years ago. Also - why doesn't hardware self-describe?

* High-level languages. Chuck Moore's ideas of code bloat are on a totally different level to the mainstream. He's onto something.

* Protected memory. Does it matter on a machine designed for fun? How much more hackable could your OS be if you got rid of stuff like this?

Stability doesn't matter so much in fun systems. If you're in a dinghy and not capsizing, you're not sailing hard enough.

Thanks for the link, very interesting. Have you read Massalin's thesis on Synthesis OS (Partially Evaluated/JIT kernel objects) ? It's from the late 80s and very 'demo-scene' like (The author mentions efficient audio playing through his object based system).




The VPRI (vpri.org) has some interesting ideas with respect to your second bullet point.

Also, there was something about Arthur Whitney looking to build a stand-alone OS in/under K recently.

Found the reference. http://kparc.com/os.htm

Thanks - looks awesome. I particularly like his approach to HTML.

UNIX-like is known to work. That is not the same as "good", but it may be close enough.

UNIX-like includes philosophies such as "almost everything is a file" and "use human-readable (and writable!) plain text formats by default" and "there will be a stdin, stdout, and stderr; use them all". More than anything else, I think that a UNIX is defined by the idea that any end-user might decide to become a programmer at any moment, and this is OK and perhaps even desirable.

> UNIX is defined by the idea that any end-user might decide to become a programmer at any moment, and this is OK and perhaps even desirable.

Very, very desirable in my view; in contrast to the raging trend of simplification/hiding going on these days, trying to turn computers into sealed-box appliances "you're not supposed to know how it works" that give little in the way of things that can get people interested in learning more about them, I find classic UNIX to be very open in encouraging users to learn more about the system.

I think the unix design (particularly as implemented in GNU/Linux) sacrifices coherency for flexibility and customizability. There are some nice integrated features you can get if you have e.g. an OS-native command shell that understands the kernel; features like DTrace become much easier, and you can get better interactive performance when the scheduler has a deeper understanding of what's going on. I'd say linux's KMS is a move away from being unix-like; likewise ALSA is a very ununixy API, the whole udev/hal kerfuffle was not unixlike, and network manager is the antithesis of the unix philosophy.

(Myself, I moved to FreeBSD a while ago).

I think one thing has to do with the fact that you can find a lot more detailed information about Unix-like OSs than anything else (e.g. Windows), and the general principles being available on over many vendors/variants also makes it a more "generic OS" instead of e.g. tied to Microsoft.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact