Linux and the Unix Philosophy 234
Linux and the Unix Philosophy | |
author | Mike Gancarz |
pages | 200 |
publisher | Butterworth-Heinemann |
rating | Recommended |
reviewer | limbo_14 |
ISBN | 1555582737 |
summary | An updated and expanded version of Gancarz's original book, The Unix Philosophy. |
The good stuff...
I enjoyed Mike Gancarz' first book The Unix Philosophy greatly when I was first getting into the Unix world, and was hoping for an updated version. The thing that makes this book stand out in the shelves full of How-To, Dummy, and Administrator guides is the fact that it covers the What and Why of Unix/Linux rather than the How's. I am constantly amazed at Unix books that are mostly printed man files, and things that can easily be googled. This book explains with great precision why Unix is the way it is, and what separates it from other OS paradigms.I realized the importance of this book after reading it, and being forced to do interviews for a Unix Engineer at my office. Of the 7 candidates, 6 of them seemed to know the textbook stuff. They knew the commands, they knew vi and a handful of scripting languages to a degree of proficiency. Alas, this is what it takes to become a Unix Administrator, not an Engineer that needs to see the whole picture. In this world of "puppy mill" Unix admins who have certifications and know one or two flavors of Unix/Linux, this book really teaches people the core of why Unix/Linux is the way it is, and why it is so attractive to those who really care about which OS to use.
The last chapter -- "Brave New (Unix) World)" -- is the real kicker. Gancarz really drives it home, and shows how the Unix/Linux philosophy has made it into other aspects of technology, and in the world we live in.
The not-so-good stuff ...
With every good book, there must be some bad, although this one's errors are quite forgivable. Although I appreciate any book that loosens the RFC style nature of so many technical books, sometimes it can go a little too far. This, however, is for each reader to judge. Some of the puns made me squirm, but for the most part they added a nice touch of levity to the book. So, depending on your threshold for python-esque puns or corny Elvis jokes, the book may not be for you, but knowing the /. Crowd, I don't think it will cause anything more than some groans and giggles.All in All...
This is a quality book. It is one that should be re-read every now and then to make sure you do not stray from the Tenets that Gancarz drives home throughout the book via anecdotal evidence.This book can and should be read by anyone from a newbie hacker to a Corporate CEO. It is just technical enough not to make one feel patronized, and eases you into it with general concepts just enough to make it not feel like reading IETF standards. Here are the chapters, which give a good overview of what each is about:- Table of Contents
- The Unix Philosophy: A Cast of Thousand
- One Small Step for Humankind
- Rapid Prototyping for Fun and Profit
- The Portability Priority
- Now THAT'S Leverage!
- The Perils of Interactive Programs
- More Unix Philosophy: Ten Lesser Tenets
- Making Unix Do One Thing Well
- Unix and Other Operating System Philosophies
- Through the Glass Darkly: Linux vs. Windows
- A Cathedral? How Bizarre!
- Brave New (Unix) World
Although this is not the cheapest book in the rack, it packs more of a punch than half of the books on my shelf, so I think it is worth it. I found it a great read on the metro on the way to work in the morning, and found myself finishing it well within a week. With 200 pages, and by making it fun to read, Linux and the Unix Philosophy breezes by and makes for a great read.
You can purchase Linux and the Unix Philosophy from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
Tragically, (Score:5, Funny)
Re:Tragically, (Score:2, Funny)
Re:Tragically, (Score:4, Insightful)
Funny, my arse...
Understanding the Linux Kernel, 2nd Edition (Score:2)
[oreilly.com]
http://www.oreilly.com/catalog/linuxkernel2/
It has linux kernel 2.4 snippets?
That's DEFINATELY violating SCO's (fake) IP.
ChiefArcher
HTML and the UNIX commandments... (Score:5, Funny)
Re: HTML and the UNIX commandments... (Score:3, Funny)
And anyway, what's the problem? All the italics seem properly localised. Has the article been edited since your post?
Re: HTML and the UNIX commandments... (Score:2)
No, no, no - that's not the /. way! Accepting correction, let alone being grateful? Goodness, no. At the very least you should have given me a right flaming for my presumption... :)
Anyway, glad to be of service. At least I couldn't flame you for neglecting to use a spell-checker...
This guy is crazy.... (Score:4, Funny)
Now that I think of it, the two things Berkley is famous for is UNIX and LSD, and I dont' think it's a coincidence.
Re:This guy is crazy.... (Score:2)
Please... (Score:2)
Don't perpetuate the myth that LSD burns out your brian.
Tryptamines are good for you.
Re:This guy is crazy.... (Score:2)
Re:This guy is crazy.... (Score:2)
Re:This guy is crazy.... (Score:2)
Re:This guy is crazy.... (Score:2)
Hamster
Something I've never been able to figure out. (Score:5, Insightful)
- Small is beautiful.
- Make each program do one thing well.
Why is it then that there are people out there who spend their entire lives with UNIX/Linux, and who ignore this?
Some of the best examples are sendmail and emacs. And no, this isn't a troll. But I just don't understand why such people just don't get it. Clearly it isn't a lack of intelligence.
But this paradox is something which I've never been able to figure out.
Re:Something I've never been able to figure out. (Score:2, Interesting)
Because it's old and out of date. The new ideals should be:
- Stable is beautiful
- Make each program do what it does completely.
Few folks enjoy puny programs that do one thing very well--when they want to do something slightly different, they wind up using a bunch of differenet tools.
Also, the advent of windowing, color, and richly formated files has made "small simple programs" too hard to
Re:Something I've never been able to figure out. (Score:4, Insightful)
Ah-ha! A light bulb has gone off over your head. That is th point of the Unix philosophy.
Thanks to the Unix philosophy, when someone wants to do something slightly different, they won't need to install a new, slightly different application; they can select different arrangements of tools from their existing collection to solve almost any problem imaginable.
With the "one complete tool, one complete problem" philosophy, every I have a new problem, I must acquire an entirely new tool. If I have a problem no one else has ever had before, no tool will exist yet, and I must either create it myself or pay someone to create it for me. I must then learn and/or be trained to use it.
By attacking problems with small, specialized tools that I am very familiar with, (i.e. by splitting a problem into many smaller, more specialized sub-problems), I can use the same basic Unix toolset to solve arbitrary problems of almost arbitrary complexity.
Almost anything can be accomplished with bash, perl, awk, and the collection of shell tools and command-line networking tools on a Linux/Unix system. And if you need some functionality that the tools can't provide, you don't need to install a 100% beginning-to-end solution complete with duplicate functionality and learning curve, you install a new small, specialized tool (i.e. gphoto2 to fetch photos from a camera) to solve the 1% of the problem that needed a new tool and use the tools you already know and have for the other 99% of the problem.
Efficiency and flexibility are key in Unix.
Some people argue (as you have) that these come at the expense of ease of use, but that is only true for small (admittedly often consumer-oriented) problems. Without doubt, however, past certain threshold values of problem size and complexity, efficiency and flexibility (i.e. small and specialized teams of scriptable tools) drastically increase ease of use relative to other methods, not to mention time and expense to deployment.
Re:Something I've never been able to figure out. (Score:4, Informative)
Sort of. The "UNIX philosophy" has some very good elements in it--but it's not without its flaws.
The biggest one, IMO, is getting a tool changed and automating multiple computer tasks to one human-task.
And if you need some functionality that the tools can't provide, you don't need to install a 100% beginning-to-end solution complete with duplicate functionality and learning curve, you install a new small, specialized tool (i.e. gphoto2 to fetch photos from a camera) to solve the 1% of the problem that needed a new tool and use the tools you already know and have for the other 99% of the problem.
Depends on the problem, what what your current state of learning is. (Don't toss around statistics that you don't have--we have perfectly good words for "majority" and "minority")
As I said, the problem is the advent of the GUI and the commonality of richly formatted documents--two major elements of modern computer usage that weren't really dealt with when the orignal UNIX system was created. For some modern applications, such as working with pictures, small apps added to the old apps can work. For other applications, such as 3D design, the current suite of small apps don't work.
Some people argue (as you have) that these come at the expense of ease of use, but that is only true for small (admittedly often consumer-oriented) problems.
A minority ("1%") of computers are used to solve problems. Most computers in service today are used to replace pen & paper, communicate, or play games. And most of these computers are used in a GUI environment, never (or almost-never) using the command line.
I would love to see a removal of the division between "command line" and "GUI", just as I would love to see a removal of the user-distinction between "programs" and "tasks" et al.
Re:Something I've never been able to figure out. (Score:2)
What problems are you referring to?
Most computers in service today are used to replace pen & paper,
Problem solved: Inefficiency and inaccessibility of information.
communicate,
Problems solved: In a business environment: Easy flow of information, shortening effective physical distance between parties, etc.
or play games.
Not sure if this is solving or creating a problem
And most of these computers are used in a GUI environment, n
Re:Something I've never been able to figure out. (Score:2)
This is because 3D design (e.g., CAD) is perhaps one of the most complex problem domains I can imagine. Capturing, dimensioning, tolerancing, and finishing a part in Pro/ENGINEER, for example, requires calling hundreds of different aspects of the UI into action. Pro/ENGINEER itself--in all its massive glory--is the s
Re:Something I've never been able to figure out. (Score:2)
What bash, perl and awk scripts did you use to post this comment with?
Ye of little faith... (Score:2)
Re:Something I've never been able to figure out. (Score:3, Insightful)
Re:Something I've never been able to figure out. (Score:2)
If a geek goes to hell, this project will be their eternal punishment.
UNIX vs Windows (Score:2)
Some people argue (as you have) that these come at the expense of ease of use, but that is only true for small (admittedly often consumer-oriented) problems. Without doubt, however, past certain threshold values of problem size and complexity, efficiency and flexibility (i.e. small and specialized teams of scriptable tools) drastically increase ease of use relative to other methods, not to mention time and expense to deployment.
I could not have put it better myself. Have you ever really tried to learn U
Re:Something I've never been able to figure out. (Score:2)
Think of it this way. A carpenter's workshop is packed with 100s of small tools that do small and simple things. A hammer to drive nails. A saw to cut wood. A chisel to shape joints. No single tool will "build a box" or
Re:Something I've never been able to figure out. (Score:2)
I'd agree abiout emacs, and indeed tried to convince ESR that emacs goes against the Unix philosophy for his TAOUP book, although he wasn't having any of it. However, I disagree about sendmail. Sendmail isn't huge, and it only does one thing (email routing), and it does it very well. I'm not going to argue about its ease of configuration, or its historical security problems. But in terms of doing what it's designed for, you can't fault it.
In general, thou
Re:Something I've never been able to figure out. (Score:3, Funny)
Well, he at least has a section on that discussion (here [catb.org]) but in line with ESR's other writings, what it lacks in content in makes up in verbosity and self promotion.
Too true (Score:2)
As for security issues, it seems to have fewer cert's than the Li
Re:Something I've never been able to figure out. (Score:2)
I don't really agree... For any UNIX system to perform well as a desktop system, it needs a powerful desktop environment. It doesn't have to be big, but that helps.
For a lot of people, probably most of them, a really powerful desktop environment must be able to do what they want transparently. MacOS and yes, Windows, can do th
Re:Something I've never been able to figure out. (Score:4, Insightful)
While I understand where you're coming from, that isn't quite fair. KDE and Gnome appear to be attempts to produce a Windows-style GUI atop Linux. This doesn't mean the developers don't get it - it could mean that they get it and yet prefer a Windows-style GUI for some or all tasks. Or that they see a need for such a GUI to let "normal" people use Linux.
Subjectively, I feel the same alienation you are expressing from KDE and Gnome.
Re:Something I've never been able to figure out. (Score:2, Interesting)
I am currently working on a small web content management CGI in C, based on the "small is beautiful / Make each program do one thing," paradigm. It is made of several smaller programs, each does one thing (one part is the CGI, and recieves the request and returns the output, one part is an XSLT transform engine, one part is a cacheing engine that will cache the XSLT output and only rerun the XSL t
Re:Something I've never been able to figure out. (Score:2)
Make everything small, easy and well documented. But this does not mean each applications is limitted to 50 lines of code. It just means if you have an application it should not call on 50 libraries to pop up a window or make function calls like myFunkyFunction_GTK++--::_GNOME_blahBlahBLAH(). Again, keep it si
Re:Something I've never been able to figure out. (Score:2)
<FLAMEBAIT>Emacs would be a great OS if someone would just write a decent text editor for it</FLAMEBAIT>
Jokes aside, I agree with this point, in that it defies the "smaller is better" UNIX philosophy. I never use it, but i'm pseudo-admin and last install I did of xemacs was over 100Mb, I still remember 20Mb hard drives and single 800Kb floppy Macs. But there is an overarching "the right tool for the job" philosphy, and for certain people, the
Submission guidelines? (Score:3, Insightful)
This is a quality book. It is one that should be re-read every now and then to make sure you do not stray from the Tenets that Gancarz drives home throughout the book via anecdotal evidence.
Are these two items REQUIRED for book reviews on Slashdot? The word "andecdotal" and "puns"?
Doesn't [slashdot.org] seem like it.
Where's the Beef? (Score:5, Informative)
I guess I was hoping for a little more detail about why this book is good other than "it's not man pages or RFCs."
EveryThing2 (Score:4, Informative)
Listed in the first chapter, the following nine points are the key tenets:
Small is beautiful
Make each program do one thing
Build a prototype as soon as possible
Choose portability over efficiency
Store numerical data in flat ASCII files
Use software leverage to your advantage
Use shell scripts to increase leverage and portability
Avoid captive user interfaces
Make every program a filter
Allow the user to tailor the environment:
Make operating system kernels small and lightweight:
Use lower case and keep it short
Save trees
Silence is golden
Think parallel
The sum of the parts is greater than the whole
Look for the 90 percent solution
Worse is better
Think hierarchiacally
Re:EveryThing2 (Score:5, Funny)
All program names 4 chars please
Make each program do one thing
But provide for it to do that thing in 52 different ways.
Build a prototype as soon as possible
And then stop.
Choose portability over efficiency
Remember that you are only interested in porting to other Unix systems.
Store numerical data in flat ASCII files
So much for small being beautiful
Use software leverage to your advantage
Err, whatever.
Use shell scripts to increase leverage and portability
While simultaneously decreasing maintainability!
Avoid captive user interfaces
Preferably by not having any user interfaces.
Make every program a filter
Especially the 'shutdown' command.
Allow the user to tailor the environment:
Sure saves you having to figure out what works.
Make operating system kernels small and lightweight:
But keep them monolithic, Linus!
Use lower case and keep it short
Keep those commands under 5 characters!
Save trees
And don't bother with manuals!
Silence is golden
Don't waste time with error output. Or other human beings.
Think parallel
Yeah, don't chain those commands together with pipes, run them all at once. Oh, hang on...
Look for the 90 percent solution
And then quit your job. Heh, let the next guy finish it.
Worse is better
0 is 1, too.
Re:EveryThing2 (Score:2)
Or as many ways as that one thing can be done.
Systems with available Unix interfaces, eg Linux, Windows/Cygwin, OS X, ...
Small scope/complexity.
Linux vs Unix on Philosophy a question (Score:2)
Whether it is Sun throwing things in
We all have our complaints.
What are yours?
The Unix Philosophy (Score:5, Insightful)
"Small interconnecting components"
"Never use one program where you could use several"
"Plumbing is good"
If is a continual source of amazement to me that GNU tools (eg, tar -AcdrtuxbBCfFGhijykKlLmMnNoOpPRsSTIUvVwWXZz7) are widely used despite this.
Re:The Unix Philosophy (Score:2, Insightful)
I definitely feel that GNU/Linux has moved away from the "true" Unix philosophy with this kitchen sink mentality.
Re:The Unix Philosophy (Score:2)
Re:The Unix Philosophy (Score:2)
Agreed. However, it isn't just GNU who are guilty of violating UNIX philosophy, but also commands like rpm, from Red Hat.
The title of this article should be "Linux and the UNIX Philosophy: where did Linux go awry?".
I think it stems from something a wise man said once: "Why? Well, because!".
Is the Unix philosophy real? (Score:5, Interesting)
Sure, we've all writing massively pipeline shell one-liners to do day-to-day tasks, but these are just one-time, throw-away code. All of my real Unix apps that I use every day are huge monolithic applications, not a composition of many tiny apps connected by pipes. My web browser is a monolithic app, not connected by pipes. GCC is a couple of monolithic applications, optionally connected by pipes, but never reconnected in any useful way (cpp notwithstanding). My newsreader and mailreader again, monolithic applications. My MTA, again, a monolithic application. Not one large program I use is a shell script, or collection of small, interchangeable programs.
So, is this Unix tool philosophy useful for real applications, or just for little shell scripts?
Re:Is the Unix philosophy real? (Score:4, Informative)
Re:Is the Unix philosophy real? (Score:2)
Re:Is the Unix philosophy real? (Score:2)
Re:Is the Unix philosophy real? (Score:2)
qmail and cbb come immediately to mind. Small apps, all do one thing well, communicate with others via pipes.
qmail is a great example (Score:2)
Re:Is the Unix philosophy real? (Score:4, Insightful)
Part of the problem is that nobody can agree on anything. So a MIME parsing library has to be written one in Emacs Lisp for Emacs, once as a Perl module, once in Python, as a C library (probably several C libraries), in Java, etc etc. Nobody can agree to write a reusable component once to a common interface (the implementation could be in any language, as long as the interface is usable from others) and just wrap that. On the other hand some libraries, often those coming later in Unix history, do have a single shared implementation, eg libpng.
Re:Is the Unix philosophy real? (Score:2)
Indeed. But this isn't an accident -- The Unix Philosophy (such as it is), is that the level of granularity of a resuable component is a process, connected via a pipe.
Interestingly, I recently attended a lecture by a Plan 9 luminary who railed against shared libraries. His view is that there should be no shared libraries, r
Re:Is the Unix philosophy real? (Score:2)
But Miguel's 'Unix sucks' talk makes me question why he'd use so many different libraries to develope applications like evolution, if they suck so much. Isn't what sucks the dependency nightmare we've created out of GNOME? That could have been prevented if we used pipes instead of shared libraries and morons who don't under
Re:Is the Unix philosophy real? (Score:2)
Duh. I'm arguing that he then went and reinvented the wheel and made it a really ugly wheel that's difficult to use. But I guess it does work for some people. And so does UNIX for others.
Why reinvent the wheel if you're not going to do it the right way the first time? Don't we have enough wheels already?
GNOME vs. KDE and Mozilla vs. KHTML are perfect example
Re:Is the Unix philosophy real? (Score:2)
You could script things inside or outside of the application. So you could write a script something like this:
aw = start AbiWord
aw.load("file1.abw")
aw.sele
Works too well for its own good... (Score:3, Insightful)
If text manipulation and piping didn't work well in UNIX, you'd know about it -- all those tasks would be a real thorn in your side. As it is, you have the right tools, so they're no big deal.
Re:Is the Unix philosophy real? (Score:2)
Your web browser probably wasn't implemented by people following the unix philosophy. The Unix GUI environment doesn't support small tools as well as the command line environment.
GCC is a couple of monolithic applications, optionally connected by pipes, but never reconnected in any useful way (cpp
notwithstanding).
GCC is GNU software. GNU software does not follow the unix philosophy. GNU software follows the add a command line option for everyt
Re:Is the Unix philosophy real? (Score:2)
The Unix GUI environment doesn't support small tools as well as the command line environment.
GCC is GNU software. GNU software does not follow the unix philosophy. GNU software follows the add a command line option for everything and the kitchen sink philosophy.
This is exactly my point. There are many web browsers out there, and not one is built from program components connected linearly via pipes. Is this because ev
Re:Is the Unix philosophy real? (Score:2)
I don't know of a GUI environment that supports such development. Web browsers use plugins, those plug
Re:Is the Unix philosophy real? (Score:2)
Re:Is the Unix philosophy real? (Score:2)
Then switch to qmail, an MTA that follows the UNIX philosophy. Every part of qmail is a separate program that does one task and has a well documented interface. As such, you can easily replace a single component without changing anything else.
Re:Is the Unix philosophy real? (Score:2)
Re:Is the Unix philosophy real? (Score:2)
Sure, we've all writing massively pipeline shell one-liners to do day-to-day tasks, but these are just one-time, throw-away code.
You just contradicted yourself, here. The fact that a quick one-liner can solve a modest problem in short order is a testament to the success of UNIX. For example, I once needed a one-time list of all calls to a particular API in a particluar program (find, egrep, and sed saved the day).
My news
When is it Unix and Not Unix? (Score:3, Interesting)
In the mid-1980s an industrial/governemnt consortium tried to defined an unified UNIX API, called Posix. Then it would be straight forward to implement the UNIX utilities, command user interfaces, and apps on top this. I recall some companies layering Posix on top of VMS, MVS, and other non-UNIX kernals. Are these UNIX?
Another approach was extending the UNIX philosophy of a simple machine image to more modern computers than those in the early 1970s. Mach assumed a computer model with multiple CPUs and memory subsystems. BeOS assumed a computer model where multimedia was the norm. So are these OS's "more UNIX-like than UNIX" then?
Lacking -- I have (many) more questions (Score:4, Interesting)
I am constantly amazed at Unix books that are mostly printed man files, and things that can easily be googled. This book explains with great precision why Unix is the way it is, and what separates it from other OS paradigms.
I've not found any books that are mostly printed man pages. Nor have I found any circumstances where the man pages don't cover things I need to know. In any case, what parts of UNIX does it explain? Is it explaining Linux or UNIX? What OS "paradigms" are you referring to? You are going by this definition [reference.com] aren't you?
I realized the importance of this book after reading it, and being forced to do interviews for a Unix Engineer at my office.
What importance did you realize this book serving after you had read it? Are you sure this gave you applicable knowledge to separate "UNIX Administrators" from "UNIX Engineers"? What is the difference here?
Although I appreciate any book that loosens the RFC style nature of so many technical books, sometimes it can go a little too far.
Why? If it's discussing that you need to know an RFC to understand why something works the way it does (you've stated that this book talks more about the why than how), how does it make it "not-so-good"?
So, depending on your threshold for python-esque puns or corny Elvis jokes, the book may not be for you...
Do the few puns in the book really take that much of the quality away?
I don't think that this book should be re-read from time to time. I think new editions should be published as UNIX and Linux continue to evolve in their own separate directions (yes, they're going in somewhat separate directions).
Your listing of the TOC didn't give me any idea about what was covered? WTF is "Now THAT'S Leverage" about? What "Lesser Tenants" are being referred to? What "One Thing" does UNIX do well?
You've left me with more questions about this book than I would have had otherwise. Please try to do a more thorough review next time.
And, to get on a technicality that will probably cost me this comment as a Troll, Linux IS NOT THE NEW FACE OF UNIX. Most distributions also don't even come close to being something that would compare to a UNIX certified system.
Finally, please excuse my harshness. I just feel you could have done a better, much more descriptive job. Don't take it personally.
Has anything changed? (Score:2)
Re:Has anything changed? (Score:2)
THIS is the book he's talking about ... (Score:2, Informative)
Thought i'd let you know ...
B0mbtruck, one base at a time
Philosophies no longer apply (Score:4, Insightful)
Have you ever read code from some of the original UNIX team, such as Kernhigan's Software Tools? Wow, can that man write clean and clear code. The original C compiler is similarly concise. But then look at the sources to just about any Open Source project and see that (1) there's a massive amount of code, and (2) it's mostly very ugly. Unfortunately, even though it's illogical, "open source" and "simplicity" aren't as intimately tied together as one would expect.
Re:Philosophies no longer apply (Score:2)
Another book on 'Unix philosophy' (Score:2)
Intended for people with computer experience who are new to Unix (no "For Dummies" nonsense). I found it illuminating when I first started using Linux: Think Unix [tux.org], by Jon Lasser.
JP
Source for "In The Beginning..." (Score:4, Informative)
Interesting quote (Score:2)
I disagree. Linux (the Kernel) has been available since about 1992 (roughly). (GNU much earlier @ 1984)
From the few reports I see online (like linux counter, RedHat, etc). One can guess there are about 22 million active Gnu/Linux installs out there. One could also guess 100 million or 50 thousand, it's a guesser's market out there. In any case, lets go with 22 million Gnu/Linux installations over 10 years fo
OK, Linux is not Unix... (Score:2)
??
Re:I'll take a shot at it (Score:5, Informative)
Unix started [multicians.org] as a way to run a non-vender-supported OS on cheap PDP-11s. Unix eventually became highly commercialized and proprietized, but it started life as a hobbyist project (of sorts).
Re:I'll take a shot at it (Score:2)
Also its creators did a lot to encourage independent porting on VAXen and other 70's machines.
Unix eventually became highly commercialized and proprietized, but it started life as a hobbyist project (of sorts).
I'd rather not use the term "hobbyist". AT&T was bound by anti-trust regulations to supply their inventions to universities. Scientists took it the way they like the best - with emphasis on peer review and free circula
Re:I'll take a shot at it (Score:2)
The people involved certainly weren't amateurs, but the project itself started [bell-labs.com] as an attempt to get the "Space Travel" game working
Re:I'll take a shot at it (Score:2)
Whereas Multics (which wouldn't run on their PDP) was multiplexed, Unix (which would) was not -- and you've got that whole "Eunuchs/Unix" joke, where the boss says, "I need more Unix programmers, the company nurse will be by later..."
Re:I'll take a shot at it (Score:2, Insightful)
BSD might not be allowed to call itself a "UNIX" today, but the fact remains that it is still UNIX and it is Free Software.
Re:I'll take a shot at it (Score:5, Informative)
Perhaps you have heard of BSD Unix...?
Re:I'll take a shot at it (Score:2, Insightful)
Re:I'll take a shot at it (Score:5, Informative)
The "Unix Philosophy" is the philosophy behind Unix-like O/S'es LIKE LINUX. It's a design philosophy, NOT a marketing one, or even an economic one. Vastly oversimplifying,
1. Don't create huge monolithic programs if you can help it. Create small, elegant programs that each do one specific thing well. Use a scripting language to pipe them together, amplifying their usefulness.
2. Because you want to be able to pipe small programs together to aggregate their usefulness, avoid "captive user interfaces", i.e. interactivity. Lean towards writing software that is comfortable running in batch, on a pipe, in a script. Use command line arguments.
3. Don't reinvent the wheel. If there's already a tool that does what you want to do, use it. If you need to extend its functionality, script it with another tool or tools.
4. Lean towards command line programming, because then everything you've got can be scripted, run in crontab, run in batch, etc. The command line is your friend.
5. Everything is a file. This lets you interact with hardware directly, in your software.
6. Store data as flat text whenever possible, so that down the road, if you want to use it with another program, you'll be able to. This also lets you sift through your data using grep and awk.
7. Use text streams whenever you can, for similar reasons to #6. Got a socket? Pass flat text, not binary. Unless you really MUST pass binary.
I've probably left a whole lot out, but this is the basic gist of it. It's why Linux, Unix, and the *BSDs are so much more useful than Windows.
Interesting perspective, but wondering.... (Score:2)
Absolutely. Of course the corrolary of 1-4 above is that if you need interactivity, write a script to do this for you
6. Store data as flat text whenever possible, so that down the road, if you want to use it with another program, you'll be able to. This also lets you sift through your data using
Re:Interesting perspective, but wondering.... (Score:2)
But for data like, for instance, application presets, you definitely want to use flat files. Let me give you an example. Let's say I'm writing a level editor program for a game engine (unfortunately, this woul
Re:Interesting perspective, but wondering.... (Score:2)
I agree that it is a good compromise where appropriate. I think that the goal should always be abstraction of the data from the tools, and XML does this very well, as does the RDBMS style system, or even LDAP.
Re:Interesting perspective, but wondering.... (Score:3, Interesting)
Re:I'll take a shot at it (Score:2)
Re:I'll take a shot at it (Score:5, Insightful)
The UNIX philosophy has nothing to do with commercial vs Free, or closed vs open and has everything to do with design and problem solving. The comercial aspects of UNIX culture were imposed upon UNIX by shareholders and corporations with little or no regard for who had designed the product, whether they had been compensated, or how future maintainance and development would be accomplished. The development of the EMACS editor, the GNU project, and the GPL license were a reaction to these changes in UNIX development. The GPL was not created as an economic "weapon", nor was it created with money in mind at all. It was motivated by a desire to have the source code available to anybody with an idea and the know-how to implement it.
Many posters here seem to be obsessed with money, and it can't be good for thier thinking. Whether they are dogmatic about giving away for free or about charging for every last thought, it betrays an unwillingness to view subjects and viewpoints as other than economically based. I admit that the economics of software development need be considered in any project, but my opinion is that making design decisions based on monetary arguments is putting the cart before the horse and will often result in poorly designed and inferior software.
The UNIX philosophy is not incompatible with the GPL, nor is it incompatible with comercial licensing In fact, the GPL has very little to do wih money in any way whatsoever. In other words, read the book, come back and discuss philosophy when you're prepared.
Re:Dental Plan... (Score:2)
That would explain this: http://www.lbw2000.eu.org/lbw-1999aug10-13_small.
Re:Philosophy my arse (Score:2, Insightful)
However, in creating 'just a fucking operating system' you do need to have some guiding principles, which become a philosophy. Nothing to do with wanky paragraphs of a few words which cost millions to 'brainstorm'.
Re:Philosophy my arse (Score:4, Insightful)
Everything that is designed has a philosophy. For example, imaging a bunch of guys standing around trying to design a four-wheeled vehicle. Here are examples of different philosophies:
1) The car should become a part of the driver. Getting into the car should feel like putting on a running shoe.
2) The car should be functional, yet inexpensive.
3) The car should haul lots of stuff.
4) The car should haul.
Each "philosophy" will produce a very different result. *NIX DOES have a very different feel from Windows.
In Windows, everything is centralized. This is why there is a registry -- one place to keep all data. The web browser is also tightly integrated into the core OS.
In Linux, everything is a little piece. If you want to build your own system, you can pick and choose which packages to install. No GUI, no problem. Every program sticks its configuration into separate little text files.
Which is better is a matter of opinion, and both have their strengths and weaknesses. Both Linux and Microsoft have managed to make some rather good operating systems. In fact, I kind of like Windows (at times). All you have to do is get rid of all Microsoft management and lawyers, and you could have a pretty good company. Then, hire some programmers who know something about security, and you could have the perfect desktop OS. Install a *NIX kernel, and you would have something perfect for the server market
Re:Philosophy how??? (Score:2)
2. No bugfixes
3. Get the source code for free
It is a sort of philosophy on approaching software distribution. If you want me to go really deep I could explain your its metaphysics, I hope you'll trust me on that. These three points were the Unix philosophy in the 1970's. Not because the Unix creators wanted them to be like this, just because AT&T was not allowed to sell any software on commercial basis. Oddly enough, these three points - written actually by AT&T lawyers - are quite
Re:Philosophy how??? (Score:2)
The Unix Philosophy is a design philosophy, and it has nothing to do with distribution, or licensing, or anything else like that. I described it more fully in another post, but basically it is an approach to O/S design. And, it has nothing to do with AT+T's lawyers.
Sheesh.
At least give the book a shot. It's very well written.
Re:Philosophy how??? (Score:2, Informative)
There really is a philosophy to Unix and Linux,
and you'll find that when the same philosophy's
applied to things other than OS design, it
results in some interesting and elegant ideas.
This book describes the philosophies embodied in
Unix (and largely copied and expanded upon by
Linux) very well, and in such a way as to not
be religious about it. However, it may give
"non-believers" some understanding of how
Unix and Linux folks think, and therefore a
better sense of w
Re:Philosophy how??? (Score:2)
Perhaps they should admit that they really have no idea what philosophy means instead of attempting to deny it's p
Re:Good For Geeks-In-Training (Score:2, Interesting)
Re:ESR's new book (Score:2)
It's on the same subject people...sigh (Score:2)
Attempt at not trolling (Score:2)
alongwith a idealogical difference (eg
*BSD vs Linux) list would have been useful.
Any answer to this will probably be seen as a troll, but here is my attempt:
BSD:
1: Developers are brought to it because they are excited about trying to develop new ideas, and they are flattered when commercial vendors use their ideas in software.
2: Developers don't tend to be as willing to help newbie driver developers as they are in Linux. Not that this is good or bad, but it reflec
Re:Different Philisophies? (Score:2)