Linked by Thom Holwerda on Fri 25th May 2012 14:55 UTC
General Unix James Hague: "But all the little bits of complexity, all those cases where indecision caused one option that probably wasn't even needed in the first place to be replaced by two options, all those bad choices that were never remedied for fear of someone somewhere having to change a line of code... They slowly accreted until it all got out of control, and we got comfortable with systems that were impossible to understand." Counterpoint by John Cook: "Some of the growth in complexity is understandable. It's a lot easier to maintain an orthogonal design when your software isn't being used. Software that gets used becomes less orthogonal and develops diagonal shortcuts." If there's ever been a system in dire need of a complete redesign, it's UNIX and its derivatives. A mess doesn't even begin to describe it (for those already frantically reaching for the comment button, note that this applies to other systems as well).
Thread beginning with comment 519559
To read all comments associated with this story, please click here.
Re:
by kurkosdr on Sat 26th May 2012 11:00 UTC
kurkosdr
Member since:
2011-04-11

The problems of Unix is that:

1. Graphics and audio stacks that don't suck are proprietary (read: belong to Apple). Android is intended for mobiles and we can't be sure if it's graphics and audio stack will fit the desktop's needs.So that leaves X.org as the only real choice for non-Apple systems. You know, the one that's slow and has hardware accel issues like tearing. The much praised nvidia drivers actually have to replace a significant part of X

2. The terminal sucks. The commands have no logical consistency, for example ls prints the result by default, find doesn't, and they were made with the thought one command's output might be a input for another. Someome needs to build wrappers for Unix's CLI commands, now. This would also seperare interface fron engine.

3. The fact the hard drive unix is installed gets labelled as "/", and everything else is essentially mounted on a virtual folders inside /mnt is also insane. Let's be honest, this is a hack because unix was designed for systems with only one drive. If this can't be fixed, let's at least fix it at terminal/GUI level so we can have HDD2:something.jpg instead of /mnt/hdd2/something.jpg

4. Commands should be seperated by ASCII "unit seperator" not spaces. Using the space as both a seperator and a legit filename character is bad. Which reminds me, control characters should be banned from filenames.

Anyway, as a last note, the author of the linked article is falling into the same trap the unix haters handbook fell, treating "Unix" as if it's one thing. Proprietary Unix systems like OS X and HP-UX with truckloads of resources behind them are different from FOSS projects like PC-BSD with little resources behind (sorry free software fanatics). The only grudge one may have with OS X is that theydidn't bother to fix the terminal because it wouldn't look good in a WWDC presentation.

Edited 2012-05-26 11:04 UTC

Reply Score: -1

RE: Re:
by Vanders on Sat 26th May 2012 11:45 in reply to "Re:"
Vanders Member since:
2005-07-06

The terminal sucks. The commands have no logical consistency, for example ls prints the result by default, find doesn't


GNU find has printed the results by default as long as I can remember using it. From the man page:

If no expression is given, the expression -print is used


The fact the hard drive unix is installed gets labelled as "/", and everything else is essentially mounted on a virtual folders inside /mnt is also insane.


You seem to have a fundamental misunderstanding of how the UNIX file system hierarchy is constructed and why it is that way. There is no reason at all to change it, even a little bit.

let's at least fix it at terminal/GUI level so we can have HDD2:something.jpg instead of /mnt/hdd2/something.jpg


Why? What's the benefit?

If it helps, most file browsers you're likely to come across these days will show you a bunch of shortcuts, usually these shortcuts include devices I.e. if you plug in a USB drive, a new shortcut will show up. Clicking on it takes you straight to the device. Which is precisely what you're asking for.

Commands should be seperated by ASCII "unit seperator" not spaces.


Just how were you planning to type this non-printable ASCII character?

Using the space as both a seperator and a legit filename character is bad. Which reminds me, control characters should be banned from filenames.


In hindsight, you may be correct about spaces in filenames. But the set of allowable characters in a UNIX filename is not going to change now: it'd break too much stuff.

Reply Parent Score: 6

RE[2]: Re:
by kurkosdr on Sat 26th May 2012 19:34 in reply to "RE: Re:"
kurkosdr Member since:
2011-04-11

Why? What's the benefit?

Simple. Amateur user sees HDD1:Folder/image1.jpg and HDD2:image2.jpg and immediately understands what's going on. User sees /Folder/image1.jpg and says "Da freak is this? Okay, I guess / is the hardrive i installed the OS or something, because this is were my usr directory is" Then he sees /mnt/hdd2/image2.jpg and says "Why is my second harddisk a subdirectory under my first harddisk? What's that mnt folder? Waahhh, I don't understand what's going on!" See, most people don't know the concept of "mounting", and good luck explaning it to them before their attention span ends. As you say, GUIs try (and partially) solve this problem by making it appear a if Unix/Linux has multiple roots, by Gnome still has a "filesystem" button that will expose the nastyness and confuse the user. IMO all GUIs should completely hide from users the fact Unix doesn't have multiple roots, by replacing "/" with HDD1: and /mnt/hdd2 with HDD2: and hiding the mnt folder, and have a switch somewhere in the settings that old timers can activate to get the real filesystem back (if you know how the Unix filesystem works, you should know the button).

Just how were you planning to type this non-printable ASCII character?

This sounds funny, but it's a real problem. It's the lack of a unit seperator button that's causing spaces to be a problem with most CLIs. Just use some key combination like shift+space. No, that would make typing slower. You could mandate double or single quotes, but again some people would complain it makes typing slower. Ok, I don't have an answer. Anyway, this isn't Unix's fault exactly, I admit.

Well tell me why I don't have X.org (or Wayland or MGR or any type of GUI) installed but I can still use graphical programs?

How? What is your OS using to draw on the screen? Do you have hardware accel and what drivers are you using? Anyway, the fact most (non-Apple) Linux and Unixes ship with the slow, problematic X.org, is turning people off from using them. If X is not needed, why everyone bundles it with their OS? So that some geeks can boast their OS has a network transparent desktop? Just selve the network transparent desktop most people don't need 'till you have perfected it. Geeks can download and install X by themselves if they want a network transparent dekstop. And since we are talking about graphics and audio stacks, Linux innovates once again by breaking audio too (which used to work in *nix) with pulseaudio, yet another middleman unecessary for most users.

PS: Another problem with *nix is that Unix has a really narrow hardware compatibility list, and Linux tends to break upgrades if binary blobs are used to run the hardware, but I am an optimist, and hope that Sputnik will solve this, by providing a range of laptops with Linux friendly hardware that doesn't break during upgrades, but till that happens, it's still a problem. And when it comes to Unix, it's still "good luck, dude" when trying to find compatible hardware (esp laptops)

Edited 2012-05-26 19:46 UTC

Reply Parent Score: 1

RE[2]: Re:
by Zobeid on Sun 27th May 2012 03:33 in reply to "RE: Re:"
Zobeid Member since:
2012-04-28

You seem to have a fundamental misunderstanding of how the UNIX file system hierarchy is constructed and why it is that way. There is no reason at all to change it, even a little bit.


I'm with kurkosdr, it's madness. His (and my) "fundamental misunderstanding" is indicative of just how wacky it is. Your inability, or unwillingness, to explain what we're missing just further underscores this. I'm guessing it would take a major effort to lead us through the convoluted logic to justify a scheme that's so counterintuitive to normal, non-Unix-indoctrinated people.

Furthermore, I've see how well named volumes worked on the AmigaDOS command line. That made sense.

Reply Parent Score: 1

RE[2]: Re:
by Delgarde on Mon 28th May 2012 05:14 in reply to "RE: Re:"
Delgarde Member since:
2008-08-19

GNU find has printed the results by default as long as I can remember using it.


Not just GNU find, either. Every 'modern' UNIX system I've used (AIX, HP-UX, Solaris) behaves this way.


In hindsight, you may be correct about spaces in filenames. But the set of allowable characters in a UNIX filename is not going to change now: it'd break too much stuff.


That, and it's not *that* big a problem. Modern shells with tab completion cope pretty well with spaces in filenames, automatically escaping or quoting characters that would cause parsing problems. An annoyance, certainly, but only a small one.

Reply Parent Score: 2

RE: Re:
by JuEeHa on Sat 26th May 2012 12:15 in reply to "Re:"
JuEeHa Member since:
2012-04-24

>So that leaves X.org as the only real choice for non-Apple systems.
Well tell me why I don't have X.org (or Wayland or MGR or any type of GUI) installed but I can still use graphical programs?
>2. The terminal sucks. The commands have no logical consistency, for example ls prints the result by default, find doesn't
Well both print results on my system (I have busybox).
3. The fact the hard drive unix is installed gets labelled as "/", and everything else is essentially mounted on a virtual folders inside /mnt is also insane. Let's be honest, this is a hack because unix was designed for systems with only one drive. If this can't be fixed, let's at least fix it at terminal/GUI level so we can have HDD2:something.jpg instead of /mnt/hdd2/something.jpg
Some people like multiple roots, some don't. I prefer to have my data on /.

Reply Parent Score: 1

RE: Re:
by Soulbender on Sun 27th May 2012 07:36 in reply to "Re:"
Soulbender Member since:
2005-08-18

The commands have no logical consistency, for example ls prints the result by default, find doesn't,


find prints by default.

Someome needs to build wrappers for Unix's CLI commands, now.


More wrappers, awesome idea...

If this can't be fixed, let's at least fix it at terminal/GUI level so we can have HDD2:something.jpg


Because that's a great improvement. or not.

Using the space as both a seperator and a legit filename character is bad.


Are there any modern operating systems that doesn't do this? Nope, they all use space both as a command separator and a valid file name character.

I'm pretty happy you don't have any real input on how the OS should work.

Reply Parent Score: 4

RE: Re:
by Doc Pain on Sun 27th May 2012 09:25 in reply to "Re:"
Doc Pain Member since:
2006-10-08

Someome needs to build wrappers for Unix's CLI commands, now.


To wrap them into what exactly?

This would also seperare interface fron engine.


For CLI programs, I think one can see the interface as an essential part of the engine. You cannot separate them at this low level.

The fact the hard drive unix is installed gets labelled as "/", and everything else is essentially mounted on a virtual folders inside /mnt is also insane.


First of all, please try to use the proper terminology. There are no folders. Those are called directories. A folder is the name of a visual representation of a directory.

Then, the disk isn't "labeled as /". Depending on support, disks and their partitions can actually be labeled (e. g. "bootdisk", "datadisk1", "datadisk2"). / is the root of the file system hierarchy. This is not neccessarily a hard disk! For example, if you boot from a DVD or a USB stick into a RAM disk like environment, there are no hard disks at all. And now you introduce hard disks to that system. Depending on if you apply some RAID technology, a disk, a part of a disk or a compound of disks might be mounted at /home in that hierarchy.

Depending on the system you're using, /mnt might be reserved for specific operations, e. g. as a temporary mount point for the system operator. Using the "everything is rooted in /, but mounts can be done everywhere" concept, you are free do even mount several disks "combined" into one directory, e. g. you have /opt/stuff containing files of many disks. This enables you to separate functionality of the system into different media (or as a memory file system), and you can easily enforce specific mount options for security (e. g. no execution possible) or access (e. g. can only be read) or speed. You can even swap the set of installed programs or databases based upon mount point (just changing which device gets mounted).

Let's be honest, this is a hack because unix was designed for systems with only one drive.


As you see from my examples, UNIX has been designed to have lots of drives. Flexibility is the key.

If this can't be fixed, let's at least fix it at terminal/GUI level so we can have HDD2:something.jpg instead of /mnt/hdd2/something.jpg


What's the difference? I don't see anything significant here. I see you show a "drive as a prefix" habit such as the "drive letters" you find in DOS and "Windows", but why should they be tied to be the 1st element of a path? What if symbolic links enter the stage? How should that be processed?

You see that the flexibility of "mount wherever you need it" is superior to this approach.

However, the representation to the user is a totally different thing. For example, if you attach a disk to the system, an icon pops up on the desktop, you click it and see what's on the disk. Need to deal with device names or paths? No.

Commands should be seperated by ASCII "unit seperator" not spaces.


The space is the command line separator. If filenames do contain spaces, quoting or escaping is needed.

If you compare to VMS, you'll find a slightly different approach: Here command options or qualifiers are often found as associations, e. g. instead of calling "dostuff in.txt out.txt" you do "dostuff /in=in.txt /out=out.txt" which is more verbose, but you could omit the spaces.

Using the space as both a seperator and a legit filename character is bad.


Correct. You shouldn't use spaces in file names. Using _ is possible, and many GUI programs simply substitute the _ to an actual space in display. However, there are "tricks" that a good programmer has to implement to make scripts work with malformed filenames that don't just contain spaces, but also other possible characters, such as quotes, newlines, and backspaces.

Anyway, as a last note, the author of the linked article is falling into the same trap the unix haters handbook fell, treating "Unix" as if it's one thing.


This makes it easy to compare to "Windows" which is also interpreted as being "one thing". :-)

Reply Parent Score: 3