Wandering Thoughts archives

2014-01-29

One cause of Linux's popularity among Unixes

Regardless of what you feel about it, I think that most people can agree that Linux is winning whatever is left of the Unix wars. It isn't the only Unix left but for a fairly long time now it's been the leading one, often the default choice. You can attribute this to good PR if you want to, but I happen to think that that's a mistake. Linux has attracted people partly because it has genuine attractions.

In light of my rant about the waste inherent in building packages yourself, it has struck me that one such advantage has been Linux's general wide availability of packages. As I mentioned, system administrators really appreciate not having to spend their limited time compiling ordinary things and Linux is very good at that; most major Linux distributions will give you a precompiled version of almost any standard Unix program you could want (or at least a precompiled program to do almost any standard job). I don't think it's an accident that one of the long term favorite distributions is Debian, which has one of the biggest package archives going.

(Prepackaged software is not good enough if you need a specific version of something compiled in a specific way. But for many Unix machines you just need a working and reasonably current version of whatever. And there are a lot of packages on many machines where the exact details are not crucial.)

At this point I have to mention FreeBSD's ports collection, which even comes in precompiled packages; logically one would expect this to be just as good a selling point for FreeBSD as a Linux distribution with a similar package selection. However, I'm not convinced that it is in practice, and for why I'll point at the name: 'ports'. Well, more what the name means or is perceived as meaning.

Debian's vast collection of packages are all Debian together. Some of them are more important than others, but they are all part of the Debian whole. The dividing line between really important and less and less important is both relatively opaque to outsiders and somewhat subject to debate; it can get pushed back and forth if people want. By contrast at least to an outsider FreeBSD has a relatively sharp dividing line; you have FreeBSD core and then you have ports. Ports is clearly not the same and to drive the point home they install things into /usr/local instead of /usr. FreeBSD is probably at least as committed to ports as, say, Ubuntu is to packages in universe. But I'm not convinced that non-FreeBSD sysadmins who are looking at the situation really believe down in their guts that FreeBSD is as committed to ports as Ubuntu is to main (even if it is, and I don't believe it's that committed to all ports). And I think that that makes a difference.

(I am talking about non-FreeBSD sysadmins here because these are often the people who are making decisions about whether or not to use FreeBSD. Also that's the situation I'm in myself, so I don't know how it looks from the inside but I can talk with at least a little bit of authority how it feels from the outside.)

PS: I haven't mentioned commercial Unixes here because oh boy package availability on commercial Unixes, that's a funny joke. Provided by third parties at best. Red Hat Enterprise Linux is sort of in the same boat but at least they woke up and I think started doing something with EPEL.

LinuxPopularityOneCause written at 01:09:23; Add Comment

2014-01-25

The origin of RCS (the version control system)

Let's start with the tweets:

@johnregehr: quick! who remembers a revision control system before RCS?

@thatcks: SCCS. Bonus trivia: RCS exists because getting SCCS required paying AT&T extra money and universities don't have that.

I've mentioned this before in passing, but I might as well tell the full story (or at least folklore) here. The disclaimer is that this is the story as I heard it, not definitive history. A lot of Unix history goes around as folklore, or went around in the days when people were still passing Unix history around.

Version 7 Unix didn't ship with any version control system at all. SCCS, the first Unix version control system, first started appearing in in AT&T's PWB. PWB and things unique to it were not covered by AT&T's generous V7 university source code licenses; where you could get them at all (and I'm not sure outsiders could in any form before System III) AT&T apparently wanted extra money for them. Universities of course did not feel like paying extra money for niceties and anyways they weren't using PWB, they were using V7 or later BSD and so would have had to port anything they wanted from PWB to BSD. All of this meant that if you were using Unix at a university in the late 1970s and early 1980s you could look wistfully on SCCS from afar but you almost certainly could not get a copy.

Which is where RCS comes from. As the Wikipedia entry helpfully mentions, Walter Tichy wrote the initial version of RCS while at Purdue, where he had access to V7 and BSD but I assume not PWB. As the folklore goes, he wanted version control, could not get SCCS, and so wrote his own. As one did with Unix programs in an academic environment at the time, he released it for general use. Since quite a lot of universities were in a similar position of wanting some sort of version control on their Unix systems but not having SCCS, it got widely adopted.

As I mentioned before RCS required (V7) Unix source code (specifically for diff), which might strike you as odd if Tichy wrote it from scratch. As I remember the story, RCS required some additional diff features and and in an early 1980s university environment with V7 and BSD source code the easiest way for Tichy to get that was to modify the BSD diff to support what RCS needed. The reason you can get RCS widely today is GNU diff, which is both free and directly supports the features that RCS needs without any patching.

(I think that one of the diff features RCS needed was a three-way diff. I believe it may have also wanted a somewhat different format of diff output, given GNU diff's -n argument.)

(The official RCS home page has some early RCS papers online.)

RCSOrigin written at 00:20:55; Add Comment


Page tools: See As Normal.
Search:
Login: Password:
Atom Syndication: Recent Pages, Recent Comments.

This dinky wiki is brought to you by the Insane Hackers Guild, Python sub-branch.