Adrian responds to my response to his response to Preston Galla's comments on Linux UI for the Windows Guy. We seem to be violently agreeing, which makes for the best arguments ;-)
If you lived on the command line then something like Linux where the command line is such a central part of the OS is definitely going to better than Windows and Cygwin but if you just need the occasional uber-command then Cygwin and Windows is going to be just as good for you. In short, the command line is a great feature of Linux but it's not an exclusive.
Is off base, though possibly correct under perfect circumstances. Cygwin won't be enough because if you don't use it, you don't learn it. The windows user who suddenly realizes he needs to find every directory containing a file modified on tuesday or thursday, and then zip up said directories to send to their boss, is SOL -- he's facing a tedious half hour of work using search, opening containing folder, dragging to winzip, rinsing, repeating. Someone who has worked on *nix for half a year, using its native interface, will do it in ten to thirty seconds. Having the shell available isn't going to help if you don't use it and learn it. This is a paradigm thing -- the drive to ubiquitize computers required them to have an interface comparable to that of a toaster. Now that they are ubiquitous, lets bring back the idea of a powerful interface. Please.
We can create seemingly contrived examples like this all day, but the fact is that what you are capable of increases exponentially in some environments. A programmer sitting at a typically windows workstation doesn't generally think of doing silly things like schema dumping from postgres, piping the schema through perl (or sed and awk) to replace INTEGER with BIGINT on primary key fields, and then restoring the schema. The range of "oh, I can actually do this" expands hugely. Oddities like this come up all the time. An interface designed to make things possible is key.
The power and ease-to-new-user-ness of an interface are usually inversely proportional. This is because the features that make an interface powerful to a user who knows the domain confuse the new user. This is the same from power tools to cars. I want the environment I spend a third or more of my waking hours working in to be designed for someone who knows how to use them, not designed to make people new to it more comfortable. The Windows abstractions scale nicely towards new users, but present a brick wall for experienced users. As I mentioned, the interface there is designed to minimize support calls from new users, not to maximize the productivity of experienced users.
He also raises the point that linux "needs something nothing else has" in the UI department. I agree, but I, personally, want that great thing to be making it more powerful, not making it easier-to-use. The selling point of "using foo will make employees on average 300% more efficient after six months of experience in it" is, I think, much more potent than "using bar will let employees be as efficient as the interface allows after two days."
The huge thing linux has that nothing else does is that it provides this interface, integrates everything with it, is free to obtain, straightforward to set up, and available right now. FreeBSD is similar but not as straightforward to set up. OS X has it all but the free thing -- it is pricy (but, as I mentioned, well worth it imho, though if Apple doesn't start treating developers better, this could easily become moot to me). Linux doesn't need to lock people into linux (though Novell and Redhat may disagree with this).
Speaking of interfaces designed for power instead of duh-ness -- look into QuickSilver and VoodooPad. If I do move back to Linux on workstation, or even windows, I will be re-implementing QuickSilver and VoodooPad as soon as I get the compiler working. Note that both allow executing command line scripts from their primary interface (though doing it in QuickSilver requires a small hack) =)
I know I am arguing something different from Adrian. He is saying that linux needs something to set it apart. I guess I am saying it already has that, but people don't realize it until they work in it for a while. OS X really is the biggest thing to threaten linux on the desktop. I have an attitude towards it more common in the FreeBSD space -- "good, now people will stop asking newbie questions on the mailing list and let us do our thing."
6 writebacks [/tech] permanent link
Adrian Sutton comments on Preston Gralla's comments on linux on the desktop. They both miss the point though, I think. The native linux user interface is bash
. Gnome, KDE, WindowMaker, Ice, etc are candy to make it easier to see several instances of bash
and vim
(or even emacs
) at once.
This is important. The greatest component and software reuse idiom ever realized is Unix pipes. The pipeline is probably the most successful and used design idiom in the world, in and out of software or hardware. The native linux user interface is all about the pipeline:
find blosxom/entries -name '*.txt' | xargs head -n 1 | egrep -v '==' | sort
Took 5 seconds (up from 2 because I forgot head was helpful when you gave it multiple files and tells you which file you are looking at) and gives me the alphabetical list of all my blog entry titles.
find blosxom/entries -name '*.txt' | xargs head -n 1 | egrep -v '==' | sort | grep -i ojb
now gives me the ones with (case-insensitive) "ojb" in the title. Note that I didn't type the line in again, I just used:
!find | grep -i ojb
same thing =)
ssh -L9000:localhost:9000 brianm@apache.org -t ssh -L9000:blog.skife.org:80 mccallister@kasparov.skife.org
And I just set up an http proxy on my local machine, routing through apache.org, routing through kasparov.skife.org, to (eventually) my blog. This seems silly, until you need to do such silly things as talk to services across half a dozen NAT's, or access CVS through half a dozen NAT's, or as happened recently, conveniently access a local website from a variety of hosts in order to figure out why it is timing out for some people, but not others (dns issue it turned out) scattered around the world.
Admittedly, I am using OS X, not linux. If your budget allows, I think OS X blows away any linux distro around for a workstation, but if it doesn't, linux blows away Windows. The native linux UI (bash
) has been steadily evolved for thirty years to maximize the productivity of people using it. The standard Windows UI (explorer) has been steadily evolved for twelve (?) years to minimize the number of support calls.