7 ms·
Introduction to OS Abstractions Using Plan 9 from Bell Labs (2007) [pdf]
- ddevault 9y agoIf anyone here hasn't played with plan9, I highly recommend it. It's no overstatement to say it's the best operating system ever designed.
- __s 9y agoMost operating systems are more evolved than designed
- kzrdude 9y agoIsn't that true for most complex systems overall, (software or otherwise)?
- Koshkin 9y agoSoftware is usually a product of both intelligent design and evolution, in varying proportions.
- Qwertious 9y agoMost operating systems, or the most popular operating systems? The most important distinction between evolution and design, IMO, is that evolution bars forethought, and any refactoring that trips local optima (which in this case, would be breaking backwards-compatibility). Popular OSes are popular mainly because of their backwards-compatibility and momentum, and are therefore typically unable to be redesigned in any non-evolution fashion.
- pjmlp 9y agoI kind of disagree, at least in what concerns the Plan 9 lineage, Inferno was way better. Sadly it appears most people just stop at the middle, instead of the last version of Plan 9's evolution.
- Sir_Cmpwn 9y agoI'm not a huge fan of Limbo and most of the other changes aren't very compelling imo. I think plan9 is better.
- hoopladler 9y agoI just went and read the wiki page to try and evaluate your statement, but I still don't get it. I mean, I like the distributing computing concept, but what makes Plan 9 especially interesting?
- ddevault 9y agoCompared to Inferno? It's simpler. I think plan9 is great example of getting a lot done with a very simple design.
- hoopladler 9y agoSorry, I meant plan9 in general.
- ddevault 9y agoThe kernel is simple and sanely designed and interfacing with it is done through the filesystem in, again, a very simple and sane way. Your displays are configured by a simple <10 line shell script at boot time that writes plaintext to a device file, rather than a gargantuan graphics stack that's controlled with binary device files and ioctls. Filesystem namespaces are lovely, and make the filesystem cleanly organized and customized to the logged in user's needs and desires. I have a little script that clears my current terminal window: `echo -n "" > /dev/text`. The libc is small and focused (non-POSIX), and there are only a handful of syscalls. The process model is really sane and straightforward as well. Playing an mp3 file is `mp3dec < file.mp3 > /dev/audio`. To open a TCP connection, you use the dial(3) function, which basically does the following: write "tcp!name!port" to /net/cs and read out "1.2.3.4!80" (/net/cs resolves the name), then you write "connect 1.2.3.4" to /net/tcp/clone and read out a connection ID, and open /net/tcp/:id/data which is now a full-duplex TCP stream. There's this emphasis on simple, sane ways of fulfilling tasks on plan9 that permeates the whole system. It's beautiful.
- zignd 9y agoWould you care to elaborate on why you consider it so greatly well designed? I have always been curious about plan9, but would be nice to listen a bit about what makes it so distinguishable before getting my hands on it.
- Sir_Cmpwn 9y agoI went into some detail here: https://news.ycombinator.com/item?id=16254250 https://news.ycombinator.com/item?id=16254250
- revelation 9y agoIt's never been widely used for anything, so there is none of that pesky practicality to demonstrate clearly it's just the same old.
- dralley 9y agoRedox OS borrows a lot of concepts from Plan 9, and iterates on them in some places.
- Sir_Cmpwn 9y agoCan you elaborate on this?
- executesorder66 9y agoNot OP but here's what I found: Everything is a URL [0][1] [0]https://doc.redox-os.org/book/introduction/how_redox_compares_to_other_operating_systems.html https://doc.redox-os.org/book/introduction/how_redox_compare... [1]https://doc.redox-os.org/book/design/url_scheme_resource/everything_is_a_url.html https://doc.redox-os.org/book/design/url_scheme_resource/eve...
- ernst_klim 9y agoI can't agree with that statement. Plan9 was interesting, though it was completely based on ``everything is a file'' abstraction and had no decent solution for dealing with graphics, sound, video/multimedia, input and so on. All this ``mapping bitmaps directly to and fro the framebuffer'' and ``just create a device file for keyboard input [1]'' sounds cool til you meet some real world need. I also think that old Smalltalk and Lisp systems (e.g. Xerox PARC) had a design much more suitable for the real world applications than this ``everything is a file'' idea. [1] https://marc.info/?l=9fans&m=111558695515846&w=2 https://marc.info/?l=9fans&m=111558695515846&w=2
- Sir_Cmpwn 9y agoThere are certain use-cases for which plan9 is not useful. I don't think a solve-every-problem-poorly box is better than a solve-several-problems-well box. For the niches it services, plan9 is sublime.
- mycroftiv 9y agoIt should be noted that Plan 9 is far from dead or outdated. The 9front developers have continued to make many improvements to the OS while retaining backwards compatibility. 9legacy offers a set of patches which try to stay closer to the original Bell Labs distribution. There are also other ongoing developments, such as my own Advanced Namespace Tools and a new grid of public 9p services.
- carussell 9y agoIs there a contingent of 9fans doing work on using Plan 9 for DevOps? The fact that doesn't have popular graphical software (or even the same conventions) wouldn't hold it back there. If it's really as well designed and coherent as the praise always makes it seem, it should be an attractive option on the server. So developers can stick with Windows/Mac/Linux on personal machines, and should be deploying to Plan 9 in the cloud, right?
- mycroftiv 9y agoIt might make sense in theory, but in practice there are very very few Plan 9 users and developers. Fundamental design quality is never a guarantee of "success" as measured by size of the userbase. If you look at the culture of Plan 9 users, there is also often a somewhat adversarial perspective on standard software. It's a complicated topic, with a lot of weird history involving things like Plan 9 not having a decent open source license for a long time. Once the patterns were established, sociocultural issues outweighed any technical issues. You can imagine an alternate history where things all worked out differently, but at present, Plan 9 is hard to view as a realistic option for any kind of mainstream corporate software work. A lot of us think that is probably more of a good thing than a bad thing, economic incentives and software design quality are often misaligned.
- brucephillips 9y agoIf not for economic impact, why do you work on Plan 9? Do you view it as a research project? A hobby?
- msingle 9y agoWorth pointing out here is harvey (http://harvey-os.org http://harvey-os.org). Which is a descendent of Plan 9 but with updates for toolchains & architecture.
- jadbox 9y agoDo you have experience with it? Does it improve upon Plan9 in any fundamental way, side from incremental toolchain/arch support?
- henesy 9y agoI mean the whole idea of Harvey is that they get Plan 9 building under gcc. Whether that's a good idea or not depends on who you talk to.
- swiley 9y agoOne of the things I like a lot about plan9 is that it doesn't use GCC.
- floren 9y agoYou can build Harvey with clang if you prefer, or possibly even pcc. Getting Harvey compiling with GCC/clang meant translating Plan 9's C dialect into ISO C. The translation process means there wasn't a lot of opportunity to introduce GCCisms, so any standards-compliant C compiler should be able to build Harvey. I say should because you may run into one or two small nits that have to be fixed before it'll work, and of course you have to find an up-to-date C compiler that's not GCC or Clang (I guess it would be good to try icc?)
- henesy 9y agoIt's nice to see Plan 9 getting some love in the limelight. There's a 9fans Discord server lying around for anyone interested: https://discord.gg/6daut5T https://discord.gg/6daut5T
- shalabhc 9y agoAnyone else feel that a hierarchical 'bytearray' file system isn't really a great base for organizing an operating system? Some limitations are that you have to share everything as 'sequence of bytes', requiring every reader to re-implement the parsing logic, and not everything fits well into a file metaphor, for instance socket style stream IO.
- emmelaich 9y agoOther organisations (isam, sparse, ...) can be laid on top of sequences. Not so much the away around. Almost every criticism of the Unix fundamentals* puts me in awe of the original design. It is so hard to maintain simplicity. Regarding parsing, yes. That would be nice but I believe you'd some isolation to ensure that. Re sockets -- shrug. * (rather than say the user space / shell)
- shalabhc 9y agoI wasn't thinking about another data storage system but more about what core abstractions should be provided by an OS? For example, could the Erlang model be an OS? Say the OS provides a namespace for a constellation of communicating processes. You still have freedom to implement various languages and configuration systems but you submit your code to a process rather than store it in a 'file system'. Storage is accessed via a process and can be switched out with another process with a different implementation, etc.
- matiasb 9y agoGreat resource!