While I was watching that i said: “DUDE! I remember that quote (and that illustration)”. Went to my text book and there it was. In Tanenbaum’s networking textbook.
Aside from the anecdote, this guy has had a huge influence in the whole industry (not even mentioning the Kernel debates).
Has some pointers to the orig source
Also in case anyone is not aware, Andrew runs the election science blog Electoral Vote [1], using an electoral college poll model to analyze and predict US elections. One of the better US political sites out there.
[1]:https://www.electoral-vote.com/evp2024/Info/welcome.html
One if my favourite books on computers and looking at the comments, many people here too.
Source: this book got me top marks too
Structures computer organisation is supposed to be a textbook but it's written so well I found myself reading it cover to cover like a thriller.
You won't find many people saying that about Knuth for example (not to say anything against Knuth who is amazing in his own way).
Which version of Minix did they actually use? There is Minix v3.1 (released in 2005 with the book), 3.2 (released in 2012) and 3.3 (released in 2014).
And which version, I know it’s MINIX 3 but beyond that? No idea. They probably heavily modified it and as Minix is not GPL, Intel never published it. Based on the timelines it’s likely 3.1 as the ME platform has heen around since approximately 2007 iirc.
Sometimes I wonder how the world would be today if MINIX was distributed with a FLOSS license similar to Linux. I think the Linus Torvalds vs Andrew Tanenbaum debate could have been a pivotal moment in tech history by the way MINIX missed a huge opportunity to step up in the history.
Modern Operating Systems is great though, and when I was in college I've recommended it to peers whose feedback was along the same lines.
electoral-vote.com is still going strong: https://www.electoral-vote.com/
I'm sure you know this, but I want to emphasize it for anyone who is not aware.
Prof Tanenbaum has a co-writer now (Prof Bates, history at UCLA/Cal Poly), and the site is published every day (used to be weekdays only and only during election cycles).
Now however, i am sold on the idea of the Lisp Machine. Hopefully some day a lisp OS and hardware will be a viable way to use a computer.
But then it would not be the "most popular OS" right? Whats your logic here?
https://github.com/davidgiven/ack
Just as Minix perhaps could've been Linux, The Amsterdam Compiler Kit could've been gcc, but for licensing issues:https://www.theguardian.com/books/2001/apr/10/firstchapters....
I hated my labs as it had only Windows, started exploring *nix systems post class and never went back.
Thank you Mr.Andrew and congratulations.
The earliest versions of Linux were written on Minix though. Credit where credit is due.
Interestingly, Linus was unaware of BSD. He has said that, if he had known about it, he may never have written Linux to begin with.
[1] https://groups.google.com/g/comp.os.minix/c/wlhw16QWltI#9f3c...
I think a lot of folks have thought about the idea of a truly distributed operating system. I'm pretty sure existing operating systems will eventually evolve in that direction. You already see bits and pieces of it popping up.
While plenty of things have happened since that paper, I have this sinking feeling that he was right and we just stopped trying to really expand and explore what’s possible. But it may be more a matter of the state of academia than about the domain itself. It’s not like people were getting a bunch of conference invitations for GPGPU applications with ML until hype freight trains hit. This sobering reality of academic hegemony and grant chasing kept me from ever getting terribly interested in systems research unfortunately.
What you are describing is the bread and butter of modern systems research and all the large cloud providers internally implement this kind of thing.
For consumers, they mostly care about the user experience. Having software that syncs their contents to a server thus making it available to all devices has much lower overhead than trying to live migrate a process over unreliable networks.
A lot of systems researchers were absolutely obsessed with clustering, network transparency, distributed systems, and viewed them as the pinnacle of the operating system. I never understood why. I completely understand the coolness factor mind you, I just never could see why it was so important that your server-laptop-phone-network system behaved as a single system.
I think a lot of effort was wasted chasing that dragon. Wasted is probably the wrong word because research into cool things is good and probably created useful things along the way. I don't feel there was ever enough justification put into it and it could possibly have been better spent though.
The alternative of having multi-system tools and programming models that allow you to manage multiple systems without having them appear as a single image at the lowest level didn't get much love from academia after TCP/IP, and was largely developed by industry.
We should have had a distributed OS like Amoeba/Plan9/Inferno/etc. allowing us to manage all our chosen set of devices using a single uniform interface i.e. "A Namespace" (in Plan9/Inferno speak). Such namespaces can themselves be connected into "Hierarchical Namespaces" and so on. This is a natural and easy way to let users keep their control over their devices while still being connected to the "Greater Internet".
But the Industry manipulated us into the Cloud model so that they could retain control and make money off of us. It was all Business to the detriment of a better User Experience via Technology.
This was what i always wanted ever since i read Tanenbaum's "Modern Operating Systems" and in particular his "Amoeba distributed OS" - https://en.wikipedia.org/wiki/Amoeba_(operating_system) Also see Plan 9/Inferno from Bell Labs. But instead what we got (due to industry shenanigans) is this garbage/duct-tape of distribution gone crazy in the "Cloud".
No, it has not.[0]
Basically, around MINIX 3.2.0 (just before I stated contributing) the OS ditched its homegrown userland and adopted the NetBSD source tree + pkgsrc. While that boosted the software compatibility of MINIX3 in the short term, the maintenance burden of keeping up with upstream with such a large diff proved unsustainable in the long term, especially after the grant money dried up.
In hindsight, my opinion is that MINIX3 should've gone with NetBSD binary compatibility. The NetBSD syscall table would've been a far slower moving target to keep up with than the entire NetBSD source tree.
The OS also had a significant amount of tech debt, especially in the microkernel which was uniprocessor and 32-bit only, as well as outdated hardware support which meant nobody was daily-driving it anymore. It also was an aging design: while the system was divided up into user-mode servers with message-based communication, you couldn't containerize a process by spawning a parallel userland ecosystem for example because it wasn't capability-based or namespaceable.
It's too bad really, because the base system had really impressive capabilities. It could transparently survive crashes of stateless drivers, even when stress-testing it by injecting faults into the drivers at runtime. You could live-update the various system services at runtime without losing state or impacting clients. Some really good papers came out of MINIX3 [1].
I've ranted more in detail before, both on HN [2] as well on Google Groups [3]. I do not fault the maintainers for the current state of affairs because keeping up the MINIX3 userland against modern software standards was a major maintenance burden, so adopting NetBSD's one way or another was inevitable. At any rate, there are other micro-kernel based operating systems [4], some under active development, so MINIX's spirit lives on.
[1] https://wiki.minix3.org/doku.php?id=publications
[2] https://news.ycombinator.com/item?id=34916261
[3] https://groups.google.com/g/minix3/c/qUdPZ0ansVw/m/7LuOv0YOA...
I followed the project somewhat, and I understand the main issue has been lack of having someone at the helm, pursuing this 3.3.0 release.
The situation is such that the release blocking bugs were fixed, and yet the release hasn't happened, because nobody is willing to put the time and effort to make it happen.
Should the release happen, and somebody be willing to review and merge changes and organize a regular schedule of releases (even with a long period, such as yearly), the system would no doubt get some life back.
I imagine in an alternative universe were interoperability is more profitable than walled gardens, this technology exist and was standardized and not just a preserve of a few services on iDevices that can "hand-off" to each other (without process migration)
Then I guess it's one of the 3.1.3x versions released in 2007 (see https://github.com/Stichting-MINIX-Research-Foundation/minix...), or maybe 3.1.2 from 2006, depending how long hey had to implement the ME.
Why should we have?
> But the Industry manipulated us into the Cloud model so that they could retain control and make money off of us. It was all Business to the detriment of a better User Experience via Technology.
The choice was not cloud or distributed single system machine, they were and are orthogonal.
Because that is what an OS is supposed to do viz. provide a uniform interface and transparent access to various Compute, Storage and Network resources wherever they might be. A Distributed OS (https://en.wikipedia.org/wiki/Distributed_operating_system) is a natural extension to a Single Node OS. Note that we have in a sense realized our distributed OS in the IaaS and PaaS layers of a Cloud network. However they are done in such a manner as to take control away from us unless of course you use some open source offerings setting up which is much more complex than a distributed OS should be.
There are many layers and components, and functionality can be implemented in many different ways in different levels of these things.
Definition and Purpose of an OS - https://en.wikipedia.org/wiki/Operating_system#Definition_an...
I am not sure what you are arguing here. The above definition + the previous link to distributed OS where the motivations for the same are listed establish the "reason". If you find other approaches more palatable that is fine (provided you know what you are doing) but the original blanket statement you made viz. "This type of thing always seemed to be in the very cool but pointless basket, to me ... I think a lot of effort was wasted chasing that dragon. Wasted is probably the wrong word because research into cool things is good and probably created useful things along the way. I don't feel there was ever enough justification put into it and it could possibly have been better spent though." is wrong.
> There are many layers and components, and functionality can be implemented in many different ways in different levels of these things.
All implementations are not equivalent w.r.t. all parameters; hence the various tradeoffs in competing designs.
> I am not sure what you are arguing here.
I'm not sure why you're replying then.
> All implementations are not equivalent w.r.t. all parameters; hence the various tradeoffs in competing designs.
I know, and not all are equally good.
Some Website? It's Wikipedia and curated; short of handing you a book (i recommend Tanenbaum) that is a good place to start from and then branch out of.
> It doesn't even necessarily say what you think it does,
That means you have not understood it.
> I'm not sure why you're replying then.
Because you made a untenable blanket statement that Distributed OS research was all wrong which cannot go unchallenged.
> I know,
I doubt it based on this conversation.
You definitely didn't understand the first thing I wrote, or you're deliberately misrepresenting it because you're intellectually incapable of addressing it.
That was not my direct quote, so you can dismount your high horse now.
And it's telling that responding to the question of why an OS should do these things, you finding a definition of an OS and asserting (falsely, I might add) that transparent distributed systems and only those meet that definition.
You apparently can't follow a chain of comments in a thread nor understand what is written down. My comment pointing out yours is here - https://news.ycombinator.com/item?id=40784174
> And it's telling that responding to the question of why an OS should do these things, you finding a definition of an OS and asserting (falsely, I might add) that transparent distributed systems and only those meet that definition.
Again, you have not read/understood what has been written down nor the sources to which i linked to elaborate my points. And also i never said "that transparent distributed systems and only those meet that definition". In my comment here https://news.ycombinator.com/item?id=40766810 i explicitly say "an OS is supposed to do viz. provide a uniform interface and transparent access to various Compute, Storage and Network resources wherever they might be." and then link to the distributed OS Wikipedia page for further details. If you had cared to even read that page you would have understood the key "Design Considerations" (see https://en.wikipedia.org/wiki/Distributed_operating_system#D...) driving the approach. It is the "User Experience" that makes a distributed OS approach so compelling; though its realization can be more complex/difficult compared to other approaches w.r.t. certain parameters eg. Scaling.
To summarize, i would advise you to read up on Distributed OS research before making silly blanket claims which can be easily disproved. Just because today the Cloud model has established itself as the industry standard doesn't mean that is the correct approach. You have to know both sides before you can argue for/against.
That's not the one I was responding to. I replied to the comment I was responding to, it's not that complicated.
> Again, you have not read/understood what has been written down nor the sources to which i linked to elaborate my points. And also i never said "that transparent distributed systems and only those meet that definition".
That was certainly the implication if you use that to answer the question, why must the OS do that.
You do understand how "The OS must do it because that's how I define the OS" does not actually say anything, right? Even if that is the definition of the OS (which it isn't), it just shifts the question to "why should the OS be defined that way?"
That is precisely the point; when something is referred to in a chain you have to look at where and not necessarily in front of your nose; it's not that complicated.
> That was certainly the implication if you use that to answer the question, why must the OS do that.
No, most certainly it is not when you are explicitly being pointed to resources where more details can be found. You are expected to do some self-study and not necessarily spoon fed when it comes to absolute basics like "why is a OS needed?".
> You do understand how "The OS must do it because that's how I define the OS" does not actually say anything, right? Even if that is the definition of the OS (which it isn't), it just shifts the question to "why should the OS be defined that way?"
You are either being intentionally obtuse or really are. The motivation for an OS is buried in its definition; this is CS101 and not something deep which you seem to think it is and i even linked you to the necessary definitions and mentioned terms like "Transparency, Resource Management, User Experience, etc." to highlight the essentials.
At this point i am can only conclude that you are repeating the same vague statements (they are not even an argument) over and over again without providing an iota of hard data (which i have done) because you really have no clue.