What is UNIX, Anyway? 218
Lieutenant writes "Technology professionals have loosely used the term "UNIX" since the first person had to explain the difference between the Berkeley and AT&T flavors, so it's not surprising to find as many UNIX standards as there are versions of the operating system. Peter Seebach wades through the wellspring of UNIX standards and sorts them out for you, concluding that the rumors of the death of UNIX are (as usual) greatly exaggerated."
Not a bad article. (Score:3, Interesting)
Re:Not a bad article. (Score:5, Informative)
http://www.levenez.com/unix/ [levenez.com]
Re:Not a bad article. (Score:2)
Re:Not a bad article. (Score:2)
Are you talking 50 languages, or different versions?
I see:
...Within the first screen. I didn't count different versions of the same language (e.g. Fortran I, Fortran II), but I did count close relatives (e.g., Lisp, ML, Scheme). Still, obviously more than fifty.
Who has too much time on their hands NOW?!?
Re:Not a bad article. (Score:5, Informative)
Re:Not a bad article. (Score:3, Interesting)
Good point, I think the most distinguishing factor is marketing, Microsoft has been consistantly been able to map out a clear transition from API to API (as well as inserting a dash of FUD when required), even if customers and/or ISVs knew there was going to be transition pain, Microsoft
Re:Not a bad article. (Score:3, Insightful)
Not really.
Firstly, because that list is artificially inflated ("Win32, WinNT, WinXP" are all the same thing - Win32).
Secondly, because the unix side is just as bad, if you compare apples to apples (ie: throw X and associated libs into the mix - how many widget libraries can you name ?).
Thirdly, because binary compatibility on Windows is very well maintained. It's not uncommon for those twenty year old DOS and Win16 binaries to run unmodified on Windows XP or 2003 (and probably Vista).
Re:Not a bad article. (Score:3, Informative)
16-bit windows and dos apps only work if they are non-trivial. I can't upgrade our work computers out of windows 95 and windows 98 because we depend on non-trivial software that doesn't run on the NT line. So MSFT is just as bad as everyone else. Try running some of the early versions of word in XP or win2k3 it doesn't work, and the modern versions can't read the older formats. been there. tried that, considered it lost.
Most linux problems aren't binaries but library and their va
Re:Not a bad article. (Score:3, Insightful)
I hate Microsoft as much as anyone, but if you have apps that run on Win95, but not NT-based systems, it's because they violate some fundamental rules of Window's APIs. Win95/98 were notoriously lax about enforcing those rules, which was certainly a big factor in the unreliability of Win95/98.
Re:Not a bad article. (Score:2)
It's why I give the Samba guys credit. MSFT has purposely broken code in their networking to slow down others from using it outside of windows. Listen to the Samba guys talk about it sometime. Even with XP and win2k3 msft is still at it.
Re:Not a bad article. (Score:2)
Re:Not a bad article. (Score:2)
Re:Not a bad article. (Score:2, Informative)
Particularly since the "Win32, WinNT, WinXP" part of it are all the same thing, so the real progression is:
DOS, Win16, OS/2, Win32, .NET.
If only that were true! (Score:5, Informative)
There's a common subset of functions available on both 9x and NT flavors of Windows. (With different bugs and sometimes different supported flags, different restrictions on use, etc). Then there's a bunch of functions that only work on NT-based flavors of Windows, not 9x-based. And the opposite is also true. Then XP came along, then Server 2003, each adding a bunch of new stuff to the API that Microsoft (unfortunately) did not go back and also add to the earlier versions of Windows.
There really are at least 3 distinct flavors of the Win32 API, and you have to be careful what functions you use if you want your program to run on all three of them.
For an example, check out the documentation for the CreateWindowEx function [microsoft.com].
If you scroll to the bottom, they describe several of the differences in the behaviour of this function on different versions of Windows ranging from 95 to XP.
This situation could have been avoided if Microsoft had had the foresight to separate the Win32 API implementation from the rest of the OS so it could be upgraded independently.
Re:If only that were true! (Score:5, Informative)
I can only think of one feature that's available on Windows 9x but not NT, which isn't part of the Internet Explorer toolkit, and it's a very rarely used feature (although it's just the kind of thing I use). Almost universally, the API on NT is a superset of that available on 9x; though it is true that occasionally some small implementation details different between the two.
Then XP came along, then Server 2003, each adding a bunch of new stuff to the API that Microsoft (unfortunately) did not go back and also add to the earlier versions of Windows.
Correct. The Windows API evolves over time, adding new and often useful features to new versions, often involving new features of the kernel. In nearly all cases these changes are backwards compatible.
There really are at least 3 distinct flavors of the Win32 API, and you have to be careful what functions you use if you want your program to run on all three of them.
Windows 9x, Windows NT, and..? Well, I suppose you could call the ANSI/Unicode versions different, even though the differences between the implementations are usually very clear-cut (i.e. path strings are always handled in certain different ways).
For an example, check out the documentation for the CreateWindowEx function.
If you scroll to the bottom, they describe several of the differences in the behaviour of this function on different versions of Windows ranging from 95 to XP.
That serves as an excellent demonstration of what I've said: the differences are usually minor enough to not be a concern, and that new features are added in a backward compatible way. Take a look: one of those differences refers to a feature that was added in XP (WS_EX_COMPOSITED), another refers to a kernel limitation of 9x, and the third refers to a feature that was added in 2000. Of those, the only "serious" one is the 9x kernel limitation, and even then it's not particularly important.
Re:If only that were true! (Score:2, Funny)
Have you ever programmed on Unix/BSD/Linux systems? When writing non-trivial applications, there are substantial differences among them. Why do you think GNU autoconf was created?
Having programmed on both, I can say that Win32 is, and always has been, much more uniform across variants of the system than Unix/BSD/Linux. That doesn't mean it's better, or more consistent on any givem implementation. I generally prefer the Unix/BSD/Linux API
but don't forget (Score:2)
COM
COM+
DCOM
There are are probably more, but it seems like MS changes APIs every few years.
Re:Not a bad article. (Score:2)
Kind of not true also. One of the main drives behind
Also I really don't think Microsoft ever wanted anyone going to OS/2.
Re:Not a bad article. (Score:2)
As to
Re:Not a bad article. (Score:2)
it's ok (Score:5, Funny)
Re:it's ok (Score:3, Funny)
The IBM Unix variant, AIX, is rumored to have been developed by space aliens
Re:it's ok (Score:4, Funny)
There are 11 whole posts (so far) on a story where geeks get to stroke their egos by showing their ignorance and calling everything in sight a version of Unix.
Heck, I didn't even see anybody post a *BSD is Dying troll.
Re:it's ok (Score:5, Funny)
That's because it is already dead.
Re:it's ok (Score:2)
Re:it's ok (Score:2)
That's because it is already dead.
Really? Troll is dead already?
Good! It was annoying because of it's boring stupidity...
Single Unix Standard, Version 3 (Score:5, Interesting)
I code for this API and the sources end up being source compatible. But then there are library paths and stuff, which is why even something as homogenous as Linux is forced to create LSB [linuxbase.org] standard. The API standard OTOH, is crystal clear - look at the API tables [unix.org] in terms of availability. And yeah, my project is called Portable.net [gnu.org], so I've put in my time writing portable code for various platforms (even BeOS [dotgnu.info] and SkyOS [osnews.com]). Wish the threading models worked the same, that's all :)
There is just *nixRe:Single Unix Standard, Version 3 (Score:5, Insightful)
Oh boy, you haven't deployed any code in the real world, have you?
The total number of conformant implementations of SuSv3 (or even v2) is zero. None. Zip. Zilch. Nada.
Everything, including the linux/glibc, BSD, and proprietary unix-like platforms, differs from the spec in subtle and complicated ways. SuS and POSIX are paper standards, not things that you will encounter in software. They're fodder for managers and marketing; they have little or no engineering value. And the differences are important to the point where you have to modify the source of your program to support other platforms, once the program becomes sufficiently complicated. As a rule, a complex program with no platform-specific hacks is a complex program that has bugs on some platforms which have not been found/fixed yet.
This isn't likely to change in a useful manner. Most of the platforms approximate SuS/POSIX as closely as they can without breaking existing applications. Successive revisions of SuS/POSIX become more vague in order to encompass more of the things that happen in the real world. So a good way to look at these two is to consider them an inefficient and fairly inaccurate attempt at documenting the common features of a set of platforms. If this process was completed perfectly, the resulting document would be so vague and cover so many platform-specific hacks that it would be of limited value. Since the documents get updated much more slowly than the software, they will probably never be completed to a satisfactory level of accuracy.
Re:Single Unix Standard, Version 3 (Score:5, Interesting)
So, the unix vendors do the next best thing: they make whatever changes they can to bring their platforms to uniformity without breaking backwards compatibility, and they maintain a common standards document that documents the cross-platform compatible functionality. When they inevitably make mistakes in the documentation process, they remove specifications that they cannot implement complatibly in all unix systems.
The most important point here is the intent of the unix vendors: They are working towards compatibility wherever they can, and they are striving for accurate documentation of the compatible functionality. There's nothing to disparage in their actions, even if they make the occasional mistake -- at least they are improving all the time.
Even linux developers are known to deviate from the SUS occasionally, but they too do strive to implement the standard wherever possible. Yes, the Single Unix Specification is incomplete and flawed, but it's the best thing we've got.
Re:Single Unix Standard, Version 3 (Score:2)
MSDOS is between *nix and VMS?
Re:Single Unix Standard, Version 3 (Score:2)
Re:Single Unix Standard, Version 3 (Score:3, Informative)
UNIX:
DOS: C:\FILES\STUFF\FOO.TXT
VMS: SYS$SYSDEVICE:[FILES.STUFF]FOO.TXT;1
Though DOS and VMS both use "DIR", while UNIX uses "ls". However, both DOS and UNIX use "cd", where VMS uses "SET DEFAULT". DOS and UNIX also use "mkdir", where VMS uses "CREATE/DIRECTORY". Though UNIX uses "-foo" for command
Re:Single Unix Standard, Version 3 (Score:2)
Neither did DOS, since the '/' character wasn't allowed to appear in file names. It's something that, growing up with DOS, I still haven't quite got used to with UNIX and still find myself typing 'cd..' (which I've now set up as an alias) or 'ls-lah' and getting an error.
Re:Single Unix Standard, Version 3 (Score:2)
First Sale Doctrine (Score:5, Interesting)
Re:First Sale Doctrine (Score:3, Funny)
Re:First Sale Doctrine (Score:5, Informative)
Re:First Sale Doctrine (Score:3, Insightful)
UNIX ? (Score:2)
UNIX is not UNIX ! Hmm wait... no sorry I heard that or something close somewhere else.
Re:UNIX ? (Score:5, Funny)
(It's actually a giant space clam that wants you to give all your money to L Ron Hubbard)
Re:UNIX ? (Score:2, Informative)
I know why I'm using FreeBSD.
old paradigms (Score:5, Insightful)
- everything is a file
- every file is a stream of bytes
- do one thing and one thing well, Keep It Simple Stupid
- human readable/editable config files
- principle of least privilege
- services as daemon processes
- clear separation of kernel and userland (although this one is debatable)
- multi-user environment (despite the name)
- remote access facilities
- console/automation oriented, powerful shells
-
?
well, that's just a few things that come to my (linux/bsd slanted) view of what (a modern) unix is...
Re:old paradigms (Score:5, Insightful)
[*]"least privilege" - MACs would predate setuid() if that were the case. For instance
Re:old paradigms (Score:2)
don't many programs under BSDs do it like that too, BTW?
i don't quite understand your MAC commentary. if i had meant MAC i would've said so.
The principle of least privilege requires that a user be given no more privilege than necessary to p
Re:old paradigms (Score:4, Interesting)
Re:old paradigms (Score:2, Informative)
The setuid bit on an executable file gives you the privileges of the owner of the file. It is mostly used as setuid-root, but doesn't have to be.
setuid(2) is a different matter of course, because you need to have uid 0 for it to work at all.
Re:old paradigms (Score:2)
I use setuid all the time, but never as root. In particular, running game servers, I always have crond check to make sure all is well, and restart if needed as a regular user. If there is ever a buffer overflow issue with the game daemon, at least the access would only be as the user, not root.
Re:old paradigms (Score:2)
Heirarchical file system
attach new filesystem anywhere in the old one
networking (UUCP, Ethernet, mail, etc)
User name based login accounts (with 8 char limit :-)
Re:old paradigms (Score:2)
No. Not everything is a file in Unix (exceptions started piling on as hacks for originially unintended devices, etcetera started piling on), that's why there is Plan9 - where everything is a file - from the original creators of Unix at Bell labs.
http://cm.bell-labs.com/wiki/plan9/plan_9_wiki/ [bell-labs.com]
Correlation, Causation, LSD (Score:5, Funny)
"There were only two things to come out of Berkeley in the 60's, LSD and Unix. I doubt that is a coincidence."
MISQUOTE (Score:4, Informative)
I vote for syslog (Score:2)
Re:I vote for syslog (Score:5, Funny)
Re:I vote for syslog (Score:4, Funny)
Re:Correlation, Causation, LSD (Score:2)
Two things came out of Berkeley in the 60's, BSD and LSD.
60's??? WTF??? (Score:3, Interesting)
great, we slashdotted IBM and Coral Cache :-P (Score:3)
Mirrordot has it (Score:3, Informative)
Thanks (Score:2)
Re:great, we slashdotted IBM and Coral Cache :-P (Score:2)
Had to be said. (Score:4, Funny)
The Spirit of UNIX (Score:5, Interesting)
I routinely use printed Seventh Edition (Bell Labs Research) UNIX manuals, even when writing C for Linux. It also helps one remain blissfully ignorant of the 'cat -v' option and similar excrescences. Also the Tenth Edition UNIX manuals. I have to remember the changes introduced by Standard C and the like, but it's convenient to have the essence of the modern-day manual in printed form. Of course, there are some people out there who delight in using Fifth, Sixth, Seventh etc Editions on PDP-11s etc - see the PDP-11 UNIX Preservation Society, http://minnie.tuhs.org/PUPS/ [tuhs.org]. I wish I had a larger garage! How much would a PDP-11/40 cost me now, anyway?
Peter Salus' book "A Quarter Century of UNIX", Addison-Wesley, 1994 (corrected 1995), ISBN 0-201-547771-5 is a good informal UNIX history.
"Those who do not understand UNIX are condemned to reinvent it -- badly."
-- Henry Spencer
Re:The Spirit of UNIX (Score:2)
I know somebody who probably threw away 20 or so 11/84 and 11/83 systems recently.
I think your answer is "not much" if you know which bin to look in.
Re:The Spirit of UNIX (Score:2)
Correction (Score:4, Informative)
Re:The Spirit of UNIX (Score:2)
Answer (Score:5, Funny)
UNIX hater's handbook. (Score:3, Interesting)
it's funny AND true.
/ seriously thinks UNIX like systems need to go the way of VAXen.
// well, actually not so much the systems themselves, but the assinine UNIX mentality of "harder is better" and "more documentation eliminates the need for good design.", which set back Computer Science departments and academia 15 years behind industry.
/// fortunately, one of the unintended side-effects of Linux is that the mentality, at least amongst Linux users, is slowly, ever so slowly, fading away.
Re:UNIX hater's handbook. (Score:4, Funny)
Hmm.. yes, in
Re:UNIX hater's handbook. (Score:4, Insightful)
Which is why we have BSD.
Re:UNIX hater's handbook. (Score:5, Insightful)
This attitude was (and to a great degree still is, though somewhat less than before) is the single most cancerous and evil mode of thinking in computer science, and yet it went widely accepted ("unchallenged" would be wrong) in Unix circles and associated hanger-on CS departments for years. The correct attitude should have been "if users are making the same mistakes and being tripped up in the same places over and over again, then clearly the fault lies with the tools themsleves."
Now, I'm sure if I go through the usual examples of this theory, I'll get back the usual result: some unenlightened idiot telling me that EMACS and/or the CLI are faster at the end of the day and therefore better, and that the problem is simply "more training." Thankfully, in 2006, I hope I don't have to explain why this mode of thinking is outdated (well, never right in the first place) nonsense, since most of you have finally woken up to these facts:
Re:UNIX hater's handbook. (Score:3, Insightful)
Let's look at powertools, cars, airplanes, guns, knives or other things that modern people use. All of them have measures designed to stop people from hurting themselves and require no t
Re:UNIX hater's handbook. (Score:3, Interesting)
Re:UNIX hater's handbook. (Score:3, Informative)
Re:UNIX hater's handbook. (Score:3, Interesting)
Define it by its limitations (Score:2)
http://web.mit.edu/~simsong/www/ugh.pdf [mit.edu]
Which, despite the name is not a mindless bashfest and is interesting.
--Plan9/Inferno and Lisp Machine advocate--
Re:Define it by its limitations (Score:3, Informative)
Re:Define it by its limitations (Score:3, Interesting)
Re:Define it by its limitations (Score:3, Funny)
I especially like the opening quote:
"If the designers of X Windows built cars, there would be no fewer
than five steering wheels hidden about the cockpit, none of which fol-
lowed the same principles--but you'd be able to shift gears with your
car stereo. Useful feature, that."--Marcus J. Ranum, Digital Equipment Corporation
Surely, if Unix was a stable and standardised API (Score:2)
Last time I checked, UNIX was a trademark (Score:4, Insightful)
http://www.unix.org/ [unix.org]
http://www.kernel.org/ [kernel.org]
Also Windows aren't OS. It's an opening constructed in a wall or roof that functions to admit light or air.
Lastly Apple is not a company. It's a god damn fruit. Why is that ESPECIALLY MacOS users don't seem to get that Apple Computers are PC!?!? Try to ask a MacOS user this. "Do you have a PC?" I bet, 99% of them will say "No, I don't have PC, but I have a Mac." WTF??
Re:Last time I checked, UNIX was a trademark (Score:3, Funny)
Re:Last time I checked, UNIX was a trademark (Score:2)
In which case, what is Nexenta [nexenta.com] making? They're using Debian GNU/Linux but with the OpenSolaris kernel - they themselves can't decide between "NexentaOS" and "GNU/OpenSolaris". The result doesn't appear to fit your taxonomy, but still works really well. I think we'll see more and more of these rematches of userland and kernel appearing. Easy assumptions about the superiority of $KERNEL or $USERLAND are way overdue for a challenge.
Re:Last time I checked, UNIX was a trademark (Score:2)
I don't know, I don't care, I wouldn't be surprised if somoene was working on it, but I wouldn't be particularly interested in the project. I've been using GNU since the mid/late-eighties, and it's the part I really care about. I started with GNU on DOS and OS/2 and XENIX and SunOS, and preferred it because it gave me the highest level of portability I could find at the time. Frankly, I no longer care what kernel I'm using, as long as I'm using a GNU-b
still an amazing OS (Score:4, Interesting)
I've been working with Unix/Solaris/SunOS/Linux/AIX/AUX/BSD/ATT Unix, et. al. now for over twenty years. I mostly love the environment, I'm self-taught, and never have stopped discovering new and cool (and sometimes amazing) things about how Unix works.
I've pretty much always always been able to sit down and immediately be productive in a Unix environment. Things are stored and arranged in a surprisingly consistent way (not always in the same places, but one of a few organizations (/etc vs. /usr/etc)), and for those hard to find arrangements you need only know "find".
Considering how many different Unixes there are it's actually impressive how compatible and consistent they are across the Unix universe. It's only my opinion, but I find adapting and adjusting to the Unixes far easier than the various versions of Windows.
portability wtf (Score:2)
Yeah right. We're down to complaining about porting apps between versions of the same distribution of linux and here's a guy claiming that porting hassles between UNIX systems ar long forgotten. Come on, you can't claim that with a straight face even if you are working for Microsoft.
It's not like your 1993 binary of wolfenstein will work out of the box on win XP but the chances of binaries from that era doing something are a lot
Re:portability wtf (Score:2)
Another Amiga mention... (Score:2)
(Uh, are we a cult yet?)
Linux vs UNIX (Score:3, Interesting)
Then Linux came along, and started to undo the damage that the copyright fragmenting caused to begin with because it was under the GPL, and ever since then it has been the beginning of the end for Microsoft and Linux has taken off in the server space and now it's getting ready to attack the desktop. Moral: free markets are about freedoms and not markets. When you have freedoms the markets will take care of themselves, but when you sacrifice freedoms for markets - you will eventually loose both.
'it's the standard that isn't' (Score:2)
Unix you say? (Score:2, Funny)
From http://rinkworks.com/stupid/cs_comeagain.shtml [rinkworks.com]
So true (Score:2, Funny)
"Unix isn't."
So What is UNIX?! (Score:3, Insightful)
"We reject kings, presidents and voting. We believe in rough consensus and running code." -- Dave Clark
So in answer to "What is UNIX?", UNIX is code that runs based on general agreement of the masses. This is why it will not die, even LSB is discussed in the article and rightly so, it falls into the same category. A loosely held standard that defines what the general masses of Linux distributions use.
No hard and fast standard would ever survive in the *nix world, ever system is unique to its purpose.
Nice article, IBM churn them out and every so often a good one turns up.
Re:Unix is in everything (Score:4, Funny)
Re:Unix is in everything (Score:2)
Re:Unix is in everything (Score:3, Insightful)
Re:Unix is in everything (Score:2, Informative)
Re:mnennnnn (Score:3, Funny)
Re:mnennnnn (Score:5, Funny)
Ah. I see you've been forced to use AIX as well!
Re:Say what you want about Windows. (Score:2)
Are you sure about that? I confess that I haven't tried running old binaries on new systems (with source code available there doesn't seem to be much need) but I know that the Linus, at least, is dogmatic about making sure that the Linux system call interface is always backwards compatible. You can run binaries that were compiled against Linux < 1 unmodified today.
I'm not as confident that the same is true of userspace, but I bet it's not that different. Where there have been incompatible user-space