20年前，X Window System的开发者Mike Gancerz将Unix社区普遍认同的一些准则整理成Unix Philosophy，让GNU/Linux等后来者能站到巨人的肩膀上。如今，基于Unix思想体系的Linux、iOS、Android等已经成为全球范围内的主流系统，Mike的远见卓识得到印证。图灵社区有幸邀请Mike Gancerz接受邮件采访，谈谈《Linux/Unix设计思想》、操作系统的前世今生、开源运动的前景等。
iTuring: First, I’d like to express our gratitude to you for bringing the inspirational Linux and the Unix Philosophy. Our editors and reviewers show great interest in it and enjoy it a lot. What are the personal experiences that inspired you to write Unix Philosophy and Linux and the Unix Philosophy?
Mike Gancerz: Thank you for your kind words. I am happy that the book has inspired you and your associates. I certainly enjoyed writing it.
The ideas behind The Unix Philosophy had been discussed for many years while I was working in the Ultrix Engineering Group at Digital Equipment Corporation in Nashua, New Hampshire, USA. (Ultrix was DEC’s Unix offering.) We kept repeating to one another at lunch time discussions and elsewhere that small programs were good, portability is paramount, and so on. We not only discussed the Unix philosophy, we lived it.
It didn’t become apparent to me just how enamored I’d become of the Unix way of building systems until I went to work at DEC’s Ultrix telephone support unit in Alpharetta, Georgia. No one there seemed to understand that the Unix approach was vastly different from others. So I created a slide presentation outlining the Unix philosophy and used it as a teaching tool, giving tutorials a couple of times a year to the newcomers to the team. Later on, at a Digital Equipment Corporation User Society (DECUS) Symposium, I was approached by an editor who pointed out that slide presentations often form the outlines for books. That was all I’d needed to get started on The Unix Philosophy.
Linux and the Unix Philosophy was a different matter. The publisher and I realized that, while a philosophy is timeless, some of the anecdotal material in The Unix Philosophy was becoming a bit dated. A new edition of the book was in order. The problem was that Unix as a name for an operating system was declining, while Linux was rapidly gaining acceptance as a system that embodied the Unix philosophy without the commercial encumbrances that were trying to ensnare Unix at that time. After much discussion, we finally settled on Linux and the Unix Philosophy as the title.
iTuring: In recent years, what have you done for the development and application related to Linux (including Kernel)?
Mike Gancerz: While I have great respect for kernel developers, having worked alongside many of them in the past, my focus has always been on the user space. In fact, one of my favorite projects at DEC was to port the entire Unix command set to the 64-bit DEC Alpha chip. If Linux were a car, I’d be less interested in what kind of engine it has and more interested in where it can take me--and how much I would enjoy the trip.
In recent years, with the virtual explosion of activity around Linux, it has been very difficult to keep up with all of it. For example, if one wanted to specialize in Linux user interfaces, even that area has become so huge that one would need to specialize in only a part of it. So instead I have spent a lot of time doing build and deployment engineering, where scripting is alive and well. While the scripting tools vary somewhat, the benefits of scripting still remain. I still take great joy in writing a line of code that will leverage thousands of lines of code that someone else wrote.
iTuring: While reading, we felt that this book summarized the tenets, based on the history and culture of Unix, hacker spirit, free software movement, as well as the practices from you and the Unix/Linux community, etc. So how did you conclude from numerous materials and expound Unix Philosophy? How would you summarize Unix Philosophy with one phrase or sentence?
Mike Gancerz: Many of us became aware that there was a common philosophy behind Unix through interactions with one another at user conferences and other forums. Rob Pike, Kirk McKusick, Brad Cox, Jon “maddog” Hall, and others were all talking over the years about how important it was to have small programs that could be easily tied together to accomplish larger tasks. I didn’t invent the Unix philosophy; I simply wrote down what I’d heard from these giants in the field.
How to summarize the Unix philosophy with one phrase or sentence? That’s a tough question because each of the tenets taken by themselves is not particularly strong. It’s only when you put them all together that the real power behind Unix becomes manifest. I suppose you could say that the single most important thing that a program can do is talk to another program. Most of Unix is based on the idea that, if you build software correctly, it will always be able to interface with other software and therefore always retain its intrinsic value.
iTuring: In the book, you put forward the interesting The Three Systems of Man, and pointed out that Linux is both the second and the third system. What about the evolvement of Linux presently? Has it met the standard of the third system?
Mike Gancerz: Linux is far closer to being a third system now than it was at the time the book was written. In fact, I would contend that--if you ignore the atrocious installation mechanisms of some distributions out there--most of Linux is a third system. There are, however, subsystems within Linux that are still undergoing evolution. For example, dealing with touch interfaces and the mobile world are areas where Linux is still evolving.
iTuring: You once predicted that Unix would be the world’s operating system of choice and Linux would most likely become the version of Unix that fulfills the prediction. As we saw a decade later, the development and adoption of Linux differed in enterprise and desktop domains. What do you think of the prediction now?
Mike Gancerz: The prediction is right, but not in the way I would have expected. Unix is indeed the world’s operating system in that it is the underpinnings of all major operating systems today except Windows. Linux is the dominant OS in enterprise server systems. The hugely popular Android OS is based on the Linux kernel. And iOS is derived from Mac OS X, which is a Unix derivative. In terms of sheer numbers of platforms, a Unix-derived operating system is running nearly everywhere except the desktop.
The truly ironic aspect of this is that, while Linux hasn’t dominated on the desktop because of its supposedly poor user interface, Linux and Unix are both flourishing in mobile environments because developers wrote custom user interfaces for them. The total number of Android and iOS users is far greater than the number of Windows users. Yet most of the users have no idea what Linux or even an operating system is. Some would argue that that is how it should be.
iTuring: Regarding to Portability, you said “The most powerful computer is the one that is used most.” If that is the case, will systems like iPad and Smartphone become the most powerful computer? What kind of opportunities and challenges will current Mobile Internet bring Linux? How would GNU/Linux develop in Mobile Internet?
Mike Gancerz: If the most powerful computer is the one that is used most, then mobile devices such as smartphones and tablets have already won that battle. This is because most people are net consumers of content rather than content producers. (“It’s the content, stupid!”) Mobile devices offer users highly portable access to their favorite content anytime, anywhere.
This tendency for users to be content consumers instead of producers has yielded some challenges for the mobile Internet but nothing unusual for Linux per se. The obvious issues around insufficient mobile bandwidth seem to be everywhere, but eventually those will be resolved. The much tougher nut to crack is the fact that much of the web was designed with the idea of a handful of users connecting to a single web server. That doesn’t scale well when a million users all want to download a viral video in one hour. There are people already working on solutions to this problem and they will force people in the Linux networking space to rethink a lot of how information is cached and transmitted.
One of the greatest opportunities for Linux with respect to mobile devices is cloud computing. Everyone wants access to their data from everywhere on any device. But they also want their data to be backed up and secure. As a leader in computers used for infrastructure, Linux already has a huge foothold in this area and it will continue to grow for the foreseeable future. This also bears out the message that one of the most important things that a computer can do is to communicate with another computer. Reliable network communication is a fundamental requirement of cloud computing.
An area where Linux will be facing some significant challenges in the mobile world is that of security. This, too, is ironic in the sense that Linux has always been regarded as more secure than its alternatives. But there are Linux-based systems, such as Android, where openness is both a blessing and a curse. Perhaps there will be sanctioning bodies where users can get applications that are both open and selective. Amazon has been making moves in that direction and Apple is already far down that path with its App Store. Still, I don’t see a real solution anytime soon because everyone has their own selection criteria and it’s really hard to have total freedom along with absolute security. You need to give up one for the other, and not everyone agrees as to where the boundaries should be.
iTuring: You devoted much space of the book to criticize CUI, but CUI is already taking the leading role in today’s computer system. How do you understand this situation?
Mike Gancerz: Captive user interfaces, in the context of command line shell interfaces, are those that hold the user captive and prevent one from executing another program until the original program has finished. In a graphical context, this translates to interfaces that are modal, e.g., a dialog box that captures user focus and will not release it until the user responds. Most user interfaces have overcome this hurdle, even in the resource-limited mobile environments. What was once philosophy has now become common sense.
iTuring: A lot of Chinese programmers aspire to throw themselves in open source software, but they are not sure whether they can live by it. Would you please give them some advice based on your own experiences?
Mike Gancerz: While I wouldn’t pretend to understand the mechanics of the economy that Chinese programmers are operating in, it would seem that joining an enterprise that pays one to develop an application or a system would be a good place to start. If the enterprise allows one to contribute one’s code to the open source community, that’s a good thing. But one has to eat to survive. Like so much else in everyday life, survival takes precedence over altruism. The best of situations contribute to one’s survival and one’s desire to be altruistic.
How does one make a living from giving software away? The usual answer is by providing support to users and other developers of that software. It can be done, but I have seen many more companies that have tried this and failed. Hence my recommendation that companies and individuals focus on getting the job done. If you have something to share afterwards, then by all means do so and we’ll all benefit.
iTuring: The previous two books share the same ideology. If you have the opportunity to write a third book with a similar theme, will you revise and supplement the nine basic philosophical standards and the ten secondary standards of Linux/Unix Philosophy?
Mike Gancerz: Philosophies are timeless. I don’t think that I would revise the nine basic tenets or the ten lesser tenets other than to make their specification a little more generic. Scripting is still a great idea, but shell scripting is being replaced by scripting with a variety of new tools. Captive user interfaces, regardless of their environment, are really modal user interfaces. So I might change the tenet to say “Avoid modal user interfaces.”
One proof that the philosophy is timeless is the current success of Apple today. In every aspect where Apple has truly grasped the Unix/Linux philosophy, it has dominated the competition. Want portability? Apple put your entire music collection in your pocket, on your tablet, and on your desktop. There are other more efficient user interfaces than the iTunes desktop interface. And yet, the portability factor wins every time. What about small programs that do one thing well? That sounds like an iPhone app, doesn’t it? And what about software leverage? Because Apple didn’t write most of the software than runs on its devices, it is leveraging the work of other developers in a big way.
Most of the time when I consider doing a third book with a similar theme, I give a lot of thought to the question “How does the Linux/Unix Philosophy apply to real life?” Think about what “Build a prototype as soon as possible” means in the non-computer world. “Make every program a filter” translates into “Obtain information from somewhere, synthesize it into something new, and then distribute it to the right consumer.” And “Look for the 90% solution” becomes “Don’t build a total solution for everyone. Build a solution that works for almost everyone.” If there were enough demand for a book on the Unix philosophy in the general population, I would probably write along these lines.
iTuring: The final part of Linux and the Unix Philosophy, Brave new (Unix) world, discusses some new technologies adopted the Unix philosophy that time. Would you introduce some other new technologies that accord with Unix philosophy in recent ten years?
Mike Gancerz: Well, I could talk about things like near field computing, analytics, and the whole social networking phenomenon. But that would be like giving the reader a fish. I would much rather teach the reader how to fish.
As new technologies arrive on the scene, pay close attention to how well they implement the Unix philosophy. Does a technology emphasize portability over efficiency? Does a company do one thing really well, or is it trying to be everything to everybody? Is a product cheap yet effective, i.e., worse is better? Is the latest idea a first system? Or are you seeing the beginning of the second system stage? Notice how many of the ideas in the third system are now regarded as obvious. How many concepts that were strange a decade ago are now considered everyday concepts that we all know? Can you isolate the parts of today’s second systems (social networking, for example) and find the true value that will become evident in the third system?