What Makes A UNIX System UNIX?
ian asks: "Since there are now so many different flavors of UNIX out there (Linux, Free BSD, AIX, Solaris, AT&T UNIX, etc...) what do they all have in common that lets these all be called UNIX? Programs written for one flavor of UNIX typically cannot be ported to another without considerable effort. The features offered by the different implementations vary widely: some are more secure than others, some cluster better than others, some offer journaling file systems, some are more robust. The differences between the different kinds of UNIX seem to be as great as the differences between any particular implementation and other OSs. Could one port all the standard command line utilities to NT, clone one or two of the popular shells, set up the directory structure in the standard UNIX layout and call it Microsoft UNIX?"
Kernel design & structure varies wildly among the *nix variants. Remember that the original UNIX kernel (and nearly all kernels prior to the early '90s) was monolithic. Now, I believe the majority of current kernels are of the microkernel variety, which is entirely different in structure. In fact, the basic design of the NT kernel is modeled after Mach, as are many other *nix kernels. The structure of the kernel is really irrelevent.
However, the interface does matter. For a while, most *nix variants were either based on the UNIX System V source tree or the BSD source tree, and some even provided compatibility libraries for running applications written for either. Now, the POSIX standard specifies a C language interface and a command set which are loosely based on the SysV interface and commands. Most current *nix variants try to adhere to the POSIX standard, except for the BSD variants. So, any operating system that is more or less POSIX compliant or BSD compatible is at least a candidate for being labeled a UNIX variant. That includes NT, BeOS, and MacOS X.
In addition to being compliant/compatible with POSIX and/or BSD, UNIX variants also share a UNIX like filesystem structure, which differentiates them from NT, BeOS, and MacOS X. Also, most UNIX variants use X for their native window system.
Earlier in NT's life cycle, if you had replaced the native Windows GUI with X and installed all the common UNIX utilities, you could have made a case for calling it a UNIX variant, although I still think the filesystem structure is different enough to preclude that. However, in its current form, NT has grown to include a lot more stuff that makes it more clearly different than UNIX. However, BeOS and NeXT are still probably close enough to call UNIX variants if you disable their native GUIs and use X.
Yes, I have no doubt that there's a ton of code out there that requires considerable effort to port.
There's also always a fresh crop of green programmers out there making mistakes, and as they learn (hopefully from good mentors and good code), hopefully their code will improve so they don't make these sorts of mistakes...
There's also a huge body of code that was properly designed, abstracted and written such that moving it from one unix to another requires no to minimal effort. Furthermore, that effort should be spent in bettering the abstractions such that, in the future, it will move to other OSes more easily.
In short:
"portability problems" == "need for abstraction"
One of my major caveats about unix has always been that there's an enormous pool of talented and brilliant people working, but in opposing camps. Unix companies have rarely been very good at marketing (certainly nowhere near as good as Microsloth) and collaberating.
If unix companies had come together on standards for guis and other essential "desktop" components a long time before now, the unix environment would have had a much nicer facade than it currently does.
-Ralph
http://www.mybrain.org/Pics/Fun/msToilet.jpg
If everything is accessed as a file, it's probably a Unix. No special hidden "registries", no extended invisible attributes, just files.
/dev/le0, /dev/eth1, etc...
/dev/sda, /dev/c0t0d0s0 (or whatever))..
Ethernet on
Entire physical or logical disk drives accessible under one filename (/dev/hda,
Serial ports as a file, printers as a file, etc...
That's UNIX. Accept no substitute.
Pain in the ass to install.
.8.
Pain in the ass to use.
All software has a version number of less than
Everyone who uses it thinks themselves to be some sort of guru.
It attracts a bunch of frothing nuts who had microsoft.
Microsoft would have to change NT to NTX or NTIX or NTNIX or UNtIX.
I vote for UNtIX 2001!
Do you mean that it's not possible, or that the person to whom you were replying hasn't?
Just in case it is the former, I have used several Origin2000s through text terminals and Indigo2s w/o the windowing system (you get a console instead of XDM and X). AFAIK, any sgi box can have a console over the first serial port.
I haven't used AIX, but I would assume it's pretty much the same.
I expect that the 'UNIX' tools you used under NT were the GNU tools. Had you used the GNU tools on Solaris and HP, you'd be better off for compatibility.
Not to mention that HP breaks just about all code of any sort that works on other UNIXs. HPUX is my worst nightmare, I'm not sure that I wouldn't rather use the Win95 CLI. At least I would expect Win95's CLI to be useless ahead of time.
HP can make some darn good chips, but the sooner they ditch HSUX, er HPUX, the better. I may even be interested in their hardware again once the Puffin group gets Linux going on the PA.
No, it does not (nor does linux, GGI is an interface for accessing the graphics subsystem, not a user interface). The explorer shell is the user interface, and this is NOT part of the NT kernel.
--
Why couldn't you compile and load a driver under NT? Just because you don't have the control or option to do so currently doesn't mean it's not possible.
Do you think the NT kernel has support for all that hardware built right into the kernel? Certainly not.
Please list some "OS level interfaces" that NT is missing to accomplish this.
--
And once again, that nice little login screen is not part of the kernel. It's not even part of GDI. Not even close. Changing my shell is akin to changing my window manager -- the fact that I still get an XDM login screen before I login does not mean it's part of the Linux kernel.
--
You're mixing up the operating system with the interface... they have little to do with eachother.
It would be possible, however unlikely, for Microsoft to create an interface that completely resembles your Linux boxen in every respect, right down to the shells and applications you run. Nothing in their kernel (I'm speaking of NT here, not DOS) prevents them from doing so.
I think the question is asking for a more low level answer. ;)
--
much more unixy than OS 9...
Do not meddle in the affairs of sysadmins, for they are subtle, and quick to anger.
--
--
--
Unix would fall apart if it weren't for source compatibility (since there's no such thing as binary compatibility). Therefore you'd need at least ISO 9899 (which I think is similar to POSIX.16?), POSIX.1 and POSIX.2. It really depends on what perspective you're coming from. If you're a developer, then if a platform is compliant enough to those standards that everything's source compatible, then it's effectively Unix to you. But from a user's point of view, there seems to be more to Unix than just that.
Ya my point was that WNT wasn't POSIX.2, which makes it a bit awkward to use. BTW Linux spouts out an "POSIX conformance testing by UNIFIX" at boot-up, but I'm not sure what that's all about exactly.
This one is very easy:
;)
Everything that is not from Microsoft is called UNIX these days.
There is a failure though when NumLock is on. The idea of "NumLock" is pretty bogus, when you think about it, it dates back to the original IBM PC, where they were too cheap to put seperate function keys. In X this the NumLock bit is stored as a shift flag, but the basic X design was that the shift flags were things like Shift, Alt, and Ctrl: the fact that they were on probably meant something, and the user was holding them down on purpose. Therefore a lot of programs think that *any* shift key being on makes the keys being typed "special" and that they should be not be treated as letters. This is the source of the common X bug, especially with Motif programs, where *nothing* works when NumLock is turned on. Modern X programs seem to ignore all shift bits that they are not interested in, this is a better solution.
Anyways it would be nice if this problem goes away, but I think it should go away by getting rid of the whole "NumLock" concept, I mean it is painfully obsolete and just a hack for a forgotten keyboard layout. If the function keys are in the "ideal arrangement" there, then the main arrow and functions should be in that arrangement. We should get rid of NumLock.
And on Win32, bit 24 of the lParam of the keyboard event can be used to tell the normal function keys from the "NumLock-off" ones.
The terminal driver only allowed one code to delete backwards a character, so it had to be either ^H or ^? (or #, which I have never seen, but I do remember teletypes where it was '_' (underscore) which actually was a backarrow in the earliest versions of ASCII).
If the keyboard driver instead translated keys to "what they do", it would have been trivial to have both ^H and ^? work.
Quite seriously, they should chuck all this obsolete stuff from the terminal driver. Just hard-code everything into the driver so it works for the maximum number of people. The most common usages don't intersect (for instance nobody uses ^H for anything other than backspace) so just merge the most common settings. Off the top of my head:
I would almost suggest that the terminals be in raw mode all the time and that we rely on readline libraries, but I can see this breaking things. Another possibility is to put this sort of editing into the FILE library.
It doesn't have a segmented filesystem. The way QNX works is that you can specify a node on the network with //. So, //1/tmp/ is the /tmp/ directory on node 1, and //3/usr/ is the /usr/ directory on node 3. All machines on a QNX network have node numbers, and root privileges are not quashed. (!) But, you can also NFS mount //3/usr/local as /usr/local on all machines and stuff, so it's not really segmented. With QNX, not only can you access the filesystems of the other machines in this way, but you can also access other processors and shared memory! QNX was designed from the ground-up to support clustering and all that stuff that's just becoming sexy now.
Linux was modeled after Unix and it looks & feels like Unix but it is still
a Unix clone. All the Unix flavours you mentioned, and the ones you didn't are
all descendants of the original AT&T Unix. (i.e. *BSD, AIX, Solaris, Irix,
HP-UX were all derived from AT&T Unix at some point).
Programs written for one flavor of UNIX
typically cannot be ported to another without considerable effort.
Huh? Who told you that, smart guy? Programs written for one flavor of UNIX
typically can be ported to another by simply recompiling them.
The differences between the
different kinds of UNIX seem to be as great as the differences between
any
particular implementation and other OSs.
Now this statement does not make any sence. *BSD is much closer to Solaris
than it is to Windows. And even Linux is much closer to Irix than it is to
MacOS
Could one port all the standard
command line utilities to NT, clone one or two of the popular shells,
set up
the directory structure in the standard UNIX layout and call
it Microsoft
UNIX?"
uhhm, no. btw, do you work for Microsoft? It's just that your questions seem to
suggest that you are planning to port a few shells to NT and rebrand it as
Unix. hmmm, back in NT 3.1 days, MS was marketing is as "better Unix than
Unix". Is that the plan again?
___
___
If you think big enough, you'll never have to do it.
I think you exagerate the differences between Unices. In my experience porting is fairly trivial, particularly after you have ported the fist time.
You're wrong!!!!!! The name is, "Windows NT SUX". Because it has an 'x' sound in the name, it is, by sillygism, True Unix.
Graham
Graham
Linux - Fast Pane Relief
But if you could, then the ultimate extrapolation of that would be emulations running emulations until you had the original Intel 4004 running the latest bloatware at glacial speeds.
Might be interesting to see a screen change at about 1 pixel per second.
I see even classic Slashdot is now pretty much unusable on dial up anymore.
Anyone?
pronoblem
Unix - what everyone else is trying to copy.
Know what I like about atheists? I've yet to meet one that believes God is on their side.
Gnome/2 and Enlightenment/2
Posible because there is a full implementation of XFree86 at the current level available:
XFree86OS2
Even though Mr Veit (XFree86 porter) built a driver to handle /dev/* devices, could OS/2 be considered UNIX? In some respects I believe so. I think that it is more about the API then about the kernel.
We know MSFT won't support a full *NIX API on Windows because they NEED to control the API's (Windows) too keep profitable. They WILL bring Win32 to Linux but not Linux to Windows. On OS/2, IBM has shown they were attempting to build a tool to solve problems and the tool is very flexible.
Oh yeah, EXT2 has been ported to OS/2 also. :)
"Anyone who stands out in the middle of a road looks like roadkill to me." --Linus
MSFT owns too much of OS/2 for IBM to be allowed to see it posted on the Net. Licensing issues prevent IBM from opensourcing it and also help them keep track of how much of it was/is sold. IBM did say they made around $100 million off OS/2 related sales so that aint all that bad for a dead OS. Thank about that the next time you go to the ATM. There are even a few nuke plants in Germany where OS/2 runs the control rods. It ain't mainstream but BMW isn't either and people still buy Beamers. MSFT's ability to keep things incompatible seems to have infected the logic of many a person.
"Anyone who stands out in the middle of a road looks like roadkill to me." --Linus
They would also need the core APIs and X11. There is a specification called "X/Open" which is far more reaching than POSIX, that you must sort-of comply with to be seen as a "real" UNIX. Microsoft's core is very heavily Win32 based, and as such, it's not going to be anything like UNIX any time soon.
BTW, It's got nothing ( or very little ) to do with kernels. You probably could beat the NT kernel into something upon which you could build a UNIX system.
Even with seamless remote access, NT isn't UNIX. If you don't believe me, try to compile a hello world UNIX program on NT. OK, now try adding SYS V IPC. Now try adding some APIs like curses and X11. The main diff is that NT is win32 based and UNIX isn't.
Except that UNIX has moved on since POSIX, and the latest sepcification is UNIX 98, which requires what one would think of as the "core UNIX APIs" to be available.
POSIX at the very least is a good start, and with a couple of other APIs thrown in , one can usually get workable code.
NT looks more like VMS under the hood than like unix.
Ben "You have your mind on computers, it seems."
The big problem is that the default setting NT Server 4.0 is "Give Foreground Application Highest Priority". (Why is this the default on NT Server? Who knows.)
Next thing you know, some MCSE-wannabe has enabled one of the software OpenGL screensavers, and as the 'foreground' application, it's eating 98% of your CPU and has ground your server to a halt.
So, what they should be teaching the monkeys is to (A) Let background services have their share of the CPU, and (B) Don't run CPU intensive things like OpenGL Screensavers on a server. But that would be far to complex to explain, so 'Don't run a screensaver' is the 25 cent answer.
(A kernel because of the video driver is possible, but practically, it never happens with a screensaver and the vanilla SVGA video hardware on a server.)
--
Business. Numbers. Money. People. Computer World.
Realistically, if a Linux distribution has this problem out-of-the-box, it's broken. The common (99%) case here is the IBM PC AT Keyboard, not some VT220 terminal, and not some Sun X Terminal.
The idea of a 'distribution' is that someone is doing the integration work to make all these software parts floating around the Internet work with your hardware. If that's not being done, it's really too bad.
--
Business. Numbers. Money. People. Computer World.
The Apple Network Servers were actually pretty nice boxes -- hardware RAID, 2-4 PPC604 CPUs, AU/X only. I know a few people that would love to run Mac OS X server on a similar box, rather than some G3 desktop.
At about the same time, Apple came out with MkLinux, which runs on 601 NuBus hardware.
--
Business. Numbers. Money. People. Computer World.
I mean ... "AIX only". Press Preview, dammit!
--
Business. Numbers. Money. People. Computer World.
You should look at Microsoft Interix, which is a loadable UNIX subsystem for Windows NT. It doesn't emulate "Linux", but it does meet the UNIX specifications.
--
Business. Numbers. Money. People. Computer World.
Late response, but does "bugger all" mean it does nothing? If so, that's not true.
Q160656
Last Reviewed:
February 1, 1999
The information in this article applies to:
Microsoft Windows NT Workstation version 4.0
Microsoft Windows NT Server version 4.0
Windows NT 3.51 and earlier boosts the foreground application responsiveness by boosting the foreground thread priority base. Windows NT 4.0 boosts the foreground responsiveness by assigning a longer timeslice (quantum) to the foreground thread than what background threads receive, not by assigning a higher thread priority.
And a OpenGL screensaver can still impact performance on a server quite seriously. This can be easily tested by putting WinNT on a Pentium-level machine and doing some file copy tests.
--
Business. Numbers. Money. People. Computer World.
When people say "UNIX", in this context, they really mean "POSIX", which is an IEEE standard that, supposedly, defines the function call interface between a program and an operating system. That's the general idea.
Well, if you do write a strictly POSIX program, it should compile and run just fine on any one of those unixes. The problem is that POSIX does not really cover everything what you can do, on a typical box. Still, you can come pretty close. If you use GNU's autoconf and automake tools, your package can have a good shot at compiling and running on anything that claims to have POSIX compliance.
--
This is supposed to be an Ask Slashdot but you are making a lot of wrong statements:
I have worked on many free software applications for Unix. I start off GNU/Linux, using the manuals available on it, and then release the stuff. It usually works perfectly on BSDs, Solaris, Irix and HP/UX (other than those, I don't know). There are a *few* minor differences but it usually takes very little time to find them out. I'd say I have devoted 1/1000 of the total development time porting my software to other platforms (always Unix). And no, this isn't simple Hello World stuff, it usually contains network code, crypto code, standard Unix stuff (such as calls to open, dup2, pipe, fork...), string functions (strcasecmp, strcat, strtok, etc), graphical user interfaces (I always stick to GTK) and POSIX threads.
This is completely wrong. If I were to port my software to Windows or MacOS, I know I'd have to spend far more than 1/1000 of the time I spend developing my software.
Thanks.
Alejo.
Did you guys know that LINUX stands for Linux Is Not UniX ?
;)
Heheheh.
Alejo.
Have you tried running debian/linux with some shell other than bash as /bin/sh? Doesn't work. So much for modularity. Modular in theory, I suppose.
What does "shells are not required to make use of the core functionality" mean?
Seems your initial decision to go with a proprietary solution is the problem. If a business makes a stupid decision, then they are going to have to cough up the money to dig their way out of it, one way or another.
Cobbling something together to make use of a buggy windows device driver isn't going to buy you anything. The only way to get truly bug-free software and drivers is to make all the specs free and open. And the only way to do that is to stop buying products made by stupid companies who refuse to properly document their stuff.
The solution is simple:
Get a different SCSI interface...
> ...but I suspect you can't do that on a headless Linux/BSD/Solaris/SCO/... system with a dumb terminal
Screen is a utility to achieve much the same thing as virtual consoles, with the added benefit it works in anything, including xterms...
It's included with every mainstream linux distro, at least.
man screen :
Screen is a full-screen window manager that multiplexes a physical terminal between several processes (typically interactive shells). Each virtual terminal provides the functions of a DEC VT100 terminal and, in addition, sev eral control functions from the ISO 6492 (ECMA 48, ANSI X3.64) and ISO 2022 standards (e.g. insert/delete line and support for multiple character sets).
That is to say, screen does in user-space what virtual consoles do in kernel space. However, screen is more widely applicable - I can have 10 shell windows open over my dumb terminal's serial line, and flick between them.
Choice of masters is not freedom.
yeah that's right, I wouldn't trade (Windows NT && cygwin && bash && grep) for *nix anytime.
;-).
Grand unified theory of OS's:
OS has BSOD => OS != unix
um, please, that's no flamebait
> There exists a clear separation between application software and OS software.
Eh???
Ok. Is vi OS or application? Howabout ls? Howabout grep? PPPD? HTTPD?
If anything, unix is characterized by a very poor separation of OS and application space. At least, that's the way I've always thought of it...
--
It's a fine line between trolling and karma-whoring... and I think you just crossed it.
- Sean
It's a fine line between trolling and karma-whoring... and I think I just crossed it.
- Sean
Seriously. All these comments that are marked as "Troll" but aren't really. They're just like this one. Spam. We seriously need a "spam" moderation category. And that would include posts about goatse.cx, Don Knotts and that super-scroller thing.
They're all spam.
Oh, and "Spam" should carry an automatic -5.
--
It's a fine line between trolling and karma-whoring... and I think you just crossed it.
- Sean
It's a fine line between trolling and karma-whoring... and I think I just crossed it.
- Sean
Unix is any operating system derived from the source code of the original unix developed by Bell Labs. Linux is not a UNIX, but a UNIX-like operating system. A Unix-like operating system is any operating system which reimplements the spirit and designs of the operating system drempt up by Dennis Ritchie et al. *BSD on the other hand has a pedigree which goes all the way back, so is a "true unix", although the definition varys a little depending on who you are talking to. Some people think UNIX is any OS that Bell Labs says. Go look at these web pages:
Unix History
and be sure to visit the history of unix written by Dennis Ritchie himself:
Dennis Ritchie's History of Unix.
If I had no sense of humor, I would long ago have committed suicide. -Ghandi
You are quite correct.
To be able to advertize your OS and "Unix", you do indeed have to certify your OS with the current trademark holder, namely The Open Group.
You have to at least pass the Unix95 specification testing. I believe that if you pass Unix98, that's fine too.
As to the assertion that portability is difficult in the Unix world, I would disagree strongly. It is easy to write bad code that is highly non-portable (I find a lot of people who pretty much only use Solaris fall into this trap). It is however possible to write code which will run on most if not all Unices with little or no modification. However, that puts the onus on the developer to familiarize themselves with the relevant standards, and also use as many systems as are available to them. Sadly whether it's laziness or unreasonable deadlines, this doesn't appear to be happen that often.
Tim
Could one port all the standard command line utilities to NT, clone one or two of the popular shells, set up the directory structure in the standard UNIX layout and call it Microsoft UNIX?
I run just such an environment, using Cygnus' Cygwin on NT, and believe me, it isn't Unix. Not by a long shot. Even if it were nothing more than the process scheduling, Unix would have it all over NT. On a Unix system you can run processes in the background and just forget about them unless they are real resource hogs. With NT you have to be always thinking "is this going to kill performance?". But there's more. Pop up a telnet window and you have the same old DOS prompt window. Even though it's running Bash, it still feels like Windows. And, of course, all the applications are the clunky Windows apps. And of course, there are the constant crashes and running out of memory. Run Cygwin next to an X server running an xterm on Unix, and you'll see the difference very clearly. I've done that in the past, and I'm working very hard to get that set up now. I'll still have memory and stability problems, but at least the apps will run right.
Always and inevitably everyone underestimates the number of stupid individuals in circulation
Information is not Knowledge
Is it useful? Hardly. Can it be called "compliance"? With a very big stretch of imagination.
--AP
Microsoft actualy hired some of the main VMS programers to build NT. As such NT's kernal has alot of similarity to the VMS kernal.
In addition to all the good information above, especially the Open Group links. It's worth noting that "UNIX" is commonly used to mean "UNIX-like". Thus Linux is often considered a flavor of UNIX, though not officially.
Also, why does Sun have bend to the wills of the slashdot community? They are doing rather well right now, and their Ultras are selling like crazy (even though it would be nice to get a Ultra 5 with SCSI disks :). Solaris 8 ships with a cd full of gnu stuff, you can buy a Ultra workstation with Redhat Linux from Sun directly, and they have released a utility to run Linux x86 things on Solaris x86. There are more ways to work with the free software community than by just tacking their os software under the gpl or bsd license.
I use Linux every day myself (not to mention Solaris and *BSD), but Linux isn't a replacement for Solaris with it's good multi cpu support and ability to hot patch the kernel (just to name a few things).
There is a place for everything, and for linux to 'win' others unices don't have to 'lose.'
Justen
Linux could never be UNIX, even if someone paid to have it registered. Being nothing more than a kernel, it does not have the function printf(), or the command ls, or a bizillion other such interfaces. Linux itself provides very few of the interfaces described in the Single UNIX Specification, but GNU/Linux--as well as the upcoming complete GNU system--provides them all.
But in common usage, "Linux" refers to a unix-like OS
Common, but incorrect.
built around that kernel
That's funny! GNU was built around Linux! You really should inform yourself before posting. GNU was almost complete when Linux was born, and now the only piece missing is the kernel. Linux has been holding that place for years and probably will for a while even after the Hurd is ready.
as well as other important components like XFree86
The X Window System is not part of the Single Unix Specification. So, while GNU/Linux does not provide X, it's still Unix.
>>Some of the posts here suggests that NT does not protect the apps from the kernel(which it does, kernel runs in ring0, while apps or userland programs runs in ring3 ... get your facts straight.
As a microsoft trainer, it is easy to see you know nothing about hardware protection. The kernel of almost any OS protects itself from errant applications. No kernel does or can protect the apps from the kernel, although Multics might give it a good try.
Unix is in the eyes of the beholder. Think of this, if you are a simple user, all you care about is your normal unix tools, shells and what not. If we recreate this environment on NT, then as far as you are concerned, you have a Unix or Unixlike system. But if you are a kernel hacker, once you get into NTs kernel, you will scream and not call it Unix. Likewise, if we take a Unix kernel say linux and provide it with a GUI that functions just like windows98, a user will not call it Unix, as far as he is stuck in the GUI he will call it windows or windowslike, whereas a hacker working with the kernel without the GUI will still call it Unix. Take a case of a car, if we get a BMW take out the engine and put in a toyota engine, what is it? People who just see the car from afar will call it BMW, whereas the guy that fixes it will call it toyota. Thus Unix is in the eyes of the beholder.
------ Curiosity killed the cat. {satisfaction brought it back | it didn't die ignorant | lack of it is killing mankind
I think that most of what makes something UNIX or UNIX-like is "it's look, it's feel, and the tools available" but to enumerate some of these I would say:
This is the biggest difference to me. There are lots of programs for X, but lets be real... most of them are just GUI wrappers for CLI tools to save you time.
all the *nix boxes I've ever played with LOVE being on a network.
By this I don't mean the directory structure being one way or another per-say but the fact that there are certain folders almost dedicated to a certain job (eg:
I know a couple of NT admins that when they got a hold of Solaris they wanted to install perl... they made a directory (/programs/perl heheh) and then installed it to that directory.
Some of the above may be common with NT or OS/2 but the fact is the combination of ALL of these makes it my UNIX.... Have I forgotten anything?
__
__
nothin' says lovin' like an open source penguin.
well sortof. interix was mentioned before but i thought it should be restated:
Interix.com
i used this for a while back when it was called opennt. then (i believe) the microsoft nazi's put the smack down and they had to change their name. its pretty neat. i believe it came with ksh and csh and some other neat utilities.
john
-- john
it looks like ms bought interix to quote:
Microsoft acquired Softway Systems, Inc. to help ensure that customers have reliable interoperability tools between Windows and Unix
whatever.
john
-- john
Last time I checked (about 4 years ago now! Sheesh, time flies...) Key Bank ran the whole branch shebang on OS/2.
Could continue to be profitable for a LONG time in vertical market applications like that!
Technology -- No Place For Wimps! Grateful Dead and Jerry Garcia Chatroom -- http://www.wemissjerry.org
uuh. youre right about most of it but NT is a Windows/VMS hybrid not a windows/unix hybrid. vms != unix.
I thought I've heard before that *nices have to be POSIX compatible to be considered a *nic.. or is that just a recommended aspect of the OS? (or is it just a standard for Linux distros?)
hmmm.......
Insert mind here.
Plain vanilla symlinks.
I understand it's an exaggeration but the fact that *simple* (yep - simple!) things like that reliably working together IS what makes a UNIX UNIX.
OLE based computing - no, thank you!
siri
The major exceptions that spring to mind are network devices. You can't send a raw ethernet frame using "echo hello >/dev/eth0".
$ find
Are you kidding me? In HPUX you can only have the permissions of a single group at any given moment, and you have to issue a command to change which group's permissions you will take on. Most of the commands are less developed as well. For instance, tar doesn't understand tar.gz files. This applies to 10.20 which is still in common use.
hmmm... i remember that the nt resource kit for 4.0 came with posix complient layer...
- tim -= remove "-spam-" from address before spamming =-
What makes you think Linux has a httpd and nfs server in the kernel?
Technically is the important term used by you here.. So technically I could call you an assgrabbing monkeyfucker and it would be perfectly OK. And if it hurt your feelings (or whatever) then that's just too goddamn bad.
Moderation is there for a purpose, and it's purpose is to weed out dumb fucks like whoever that other AC was.
Feel free to moderate this down, however, as I freely used expletives and tere is a younger agegroup here as well. Just let the message get out first.
The solution is not that simple for a gigantic company that has standardized on one particular SCSI interface for every computer, and then discovering that there are no linux drivers for it when they decide to start using Linux. And again, a SCSI interface is a bad example... what if i've built a network on a proprietary gigabit ethernet solution. Am I going to rebuild my network just to gain some stability? Certainly not, I would say "Well, our current hardware is not supported by anything but NT, and making a changeover to linux compatible hardware will be ridiculously expensive, so i guess we're sticking with NT for now. You'll be rebooting a bit longer." Get the idea?
--
linuxisgood:~$ man woman
Restating the obvious since nineteen aught five.
I think the thing that makes UNIX what it is is this:
ANY of the various Unix flavors all have a UNIXISH kernel. They have all got either BSD or SYSV commands (many nowadays have a mix of both) and thay are all modular OS's. If you take away the GUI from NT, it will not work, If you take X (any version) away from UNIX it will still be the same functional rock solid OS, just with out a GUI. Dont forget that all UNIX variants are supposed to be POSIX compliant.
Of course this is just my opinion.
"If ignorance is bliss, why aren't there more happy people in the world?"
gsd fgsdgsdfg sdg sdfg sdfg sdfg sdfg sdfg
Oops :) I meant to ask: Does anyone know a good telnet server for NT? I am using cygwin a lot to make NT work more friendly. telnet would take this a step further.
Thanks for the tip. I'm downloading now. I saw a reference on the M$ page how to use it with Korn shell. (of course I will use bash :)
There is one major feature of UNIX that has not yet been mentioned.
:-)
That feature is the community that has grown up in and around UNIX and the "UNIX-like" systems. Look at all the sharing that goes on between people in the community. We have open ideas as well as open source. Sharing and community has been a part of UNIX since AT&T first started giving it to universities. There is also the competition that is integral to the UNIX community. Yes, this does include the "holy wars" that break out occasionally. We have competition of APIs and new features. Need I mention the ongoing debate between GTK+ and QT, as well as that between GNOME and KDE. There is competition in the community and that keeps developers on their toes. It also continues the evolution of the system.
Where in the Windows community is there such a sense of openness, sharing, and competition.
When talking about what makes UNIX we must not forget the people involved. People make up the system just as much as the code base.
To me UNIX and the community surrrounding it are like a huge family. We may not like each other. We may not always agree, but there is something that brings us all together.
Just my two bits.
If it looks like a duck, and quacks like a duck, it must be a duck.
Are you sure the network was not ARCnet? I remember working on QNX and using ARCnet cards. Very cool OS.
This is symptomatic of the underlying difference; Unix is written in C and NT is written in C++.
Your nit picking now because he picked some non-standard programs. But, I bet you could find the following programs on any "unix" system unless it was severely stripped down:
1) vi
2) man
3) cp
4) rm
5) mv
6) ls
7) man
8) grep
9) find
10) ping
11) netstat
12) ifconfig
13) awk
14) sed
If you don't have them on your linux system then I feel for you...
Does it have the same system calls and directory structure as Unix? If not, then it's just a compatibility layer that could be built on top of any OS.
It's that 5% that's the killer. Might as well be a totaly different OS.
There are certain OS level interfaces that are not directly mappable onto NT syscalls. This would make it impossible to provide an interface "exactly" like Linux on NT without having some sort of emulation layer. Could you compile a device driver and load it as a loadable module on the NT box that emulates Linux? Probably not without something like VMWare or WINE or a Frankensteinian combination of the two.
Yes, they could do it, but it would be more like Bochs, with all the inherent performance loss. And you thought NT was a slow memory and CPU hog now!
ugo/rwx permissions
While the rest is a good point, this phrase is, IMHO, incorrect. A Unix with full Access Control Lists [somethign already implemented, but easy to work around, in NT] wouldn't make Linux or Unixes suddenly not become Unix compatible. The ACL concept is a noble one and more flexible than ugo/rwx - I believe an implementation on Linux was discusses in Slashdot Jeremy Allison interview recently.
Ah, Xenix.
My first-ever exposure to Unix was Xenix running on an Altos86 in my high school. The basic login script for all student users was a text menu from which you could choose BASIC, a spreadsheet, some simple database and a couple of other things.
It wasn't long before we learned we could ! out to the shell, and with the Unix System Administrator's guide on our laps, we pretty much had free run of the thing. Right before I graduated, I got stuck in a Programming 101 class. I looked at the syllabus, realized the teacher was teaching straight from the book and did the whole quarter's worth of assignments in about a week, after which I had 9 weeks to screw around, though I spent most of them playing Hunt The Wumpus.
I still get nostalgic for that old beast (the machine, not the wumpus).
Thanks for the memories!
The REALLY interesting issue is what makes a system an EROS-like system :)
Yup, a friend of mine bought one of those Apple Network Server boxes this week and we were playing around with it last night. I believe ou meant to say AIX only, though.. I thought AU/X only ran on 68k hardware.
I was reading some of the training manuals that came with it.. interesting stuff. It was talking about secure dynamic DNS.. which made me wonder what all the hype is about with W2k, when it was available in AIX in 1996. (maybe before then, I don't know)
Stability has nothing to do with UNIX(tm). :)
It's very clear what UNIX(tm) is. It's very clear what Unix-like is. I refer you to the preaching of the Rev. Don Kool on computing.unix.admin
unix' great contribution is the fact that it treats everything as I/O...
-r
That said, I'd certainly recommend running nothing more outre than the VGA drivers on a production server anyway, simply because there's no need for anything more (do people ever get disappointed: "I've spent $400 000 on this Proliant 7500 and it's only got a VGA card and no SoundBlaster"?)
--
Cheers
Cheers
Jon
See here for a discussion of the similarities and differences between VMS and NT
--
Cheers
Cheers
Jon
Win32 is implemented as a subsystem on top of the NT kernel in a similar way to the "OS/2" (sic) and "Posix" (sic) subsystems - there's no particular reason why you couldn't build a subsystem which implemented the POSIX and X/Open specs (and, from a pragmatic point-of-view, supported the whole of man(3) fully), but why? After all, if you want a Unix box, you buy one.
Agreed re. the on-kernel implementation: since several Unices have been built on the Mach kernel, it would probably not prove exceptionally difficult to build one on the (similarly-architected) NT kernel. IMHO it would, however, be fairly pointless.
--
Cheers
Cheers
Jon
However, the internals of the kernel aren't from NT: it's a whole different set of code (unsuprisingly, since hardware on the desktop is somewhat different to hardware in the palm) and, as Mr Burdick points out, this project was Pegasus, intended as a successor to the WinPad and Pulsar. Meanwhile (and more recently), Microsoft Israel (IIRC) have built Embedded NT, which is a cut-down NT kernel for embedded use (although not intended, I think for handhelds, palmtops and other such pseudo-computers ) - here, there is commonality between the code-bases.
--
Cheers
Cheers
Jon
Quick heads up: object-oriented design != C++ implementation (ask all the old Simula hackers out there... or read D&E some day)
--
Cheers
Cheers
Jon
Programs written for one flavor of UNIX typically cannot be ported to another without considerable effort.
1. Where does the "effort" end, and porting begin?
2. Check freshmeat you'll find many counter examples of no hassle porting.
The message on the other side of this sig is false.
Yes I do.
/..
But why would that matter anyway? One finds his place in a community such as
CE was designed to make it easier for Win32 developers to develop software for CE.
Binaries should not 'run', you need to 'port. But the porting process is releatively painless, anyway since that 5% is the most least used, or inappropriate or CE devices.
Go back and read the article. Symlinks are new to W2K, but a system that USES the symlinks is new technology. It looks for identical files and stores only one copy of the file, linking to it. If one of the files is changed, it de-links it and creates an actual file for it.
It's a good idea because of the way dlls are spread across the system, making way for identical libraries to be stored more than once. I'm not sure that this would be useful in a *nix environment because of the way libraries are stored in one or more specific location(s) in the first place.
I'm a Linux advocate, but atleast I READ THE ARTICLE and understand what it is before I cite it as more Microsoft crap.
Hello little man. I will destroy you!
First off, let me say that I am not going to attempt to actually answer the question, since so many others have already done a much better job that I ever could.
/. as the bona fide mix of experts and neophytes in all ranges of technology, it is being used -- and abused -- as a 1-step shortcut instead of RTFM.
/. will not tolerate, it is obviously laziness!
/. altogether.
Instead, I would like to look at the nature of the question itself. "What makes a UNIX a UNIX?" Others have pointed to the absurdity of this. What makes a computer a computer? What makes an HTML file an HTML file? This question shows a harrowing trend in the quality of the Ask Slashdots. Instead of people using
Perhaps the next Ask Slashdot should be just that: "What does RTFM mean?" Please. This is not the first time, nor will it be the last, that Cliff has grossly misjudged the appropriateness of a submission.
I want to generalize this condition as much as possible, so I will not suggest that ian actually think about doing some work and looking up some easily-found documents on operating system history. I will not state how dumbfoundingly easy it is to punch `+unix +history +"bell labs"` into any of a dozen popular search engines.
I don't want to do that, because then I might be accused of being shallow. Lazy, even. And that would be a terrible crime, because if there's one thing
Ask Slashdot is not a place for idle questions to be treated with the gravest of attitude. It is being treated with the same respect that would exist of asking Our Beloved Linus how many total lines are in the kernel source. That would be wasting his time, just as this question wastes ours. These sorts of thing can be looked up independently with no need to involve everyone in this.
There was a time when Ask Slashdot handled deep questions that did not have easy answers. That time is clearly gone. I can only conclude that this feature must be heavily overhauled and strictly maintained by someone of higher intuition than Cliff, or be retired from
---
---
Remember when "Truth, Justice, & the American Way" wasn't contradictory?
The big difference as I see it how unix creates processes, ie the fork() system call and copy-on-write memory pages.
Some features of the process management system (kill -9) are not replicated well elsewhere, or are replicated poorly. You can kinda fake it with NT but sometimes you get a permission denied message. And you never really know if the app was signalled before it died.
There's also a design philisophy that says build small, reusable tools and make it easy to attach them together.
Finally, there's access to hardware at a much lower level than with competitors.
"Uh, no. UNIX was hacked together by K&R just so they had an OS to put an otherwise idle VAX to work." again, no. it was a PDP-10, not a VAX. Bill Joy did the VAX port at Berkeley for 3BSD(i think it was 3BSD anyway).
K&R --i think not again. Ken Thompson and Dennis Ritchie. Kernighan is a dork. who would waste 15 pages on an easy about why PASCAL sucks, anyway?
IIRC, MS lost it's UNIX producing rights (not the TOG sort) when it sold Xenix to SCO. Oh yeah, I dont think that TOG cares what you call Unix, as long as you give proper note, payment, etc to UNIX(TM)(R)(etc)
Im guessing you've never tried to port a large program. Just because there is a common language does not mean that porting is a non-issue. While it may be ideal that every program that is written in C sticks to ANSI functions and syntax, sometimes this isn't convenient/efficient/interesting. So you probe in system specifici functionality. For an example of this, there the dldump() function in Solaris. To go a step further, some systems support concepts that don't quite mesh with C. String handling in VMS. Or, you could come across difference of opinions with C compilers. I've written code that GCC would handle without so much as a single warning, that the MIPS Pro compiler (SGI) would refuse to compile. The existance of a program on two platforms does not mean that they came from the same code, or use the same general implementation.
Users, sure.
But the VAR crowd who used SCO were approached.
If it was said on slashdot, it MUST be true!
It is nice to know that such informed knowledge makes the backbone of the /. community.
If it was said on slashdot, it MUST be true!
How many remember:
Windows NT 3.1 will be a better Unix than Unix?
How that same maketing material was saying the idea of having a big sever serving you graphics (like X) was dead due to PC's?
And, how having the graphics outside the kernel would add stability to NT?
Anyone have some of this old add copy?
If it was said on slashdot, it MUST be true!
Yeah, right. And everyone running a Unix server
is told not to run an X11 server on it.
Where's the difference?
...among the most beautiful device abstraction layers ever built.
Actually, I would nominate Plan 9 for "most beautiful device abstraction". There is a lot of stuff that came along after the initial development of UNIX that just doesn't fit the original scheme and are not accessible like a file. For instance: network sockets, shared memory, semaphores, and message queues.
Unfortunately, the days of "everything looks like a file" belong to a much simpler time when all UNIX was doing was calculating satellite orbits. Now, you could make the argument that it is time for a more inclusive abstraction, but it would fall on deaf ears because it "isn't UNIX."
Hopefully, in the long term, being UNIX-like will not stifle the advancement of highly general systems forever.
"What's the point of going abroad, if you're just another tourist..."
Just because you have some shells and a kernel does not mean you're running Unix. It just means you're running an OS.
"Evil will always triumph over good, because good is dumb." - Dark Helmet (Spaceballs)
I thought that they were told not to run a screensaver because it steals system resources.
Instability of kernel-mode drivers is really a key cause of BSOD's, which is why one would be a fool to run an NT server at anything above VGA.
"The best way to do mathematics is to be creatively lazy." -I. M. Isaacs
Linux has nfs support built in at the kernel level. I'm no expert, but I think the kernel-level support has more to do with the ability to mount nfs shares into the filesystem than exporting them. As for httpd, I'm fairly certain I read somewhere that the 2.4 kernel will have an experimental httpd daemon that runs as a kernel module and is only able to serve static pages.
C:\DOS\CRASH>
I read a good book that helped me in the Unix learning curve. Unix is a system that adheres to principles, and is descended from the Original AT&T project.
BOYCOTT AMAZON
--- Nothing clever here: move along now...
The X-Box must be unix then.
Remember that Linux's real name is "GNU/Linux" and as we all know, "GNU=GNU's Not Unix".
Oh, come on...
Linus himself never talks about GNU/Linux... I think he has the authority to choose his OS name, right ? OK, RMS wrote the GPL, OK, RMS want Linuw to be called GNU/Linux... But it's called Linux and that will probably never change !
And for that recursive play on words that GNU's Not Unix... That's so kiddy ! I don't mean to flame anyone here, but if you want acceptance in the real-world server markets, puns just won't make it.
Oh well... This will kill my karma, but I had to say it.
Stéphane
Instant Karma's gonna get you, Gonna knock you right on the head (John Lennon, 1970)
As far as I know - isn't NT supposed to be Posix compliant ? I am yet to see any Posix-compliant software to be used with NT 4 though...
-- http://z80.org - all opinions, all the time --
Don't forget to change the corresponding entry in /etc/shadow, or you'll be locked out :)
Duh. The Unix 98 standard. You can yak all you want, but Unix is defined by it's interfaces. Why is this question on slashdot?
"Hex, Bugs, and Rockn'Roll"
According to a book I've been reading... I forget which one(the only way reading several books at one time messes me up), but one of the books covering the linux kernel, says that several distributions have been certified. And Posix != unix. I thought this for a long time, but it seems that X/Open has the newer Unix 95 and then 98 standards(funny years to make standards... perhaps they'll make one this year?)
"Hex, Bugs, and Rockn'Roll"
QNX is not UNIX in the sense that it was not derived from the original UNIX operating system
or based on its spec (i.e. Linux). QNX is a Real Time Operating System which has a UNIX-like
interface, in the manner that BeOS has a UNIX like environment and possibly POSIX compliance,
in order to simplify the porting of programs.
Are binaries compiled for a BMW compatable with a Honda?
----
Don't underestimate the power of peanut brittle
ADVENTURERS! - ANTIHERO FOR HIRE - CARDMASTER CONFLICT
What do you call /dev/eth0?
No such file or directory
I do love Linux, but people keep misusing things like "/dev/eth0" which don't exist. Please stop making the Linux community look stupid.
Eagleson's Law: Any code of your own that you haven't looked at for six or more months, might as well have been written
Legally, UNIX is anything that follows the AT&T System V UNIX code.clone of existing UNIX.
Technically, we include BSD, because it follows the UNIX code before System V.
Linux is neither System V nor BSD, it is a
Linux is a UNIX in a very technical sense.
Programs written for one flavor of UNIX typically cannot be ported to another without considerable effort.
HUH?!?! It is hard to port C code?!?! I thought I saw the program "ls" on both Solaris and HP-UX!
The features offered by the different implementations vary widely: some are more secure than others, some cluster better than others, some offer journaling file systems, some are more robust. The differences between the different kinds of UNIX seem to be as great as the differences between any particular implementation and other OSs.
Did you attend some stupid marketing seminar on UNIX or something????
You believed in all the crap from the vendors? You listened to marketing and sales people? That kinda goes along with the territory. Tell me, you think when Linux goes mainstream (and it hasn't, just visit a large commercial datacenter like Exodus Communications here in Santa Clara where its "all" Sun and Sun Solaris), that there won't be crap from vendors? What, you think all the Linux vendors will go saintly on us?
Oh yeah, lets not forget NT and the standard daily reboot. You're not making any sense. Are you comparing UNIX with NT?? Which flavor?
I've seen a lot of false promises and a lot of hype, alot of bloatware and alot of bull from sales people. Like it or not, Linux is it, because it's not about Linux but about controll and not being forced into one vendors stupid design and/or management decisions.
Your problem isn't with any UNIX-like OS, its listening to promises and bull.
Linux is just another version of UNIX. BFD. I'm sure once Linux is used outside of those little dual Pentium boxes that say "Intel Inside" (for a little more than show and tell by IBM or Compaq) that it will become popular.
Another way to tell is that the frickin' number pad keys never work! (eg. in Netscape)
The 'number pad' grid a much more sensible layout of up-arrow, page up, home, end &c than the one in the middle of the keyboard, and apparently the X-windows keyboard abstraction layer forces developers to explicitly activate them, which apparently many are too lazy to do. (or maybe they're mac users)
Making keys with the same markings implicitly identical (as they appear to be on the keyboard) is one thing micro$oft did right.
I think being Unix has a lot to do with it's roots, it's look, it's feel, and the tools available. For example, they all have similiar file systems in regards to structure and permissions. Many basic concepts as these exist in all the unix flavors.
A Similar thing happened to me. Although the computers were running windows 95, I installed linux on a couple of them, and we played network hunt for the duration of the class. I knew the sysadmin, so he didn't care about the systems having linux on them.
He who knows not, and knows he knows not is a wise man
I suppose you've never made a mistake before? The mistake of one person does not make the whole Linux community look stupid. The words of one person (who's used Unix for 5 years) does not make tens of millions of people look stupid. I pride myself in being a Unix user, and I do make Ò©ñ`ry once in añ©le. I got "interface" confused with "device".
Does W2k have ls, who, file, bash, /dev? Does it use X Windows? Can I telnet into W2k (with an out-of-box-install)? Can I change the runlevel of w2k? can I kill a process (with the kill command)? Can I used nice on process? Does it have virtual consoles (Ctrl-Alt-Fx)? Can it be traced back to AT&T or BSD UNIX? If you answered no to any of those questions, then it's not Unix.
"Unix" is not an OS, it is a family of OS's. "UNIX" is AT&Ts SVR4 (and older) versions of Unix. Solaris/SunOS sure is Unix, it's based on SVR4, and the BSDs are based on Berkley Unix. Linux is a mix of SVR4 and BSD Unix-like things, but it's more based on SVR4.
What do you call /dev/eth0?
I read the book, they are told not to enable the screensaver because it may crash the system. It may required things from the display adapter driver.
This is due to the movement of the display adapter to the kernel. They also recomend you only use a 16 bit color, display adapter (640 * 400); because it was written by some NT Guru. They claim any other adapter driver will "put your system in serious danger of crashing in the near future." If they can't right bug free display adapter drivers no wonder they can't right stable kernels.
Nate Custer
"The poet presents his thoughts festively, on the carriage of rhythm; usually because they could not walk" Nietzsche
No! a majority of the instability in Win32 has to do with poor device drivers. This is due to poorly documented API's. So why do you want to add that instability to Linux?
Nate Custer
"The poet presents his thoughts festively, on the carriage of rhythm; usually because they could not walk" Nietzsche
We used to have a group of Mac Quadra 700s running A/UX and a suite of applications we'd created for news wire stuff. We wanted to stick with Apple hardware when they switched to the PowerPC, but we were told to transition to IBM's AIX (the RS/6000 boxes with the PowerPC 601). I believe Apple even sold a server for awhile with AIX on it.
it's "unix-like", despite the FAQ's claim that this term is a trademark violation
Pepsi® One soft drink is Coke®-like. freepuzzlearena(TM) game is Tetris®-like. If it were a trademark violation, then NetBSD would already have taken down their Call It a Duck page.
The Allegro Game Programming Library. Of course it runs on UNIX® systems.Will I retire or break 10K?
This argument (named "*X" means UNIX®-like) has already been made here. It would classify the Windows® CE-based X-Box console from Microsoft as a Unix system.
Will I retire or break 10K?
Actually, Linux-based systems are GNU systems; GNU's not Unix (NetBSD is stealing this tagline).
Mac OS 10 has a BSD-heritage public-source kernel called Darwin and can be spelled with an X; does that count?
I'd say any system with multitasking, multiuser, devices with filenames (/dev/*), full POSIX compliance (refer to the Single UNIX® Spec available from the official Unix site), etc. could be called Unix-like.
Will I retire or break 10K?
If the X-Box is a Unix-like system, that would make Windows® CE a flavor of Unix. Actually, Windows 9x and NT almost are, thanks to Red Hat's Cygwin port of GNU and (to a lesser extent) the minimal GCC for Windows.
freepuzzlearena was made with DJGPP, the DOS version of GCC. freepuzzlearena is not Tetris.Will I retire or break 10K?
You should go get Cygwin (look for it on Google). You'll have a good time, as Cygwin emulates Unix on Windows NT (also works on 9x but crashes a bit more).
Will I retire or break 10K?
Heck, you can get POSIX in DOS through the C libraries in DJGPP, a port of the GNU C++ Compiler to protected mode DOS.
I get paid to read /.; why don't you?
Will I retire or break 10K?
And this trademark has a web site. That's where you'll find the true definition of UNIX®.
When I'm not using Windows, I'm using not Unix. And I'm hackingWill I retire or break 10K?
Unix is a trademark but in order to qualify to be known as a Unix system the vendor must comply with the specifications above.
In its core Unix is not about proprietory software
Unix is about Open Standards (not the same as open source) for system interfaces, network components, thus MS can not really build a Unix system unless they comply with the specifications.
UNIX is not about any single piece of code, not even the kernel. However Unix is about paradigms for networking, code execution, file system management, user utilities.
UNIX is not GNU.
You can't handle the truth.
we just installed their stuff on the NT boxes, opened command windows, and off we went.
management could strut around the building, proudly rapping off the lines they read in "PC Week" (or whatever) about "lowered TCO", and we ended up with a system that was somewhat as reliable as true unix, we just had a frequent reboot schedule to keep the machines stable.
kind of a lose-lose situation...but hey, i was outta there at the first convenient point in time.
by the way, i don't dislike microsoft because of quality issues or the interface, i dislike all things microsoft because they have over 33% market share of a powerful industry -- their 90% market share was achieved by violating a number of state and federal laws.
i hope any settlement takes this into account, and has logic that will drop them to a more reasonable market share, as punishment for their behavior. you and i can't drive 90 on the freeway, so bust 'em down. that's part of the government's function -- enforcing the law, and preserving the common good.
Treatment, not tyranny. End the drug war and free our American POWs.
See my user info for links.
NT may have earned POSIX compliance through some loophole, but you can't run vanilla posix unix programs as is, there are a lot of implementation details that are different in NT that sneak up on you and bite you.
For instance, you can't do socket I/O without calling some socket init functions that you don't have to do in unix.
root=power on every machine.
If I remember correctly, the screen saver is started in the system context in NT. The screen saver then switches to the user context. I think this was solved in Service Pack 329078 or something similar :) (probably 6) I did see a patch our for it. Mind you, I doubt that was the reason why they told MSCE students not to use it. Everyone starts putting Big ass 3d graphics and the cpu utilisation zooms up to 50% right off the bat!
The situation may have changed, but last I heard OS/2 was not officially dead - IBM had announced no NEW version developments, but had not stopped supporting the current versions. IIRC the scoring and information systems for the winter olympics and wimbledon (tennis) were supplied by IBM and completely OS/2 based. Not bad for a dead system.
My memory of the Amiga has faded severly in the past 8 years, Maybe I'll try and find an old Miggy and try this out.
--AROS is an Open Source AmigaOS clone, and source compatible with AmigaOS! Try the x86 build at http://www.aros.org
I think you're having a neurological meltdown. WNT borrows some ideas (but not code) from VMS. But what on Earth makes you think VMS is a "true Unix"? I can't think of anything in VMS that is remotely like Unix...
The original UNIX kernel was written in bell labs. The most direct descendant of this kernel is the UNIX system V kernel, which has been widely used since before I was born. The other true UNIX kernel is BSD (Berkely System Distribution), which was written based directly on the same kernel as System V is. There is the BSD compatibility package which allows for unification of BSD with the System V implementation. These 2 distributions are very compatible.
The free/open/net/etc BSD's run off of the BSD kernel.
UNIX untilities can be aquired from the gnu project, which is another operating system, which is UNIX compatible, but it is a CLONE operating system.
LINUX is another kernel, and another operating system as such, but can run all of these UNIX utilities, and is used compatibly with UNIX.
There are others too...
If we want to go back to UNIX's older cousins, we can get into MULTICS and other such operating systems.
When it gets right down to it. A UNICE is any operating system that uses these classical commands from the history of computer science. They are still in use because they make sense. They are quite simply, the most basic and most perfect way to run a computer, but UNIX is the kernel.
Eh...
Microsfot my not be offering Unix but they sure are working at providing access and control.
go check out the features in Windows Services for UNIX .
Do you want some NT head to administrate your Unix Boxes?
Pontiac
Got Beer?
If you think it's expensive to hire a professional to do the job, wait until you hire an amateur. --Red Adair
By this definition, the latest versions of Compaq's OpenVMS could be considered a UNIX. Although shell tools do not ship standard with VMS, they could likely be ported without too much trouble. And yet I can't quite bring myself to consider a VMS system to be UNIX...
And 'mid this tumult Kubla heard from far
Ancestral voices prophesying war!
Seriously, while you're at it, you should ask exactly what Windows is. It's in the same boat - there's several flavors of a single OS that really don't have much in common. Windows CE and Windows NT don't share much except a start button, when it comes down to brass tacks.
We can also ask just exactly what CE is, since the soon-to-be-out-don't-call-it-CE Pocket PC platform is radically different than the CE of today.
--Mythos
Apart from the fact that Windows NT has a POSIX subsystem (which I dont think anyone really uses), most of the GNU Unix like stuff has been ported to Windows as part of the CygWin project.
http://sourceware.cygnus.com/cygwin
"In a short time, it will be the most popular form of Unix ever. Windows NT will outsell those other incompatible versions of Unix."
-benjy
- Why does all unix have to be Linux? It's about the right thing for the job and having a choice. If all we have is Linux then there really isn't much of a choice anymore. As long as the different unices (and hopefull windows too) all work together by following standards then we can all use the os we like or need for the job.
But that's the point, Linux gives you a choice, Solaris and NT don't. I would have no problems with MS or SUN if their stuff was truly open-source. But by coercing it they are not only locking everyone else out, but locking the door their own future too. They can't grow in a competitive manner this way, they will be left behind like I said. Don't you get it - closed source is the path to closed standards.- Also, why does Sun have bend to the wills of the slashdot community? They are doing rather well right now, and their Ultras are selling like crazy (even though it would be nice to get a Ultra 5 with SCSI disks
:). Solaris 8 ships with a cd full of gnu stuff, you can buy a Ultra workstation with Redhat Linux from Sun directly, and they have released a utility to run Linux x86 things on Solaris x86. There are more ways to work with the free software community than by just tacking their os software under the gpl or bsd license.
Sun does not half to bend for the slashdot community, but they do for the facts. Bigger people have fallen harder than SUN, the mere fact that their CD's have a bunch of GNU stuff is almost an acknowledgement of where they are being forced to go.- I use Linux every day myself (not to mention Solaris and *BSD), but Linux isn't a replacement for Solaris with it's good multi cpu support and ability to hot patch the kernel (just to name a few things).
Lunux isn't a replacement for Solaris now, but it will be.;) It's simply a more competitive paradigm.- There is a place for everything, and for linux to 'win' others unices don't have to 'lose.'
Agreed, not if they go GPL. If they win or loose is their choice.If I'm over-enthuastic, it's cause I'm fed up with all the crap from other OS vendors. I've worked with SCO, Solaris, HPUX, AIX, DGUX, and APUX. Oh yeah, lets not forget NT and the standard daily reboot. I've seen a lot of false promises and a lot of hype, alot of bloatware and alot of bull from sales people. Like it or not, Linux is it, because it's not about Linux but about controll and not being forced into one vendors stupid design and/or management decisions.
genome, beowoulf, bash, pre-installed and unlicensed compilers for C, C++ etc...
yade yade yada yourself....
theres a big difference, with all the others - if you had a problem with them after you spent a million on their crap - you were pretty much stuck with them. With open source - all that is different.
Lots of Money. I'm sure that's the case with Microsoft too. But the simple fact is that "Lots of Money" simply does not guarantee a secure future in this business. They'll get squeezed out on the OS innovations just like they already have been with Java. Competitors like IBM are already getting ahead of there here.
This Interix thing is kind of compelling. Here Microsoft is sweating the whole Linux thing, and then they go and do what every company who followed their lead for ten years did. This is a nice thing to see, i.e. Micro$oft mutating to a kind of Unix.
This is ironic to me because as a Unix project manager, I was discussing today with a collegue my childhood belief that every operating system was basically the same and how when Windows came out, I viewed it as the freak that it was.
One one hand I could understand why Microsoft has held onto it's precious Windows non-Unix (specifically non-command line) interface. On the other hand, I was wondering why, if Microsoft is all about the benjamins, why they didn't just download, muck up, and sell their own Linux distro. Sure it would have been pure blashphemy, and Torvalds might have killed himself, but that's what capitalism is all about, right?
*** Stop trying to be cool. ***
When the hell did that matter? Like so many of us are actively writing in POSIX compliant C. Duh. Please stop before you give me a headache.
*** Stop trying to be cool. ***
The guy who lead the NT project, I believe, was the same guy who desgined VMS, Dave Cutler. But I've yet to be presented with any literature which indicates that NT resembles VMS. If you have any concrete evidence of this, please use it to back up this statement. Anyway, I don't think you realize how good VMS actually is. It's been stated by many people that VMS is actually mroe stable than most Unixen. Of course, even my female collie could tell you that most people who claim their preferred platform is stable are simply showing favouritisim to their preferred platform. Nothing more, nothing less. At the corporation I work for we run several platforms. NT is one of them. I set up an NT/Apache server on it in June 1999. Admittedly the load wasn't great, it's internal and only serving ~30 people. It didn't crash until earlier this month. And that was mainly due to the fact that I installed the ACT server on it. The MMX200/64MB RAM apparently can't handle 20 requests to an ACT database. But even my female collie realizes the point here.
Mark Villopillil
no sig
Nope. "One", i.e. Microsoft, didn't "port all the standard command line utilities to NT, clone one or two of the popular shells, set up the directory structure in the standard UNIX layout and call it Microsoft UNIX",
;-)
Heh heh.   I was wondering how long it would take before someone caught that.   Xenix came out way before NT.
-- Win2k: "It's not so much that it's only 65,000 bugs, it's just that they stopped at 65,535 to prevent an overflow."
Dude, I mean, really! Linux is an outgrowth of Unix! It's clear that, as previously posted, you are a Linux nautzee. I wonder if you actually USE it at home? And, if you do, do you actually DO ANYTHING besides post at /.? Linux has its strengths, (great server platform!) but also its weaknesses. (games, anyone?) Over-enthusiasm is just as bad as apathy! -Ben
I have no problem with your religion until you decide it's reason to deprive others of the truth.
Hmm, did you ever notice, that the way you manage users is completely undocumented and merely impossible with the Win32 API ?
Hmm, one of these subtle differences between the server and the workstation is, that you can disable this on the server. What you can't change that easy is the quantum time (the time a process has the CPU until it switches to the next one), on the workstation these quantums are short and foreground apps get longer ones, the server gives all processes the same quantum length but much longer than on the workstation.
Well, no problem there. Even MSVC understands ANSI C.
OK, now try adding SYS V IPC.
That's a problem.
Now try adding some APIs like curses and X11. Both exist for NT. Even the Open Group's X11R6.4 distribution contains client libs for NT.
The main diff is that NT is win32 based and UNIX isn't.
No. NT is not Win32. NT is built up like a mainframe operating system (eg. OS/390), it has a largely undocumented kernel which hosts some different subsystems that actually run userspace programs. NT has many such subsystems - Win32 is only one, the others are DOS, Win16 ( ok, they share one subsystem ), OS/2 ( yes, NT can run command line OS/2 apps, so installing Warp4 from NT is much easier than from Win9x since the OS/2 program that writes the bootdisks runs under NT ) and a more or less crippled POSIX subsystem with a few UNIX tools you van download from microsoft when you manage to find the package (rather painful). Funny enough: the POSIX subsystem sees both, long and 8.3 filenames with the 8.3 names as symlinks to the long ones :-)
You can. Ever tried Control Panel / Devices ? You can load and unload device drivers at runtime ( for the kernel they are just special services... ) but unfortunately most 3rd party device drivers ( which arent ? :-( ) don't support that. But the API exists...
You run into problems with directory structures, different styles of terminal handling, threads, some parts of IPC, and the sys admin tools for managing hardware.
But everyone has fork(), exec(), sockets, select(), etc. Posix and ANSI C keep things pretty generic.
Someone who programs for AIX can do HP-UX without much trouble. Much easier than going from AIX to VMS,Windows, or NT.
The exact quote is "Unix, by contrast, is not so much a product as it is a painstakingly compiled oral history of the hacker subculture. It is our Gilgamesh epic." which can be found on page 88 of Neal Stephenson's IN THE BEGINNING ... WAS THE COMMAND LINE
There's a standard called POSIX which defines just what the core of UNIX is, including the C library, file handling, the sockets interface, that sort of thing. Most programs are portable - and autoconf smooths over the differences where they matter. Just ask the GNU people how they make all the GNU tools portable (they aren't just for Linux!)
On a different note, UNIX has a "philosophy": everything is a file, programs are small components connected with pipes, configuration information is stored in readable editable text files, the shell is programmable, etc.
My Linux machine claims "POSIX conformance testing by UNIFIX" when it boots, and I think it's had this for a few years now.
As for binary compatibility, this gets less important all the time as more people use platform-independant languages like Perl, Tcl and Java. And it doesn't matter about binary compatibility if you've got Open Source.
Transmeta have technology which basically decompiles programs for the x86 architecture and recompiles it for their own processor, dynamically, while it's running. Sooner or later, if people want binary compatibility, someone's going to write a good open-source decompiler.
I'd like to see something like WINE for drivers, actually - use windows drivers in a linux system, for all those noname NDA-ridden devices.
I unixize NT in a similar way, I've been using WinXs, which is similar, but better, solution than Cygwin. Other useful tools are Ghostscript, Ghostview (not really unix tool specifcially, but I was introduced to them on unix). GVim and Vim are, of course, indespensible tools. Despite this unixization, I still thank goodness I can telnet to my old, bulletproof Sparcstation!
- A clearly defined kernel/user space interface
- A set of system calls --- handled by the kernel
- An API which relies on fork() to spawn new processes
- Mountable and unmountable filesystems
- Ownership and Group Associations for processes, files and some other resources (octal modes for files and directories)
- SUID and SGID meta data on some files as a way to delegate privilege across security contexts
- Abstraction of most devices (including established network sockets) as "files"
That's just a start. No repackaging of NT will really make it into "UNIX" because there are several mechanisms on this list that it implements in a fundamentally different way.If you want to "make" a *nix Windows, where will you find the source code ?
./configure and make are the best friends of an unix/linux user.
*nix is liked by programers,as it has a *good* compiler within.
Found a bug in the kernel ? You can modify it by yourselves.
Never saw anything like this in Microsoft's products.
----------------
----------------
If Internet is Freedom, Linux is Democraty
In my opinion, the clear and robust process model, which no other OS has ever been able to implement as well, is the major factor. Along with that, the file model - how everything has a polymorphic interface based on file descriptors - very cool, makes programming very simple. IPC is great - many forms to choose from, very simple to use, especially pipes. I guess the common thread in all these aspects is simplicity - it is really amazing how UNIX systems can abstract such complex functionality into such simple APIs - I have never worked with another OS capable of such a feat. Today's models tend to be overarchitected, but not UNIX. The architecture is simple and robust, yet modular and interchangeable enough to stand the test of time. It's amazing how a 30+ year old operating system can still power most of the computers on the Internet and the WWW, which is what we consider today to be the most state of the art area of computer software. Whether it's BSD, SVRx, Linux, or any other member of the UNIX family, it still shares these fundamentals which make it 'UNIX.'
By the way, well written software is inherently portable, especially among UNIX family operating systems. There is very little work to do if the code is written right, to use portable APIs, data types, etc. Conceptually, UNIX operating systems are all quite similar, so if you stick to portable tactics and take advantage of these simple concepts, you will have no problem porting code. Especially today, when you can even standardize development tools (using GNU tools) across any platform, that really makes life easy.
Mmmmmm...UNIX with a registry.
- unified name space starting at "/", almost everything accessable through the file system
- unified socket/file/pipe space, they are all files, none of this handle crap
- true tty interface, X is not UNIX but to be UNIX you need a real tty, NT definitly fails hard here
- true posix signal handling, the ability to send a process a SIGSTOP and have it
... stop! try that on NT - stuff is put where it should be, such at the kernel file cache, an application shouldn't have to deal with it
- reliable filesystem, under UNIX your file system is trustworthy, under windows you have to be prepared at any time for it to die (such as smb shares do all the time)
- real filesystem, true symlinks (not files that end in
.lnk for christs sake!), hard linking, link -> inode genericy (ever wonder why windows was so much faster at recursive directory tree spanning? it is because the equivilent to readdir() tells it if it is a directory or not, no stat() needed, sure speed is nice but you loose the power and flexability of a generic link, BeOS handles this problem very nicly but being smart about creating files) - based on C, C is the common language of UNIX, like it or not
I would say that you could live without hard links (like BeOS does) but you need symlinks.I am not saying that BeOS is a UNIX, it isn't but it has some of the criteria (and some other cool stuff that I wish all unicies had)
windows NT/2000/10000 is not UNIX and never will be.
Angus.
A/UX, on the other hand, was a true Unix OS at the core with the "Macintosh" shell running on top of it. I really liked A/UX. Whatever happened to it? When did Apple officially abandon it?
Unix.
Linux.
Ultrix.
Irix.
Miltics. (variant spelling, but has the same 'x' sound)
Xenix.
even A/UX.
Because the following have no 'x' sound, they are mere Unix wannabees or early protozoan forms thereof, and not True Unix Clones at all.
Windows NT.
SunOS/Solaris.
BSD/NetBSD/FreeBSD.
NT qualifies under UNIX98 branding as a Unix system when running the compatibility overlay previously known as Interix/OpenNT. Covered in this ZDNet article. MVS has also qualified for Unix branding, IIRC.
Not that I think of NT as Unix.
What part of "Gestalt" don't you understand?
Scope out Kuro5hin
What part of "gestalt" don't you understand?
Formally speaking, what makes a UNIX system is adhering to the spec which defines UNIX.
;)
A draft of this is available online and makes a handy reference.
The Single UNIX Specification covers not only the library and system call interfaces, but also the shell commands and utilities, including the command language formerly known as Bourne.
Of course, what we actually understand as UNIX is deeper; one cannot understand what UNIX is outside of the surrounding computing culture.
Yup. I've got one. Hardware is an 80186-based system (more embedded computer) with some kind of weird-ass token ring network. I contacted QNX for information about these systems, as I have done with Unisys but neither was able to help. Is there anyone here with hardware information on those old Unisys ICON computers? I have a few I'd like to play with...
These I believe were ICON 2's (80186 computer, Arcnet-type network, diskless. Color screens with blue background.
The teachers watched us *very* closely with those things. I remember getting in shit for trying to get to a prompt...
As for making WIndows NT into a Unix, it's already been done; for a while it was being sold as Open NT. Essentially, Windows NT has the capabilityto have different subsystems; the 16 bit Windows 3.1 compatability stuff is one, the Win32 level another. By adding a complete POISX subsystem, Windows NT can be considered Unix. Bill Gates was once quoted "In some ways, NT is a Unix". For more on the history of Unix, I recommend the book A Quarter Century of Unix by Peter Salus, the USENIX bookworm. It has an excellent explanation of the geneology of Unix and Unix-alike systems.
--Gus
1.The file system interface. By this, I mean inodes, ugo/rwx permissions, and a single hierarchy rooted at "/".
A number of non-UNIX OSes have borrowed this paradigm (INMOS's Helios and Be's BeOS are two examples; many real-time OSes also borrow from UNIX here).
2.There is one user (root) that has full access to the machine; all other users are limited to a small "sandbox"
Some secure unices eliminate the omnipotent root user and compartmentalise privileges further.
Other indicators of an operating system's UNIXness would be:
Look at the texinfo files distributed with said packages. 'info autoconf' and 'info m4' should bring up the respective manuals.
The way I recognize if something is Unix, is through its boot sequence. If I can see the familiar, kernel, init, Sys V, etc., then I feel right at home. Granted the GNU utilities can be added to NT, but the low level interface of NT is just plain different and looks like some green alien from outer space. Where is /dev, /etc? How do you easily change the services by writing to a text file? Can I pipe stuff around between devices and files? I just can't imagine NT as a Unix, except for a superficial shell and utilities.
Via its Interix purchase, Microsoft now has the technology to make Windows NT/2000 totally POSIX.1 and POSIX.2 compliant, complete with X Windows! A free alternative to that is Cygnus's Cygwin environment, which is a complete port of the GNU tools (POSIX.2), along with an API layer that translates POSIX.1 calls to Win32.
But just use a Windows NT box running Interix or Cygwin. It's obviously not Unix.
To be Unix, the following have to be true:
- POSIX has to be the best way to get something done on that system. If you have Interix or Cygwin installed on your Windows NT box, you still don't spend a whole lot of time trying to find a POSIX tool where an equivalent native Win32 tool exists.
- POSIX.1 and POSIX.2 don't cover issues like "changing a user's info in
/etc/passwd". Despite the lack of a standard, all Unixes work similarly in this regard. But even if a Unix-like user info mechanism was emulated on my Windows NT/Cygwin box, I would still use NT's User Manager, if only because Windows NT has user features that don't have an direct analogue under Unix.
These guidelines might seem unnecessarily exclusionary. But, just look at other OSes with POSIX layers. I've already shot down Windows NT with addons, so what about BeOS and MacOS X? Both of these are/will be POSIX.1 and POSIX.2 compliant. But like the WinNT/Interix combo, they fail both the guidelines above.In all these "POSIX-but-not-Unix" systems, the Unix functionality is secondary to the "native" functionality. Most of the time, there's another way to do something, a way that makes more sense on that system than the Unix way.
--
The definition of what a "UNIX" system is set by the Open Group because they own the trademark registration. There is a specification and certifcation process that goes well beyond the existence of a few shells and command line tools.
7 99
There are UNIX 95 and 98 specifications along with delineations between server and workstation class machines.
You can view version 2 of the specs on line at this URL:
http://www.opengroup.org/online-pubs?DOC=007908
API tables can be viewed here:
http://www.UNIX-systems.org/apis.html
They are useful for distinguishing between what is BSD, SVR4, POSIX, and modern UNIX.
If you read some of the specification docs, it states what C-language system calls must be implemented and draws the boundaries between what features must exist and what features are up to the discretion of the implementor.
Note that it is possible for systems that are not traditional UNIX to get the certification. I think DEC did this with OpenVMS. The Interix product also has this certification.
There is an effort to bring UNIX and POSIX closer together. Information can be found here:
http://www.opengroup.org/austin/
-- P.J.
The original character used to "[delete] the character to the left of the cursor" in UNIX was...
...'#'.
Yup, '#'. It was what Multics used, just as Multics used '@' to erase the line, and UNIX from Bell Labs followed in its footsteps, the fact that Multics largely ran the terminals in mode where echoing of characters was done by the terminal (in fact, as I remember, you didn't have a choice about it on at least the IBM 2741 Selectric-typewriter-based terminal; the special option to allow the host to turn off echoing worked, as I remember, by the terminal mechanically blocking the Selectric typeball from hitting the ribbon and the paper) but UNIX ran the terminals in a mode where echoing was done by the host nonwithstanding.
DEL (0x7F) was typically the interrupt character, to send a SIGINT to the currently running program; on CRTs, people may have chosen BACKSPACE (0x08) as an erase character - at least it would be echoed as a backspace, even if it didn't actually remove the character from the display, or work well if you were erasing a TAB character.
Some folks made the tty driver more like those in DEC's operating systems, where DEL erased the most recently typed character and either erased it from the screen on a CRT or echoed the erased characters inside backslashes on printing terminals, control-U erased the line (possibly erasing the entire line from the screen), and control-C was the interrupt character; BSD did so, and that tended to make DEL the erase character (even on Suns; as I remember, on Sun keyboards until the Type 4 keyboard, the big key on the top row sent DEL, not BACKSPACE; the Type 4 went more PC-like in what I remember being in part an attempt to make the PC users they hoped would pick up on the Sun386i happier).
So the basic cause of the backspace problem, in the sense of BACKSPACE (0x08) not being the standard erase character, was that the AT&T folks emulated Multics and the Berkeley folks emulated DEC. The problem of the big key on the top row of the main keyboard not erasing the previous character is a result of it sending (or, on workstations/PCs, not being interpreted as) DEL on some terminals. (Digital tended to make it send DEL on their terminals because that's what their OSes used as the erase character; I forget what other older terminals did, but some later terminals may have made it send BACKSPACE either because, well, that's where the backspace key goes on a typewriter or because that's where it goes on a PC. I guess the PC has it as a BACKSPACE key because the original IBM Personal Computer was made by a company that also made typewriters :-))
If you're speaking in the strict legal sense, then, once upon a time, AT&T did, as I remember, impose such a restriction on the use of the trademark - except that it was much stricter, i.e. you had to have made minimal changes to the source code, just enough to make it run on your hardware. (That's why "Sun UNIX 4.2BSD Release 3.x" became "SunOS 4.x" - Sun, and Berkeley, had made rather a lot of changes to the code base that had nothing to do with making it run on Suns, and we figured that'd keep AT&T from yelling at us.)
However, the UNIX trademark is now owned by The Open Group, and anything that passes one of the UNIX test suites (e.g., the current one, the UNIX 98 test suite) can, in theory, be called "UNIX" even if it lacks any AT&T code whatsoever.
If, however, you're thinking of the general "look and feel", I don't care whether the code is AT&T-derived or not - if it looks like a UNIX system when I use it or develop code for it, I'll call it UNIX (even if that upsets either The Open Group or the "Linux is not UNIX" crowd).
Depends on the type of "binary compatibility". Many UNIXes (or "UNIX-flavored OSes", for the benefit of those who piss and moan about thinking of Linux as a UNIX) include the ability to run binaries for other UNIXes running on the same instruction set architecture, and this capability can come in handy if some program is available only in binary form and you want to run it on an OS other than one for which its binaries are available.
...but those things are the same on all "UNIXes"? I'd be extremely skeptical of such a claim; I suspect that you'll find a fair number of kernel differences between, say, AIX 4.x, SunOS 5.x, and Digital/Tru64 UNIX, for example.
...which is why I call it a UNIX, even if it's not AT&T-derived (especially given that a fair bit of AT&T code has, I suspect, been rewritten or replaced in the kernel and userland of even AT&T-derived UNIXes).
Nope. "One", i.e. Microsoft, didn't "port all the standard command line utilities to NT, clone one or two of the popular shells, set up the directory structure in the standard UNIX layout and call it Microsoft UNIX", they took V7 UNIX and ported it to various platforms and added the usual set of enhancements ("usual" in the sense that pretty much everybody with a version of UNIX they sold did so; that flavor of "embrace and extend" was hardly unique to Microsoft).
(...just in case anybody in the audience doesn't think Microsoft ever sold a Real AT&T-Derived UNIX. They most definitely did....)
I've heard the claim that it's VMS-derived, but I've not heard any evidence sufficient to make me believe that claim. At least some stuff is VMS-like internally (the I/O subsystem, according to the Inside Windows NT books, resembles the I/O subsystem described in VMS internals books), but that could be nothing more than the result of Dave Cutler being, I think, in charge of the development of both.
"3.x" was the first release of NT - 3.1, to be specific. I guess Microsoft wanted to give it version numbers that resembled the version numbers for Windows OT, so they started with 3.1 rather than 1.0.
Given that VMS wasn't "a true UNIX" (as in "had an API and a command-line interface that wasn't particularly like that of any UNIX"), I'd say it wouldn't.
If
then I'd consider it a UNIX.
I doubt you can, even with Interix installed...
...but you can't do that on the BSDs, either, unless you've installed a System V-style init on them (which may require you to write one, or port one from a Linux system, say), unless you include changes between single-user and multi-user mode, which is all you get with the traditional init, to be changes to the runlevel (which I don't, given that the notion of multiple run levels first showed up, at least in an AT&T UNIX release that AT&T sold publicly, in System III, not in the original Research UNIX).
I suspect not, even with Interix...
...but I suspect you can't do that on a headless Linux/BSD/Solaris/SCO/... system with a dumb terminal on a serial port as a console, either. (There may be equivalents for dumb terminals, though.)
I agree that NT+Interix probably not UNIXish enough for me to think of it as Real UNIX (although for many purposes it may be Good Enough), but those particular criteria are a bit too restrictive, in that they rule out systems that I suspect most would think of as Real UNIX. (And I think of Linux distributions as being Real UNIXes even though their code largely can't "traced back to AT&T or BSD UNIX".)
That actually dates back to V7 UNIX; it's not an HP-UXism. As I remember, the rationale was that if you did that, and the machine crashed before the program running that image exited, you'd have an "orphaned" file...
...but I consider that a lame rationale, as
Yeah, calling them ".so"s instead makes a big difference. :-)
Presumably by "no DLLs" you mean something other than "no dynamically-linked libraries", given that most modern UNIX systems these days do have dynamically-linked libraries.
Given that, to which particular feature or features of Microsoft's implementation of dynamically-linked libraries are you referring?
Try searching for "OpenDK" in Slashdot comments - and then go to the second page on the "DNA Testing to solve history's mysteries?" page, or whatever it's called.
OpenGroup has set up a standard called UNIX98:
http://www.opengroup.org/prods/xxm0.htm
Interestingly, Linux is not a fully compliant UNIX system as you might think.
It's a well-kept secret that the NT Executive has a single-rooted hierarchy, containing device nodes, named pipes, and filesystem roots.
Yes, but unlike Unix where Everything Is A File, in NT only some things are files. There are also various mysterious base system objects which you can apply an ACL to, but does not exist on the filesystem.
--
Business. Numbers. Money. People. Computer World.
I don't think that this is definitive of the 'spirit' of UNIX, but the idea of treating all things as files is a characteristic shared by all UNICES.
/etc/passwd is a file.
/dev/null is a file.
a socket is a file.
All things are interacted with in the same manner, and this consistent abstraction, along with a common API and tool set, are what makes it easier to go from one flavor to another.
I don't think any OS, except maybe MULTICS (don't know it) which is UNIXes daddy, did this before.
-- What you do today will cost you a day of your life.
posters have already answered the question about what a Unix really is (it has much to do with POSIX compliance) but I'm wondering something. From what I remember, either correctly or incorrectly, NT was based off of VMS. When MS decided to slap the GUI onto it around 3.x it became a good deal more like the NT of today. NT 3.51 was the first fully 32-bit MS platform IIRC. If I'm not having a neurological meltdown wouldn't this allow NT to trace its roots somewhere back to a true Unix? I'm not trying to advocate NT, I'm just wondering if I'm full of shite. A real server OS doesn't need a GUI. Speaking of which...would Mac OS X be considered a true Unix (I'm not sure if Darwin passes on the POSIX stuff or not)?
I'm a loner Dottie, a Rebel.
I mean, it's the differentiator between Unix systems and pretty much everything else....
Also, think of the user experience. For the most part, end users of a unix system experience the same behaviour. cd is cd is cd, cdup is cdup is cdup. cp, mv, vi/pico/emacs are all there, etc. etc. It's only on the back end that the Unices vary so widely. I've moved my old website from HPUX to Sun to Linux to OpenBSD, with others in between and the only major changes were due to differing security/CGI settings and the path to perl...
Returned Peace Corps IT Volunteer
Eunuchs are males who have select I/O ports reconfigured early in their development such that they may maintain a stable state throughout their lives and therefore be highly compliant as Opera components and supporting systems.
Non-eunuchs develop normally, but loose the ability to be Opera compliant (except at a very bass level). Furthermore, non-eunuchs gain the ability to really dick people over, as witnessed Feb. 17th.
Returned Peace Corps IT Volunteer
Isn't cygwin a certified UNIX? (For those who doesn't know - cygwin is a libc and POSIX lib set and set of traditional UNIX and GNU tools for Windows).
Anyway, I would say that a requerement for a UNIX is the two basic UNIX philosophies; pipes and the file tree. The previous being that everything is done in small programs linked to each other to do complicated tasks, and the latter being that all communication with the outer world is done through the filesystem through device files.
But if the latter is a criterion, most unices aren't unices - the network interfaces are rarely real device files.
Another aspect of UNIX may be that everything is done in human readable format - you rather patch and recompile a source file than you binary patch or relinks.
--The knowledge that you are an idiot, is what distinguishes you from one.
--The knowledge that you are an idiot, is what distinguishes you from one.
Anyone remember the ixemul Amiga shared library? Provided a pseudo-POSIXy layer (but.. er... lacking fork()...you could use vfork() though...) on top of AmigaOS (and later BeOS)
Pretty much all of the GNU tools, and X windows, that are commonly found in a base linux install were then compiled into a distro called GeekGadgets to run on top of the ixemul.library on top of AmigaOS...
A similar approach could, I suppose, be used on top of virtually anything.
It used to live at www.ninemoons.com/GG/
Choice of masters is not freedom.
Exactly.
And (Windows NT && cygwin && bash && grep) != Unix
My journal has hot
Uh, with the exception of grep, those aren't unix tools, they are GNU tools. And GNU's Not Unix :-) And Cygwin ain't a unix tool under any definition.
sh and csh *are* unix tools because one can count on them being installed by default on every unix. Ditto for vi.
A Government Is a Body of People, Usually Notably Ungoverned
with proper rights can call it unix. Unix is a trademark, I believe.
As to something being written for one unix being 'difficult' to port.. this is not really true. Most things these days port rather easily.
NT can surprise you. I once wrote a long, complicated shell script that would install and upgrade objects in databases. All our clients would use it. It used all kind of shell tricks, and tools like sed, awk and grep. It was developed on Solaris. Then I had to port it to HP. Which required some changed. (I remember that grep under Solaris had options not supported by HP's grep; but they both claimed to be POSIX compliant). That program was later ported to NT. It required one change: a different directory than /tmp was used as scratch place.
There can be a zillion reasons to hate NT (I would never use it myself). But lack of standard Unix tools isn't an appropriate reason - they have been ported.
-- Abigail
Wrong.
Had you used the GNU tools on Solaris and HP, you'd be better off for compatibility.
That was not an option. And even if it was, I'd prefered to use the out-of-the-box solution than to be forced to keep sources around for several years in the off chance someone might demand them.
-- Abigail
So, if Microsoft would start porting their software to Linux, does that mean Linux is no longer a Unix?
-- Abigail
stability can of course be achieved in other :-)
operating systems than Unix.
And a system does not have to be stable to
be called Unix.
It is just a common trait for most Unixes, that
they are very stable.
Userexperience isn't everything either.
It could be argued that MacOs X is a variant
of Unix, because of the kernel, and Posix-compatibility.
But the user experience would probably be very
different.
What makes Unix Unix, is probably conforming
to standards (Posix), and the basic architecture.
The philosophy ("everything is a file").
You could emulate the Unixinterface trough a sort
of virtual machine in Windows NT.
Windows NT would then feel like Unix, but it
really isn't. The virtualOS probably IS
>you mean apart from the fact that CE's kernel is based on NT's
;-)
Wrong. If I recall my history correctly, when faced with a new set of processors and a new type of system (in terms of memory hierarchies, I/O capabilities, etc.) MS tried two different approaches in parallel. One was to port NT, and one was to write a new OS originally called Pegasus. The latter approach won out.
I got this information from the intro of a book called Essential Windows CE Application Programming, by Robert Burdick. It may therefore not be totally authoritative, but it seems a little more believable than an unsubstantiated claim on Slashdot.
Slashdot - News for Herds. Stuff that Splatters.
I'm talking really old QNX here, atleast 10 years ago. There was only 1 system with hard drives, and that was the Icon 3, all the rest were diskless and mounted the Icon 3's drives as local via NFS I think, and each hard drive seemed to have a logical [x] number, and then nodes seemed to have an x number also, so you ended up with [logical drive]node:/path I *think*..
-- iCEBaLM
Yup. I've got one. Hardware is an 80186-based system (more embedded computer) with some kind of weird-ass token ring network.
:) Little did I know then that this was my first experience with unix...
The icons were the definitive network computer.. We had farms of them in our schools around here (belleville quinte area). There were 3 types, the Icon 1 was really old looking and clunky, the Icon 2 was newer looking but seemed to have the same hardware, and the Icon 3 was nothing but a (3|4)86 with a "Unisys Icon" sticker on it.
The Icon 3, running QNX, would serve the OS and apps to the other Icon 1 and 2's, which were diskless, on the network, but I remember it being a 10base2 network, not token ring...
I had great fun with these, I eventually found out how to get to shells, and I'd go into other students directories and check out their homework
Its interesting to note back then however that these early versions of QNX did NOT have a flat file system, they were segmented into logical drives, [1]1:/path if I remember correctly.
-- iCEBaLM
As much as I agree with you :-) I have some additions.
A Windows UI blitz-quiz:
- When do you press Ctrl-/ and when Ctrl-A to select all items in a list?
- How do you explain that to a *user*?
- What will happen to a file when you drag it from one folder to another?
- How do you explain that to a *user*?
...
- Multi-user, with different access permissions for each user. By contrast, you can log in as anything you want in Windows 98 and still have access to everything.
- Separate address spaces. Some simpler OSes provide separate threads all running in the same address space. Separate address spaces are really implied by the multi-user requirement.
- Monolithic kernel. The kernel is not only responsible for managing processes and IPC, but also the filesystem, scheduling, virtual memory, etc. These things are typically in "server" processes in a microkernel architecture.
- Priority-based scheduling, with priority boots for interactive processes. One of the distinguishing features of Unix when it was developed was that it was good at handling interactive applications by detecting their usage pattern and reducing their scheduling latency by boosting their priority.
- File semantics. The permission structure: read-write-execute for user, group, others. Reference counted deletion: delete a file while someone's using it, and they get to keep using it; the file disappears when they're done. Directory structure: single tree-shaped namespace (modulo hard-links) with devices mounted on certain branches. Symbolic links which act just like the actual file they name (as opposed to Windows shortcuts, which don't).
- Virtual memory. This is usually invisible to the user, so it wouldn't matter anyway. But unix also provides such things as mmap whose semantics would be very hard to duplicate without a real virtual memory system.
There are probably lots of things I have missed, but maybe that will get things rolling...--
Patrick Doyle
Patrick Doyle
I mod down every jackass who puts his moderation policy in his sig. Oh, wait a sec....
2) Linux is not Unix. It is a free Unix-type operating system.
Chris Hagar
"The price of freedom is eternal vigilance." - Thomas Jefferson
Sometimes there are reasons to give up a bit of stability and speed.
--
linuxisgood:~$ man woman
Restating the obvious since nineteen aught five.
Actually, under your definition, BeOS too is a UNIX. (The GUI can be removed as it is just a part of the app server.) I certainly doubt you would call BeOS a UNIX (you better not!) Actually, aside from the GUI part, even NT is a UNIX. I think there is a design thing, treating everything as a file, having a fairly non-modular system (Linux, modular, yea right)(Even a microkernel like MACH can fit this definition because they usually just have a big BSD system server.). In the end, its one of liniage. Is it mainly a derivation of a classical UNIX, or is it just influenced by UNIX design?
A deep unwavering belief is a sure sign you're missing something...
Actually that close of a connection between the OS and the language does not "feel right." for a lot of people (I'd go so far as to say the majority.) Anything that tightly restricts the evolution, expandibility, and scope of two systems by tying them to each other does not "feel right."
A deep unwavering belief is a sure sign you're missing something...
This has been done. Trust me, it doesn't make NT feel very much like Unix -- it just makes it a nicer place to work (at least, for someone familiar with the Unix command line).
For me, there are two main areas that distinguish "Unixness":
- The file system interface. By this, I mean inodes, ugo/rwx permissions, and a single hierarchy rooted at "/".
- There is one user (root) that has full access to the machine; all other users are limited to a small "sandbox"
Note that no simple user-level gloss that's going to make an NT box have these features.-y
150 Opening BINARY mode data connection for slashdot.sig (129323052 bytes).
Well, the properties of hardware have increased runtime efficiency to high levels (compare 486 to Pentium III). Therefore most people won't notice the difference. The problem was with the old and slower machines, where the speed difference was noticable, not he newfangled boxen. I can still see the difference on my box (P200 MMX)
I can throw myself at the ground, and miss.
remember my first time on Unix, I was in grade 9 in high school. The OS was actually called QNX on a 8086 machine called the Icon that was made here in Canada.
:) )
The Icons ran an early QNX???? All I remember about them is that my elementary schools had 3 Icon boxes and that I was *really* frustrated in grade 7 because the BASIC interpreter was incompatible with Commodore 64 BASIC (I was pretty naive back then
Dana
>It was developed on Solaris. Then I had to port >it to HP. Which required some changed. (I >remember that grep under Solaris had options not >supported by HP's grep; but they both claimed to >be POSIX compliant).
POSIX compliancy has nothing to do with all utilities being the same. They are compliant about a sub-set of options. They share their own features. What's your point?
>I suppose if M$ was to actually provide a near
> full implementation of a unix shell,
> filesystem, and command line utilities, it
> could be argued that NT would be, indeed, a >UNIX.
Yes, by people who don't understand the difference between UNIX(tm) and Unix-like, along with the fundamentals of what a Unix like OS does.
Actually it's more correct to say that uid 0 = power. /etc/passwd and rename the uid 0 account to god or whatever and get equivelent actions.
You can easily change a single field location in
Slashdot social engineering at it's finest
The unix philosophy has allowed me to do things that no one has ever really been able to do in NT without breaking out Viual C++. I mean seriously; things like sed, awk, grep, emacs and other things are god sends for being able to do almost anything you want.
Linux has been able to allow me to use shitty hardware that NT just plain wouldn't run on (well ok the new versions of NT I had a CD of NT 3.1 and it worked on my machine but I took it off 2 hours later). A GUI interface is nice but it dosn't make up for the lack of efficiency and power that make NT evil.
Slashdot social engineering at it's finest
You know this is almost really funny. People have always said that native code is much faster and that there are certain advantages to it. Why would everyone start using Tcl, perl, and Java all of a sudden? All the things that I do with so called "platform independent" languages makes the thing dog slow. Case in point gimp. I can tell a big difference between native executables and perl on my system. When I do something perl related that is even built in for the gimp takes rougly 2-3 minutes of hd grinding. Also things like dpkg which also relies heavily on perl takes up a lot of time as well. Tcl is in the same boat. Java is not exactly something that I use on a regular basis nor are there many apps for linux that actually have java as their main code included in almost any distribution at all. All java stuff I have seen runs dog slow and this is stuff that is supposed to be highly optimized.
I think that C++ is closest to what you could consider to be "crows platform" than almost anything: there is a ANSI standard, and a compiler for almost any system. I routinely write and run programs between win32 and linux all the time and never see a problem. Plus my code is much faster.
Slashdot social engineering at it's finest
Ah, evangelism. It's so...evangelistic.
Maybe Sun doesn't want to "get it" yet, because they're still making lots of money with their _increasing_ market share! (besides which, Linux is terribly immature compared to Solaris, HP-UX, and so help me, AIX)
"People who do stupid things with hazardous materials often die." -- Jim Davidson on alt.folklore.urban
the same design elements. Sure, you can
stretch Windows so that it superficially
resembles Unix, but you cannot recreate
the startling formal elegance of a unix
system just by ading ls.exe, grep.exe,
and awk.exe to your c:\winnt\system32
directory.
The thing about Unix that is most clear,
that sets it apart from other OS's, is
its well thought-out design. It was
noticably not designed so that any
newbie could use it. I'm sure that Microsoft
came to realize the high cost of 'newbie usability'
when it had to resort to releasing another
successor to Win98 instead of merging the
9x and NT OS lines with the release of 2000.
Amazing magic tricks
NTFS for Win2k does has symlinks indeed seems that Microsoft claims that they have invented it...
Some of the posts here suggests that NT does not protect the apps from the kernel(which it does, kernel runs in ring0, while apps or userland programs runs in ring3)
rant_mode=on
When Explorer (and I'm not talking Internet Exploder, by the way) crashes (for whatever reason) can I get out of the GUI, kill it and restart it as a process, and then go humming along my merry way (and believe me, the 3-finger salute to get to Task Manger is a pretty lame way to try to kill apps, especially when your keyboard locks)?   Can I switch to another terminal or console and manage my processes independent of the GUI?   Is not the GUI pretty much tied up in the kernel?   Can I install any app without having to reboot the box?   Why can't the registry be reinitialized in NT?
When Microsoft produces a stable, cost-effective, highly manageable, highly customizable network operating system, with a guaranteed high % uptime, that I can telnet into to manage it rather than having to go out and buy some fscking 3rd party product to connect to it remotely, -ie.- a box that I can stick in the corner that stays up without having to babysit the damn thing, then *I* will be the first one to push it.   Otherwise, though I'm stuck managing it at work, it won't be my choice at home.
As a microsoft trainer, cisco trainer and linux trainer I can only say: get a life -
Did you take the Linux certification courses like that given by Red Hat or are you saying this to sound neutral?   Believe me, those who have had to work with Microsoft's networking products for years and who suddenly discover other OSes and how they handle networking, really do eventually see the light after awhile.   We're not making this stuff up.   Some consider it a challenge to manage whereas I consider it a waste of my time.   Why should I have to pull my hair out and see my staff waste so much of their precious time trying to figure out MS's so-called undocumented features?
And you yourself use the flame-baiting "M$" in your own Subject line!
Anyway, rant_mode=off
-- Win2k: "It's not so much that it's only 65,000 bugs, it's just that they stopped at 65,535 to prevent an overflow."
Linus himself never talks about GNU/Linux... I think he has the authority to choose his OS name, right ?
;-)   I guess the answer would be to confirm what he actually trademarked.   :-)
Sure he does.   But after what? Version 0.91 or something?   He didn't do it all by himself now, did he?  
And for that recursive play on words that GNU's Not Unix... That's so kiddy ! I don't mean to flame anyone here, but if you want acceptance in the real-world server markets, puns just won't make it.
But see, that depends on your definition of "real-world".   I would think that actual "real world" peformance makes all the difference in choosing a NOS, not what it's called.
Oh well... This will kill my karma, but I had to say it.
Why should it?   You're merely expressing your opinion about a wild name (and it is, IMHO).   But in fact, it catches your attention, doesn't it?   It goes along with the term "copyleft".   All a rebellion against the "establishment" really.   And I think the original point was to say that Linux is not Unix.
-- Win2k: "It's not so much that it's only 65,000 bugs, it's just that they stopped at 65,535 to prevent an overflow."
Could one port all the standard command line utilities to NT, clone one or two of the popular shells, set up the directory structure in the standard UNIX layout and call it Microsoft UNIX?"
;-)
Didn't one already do that and it was called "Xenix"?
Okay folks - let's get started on a good Xenix thread now...
-- Win2k: "It's not so much that it's only 65,000 bugs, it's just that they stopped at 65,535 to prevent an overflow."
Remember that Linux's real name is "GNU/Linux" and as we all know, "GNU=GNU's Not Unix".
-- Win2k: "It's not so much that it's only 65,000 bugs, it's just that they stopped at 65,535 to prevent an overflow."
remember my first time on Unix, I was in grade 9 in high school. The OS was actually called QNX on a 8086 machine called the Icon that was made here in Canada.
Am I senile or maybe mixing this up with something else, but is this not the same, but updated QNX that sits on a flash card on the i-opener made by Netappliance...
Interesting how OSs hang on over time...
-- Win2k: "It's not so much that it's only 65,000 bugs, it's just that they stopped at 65,535 to prevent an overflow."
Actually, NT consists of two parts: The NTOS kernel, which is much like a traditional Unix system and the Win32 subsystem (which is not Win9x-compatible, Win9x is compatible with Win32 from NT). The kernel has some interesting features that go beyond what a traditional Unix system can do.
However, it's not Unix. The native NT API is compatible to nothing and certainly not anything near POSIX-compliance.
Yes, NT has all features that make a POSIX-subsystem possible. But most of them are unused.
Claus
Provided you are working high level, cross-platform APIs ( which should behave the same on all UNIXs ), and you don't try to code to several different APIs [1] then I don't see why it should be so hard. There are differences in the way different UNIXs handle many things [2] but there are toolkits like Qt and glib that take care of the low-level portability stuff and provide their own data-types and functions.
Just for fun, I grepped for #ifdef directives in krn and there were hardly any ( and the ones I saw weren't about portability issues ).
[1] this is why the vim code is so complex -- they are simoultaneously coding for motif, gtk, athena, ncurses, and win32 without using any high level portability tools ( because there's none that are portable across all target platforms ).
[2] An example -- many C++ compilers still have either nonfunctional or incomplete STL implementations. Another example -- some UNIXs ship with different DBMs ( ndbm,dbm,gdbm ).
Well, not totally, but there are so many errors and misconceptions in the question I'm not sure how to answer.
Since there are now so many different flavors of UNIX out there (Linux, Free BSD, AIX, Solaris, AT&T UNIX, etc...) what do they all have in common that lets these all be called UNIX? Programs written for one flavor of UNIX typically cannot be ported to another without considerable effort.
Wrong. Well-written programs can be easily ported from one unix to another. The problem is that many programs are written by people who have a relatively poor understanding of how to write portable code, and no idea how to distinguish the C standard, the POSIX standard, stuff that's not POSIX but almost universally available on Unix and Unix-like systems, and stuff that is specific to a particular implementation.
The features offered by the different implementations vary widely: some are more secure than others, some cluster better than others, some offer journaling file systems, some are more robust.
None of which has anything to with writing portable code. For example, the C interface to the file system (fopen(), fprintf()) and posix interface (open(), read(), write()) make the underlying file system transparent. Of course, if you're writing a tool to manage a cluster, it's going to be implementation specific.
The differences between the different kinds of UNIX seem to be as great as the differences between any particular implementation and other OSs.
Sorry, you've obviously never actually had to write programs that worked on a wide variety of systems. I used to work on a large product that ran on a variety of Unix systems, OpenVMS, and NT. IIRC, the only difference between the Unices was different options to mmap() and dealing with an old version of SunOS that didn't implement POSIX signals quite correctly. (Of course, there were many differences to the system headers, but those are supplied by the vendor, and are there precisely so that you don't have to worry about internal differences.) FWIW, the OpenVMS version was pretty easy, because even the the system calls were totally different, most of the concepts mapped pretty well. NT, on the otherhand, was a complete pain in the ass.
Now obviously, one *can* write code that is specific to a particular Unix implementation. And noone will argue that at the admin level, things are aren't chaos.
Could one port all the standard command line utilities to NT, clone one or two of the popular shells, set up the directory structure in the standard UNIX layout and call it Microsoft UNIX?
No, because you haven't changed the syscall interface. Cygwin comes a lot closer, but was also a lot more work than what you've proposed.
You can find many of the popular unix tools for windows at http://www.gnusoftware.com.
...
You'll find bash, grep, cygwin, emacs
They've got some nice things there, look at geoshell's screenshots, you wouldn't believe it's windows.
Anything that tightly restricts the evolution, expandibility, and scope of two systems by tying them to each other does not "feel right."
You are completely correct in that statement, but it has nothing to do with C or Unix. The evolution, expandibility, and scope of the two systems in question has been in no way restricted. Unix has continued to expand and evolve well beyond the original scope of the C language as it eventually was defined in the ANSI standard. Likewise, C is considered the most portable language ever written, with implementations for just about every platform that has a compiler, and it has continued to evolve and be expanded past the original Unix API. It has even been expanded to include object support in C++, which was in turn used to write BeOS, a fact I'm sure you are no doubt aware of, given your handle.
So, if you have a legitimate complaint, by all means voice it, but otherwise, keep the FUD to yourself, K?
(Note to moderators: Before moderating this down as "Flamebait", check out this guy's posting history. He makes rabid Linux supporters seem tame by comparison.)
dragonhawk@iname.microsoft.com
I do not like Microsoft. Remove them from my email address.
Who gives a rip about the command line utilities - just make NT as stable as Unix, and you can call it Grandma Pearl's Home-Brewed Operating System with Extra Apples, for all I care!
Seriously, while you're at it, you should ask exactly what Windows is. It's in the same boat - there's several flavors of a single OS that really don't have much in common. Windows CE and Windows NT don't share much except a start button, when it comes down to brass tacks.
What's your damage, Heather?
This is just right out of the top of my memory,
so I could be mistaken, but as far as I remember
you have to pay someone (The Open Group?)
for the right to call something Unix.
It involves certification.
I've heard that it needs to have evolved from
the UNIX-codebase, but this doesn't make very
much sense, as it would be impossible to
write a new Unix from scratch, but still conforming to the Posix-standards, and being
source-compatible with the tradional Unix-variants.
Perhaps someone can enlighten me here, but
would it be possible to pay that organization
for certification of Linux?
Not that I think it would matter, because Linux
is now bigger than Unix anyway, and it seems very
important for other Unixvariants to include some
sort of compatibility layer to be able to run
Linuxbinaries.
I did think it mattered 2 years ago though.
Recently having ported software between Linux, FreeBSD and NT, I have developed my own idea of what a ``UNIX'' is. It's simplicity most of all. Everything is a file, and most calls that work on file descriptors work on _all_ file descriptors. You can make a select() call on a file, a pipe, and a socket. This is impossible on NT, because files are HANDLEs, sockets are SOCKETs, HANDLEs from anonymous pipes cannot be used for select() like calls (only named pipes there). Why this diversity in the API ?
Being a long time Unix and Windows developer, I don't see any advantage to the developer to having one ioctl() that works with all devices. While it makes sense on the kernel (one api to export), it is total nonsense for the end developer.
type 'man ioctl' : There is absolute no useful information given. It's a generic function and the developer must explictly know what kind of device he is talking to and somehow find the right parameter values to pass in to make it do what he wants. ioctl documentation can never be complete.
I would argue that it's better to have more functions that are strongly typed and can be documented seperately. If the developer want's abstration, let him build it into his application - don't force it on them.
-- Virtual Windows Project
But don't just go by my word. Go spend a few K on a Windows NT server licence, hardware, and documentation, then play with it. You'll know it's Windows because it feels "right," and because it flashes its monitor a very pretty sky blue to let you know it wants your attention. Surveys say that 60% of everyone's favourite colour is blue.
---
--
Internet Explorer (n): Another bug -- that is, a feature that can't be turned off -- in Windows.
Money__ asks: "Since there are now so many different flavors of Windows out there (1.0, 3.1, 95, 98, NT, 2K , etc...) what do they all have in common that lets these all be called Windows? Programs written for one flavor of Windows typically cannot be ported to another without considerable effort. The features offered by the different implementations vary widely: some are more secure than others, some cluster better than others, some offer journaling file systems, some are more robust. The differences between the different kinds of Windows seem to be as great as the differences between any particular implementation and other OSs. Could one port all the standard GUI utilities to GNOME, clone one or two of the popular GUI features, set up the directory structure in the standard Windows layout and call it WINDOWS/UNIX?"
Hmmmmmm
_________________________
I suppose if M$ was to actually provide a near full implementation of a unix shell, filesystem, and command line utilities, it could be argued that NT would be, indeed, a UNIX. The one thing I wonder about is the kernel. UNIX kernels are just that.. UNIX kernels. I'm no kernel hacker by any means, but seems to me for a kernel to be a UNIX kernel, it has to have a certain structure and interface, which makes it a UNIX kernel. SO in that respect, NT could never really be a UNIX.
...though some (including Microsoft) have tried. It may pass POSIX compliance tests, it may run UNIX software, but there are certain differences that will be difficult or impossible to overcome.
First is the security issue. Unix has the concept of a superuser (root). NT has role-based security. "Administrator" is not special other than having more rights than user accounts, including the right to manager user rights.
The key differences are that an NT Administrator cannot open any NTFS file regardless of modes, as a Unix superuser can. Also the Administrator account cannot arbitrarily pose as other users. There is no working setuid() call. (POSIX requires setuid to exist, but it doesn't have to work... it may return EPERM unconditionally. That is just what Microsoft's POSIX subsystem does.)
Second is the executable file format. Most modern OSes have standardized on ELF. NT is one of the holdouts, still using PE (a variant of COFF). Shared libraries on NT (i.e. DLLs) are loaded and relocated by the OS, not in user space as ELF shared objects are. And DLLs have annoying limitations, like requiring data symbols to be imported/exported.
Third, file semantics on NT are tailored for Win32. Ever try to remove/rename a NTFS file while it is open in some process? You can't. On Unix, linking and unlinking of open files is permitted, and many utilities depend on that behavior.
While it may be possible to certify NT as "POSIX-compliant" (or even get Unix branding, I don't know), it will never work truly like a Unix system. There are just too many core differences.
The philosophy is a result of more than twenty years of software development and has grown from the UNIX community
instead of being enforced upon it. It is a defacto-style of software development. The nine major tenets of the UNIX
Philosophy are:
1.small is beautiful
2.make each program do one thing well
3.build a prototype as soon as possible
4.choose portability over efficiency
5.store numerical data in flat files
6.use software leverage to your advantage
7.use shell scripts to increase leverage and portability
8.avoid captive user interfaces
9.make every program a filter
The Ten Lesser Tenets
1.allow the user to tailor the environment
2.make operating system kernels small and lightweight
3.use lower case and keep it short
4.save trees
5.silence is golden
6.think parallel
7.the sum of the parts if greater than the whole
8.look for the ninety percent solution
9.worse is better
10.think hierarchically
I can't believe I didn't see this while scanning the comments--maybe I missed it. A huge part of UNIX is the filesystem. The UNIX filesystem has got to be among the most beautiful device abstraction layers ever built. I don't need to know how many drives are in the machine--or I can add extra drives, change the physical location of data, and keep the same paths and filenames.
/dev/ram and make filesystems in files on my filesystem. Then there are links, especially symlinks. And networked filesystem types that look local to the user (slow with lots of latency, and some race conditions, but local). You can even access the kernel via the filesystem.
I can access my printer as a file, my serial ports as a file, my memory as a file. Heck, I can mkfs
NTFS and VFAT don't have symlinks and the hardware is up-front and ugly (ever try moving an app from C: to D:?). I'm sure there's a lot more, but these things alone are horrible. What happened to device abstraction, that I have to track my hardware when naming files?
-Paul Komarek
Hmmm, you ask a tough question, but here's a go at an answer.
:)) playing field, made of lots of tools that easily allow the user to interact with files, and hence, the computer. Since this is the layer a user spends most of his or her time with, this is what people have come to identify when they say UNIX.
UNIX encompasses more than just a set of API's, and user shells. UNIX has more to do with an OS design philosiphy, than with any particular implimentation. At the outset, UNIX strives to provide an environment made of small utilities that can easily be used together to accomplish a task. This is true from the kernel design, to the typical C API's, out to the actual user environment. From a kernel perspective, most UNIX's have a virtual file system, virtual memory system, and a process swapper. There is much more than this, but these are the three main components. By utilizing features of each of these basic parts, it is possible to implement inter process communication(Pipes, shared memory, etc), security(mostly via the VFS, since most everything in UNIX is seen as a file), and Time sharing(via the process swapper).
The next layer would be the C libraries that most UNIX's come with. While not directly tied to the OS itself, most C libraries will heavily reflect the OS they live on, since they are the common gateway to make sys calls, the main way to call system functions. It is with system calls that a program can interact with files, and access system resources. The OS will handle the scheduling and access control from behind the scenes. The C library is a way to ask for resources.
But, what most people think of when they think of UNIX, is the user environment. Unfortunately, this is missleading. Everything from Windows to OpenVMS, to OS/390 MVS can be made to look and smell like UNIX, but that doesn't make them UNIX.
What the user sees is a simplified(if you can believe that grep, sed, and awk, ad nauseam are simple
The moral of the story is that UNIX really is a "handle" that is used to encompass an approach to OS design. UNIX is a way of viewing how things should be shared, and managed. That is why UNIX runs on almost every platform. UNIX is really a memme that dictates how system resources are controlled, and not one of how a system should be architected from a hardware perspective. UNIX is a way for multiple users to access a single system, in quasi-realtime , interactive fashion. It lays out such things as scheduling, Access Control architecture, and resource presentation. If an OS follows this design philosophy, than that makes it more a UNIX, than what it's user shells look like.
That is why Linux is a UNIX, without having any blessed UNIX C code in it. It's an architecture built on the UNIX philosophy. Just remember to never let a purist hear you call Linux UNIX though. That, unfortunately, is a matter of religion, best left for another discussion.
-Master Switch, one more element in the machine
IMHO the biggest thing all flavors of Unix have in common is the "everything is a file" design. So the answer to your question about porting all sorts of things to NT and calling it MS Unix is no. Everything in NT is an object.
I've been working with Unix now for 20+ years. I've worked in the kernels of Cray Super Computers and been driven batty by a BSDish system running on a no name box for a network logger. The equipment has ranged from a 386 that took 5 minutes to boot Linux to SGI super computer cluster. And there are a few things that they all had in common. These common "features" are, in my not so humble opinion, what makes something "Unix".
For that matter, the user can't tell the difference between an IDE cdrom and a SCSI cdrom.
While API is important, and I wouldn't want to give up my X windows, or bash/tcsh I've run on Unix boxes where those are different or missing. In some cases my tools of choice were missing and I had to bootstrap 'gcc' into place and from there I added the extra tools (sed/awk/tcsh/bash) that made my life comfortable.
Unix is a style. A way of solving problems. We don't think in terms of "monolithic (Office)" programs that do almost what we want, but instead we think in terms of solving a piece of the problem, chipping away till there is nothing left. And in the process we find that we have a dozen new tools that people will use in ways we never considered.
PERL was never intended to be a webserver, but the tool is so powerful that it now is. That and much more. Every tool that Unix has is used in ways that its creator never intended. Microsoft Office will never be more than what it is, What You See Is ALL You Get.
I leave you with this quote then: "Like a precious metal, UNIX is being beaten and molded into whatever forms are most pleasing to the owners." -- Lee A Butler
What is Linux, then? Well, it's "unix-like", despite the FAQ's claim that this term is a trademark violation. Personally, I'm sceptical of the continued validity of the "UNIX" mark (once something enters common usage, it can't be a trademark), but there've been no court challenges, so it stands.
--
Others have already answered the question with reference to POSIX, but I just thought I'd thow in my two Euro as well...
Recently having ported software between Linux, FreeBSD and NT, I have developed my own idea of what a ``UNIX'' is. It's simplicity most of all. Everything is a file, and most calls that work on file descriptors work on _all_ file descriptors. You can make a select() call on a file, a pipe, and a socket. This is impossible on NT, because files are HANDLEs, sockets are SOCKETs, HANDLEs from anonymous pipes cannot be used for select() like calls (only named pipes there). Why this diversity in the API ?
Running a daemon simply requires you to start up the executable with an "&" if it doesn't support forking to background by itself. I have a routine that does this on UNIX as well as on NT. The UNIX code is perhaps 5-10 lines, and the NT code is roughly 150. On NT you must specifically talk to the service control manager, ask it to ask your program to ask it to ask the program to do all kinds of strange things. Horrible, and inflexible to the extreme.
The system calls on UNIX take a minimum necessary number of arguments, and perform some action fairly much as you would expect it to. An average system call on UNIX probably has, say, 3-4 arguments. I haven't counted the average on NT, but I'd guess it's 6-7 arguments there. This is not because NT is more advanced, but because IMO the design of Win32 is flawed.
As an example, to start up a program on UNIX, you'll write something like (dumbed down):
if(!fork())
exec("my_program", arguments, environment)
Two system calls that perform a very clear and simple task each, taking 0 and 3 arguments.
The similar code on NT is something along the lines of a call to CreateProcess() which takes 10 (ten!) arguments. These arguments are: program name, command line and environment as on UNIX. Besides, you'll have to pass arguments such as current directory, process security attributes, thread security attributes, filehandle inheritance flag, creation flags, etc. etc. My favorite is that you have to pass an argument specifying the Window Size (!!) of your new process... I nearly pissed my pants when I saw that.
UNIX system calls are fairly consistent. Usually they will return either a 0 pointer, or the integer -1, if the call fails (depending on whether the call returns a pointer or an integer). On NT the calls return either INVALID_PROCESS_HANDLE, INVALID_FILE_HANDLE, INVALID_SOCKET, FALSE, 0, -1, or whatever the failure-return-code-of-the-day was when some call was last rewritten. Error codes can be retrieved from errno on UNIX, while on NT they come from GetLastError() usually (with some exceptions I've happily forgotten about), unless of course it was a socket call that failed, in which case the errorcode can be retrieved from WSAGetLastError(). Sigh.
The point I'm trying to make here is, that to me UNIX stands for a _fairly_ consistent and well designed API. Win32 is neither well designed nor consistent, and porting command line utilities to NT is not going to make it UNIX, not by a long shot.
The basic cause of the backspace problem is a different ASCII code for the key in DEC terminals (where it's 0x7F) and others such as Sun systems (where it's 0x08). Unix is configurable (using the stty command) to deal with either, so that it didn't really matter too much.
A modern Unix-like[1] system is a blend of many different threads of development, with both Sun and DEC well represented. So, the Linux console follows the DEC convention, while the xterm's in most distributions follow Sun (Debian is the major exception here).
So, in a system with the backspace problem, you have many factors coming together:
And, no from-the-ground-up reconsideration of the system, during which the backspace problem would certainly be fixed.
If that doesn't define Unix, I'm not sure what does.
[1] Yes, I know it's an "abuse of the trademark." The Open Group can stuff it.
LILO boot: linux init=/usr/bin/emacs
You know it's Unix when the backspace key often performs an action other than deleting the character to the left of the cursor.
When (actually if) this problem is fixed, the system will have changed so much from Unix that it probably wouldn't be recognizable to Thompson and Kernighan.
LILO boot: linux init=/usr/bin/emacs
A unix system is like an orgasm. When you have one, you'll know it.
--
Why can't I moderate something "Wrong" or at least "Grossly Misinformed"?
I think the most important thing to realize is that no single thing defines what makes Unix be Unix instead of Just Another Operating System. Sure, there is POSIX, but POSIX doesn't cover everything. Sure, there are the "standard" Unix shell tools, but those can be ported. You can't nail Unix down in any easy definition. Yet, Unix inevitably feels like The Right Thing to those who know it. If you like cliches, Unix reminds me of the old line "I don't know art, but I know what I like."
/, and cannot function without it. It is more then not being able to do anything useful without the programs in the root; it is the fact that the Unix filesystem is a large part of the Unix API.
/bin, configuration data in /etc, devices in /dev, temporary files in /tmp, "user files" in /usr. None of these are mandated by the kernel or the utilities, but they are definitely old friends to a Unix hacker like me.
That being said, I'd like to touch upon a few things that make Unix what it is:
The design of Unix is driven by synthesis. You don't create a specific tool to solve a particular problem; you break it down into smaller, general problems and write general tools to solve them. You then combine those tools to solve the original problem -- but you can continue using them afterwards.
This leads us to The Unix Philosophy. Anything you call "Unix" or "Unix-like" will adhere to it. However, the Unix philosophy is a set of design goals, not a system definition. Something can follow those goals without being Unix. So that doesn't cover everything.
Let's start with the filesystem. As others have said, a key element of Unix is the single filesystem. Unix must have a root filesystem mounted at
Additional filesystems are spliced into this single presentation, not mounted as separate trees. System hardware is abstracted and presented using file system entries. These are things that cannot be done if your OS doesn't support them. Then you have the organization of the files in the Unix filesystem. Programs in
Unix processes also behave in a certain way. Process spawn overhead is low and context switching is fast. Signals and exit codes are used for IPC. fork() and exec() are separate system calls.
Unix treats text as data and data as text. Configuration files are generally human-readable. You can "cat" a binary file without the OS doing end-of-line manipulations. Any particular meaning of a character (^D for EOF, e.g.) comes from the terminal driver, not the I/O mechanism.
Lastly, Unix was implemented in C, and C was designed to implement Unix. Contrast this with other OSes, where the language you're programming in and the system library are generally completely separate things. This synthesis (to borrow from the Mazda ad campaign) "just feels right".
While I'm on the subject, I'd like to address two things that Unix explicitly isn't:
Unix is not a trademark. I'm sure The Open Group doesn't agree with me, but Unix was around before they were, and will continue to be around long after they are gone. They control who can legally put "UNIX" on their product, but that is a matter of layers and money, of which Unix cares about neither.
Unix is not a particular source implementation. There are very Unix-ish things which have not one line of AT&T or BSD code in them, and there are things totally not Unix which contain BSD code. MS-Windows is one of them.
I forget who said it, but if you're looking for one line answers, then this fits best:
"Unix isn't so much an operating system as it is a painstakingly compiled oral history of the hacker culture."
dragonhawk@iname.microsoft.com
I do not like Microsoft. Remove them from my email address.
- POSIX compliant system API
- Availability of traditional UNIX shell tools
- Ability to run without a windowing system
- Modular design
The question is like asking "What's a car?" BMW, Mercedes, Honda, GM and lots of others fit the mold without there being a 'definitive' car. I think the same applies to UNIX: there's lots of variants, based on the same basic (and time-tested) design. I've done some software porting across different UNIX systems and in my opinion, the differences between these systems were blown out of proportion by the marketing machine from Redmond (and others). There are differnces, but they're manageableAlso, while this is not as true anymore as it was a few years ago, I would say that an important part of the UNIX philosophy is the fact that most configuration parameters (and other useful stuff) are stored in plain text files (yes, Solaris and AIX don't do this anymore, but the basic idea is still there). You could port all the shell utilities to NT only to find out that they're basically useless as everything is stored in some binary file that you can't really process with your trusted text tools. ASCII is portable and accessible; a fact that UNIX really drives (or at least should drive) home ...
It's a well-kept secret that the NT Executive has a single-rooted hierarchy, containing device nodes, named pipes, and filesystem roots. It even supports mount points, sort of, via a concept called reparse points.
Of course none of this does us any good, because the Win32 subsystem does its best to hide whatever elegance lives in the NT kernel. You can get glimpses of it... for example, try opening the file \\.\PhysicalDrive0 for reading (don't write to it, that's your raw disk sectors!).
You get the feeling that NT could have been something better if they didn't have to make it compatible with Win9x.
Oh, and BTW, NTFS on Win2k does symlinks too.