Linux and 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.
SCO has determined that this book has violated it intellectual property. While you can buy the book, you require an additional SCO license to read the book. That'll be $699.
1. Though shalt end your italic tags.
-- Fighting mediocrity one bad post at a time.
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.
Some of the major tenets of the original UNIX philosophy were:
- 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.
Unix started 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).
Ita erat quando hic adveni.
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.
:)
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 seem like it.
This review basically consisted of one paragraph describing the book and a table of contents. I didn't get a real good feel of what to expect from the book. Why is it like In The Beginning?
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."
Mike Gancarz's book The UNIX Philosophy (Digital Press, 1995) describes many of the ideas and conventions that have made unix a great sytem. It starts with a short run down of the history, quickly getting to the meat of things, discussion of the major ideas of Unixdom and illustrations of why they are such good ideas. While many of the ideas may seem relatively obvious to anyone who's worked with the system before, it makes an excellent introduction to the traditions of the Unix world, as well as an excelent bit of advocacy for why the Unix way is the Right Way.
...and the ten lesser points:
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
The Unix Philosophy can be stated in several ways:
"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.
Tarsnap: Online backups for the truly paranoid
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?
Avoiding Stallman's pun, what exactly is UNIX? Does Linux qualify? Apple OS X+? Exotic OS's like Mach?
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?
I found this review to be lacking in content. It doesn't discuss the content of the book to any extent; instead it talks about how it got him a job promotion to UNIX Engineer. How did it do this? What did you learn from the book that gave you such an additional skillset to be promoted to UNIX Engineer? What are the differences between the UNIX Administrator and the UNIX Engineer you are referring to?
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 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.
www.sitetronics.com/wordpress
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'.
Conversion Rate Optimisation French / English consultant
Perhaps you have heard of BSD Unix...?
Thought i'd let you know ...
B0mbtruck, one base at a time
Linux is a good thing because it allows you to be a part of a small clique that is able to feel superior to everyone else by virtue of your fiddling about with a system that was designed by the programmer, for the programmer rather than by the programmer for the user (Windows) or by the user for the user (Apple). The fact that non-geeks find it very difficult to e.g. burn a CD using the Linux command line is a great source of pride to dejected geeks everywhere who reason that, if they can't be accepted by mainstream society (due to their obvious massive intelligence of course, not their shocking lack of social skills), they can at least construct their own alternate reality in which they are of superior intelligence (even if that "intelligence" translates into nothing more than the ability to control a computer using cryptic textual commands).
One of the core tenets of UNIX was that you have small, simple tools and you glue them together. But now the popular programming languages under Linux are C++, Python, and Perl, none of which follow this philosophy. And to get to the point where Linux is a true alternative to Windows on the desktop, you have to put a massive X server on top of the kernel, and put a massive window manager and desktop environment on top of that. In the end, "Linux" is not a simple thing (and arguably even the kernel is not simple, but the API is), because you are looking at the combination of X+Qt+KDE, and that pretty much throws all philosophy out the Window. (Yes, I know you can use Blackbox or something else instead, but then don't go arguing that it's a suitable replacement for Windows.)
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.
I don't feel that Unix will ever "die" as you state, despite all the Oracle propaganda Linux is the still the new kid on the block in the *nix sector and has a long way to go in terms of enterprise features which commercial UNIX variants have. Not to mention, some business managers only feel safe with a product if they've paid good money for it (the whole you get what you pay for philosophy and having a vendor to point the finger at) I know that sounds odd but its often true as I've worked for a few very large companies that refuse to adopt UNIX because it's free.
There's nothing wrong with using commercial closed business model's, it all depends on your particular situation, you need to use whichever philosophy and technology is best in your situation. Sometimes having something that is open to the world can be a bad thing.
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.
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
"-1 Troll" is the apparently the same as "-1 I disagree with you."
Ahh, then, you really should read the book.
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 why the OSs are the way they are,
and hopefully, a respect for them.
So philosophy, ya, I think so. When applied to
OS design, perhaps you can call them design
principles, but I think that this book is able
to abstract it better than that.
That's NOT what he's talking about.
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.
Farewell! It's been a fine buncha years!
UNIX = Commercial way of thinking
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.
Read, L
There were two main branches of UNIX. The first was the commercialized AT&T/USL UNIX, which SCO know apparently owns. The other branch of BSD UNIX. From day one this was noncommercial. It was BSD UNIX that made UNIX a success. Without BSD, UNIX would be down and out in the gutter sharing a bottle of Ripple with Multics and cursing its fortunes.
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.
A Government Is a Body of People, Usually Notably Ungoverned
The text for Neal Stephenson's book "In the Beginning..." can be downloaded here. Haven't read it yet, but when did that stop anyone here :-)
In terms of flat files, XML is a great idea. It makes parsing easy, it aids readability, and it can be matched with stylesheets when you want a nice-looking printout of your data. I wouldn't use anything BUT XML for flat files... :)
Farewell! It's been a fine buncha years!