[HN Gopher] Unix's technical history is mostly old now ___________________________________________________________________ Unix's technical history is mostly old now Author : ingve Score : 54 points Date : 2022-11-25 07:54 UTC (2 days ago) (HTM) web link (utcc.utoronto.ca) (TXT) w3m dump (utcc.utoronto.ca) | joeatwork wrote: | Rob Pike's talk "Systems Software Research is Irrelevant" (given | 22 years ago!) provides some nice color here - we kinda just | settled on "good enough" in a lot of ways: | http://doc.cat-v.org/bell_labs/utah2000/utah2000.html | throwawaylinux wrote: | And in that time, the state of the art in systems software has | advanced so dramatically as to be almost unrecognizable to | someone that short length of time ago. In programming | interfaces, bringing the hypervisor into the OS, concurrency | and scalability and performance techniques, etc. | | I think the subject is right: systems software "research" is | irrelevant. Because academia could no longer keep up. | physPop wrote: | "All these things academics invented that are now | commonplace..." | throwawaylinux wrote: | Academics didn't invent them. | | IBM and Bell Labs, maybe. | aidenn0 wrote: | None of those things is novel in academia though... | throwawaylinux wrote: | No, they couldn't be, because academia didn't invent them. | I think academia has been too busy proving how wonderful | microkernels are for the past 50 years to do much useful | real systems work. | neilk wrote: | > (there has been no large move to adopt ACLs or file attributes, | for example, although file capabilities have snuck into common | use on Linux systems) | | This is largely true for any server you're likely to ssh into. | But the most common Linux distributions are Android which make | extensive use of SELinux features. | skissane wrote: | Once upon a time, it was common to have time-shared multiuser | Unix systems - a single server and everyone in the department | could login and use it simultaneously. Filesystem permissions - | first the classic mode bits, then ACLs - were originally | designed for that use case. | | While such systems still exist, they are a much smaller | percentage of all installed systems than they used to be. Most | contemporary Unix(-like) systems fall into one of two | categories: | | (a) single-user machines (such as a laptop) | | (b) application servers, database servers, etc, which serve | many users, but those users are defined at the application | layer, the OS and filesystem don't know anything about them | | Maybe part of the reason why filesystem ACL adoption is weaker | than people expected, is that (a) and (b) don't have the same | need for filesystem ACLs as the classic multi-user timesharing | environments do. | | > But the most common Linux distributions are Android which | make extensive use of SELinux features | | SELinux context and filesystem ACLs are two separate things. I | see many machines with heaps of the former and little of the | later (such as most Red Hat boxes). | | Even with single-user machines, there is still some value in | inter-process security - application sandboxing, corporate- | managed devices, etc - but there are many technologies | available now to meet those requirements, and filesystem ACLs | are often not the most useful among them. | eru wrote: | We still do something like time-sharing these days, but often | it's on the level of VMs instead of OS processes. | lkrubner wrote: | If you have the slightest interest in the history of operating | systems, I strongly recommend reading Joe Armstrong's thesis. | While it is mostly about Erlang, he also goes into detail about | many of the experimental systems of the 1960s, 1970s and 1980s, | which gave him his ideas: | | https://erlang.org/download/armstrong_thesis_2003.pdf | | Chapter 5 is especially relevant: | | excerpt: | | What is a fault-tolerant system and how can we program it? This | question is central to this thesis and to our understanding of | how to build fault-tolerant systems. In this chapter we define | what we mean by "fault-tolerance" and present a specific method | for programing fault-tolerant systems. We start with a couple of | quotations: | | We say a system is fault-tolerant if its programs can be properly | executed despite the occurrence of logic faults. -- [16] | | ... | | To design and build a fault-tolerant system, you must under- | stand how the system should work, how it might fail, and what | kinds of errors can occur. Error detection is an essential com- | ponent of fault tolerance. That is, if you know an error has | occurred, you might be able to tolerate it by replacing the | ocending component, using an alternative means of compu- tation, | or raising an exception. However, you want to avoid adding | unnecessary complexity to enable fault tolerance be- cause that | complexity could result in a less reliable system. -- Dugan | quoted in Voas [67]. | | The presentation here follows Dugan's advice, I explain exactly | what happens when an abnormal condition is detected and how we | can make a sodware structure which detects and corrects errors. | | The remainder of this chapter describes: | | * A strategy for programming fault-tolerance -- the strategy is | to fail immediately if you cannot correct an error and then try | to do some- thing that is simpler to achieve. | | * Supervision hierarchies -- these are hierarchical organisations | of tasks. | | * Well-behaved functions -- are functions which are supposed to | work correctly. The generation of an exception in a well-behaved | function is interpreted as a failure. | rramadass wrote: | Just an FYI in case you don't already know of this, i found the | following two papers by Armstrong useful too; | | * A History of Erlang | | * The Development of Erlang | retrac wrote: | This is why I'm interested in old, now mostly obsolete/dead | operating systems. No one has really felt free or able to break | out of the UNIX mould, since. And we've been using the mould for | a long time. It wasn't always so uniform. There have been some | craaaaazy things out there, that we simply never see today | because it doesn't fit. Off the top of my head: | | * ITS (of PDP-10 hacker fame) - processes could debug and | introspect their child processes. The debugger was always | available, basically. The operating system provided support for | breakpoints, single-stepping, examining process memory, etc. | Whatever part of the system manages processes, is the natural | place for the debugger, really. Some of this has been brought to | Unix systems recently, but you still can't trivially freeze a | process, tweak a few values in its memory, and resume it as an | integrated part of the operating system. Why not? It seems very | basic to an operating system, now that I think about it. | | * KeyKOS (developed by Tymshare for their commercial computing | services in the 1970s) - A capability operating system. If | everything in UNIX was a file, then everything in KeyKOS was a | memory page, and capabilities (keys) to access those pages. The | kernel has no state that isn't calculated from values in the | virtual memory storage. The system snapshots the virtual memory | state regularly. There are subtle consequences from this. | Executing processes are effectively memory-mapped files that | constantly rewrite themselves, with only the snapshots being | written out. Snapshotting the virtual memory state of the system | snapshots everything -- including the state of running processes. | There's no need for a file system, just a means to map names to | sets of pages, which is done by an ordinary process. After a | crash, processes and their state are internally consistent, and | continue running from their last snapshot. For those who are | intrigued, there's a good introduction, written in 1979, by the | system's designers available here: http://cap- | lore.com/CapTheory/upenn/Gnosis/Gnosis.html (It was GNOSIS before | being renamed KeyKOS.) And a later document written in the 90s | aimed at UNIX users making the case: http://cap- | lore.com/CapTheory/upenn/NanoKernel/NanoKernel.ht... Some work on | capability systems continues, but it seems the lessons learned | have largely been forgotten. | eru wrote: | Ironically, Microsoft's Windows is one of the only big non-Unix | operating systems out there. I say ironically, because people | seldom bring up the Microsoft ecosystem as a beacon of adding | to diversity. | frankharv wrote: | Didn't Windows Network stack come from NetBSD? There were | many BSD contributions to Windows.. BSD386 was a direct Unix | derivative I would argue. | eru wrote: | Of course, Windows (and especially Windows NT) learned and | borrowed from the Unix world. But it retains a distinct | personality and lineage. | smegger001 wrote: | Correct me if i am wrong but isn't the NT design heavily | based off of (some would say a rip off of) VMS, Microsoft | having poached much of DEC's OS dev team including chief | architect David Cuttler. | dhosek wrote: | I think that a lot of interesting things were lost from the IBM | and DEC operating systems. I spent a lot of time in VM/CMS and | VAX/VMS (plus a little MVS/TSO) in the 80s and 90s and my Unix | time was relatively limited for quite a while. I really liked | Rexx (IBM's scripting language which they brought into OS/2, | but is now pretty much dead) and the way that command line | options for VMS programs could be declared independently of the | executable (plus its automatic allowance for abbreviations | where you could abbreviate a command to its minimal unique | prefix). | AlbertCory wrote: | Sometime in the 90s, I was at Oracle and got invited to what was | probably the most boring meeting I've ever attended in my life: | | A bunch of systems admins who were puzzling over how to create a | standard way to administer Unix systems. The premise was "in the | old IBM mainframe days, every shop ran the exact same way, so it | was easy to train a new hire. Now, with Unix, there are a million | different customs, so how do we standardize it?" | | You probably never even thought this was a problem. My big | problem was staying awake. I guess now that it's all Linux, it's | easier. Back then, there was HP-UX, IBM AIX, Sequent's whatever- | it-was-called, Pyramid, SCO & all the other PC variants... | | The group was called Moses, which makes it almost unsearchable | since there are so many other uses of that word. | tjr225 wrote: | meadhbh-hamrick wrote: | meadhbh-hamrick wrote: | It sounds almost like the OP is bemoaning the stability of Unix- | like systems. I like that ls, cd, mkdir, emacs and cp all work | more or less the same way. And as much as I sometimes curse at | autotools, I appreciate how nice it is I can generally just type | `./configure` and something reasonable happens. | sanxiyn wrote: | Many important things happened to Unix in 1990s and 2000s. dpkg | and apt come to mind for 1990s, and udev and systemd for 2000s. | asveikau wrote: | I was about to name some innovations from Linux and *BSD | worlds, but that is not technically Unix. (*BSD is Unix derived | but cannot use the trademark). So I think your example is not | technically Unix technical history. | | But if we could include these things, I'd say also: | | * Epoll and kqueue. The recognition that select(2) and later | poll(2) do not scale. | | * Interactivity. One thing I remember about 90s Unix is how | terrible the usability was on those old terminal emulators or | termcaps. You'd type a backspace and see ^H. Arrow keys that | didn't do the right thing. You'd log into a Linux box and by | contrast you'd get good tab completion, colors, etc. | | * Secure defaults. First noticed this in OpenBSD. But the | internet forced everybody to reconsider the set of daemons you | get on a default install. | | * Deprecation of unsafe libc functions | sanxiyn wrote: | "Linux is not Unix" is useless pedantry, but sure, Solaris | SMF did it earlier than systemd, both dependency based boot | and parallel boot. | contingencies wrote: | _Hardware has changed dramatically; software is stagnant._ - Rob | Pike (2000) | | ... added to https://github.com/globalcitizen/taoup | johannes1234321 wrote: | > I think that if you took a Unix user from the early 1990s and | dropped them into a 2022 Unix system via SSH, they wouldn't find | much that was majorly different in the experience. | | That is probably true as many of those old tools kept | compatibility, but at the same time we got a whole bunch of new | tools, more powerful than `ps` for gaining more insights. For an | example look at all the changes in service management, eBPF and | such. Not to mention that the shell prompt itself (see zsh etc.) | is more powerful than back then, which could give a very | different experience. | | So yeah, old tools keep mostly working, but improvement goes on. | chungy wrote: | Linux's refusal to adopt RichACLs/NFSv4 ACLs forever perplexes | me, and maybe some day I'll be pleasantly surprised when they do | show up. | | A complete superset of NTFS's ACLs, thus providing good cross- | platform compatibility, and already implemented in illumos, Mac | OS X, and FreeBSD, Linux is the only holdout on them. | wmf wrote: | How many people use ACLs? | pinewurst wrote: | In the real world only a small minority even use NFSv4 and | that mostly for the figleaf of encryption via (yuck!) | Kerberos. As a (too) long time storage industry person, I | have hard numbers on this. | chungy wrote: | It's primarily a corporate-level thing, but just as Windows | has a strong set of ACLs that people at home ignore, it could | be the same scenario on Linux. | asveikau wrote: | This is a Yogi Berra type comment. "ACLs aren't supported. | Nobody uses them." | wmf wrote: | Not really. Linux supports "old" posix ACLs and chungy is | complaining that it doesn't support "new" rich ACLs. My | point is why bother upgrading a feature that no one uses. | nerdponx wrote: | I have used them to set up a group-readable/writable | directory to ensure that all subdirectories remain so. | throw0101c wrote: | > _Linux 's refusal to adopt RichACLs/NFSv4 ACLs forever | perplexes me, and maybe some day I'll be pleasantly surprised | when they do show up._ | | As someone who has had to deal with NFSv4-styles ACLs (on an | Isilon server handling Linux HPC clients): they can get really | messy, really quickly (especially the inheritance aspect of | them). | tyingq wrote: | _" I think that if you took a Unix user from the early 1990s and | dropped them into a 2022 Unix system via SSH, they wouldn't find | much that was majorly different in the experience."_ | | I agree. In fact, since there's fewer actively used unix | variants, the same job would seem simpler in many ways. I think | the fragmentation of tech above the OS would be much more | intimidating. So many more languages, build+deploy systems, | frameworks, things like api gateways, caching platforms, load | balancers, and so on. In the 1990's an admin could maintain a | decent amount of personal knowledge about what a developer might | be doing on the platform. | mannyv wrote: | As someone who used to administer solaris, sunos, hpux, and aix | boxes, i can almost guarantee that the first thing they'd say | is "What the fuck is up with this systemd shit?" Because i say | that all the time. | semireg wrote: | In my early 20s I was a Linux sysadmin contractor in the | Midwest US and got dropped into a job site where the core team | was being offshored. I had to quickly learn how to maintain | HPUX, AIX and some Solaris boxes using docs in the form of word | docs scattered across network drives. These old admins hated | Linux... and I hated the unfamiliarity of the non-Linux | systems. How could anyone live with a shell where tab | completion wasn't a feature? Gag! | Cupertino95014 wrote: | You couldn't count on emacs being available on some random | Unix system. Bad times, those were. | AnIdiotOnTheNet wrote: | I feel the same way today when I can't tab complete parameter | or variable names in typical unix shells. ___________________________________________________________________ (page generated 2022-11-28 05:00 UTC)