17 ms·
Why V7 Unix matters so much
- simonblack 5y agoI came to UNIX via a v7 clone, Mark Williams' Coherent, back in 1991. I have used UNIX and UNIX-like OSs (Linux after 2001) as my everyday system ever since. After discovering how primitive the much-vaunted Windows 3.1 was, back in the early 1990s, I never went through a 'Windows as my everyday OS' phase at all.
- pjmlp 5y agoFor CLI stuff yes, for those of us into gaming and graphics, only the likes of SGI and NeXT were appealing, and they were quite out of reach. I had a big UNIX phase, and ironically my graduation thesis was to port an Objective-C based particle engine framework into MFC, as the department was getting rid of their NeXTSTEP Cube, and the department was going into Windows for graphics programming. Additionally the library archives of the faculty showed me the alternative computing universes and thus UNIX lost its magic to me.
- simonblack 5y agoUNIX was well provided for with GUIs all through the early 90s and later. The reason I knew Windows 3.1 was so primitive around 92-93 was that I had been using a GUI at least as advanced as Windows 98 would eventually become about 5 years later. (SVR4 in AT&T's UNIX, which then became Novell's UNIX ("Unixware"). At the same period Sun had its SunOS GUI (retrospectively renamed 'Solaris 1') and then its Solaris 2. My progression was Coherent (CLI) in 1991, followed by AT&T UNIX in 1992, Novell's Unixware in 1993, then Solaris 1 in 1994 and Solaris 2 from 1995 to 2001. (All my UNIXes from 1992 onwards had GUI Desktops. How else would I have used an Internet Browser called 'Mosaic'? I was a very early adopter of that new-fangled Internet. I been connected up since my Coherent days in 1991). By 2001 Linux had, for all intents and purposes, caught up with the commercial UNIXes.
- anthk 5y ago>By 2001 Linux had, for all intents and purposes, caught up with the commercial UNIXes. And even before, FVWM+RXVT ran circles around Solaris and CDE with most of the software being ported over: GCC, MESA, TCL, TK, commercial SGI tools... I know, I know, those tools and WM's already run everywhere, but most of the progress was on cheap X86 machines with limited RAM so many people even repurposed 486's with EvilWM, and lots of people were browsing the web with just Links/Lynx and the former 486. https://www.6809.org.uk/evilwm/ https://www.6809.org.uk/evilwm/ https://paparisa.unpatti.ac.id/linux_journal_archive_1994_2007/LJ/019/1091.html https://paparisa.unpatti.ac.id/linux_journal_archive_1994_20...
- pjmlp 5y agoNo they didn't, CDE wasn't available for free, so the Linux community used what they could put their hands on. Using FVWM meant being stuck with Xlib and Athena Widgets, while Tcl/Tk was anyway a Sun project, with Tk not really being usable for anything that required graphics performance.
- anthk 5y agoSolaris AND CDE, ofc Solaris bundled CDE. And Linux used FVWM + RXVT because it was a much faster alternative for common Unix work (cli and seldom graphical apps). Most people used X to run terminals and Netscape, and nothing else. And maybe Gnuplot and XV. On TK, ofc, but calling C from TCL was granted.
- pjmlp 5y agoI must have lived on an alternative universe with those HP-UX, Solaris and Aix applications. As for the rest I guess it has been a Linux thing since the start, given the CLI focus even to this day. Using fvwm meant having fun with Xlib + Athena Widgets, hardly usable. As for Tk, anything beyond providing a GUI to CLI did not escalate. DDD is probably the only surviving Tk GUI application that matters.
- marcodiego 5y agoI like the UNIX haters handbook. Mostly for 2 reasons: - some of the criticism is reasonable and - today, most of those haters probably depend on some form of UNIX one way or another.
- gjvc 5y agoVery annoying and confusing typo there in first paragraph --- CSRG when the author meant CSRC. CSRC was the Bell Labs group name, CSRG was the UCB group name.
- cturner 5y agoI feel the same - V7 is significant - but for different reasons. (1) V7 did not use a MMU, there are no shared object libraries. The whole stack feels simpler, less layered. It is straightforward to hand-craft a binary on a pre-ELF system. (2) V7 was just before select was introduced. V7 was only capable of basic networking like uucp where you give over the cpu to the networking operation. A while back I wrote some notes contrasting RetroBSD (2BSD, close to v7) to LiteBSD (4.4 BSD), http://songseed.org/dinghy/d.pic32.platform.html http://songseed.org/dinghy/d.pic32.platform.html Both ports were done by the same developer, from different versions of the same codebase, separated by four years. If you compared any releases of Solaris, FreeBSD and Linux from the last twenty years, the differences would seem trivial compared to the differences between RetroBSD and LiteBSD.
- whartung 5y agoIf V7 didn't use an MMU, how did it load programs? Did it rely on PIC code? Did it have a relocating loader that it relied upon? Curious how Unix managed to progress as far and as quickly as it did without an MMU while relying on something as notorious as C in an unprotected space. Just seems system stability would always be at stake. Just curious what their experiences were like, not questioning it.
- phicoh 5y agoThe pdp-11 had a very primitive virtual memory system. It was not page based. So you had to swap in and out entire processes (with seperate instruction and data you could leave the program in memory, swap out data, and swap in data from another process running the same program). Later pdp-11 models could have a few processes in ram at the same time.
- monocasa 5y agoOnly for very low end systems. Most PDP-11s running Unix had something like the KT-11D MMU providing true paging hardware.
- 5y ago
- retrac 5y agoIts popularity and persistence was partly because of its size. Each release got a lot bigger. A v6 system fits easily into 128 KB of RAM and there are stripped down ports that run in less. v7 is just a little bigger. Small and comprehensible. See: https://en.wikipedia.org/wiki/Lions%27_Commentary_on_UNIX_6th_Edition,_with_Source_Code https://en.wikipedia.org/wiki/Lions%27_Commentary_on_UNIX_6t... V7 also persisted well into the 80s because it was a lot easier to port. And again the size meant it could fit on small machines. In 1983, the year the IBM PC XT with a hard drive came out, commercial AT&T UNIX was up to System V which was enormous. It wouldn't have fit in the RAM or disk of the XT.
- eminence32 5y agoV7 was released in 1979. If you click on the first link in the article, you get to the wikipedia page on V7, and from there you have a screenshot[1] of what running `ls -l /usr` looked like in a terminal Two things stand out to me about this screenshot: 1. The output of `ls -l` is very very similar to what my 2021 debian+coreutils produces. 2. The contents of `/usr` are not all that different either! Directories that are common to my system and this screenshot are: games, include, lib, src. [1] https://en.wikipedia.org/wiki/Version_7_Unix#/media/File:Version_7_Unix_SIMH_PDP11_Emulation_DMR.png https://en.wikipedia.org/wiki/Version_7_Unix#/media/File:Ver...
- adrian_b 5y agoUNIX V7 (1979) had more differences compared to the older versions than all the current UNIX descendants have compared to V7. The POSIX standards correspond mostly with V7 with relatively minor additions from the later ATT and BSD UNIX versions. Many of the command line utilities that are still used today have appeared only in V7, e.g. the Bourne shell sh, sed, awk, m4, lex, basename, test, expr. Most command line utilities from V6 or older versions, even those that have the same name as later utilities, may have very different behavior.
- ChuckMcM 5y agoAlso one "follow-on" to V7 was plan9 (also from CSRC). So in many ways looking to Plan9 to see how "the forefathers of UNIX" would improve something can be instructive as well.
- p_l 5y agoThere was V8, V9 and V10 in between, with V8 using BSD as base, iirc, but creating streams and TLI/XTI instead of BSD Sockets (XTI was superior API, tbqh)
- tkhattra 5y agoTLI/XTI are from AT&T SVR3/SVR4, not Research Unix (V8, V9, V10). dmr's V8 streams were the basis for AT&T SVR3/SVR4 STREAMS (all caps!), but quite a bit simpler: https://en.wikipedia.org/wiki/STREAMS https://en.wikipedia.org/wiki/STREAMS.
- pjmlp 5y agoAnd Inferno as follow up to Plan 9, which keeps being forgotten.
- phicoh 5y agoI'm a bit confused about the 3rd paragraph. As far as I know, you had to have a v6 license for BSD not a v7. I think BSD independently implemented v7 functionality. There also the license change going from v6 to v7. With v7, universities where no longer allowed to show v7 source code to students. Many universities were teaching operating system concepts using v6 source code (and the Lion book). This inspired Andy Tanenbaum to create MINIX as a v7-like operating system written from scratch.
- marcodiego 5y agoMINIX is the case I use to illustrate the difference between source available, open source and free software. The source of MINIX was available, but its license was very restrictive. Considering it was reasonably functional before linux, the world could be a very different place had a better license been chosen. It eventually became open source and the 3.0 was even serious but it was too little too late. Besides serving intel's IME, there is very little use for it today.
- phicoh 5y agoThe way Andy Tanenbaum tells the story is that he wanted to make sure that every student who got a copy of the operating systems book, would also get a copy of the source and binaries of MINIX. For this reason he insisted that the publisher, Prentice Hall, would deliver floppies with book. Prentice Hall wasn't too keen on doing that but gave in. However, as it normally works with publishers, that also meant transfering the copyrights to them. There is another part and that is that Andy Tanenbaum didn't consider MINIX a serious operating system. It was designed as a teaching aid. Until MINIX-3 he actively resisted adding complications, like a virtual memory system. So even with an open source license, it probably would have taken a fork and rebranding to turn it into a more serious operating system. Finally, turning a micro-kernel system like MINIX into a modern unix system is far from trivial. So it is not clear how well an improved version of MINIX would have competed with *BSD.
- marcodiego 5y agoLinux was mostly a toy at first. I see no reason MINIX couldn't be as successful.
- ggm 5y agoI was shown it in 79. I didn't "get it" I wound up using it in 81/82 and got it immediately. Between the gap period I'd moved from having the thinnest understanding of what programming was, to completing a CS degree and working in systems management and networking. Once you have had to use a pre-UNIX JCL such as a TOPS-10 system, moving to a unix system was a clear step up. The Dec 10 was a fine machine. It was just harder to sequence discrete units of code into an outcome. The pipe, and a reasonably programmatic shell and related tools were the killer app moment. VMS was good, but it was still sys$system:[thing]/path arcane. And had complex database-like file abstractions which I am sure were a godsend to people in that space but IPC (using an abstraction called "mailboxes") was a nightmare. VMS had file versioning, something I think UNIX missed on. ZFS snapshots do much the same at a whole of FS level. UNIX still won, because it was more logically consistent, and had pipes. BSD4.2 brought sockets which I still hate, but they worked inside the consistency model. v7 is where I learned to type. BSD4.1 is where I learned to develop. I still have a fond memory for the v7 pdp11. unix 32V had deep roots in v7, as did the York unix port of v7 to the Vax with VM extensions. I think by then, BSD made it clear where things were going. System III -> System V were really aberrant, streams aside. If Linux hadn't emerged, I think the BSD fracture would have led naturally to something dominant in FreeBSD or NetBSD or OpenBSD. But, they lost impetus to mind-share in the world of personal computers.
- marcodiego 5y agoI'm curious: what do you use today?
- ggm 5y agoOSX which is BSD inside (mostly) ubuntu & debian derived stuff on pi4 because "it works" and freebsd on Dell rack mounts for systems backends (about ten). Some docker and k8s. Some bhyve stuff hosted on a freebsd master. An ix systems NAS on their BSD platform. I lived in netbsd on thinkpad for quite a while. I used openbsd for network edge VPN and the like. I talk to a lot of BSD people still.
- p_l 5y agoFunnily enough, BSD Sockets were essentially a crash port of code from TOPS-20... (which had much nicer shell than TOPS-10, though)
- deleted 5y ago[deleted]
- systemBuilder 5y agoI think many people (myself included) think of V7 plus virtual memory plus fast file system plus job control as the ultimate pure version of Unix. Add Berkeley sockets from 4.2 BSD and stop there. Most of the subsequent work including almost all Linux command line implementations have been perverting the Unix philosophy: simplicity and minimalism and greatest reusability first. Shared object libraries are a bloatware feature from hell. "Hey everybody let's introduce shared libraries into system V so we can bloat them and introduce new bugs due to missing or incompatible libraries - how does that sound? Because we must squeeze the last drop out of every byte of RAM, that's Sooooooo important!
- phicoh 5y agoYou probably want a virtual filesystem as well. You may want kernel modules. For anything that is not a completely static server you may want some kind of devfs. Then there is the issue of graphics output. Virtual machines require a bit of kernel support. What about container support? Personally I don't like shared libraries, but for people who do you need shared memory support. Multi-threaded programs? Support for multiple CPUs?
- edgyquant 5y agoThat may be the case but outside of my MacBook I much prefer Linux/GNU to “real” UNIX. It is improved upon in a lot of (subtle) ways and is a lot more feature rich. That’s an opinion though as people who prefer BSD/UNIX tend to think GNU is bloated and inconsistent.
- dboreham 5y agoV7 user 1978-1981 here. Reason #1 in the article is surely the main one -- it's the common evolutionary ancestor for the mainstream computing platform we use today. I think V7 also played a part in establishing the OSS environment we're used to today. It was the first major production OS for which the source was freely available, at least until lawyers put an end to that. I think this produced a generation of programmers who had enjoyed that experience and hence worked to bring it back.
- musicale 5y agoI like the simplicity of early Unix systems. Unix was originally simpler than Multics, but modern Linux is much larger (even ignoring libraries, device drivers, and networking) and much more complex – while remaining comparatively deficient in several important ways (kernel and utilities are written in an unsafe language, containers are less capable and less secure than rings, mmap is clunkier than unified storage architecture, etc..)
- slaymaker1907 5y agoIf you think mmap is clunky, you really don't want to see how Windows does it.
- vesinisa 5y ago> All other Unixes (BSD, System V, and Linux) are in some sense contaminated by outsiders who did not fully get the Unix philosophy. Both BSD Unix and System III/V added and changed things which people find objectionable and non-Unixy, so ignoring these as 'not in V7 and in the original intentions of Unix' is sometimes seen as convenient [...] Whoa, it would be very interesting to hear some (obviously optionated) examples of this. And which modern BSD "gets" the original V7 thinking best? OpenBSD?
- chasil 5y agoI haven't ever run V7 or looked at the code, but I am going to bet that run levels in SysV init are not in V7. Perhaps some people disliked that innovation as the current detractors of systemd.
- vesinisa 5y agoAnd you would not be mistaken: https://www.freebsd.org/cgi/man.cgi?query=init&apropos=0&sektion=0&manpath=Unix+Seventh+Edition&arch=default&format=html https://www.freebsd.org/cgi/man.cgi?query=init&apropos=0&sek... According to Wikipedia, runlevels were indeed introduced by SysV UNIX.
- ngcc_hk 5y agoWhat is the non-pure part of layer unix and why this spirit is great. Not mentioned in the article.