Unix is Dead, Long Live Unix

The phrasing “…knocked out in one month what would become…” is extremely misleading. Thompson and Ritchie (and others) worked on UNIX for YEARS before it even started to become known outside of Bell Labs, and inside Bell Labs it still was just an interesting research project.

I would say that nearly all successful software contributions started with a prototype that was “knocked out in one month.”

Thompson (especially) and Ritchie were extremely talented programmers, but the the one-month stuff doesn’t even remotely describe how they worked.

–Marc Rochkind

The real difference between Unix and Windows IMHO is:

Unix sometimes sucks, because it is too simplified. You don’t understand? E.g. almost everything is a file. A device is a file. A mounted server share is a file (well, a folder, but even a folder is more or less a file in some way). Shared Memory is a file. A lock between processes is a file. Why? Because there are routines to manipulate files (these are needed anyway), so why not using them for anything else? I tell you why: Because a device is no freak’in file; period! ::rant, rant::

Windows on the other hand sucks because instead of trying to be dead simple, thy try to be extremely sophisticated - often way too much in situations where this wouldn’t be necessary and only makes everything more complicated.

You should mix them together… then again, maybe net. You know, sometimes you are lucky and get the best of both worlds. However, if you unlucky, you get the worst of both worlds :frowning:

“You’ve missed Solaris. OpenSolaris != Solaris. Solaris has huge inroads in the financial markets and is the platform of choice for Oracle, as evidenced in one company buying the other.”

Solaris is not always the platform of choice for Oracle, Sam. I have the dubious honor to be the sysadmin for an Agile PLM system - one of the key components for Agile PLM in their next release is Windows-only. A version for Solaris has been promised for going on two years now: it’s yet to show up.

I think it is also possible that ‘liking’ Solaris has very little to do with why Oracle devoured Sun.

I live in Finland. Beat that!

Anyway, I have not gone back to Linux after I got my Windows XP machine. Russians are hoping that Microsoft extends the sales of XP. I guess I might go to Windows 7 when I get a new machine.

You can win - OSX: very useful to both programmers and users. Whichever level you want to use it at, you can.

@Sam: “Also, don’t forget UNIX services for Windows, or whatever they’ve rebranded it to now. IIRC it ships with 2008 server.”

Originally known as OpenNT then Interix then Services for Unix (SFU) and currently Subsystem for Unix Applications (SUA [pronounced almost like “sewer”] go MSFT branding!) but it is still reported as “Interix” by uname. This is an interesting one because it leverages the microkernel-esque architecture of the NT kernel. Interix is a direct fork of OpenBSD and provides a BSD-flavor environment on top of contemporary Windows.

It’s a little bit mind bending at first but, in the main, a nice environment.

It contains proprietary and open source code. The posix subsystem itself(psxss.exe and psxss.dll), terminal/application launchers (posix.exe and psxsrun.exe) are propreitary but most of the UNIX applications and libraries are open source. The whole package is “mixed/shared source” where you get infrequent binary drops of “Utilities and SDK” from Microsoft but there is also a ports tree hosted at suacommunity.com (which is at least partially funded by Microsoft).

Anyway it fits into the middle column along with OS X/Darwin and Solaris/OpenSolaris

Unix UI doesn’t work, that is the problem.

Actually, the story that Linux was written over the course of a month when his wife and chld were away are false. In fact, Ken Thompson wrote about 90% of the codebase in a little over an hour. The rest of the month was spent consuming Diet Soda and Ho-Hos while stuffing dollar bills into the G-String of a stripper at the local watering hole who was apparantly putting herself through college.

Great post Jeff, I particularly like the Michael Feathers quote about simplicity, that’s a thought I run into almost weekly in my 10+ years as a programmer.

I was a UNIX programmer for about 5 years early on in my career and I do find it funny how the Windows programming world was always referred to as “The Dark Side”. I’ve since switched to the dark side and enjoy all the things MS has done for programmers (c#, Visual Studio IDE, etc), but I still have to admit that programming in UNIX is still great fun.

“spending one week each on the operating system, a shell, an editor and an assembler.”

When I read that I thought to myself, “but surely NOT in that order???” But perhaps I’m just showing my own limitations when it comes to design & development …

-irrational john

“Unix UI doesn’t work, that is the problem.”

That’s NOT the problem. That’s a symptom of the actual issue, which is that “Unix culture values code which is useful to other programmers.” Most programmers are not mouse-dependent. The Unix UI is actually really good, as long as you’re looking for something that’s command based, rather than pointer based.

The actual problem is that many Unix programmers seem ludicrously incapable of realising that over 70% of the end-user base is NOT looking for that, and has no desire to be forced into using it. The few that don’t are to be cherised.

Last line should have been “The few that ARE CAPABLE should be cherished.”

I agree that Linux is Unix and people who contrast them (generally comparing commercial Unices vs. Linux) are operating from a purely commercial perspective. That said, UNIX is a trademark that somehow found its way from AT&T to the Open Group, and you need to meet a set of well-defined specifications to qualify. Of the products you listed, only Solaris (not OpenSolaris), AIX, HP-UX and OS X qualify, as per:
http://www.opengroup.org/openbrand/register/

Maybe unix programmers do primarily care about usefulness to other programmers, but maybe, as a side effect, some of the most significant and profoundly useful software (web crawling+weighted indexing search, DNS, SMTP, HTTP, etc…) was invented in or adjacent to Unix. Simultaneously, Unix software became more useful and significant when Macs and Windows started to talk to it (graphical browsers). This was easy and possible because of protocols which are part of the unix culture, gave non Unix programmers few barriers, and lots of potential for the imaginative.

The popularity of the public internet did make unix programers care about being useful to non technical users, they just seem to leave the UI details to something at the other end of a socket. Isn’t much of the modern infrastructure (water, electricity, highways) sort of a simple consistent interface on top of lots of geeky engineered artifacts that were built with what might appear to be indifference to its comprehension by untrained eyes?

Also I think the competition from unix has forced commercial OS vendors to face the truth, that OS’s are all very similar behind the pretty pictures, so the differentiation is primarily in the UI.

“That’s a symptom of the actual issue, which is that “Unix culture values code which is useful to other programmers.””

I don’t see a problem with this. Let all lusers keep their Win boxes. I could care less. With all that OSS has accomplished by now, if lusers still don’t see the benefits or are willing to learn something new, then they don’t deserve it.

“Windows culture values code which is useful to non-programmers.”

This is why I think you and Spolsky are so funny. You think you’re saying something insightful but in fact you’re just trying hard to sound smarter than the rest of us.

The problem with this statement is that it doesn’t mean what you think it means, because code is never useful to non-programmers. It’s CODE! And we all know that there’s more than one way to program a particular feature. The reason that Windows will be gone long before Unix is that to developers, it’s the code that matters and its developers that decide which tools to use. So you’re right, developers prefer Unix because of its philosophy but your assumption that this precludes useful use by non-technical users is false because you can build the non-technical features in either style. Again, the codes doesn’t matter AT ALL to the end user.

In the end, Windows will lose and you’ve already agreed.

How does the “end-users are programmers vs end-users are non-programmers” dichotomy explain Mac OS X, though?

Good post Jeff. I especially like the link from Joel. It really does explain a lot. I always hated the smug superiority complex attitude that I’d get from Linux devs and users but this at least sheds some light on why I’ve always clashed so heavily with their views. They believe that all software should be free and scriptable from the command-line; whereas, I prefer software to be paid for (so I can pay for new rims for my Benz) and to have a nice usable GUI for ease of use for non-programmers. It really all boils down to me targeting my software to non-programmers to make money and them targeting programmers with their software for communism(I’m kidding)…er I mean for free. It makes a lot more sense now really…

Good post Jeff. I especially like the link from Joel. It really does explain a lot. I always hated the smug superiority complex attitude that I’d get from Linux devs and users but this at least sheds some light on why I’ve always clashed so heavily with their views. They believe that all software should be free and scriptable from the command-line; whereas, I prefer software to be paid for (so I can pay for new rims for my Benz) and to have a nice usable GUI for ease of use for non-programmers. It really all boils down to me targeting my software to non-programmers to make money and them targeting programmers with their software for communism(I’m kidding)…er I mean for free. It makes a lot more sense now really…

I’ve always felt a little uncomfortable about Joel Spolsky’s line about Unix vs. Windows culture (“Unix culture values code which is useful to other programmers, while Windows culture values code which is useful to non-programmers.”)

I’m way more “user” than “programmer” but every time I use Windows I feel like it positively drips contempt for the end user.

Unix might not be “user friendly” in that it requires typing commands or whatever, but it doesn’t talk down to me. I learned the hard way that rm * is VERY SHARP, but at least Unix lets me play with knives. (Yes, I know about CMD.EXE but somehow that’s just not the same)

OS X really hit the balance here: I get Photoshop AND the Bash shell. If I’m too lazy to handle the knives carefully, I let the Finder do it for me. But when I really need to ginsu the crap out of something, hey, here are all my old Unix friends waiting in the Terminal.