Vladimir Z. Nuri on Fri, 25 Dec 1998 03:24:03 +0100 (CET)


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

<nettime> the ultimate OS



an HTML version of this article can be found at:

   http://www8.pair.com/mnajtiv/tao.html



                                the ultimate OS
                                       
     * intro: the ultimate OS
     * what is an OS?
     * recent developments in the OS
     * predictions
     * an open OS standard
     * a new kind of OS: Tao
     * the object
     * the object browser
     * optimization
     * compatibility
     * conversion
     * object installation/upgrades
     * software philosophy
     * attitude toward failure
     * integrity, hotfixing, fault tolerance
     * security
     * Tao device principles
     * potential difficulties
     * realization of Tao
     * about the author
     * references/resources
       
intro: the ultimate OS

   This article proposes a radically new kind of operating system and
   software style that includes what I consider to be the best features
   of all existing operating systems created to date as well as many new
   innovations. It is based on ideas and inspirations I have collected
   over many years and have finally written up here. (I am motivated
   especially by recent events regarding the leaked Microsoft "Halloween
   memos" and the ensuing controversy and debate; I hope to add a
   substantial new angle.)
   
   My background, briefly, apropos to this article: I started programming
   at age ~10 on a Commodore PET. I've used Atari, Apple II, DOS,
   Macintosh, Windows, and Unix all very extensively. I have been using
   Linux since about 1996 and have watched its development closely,
   especially recently.
   
what is an OS?

   The OS of a computer has undergone many modifications over time. At
   first it was designed as a very rudimentary system that simply loaded
   programs and interfaced with the basic hardware of the computer, i.e.
   tape or disk drive, keyboard, monitor. The modern OS has grown into a
   system of astonishing breadth and complexity with much code dedicated
   to creating the GUI and supporting diverse hardware (including
   networks). Microsoft (MS) NT code numbers in the tens of millions of
   lines.
   
   Mainframe OSes often are even more complex, however the world does
   seem to be standardizing on Win95, NT, and Unix in general. The
   so-called battle between MS-based OSes and non-MS OSes is still in
   play with people taking sides whether MS will totally dominate the OS
   niche or whether an upstart such as Linux may threaten the MS
   hegemony.
   
recent developments in the OS

   Linux represents an astonishingly unprecedented new element to
   software design. The internet has allowed the creation of Linux in
   which thousands or tens of thousands of programmers, all putting in
   small amounts of time for no pay, or more exactly on the side to their
   paying jobs, have accumulated a unified system over time that is now
   fully competitive with major commercial OSes such as those by MS.
   
   Recent events such as leaked MS memos that express concern over
   "market penetration" of Linux demonstrate this quite strikingly. Of
   course the whole meaning of the word "competition" is ambiguous in
   this situation where much of Linux has been developed and distributed
   free of charge. The model some are proposing for Linux is that the OS
   can be freely distributed even as individual companies such as Red Hat
   software or small consulting companies carve out a viable economic
   niche in distributing or supporting it.
   
   Another modern development milestone to the OS is Java, a language
   that is designed to be platform independent and has largely achieved
   this goal. Java complements the web nicely, and the web browser has
   become the focus of intense development efforts within the OS at MS
   for example, and Netscape once threatened MS's OS dominance based on
   this avenue. In addition to the dramatic dethroning of Netscape,
   however, there was a setback recently as WebTV, wholly owned by MS,
   announced that they will not create a Java version of their product.
   Some outside the company question this as a tactic by MS to stall the
   creation of a kind of "network computer" (NC) that would inevitably
   result if one coupled a cheap internet computer with Java.
   
   Arguably the NC is already here (despite Oracle's Larry Ellison's
   public apologies to the contrary) when one considers that applications
   previously considered local, such as email, via packages such as
   Eudora, are now possible entirely over the web on cheap computers such
   as WebTV even without Java-enabled browsers, as evidenced by the
   convenient and popular Yahoo Mail and Hotmail services.
   
predictions

   My opinion is that a network computer (NC) will play a very important
   role in the development of computing and the conventional domain of
   the OS in the near future. MS is finding itself in a similar situation
   that IBM found itself in at the birth of the PC age. IBM was reluctant
   to "cannibalize" its existing mainframe product line by selling PCs
   cheaply, even though huge (or greater) profit was still obtainable.
   The Java/WebTV announcement suggests MS is reluctant to cannibalize
   Win95 sales with the invention of a versatile new NC.
   
   It seems very safe to say that Linux will continue to gain a major new
   foothold in various areas. In some ways Linux is introducing some
   major innovative aspects to an OS that even Microsoft is not keeping
   up with. For example the standard package installation and
   de-installation system on Linux, RPM, is absolutely first rate and
   arguably far easier to use and more reliable than MS's system, which
   does not always allow deinstallation of a program and may annoyingly
   prompt the user many times merely to install a package.
   
   One could argue that it will be inevitable that the world will
   eventually standardize on an OS based on completely open standards.
   This is my position. I have noticed how the arguments in the industry
   have shifted about open vs. closed systems starting at lower level
   components such as devices and network hardware but are now focused on
   higher level components (such as the OS) now that lower-level (thereby
   less complex and more rapidly built) standards have been developed and
   stabilized. My observation is that in general proprietary and closed
   systems can compete with open ones as long as there is not a consensus
   about the best technology. But as soon as consensus emerges, open
   standards tend to follow, sometimes quickly.
   
   That is, closed systems are very useful during a stage of competition
   of different ideas, a sort of "survival of the fittest" where the best
   win out. Open systems that embody cooperation are better and actually
   preferred by the market once a consensus about design decisions has
   developed. What is the relevance of this observation to the OS?
   
an open OS standard

   An OS is one of the most complex pieces of "digital architecture" on
   the planet, and it has taken close to a decade for the industry to
   evolve a stable solution and answer to the question of "what exactly
   is an OS" for the PC (but in general the OS has been evolving for
   perhaps half a century). The debate was heated and it now seems ironic
   that for many years computer magazines had many strong and emotional
   editorials *against* the inherent desirability of say, the mouse or
   the windows GUI and other basic OS features now considered standard
   and indispensable.
   
   However, I would say that the answer to the question of "what is an
   OS" has stabilized onto the general features that are embodied in
   Linux and Win95. The NC may be the final solution to the question,
   with its implications that the browser is the OS and "the network is
   the computer" (an oft-quoted Sun motto). So now that the industry has
   arguably evolved a consensus, I expect that an open OS standard will
   soon inevitably emerge, not owned by any company much to the chagrin,
   opposition, or even "dirty tricks" of companies such as MS.
   
   This paper proposes such a uniform, open OS standard, which could
   theoretically evolve fairly easily out of Linux. This is not to say
   that Linux is already a solution to the problem of creating an open
   OS. However it doesn't embody many of the ideal aspects of an OS which
   I delineate below-- such as ease of installation and operation to the
   nontechnical user, a streamlined system of open device interfaces, an
   object-oriented kernel, etc.
   
a new kind of OS: Tao

   I believe this is a pivotal moment in the historical development of
   OSes and that there is now definitely room for an entirely new OS
   within this hierarchy. The ideas for it have been circulating in my
   mind for many years, but they are all clearly "in the air" of current
   industrywide trends and debate and are ripe to be plucked, so to
   speak. I will propose it here in some detail. This article is a very
   high-level design document for the system, and gives minimal
   consideration to practical limitations. It is meant to be a
   conceptually elegant system that exists in theory and in idea only at
   this point. But this article is a first step toward achieving some of
   the very desirable goals it is designed to embody. Throughout, I will
   often contrast it with existing design choices of current operating
   systems.
   
   I have mused on a name to call it for a long time, but recently came
   up with the idea of naming it "Tao". Tao is a very subtle Eastern
   philosophy espoused in simple poetry with short stanzas by the mystic
   Lao Tzu several centuries B.C. My goal is to formulate an operating
   system with the same combination of simplicity and power voiced in
   this philosophy and maybe spark the creativity, enthusiasm, and most
   ideally, the labor of others in achieving it.
   
   The creation of the Tao OS might also follow a Tao-like philosophy, in
   the sense that Linux already has. Linux development is not
   hierarchically controlled like the structure of MS yet embodies an
   overwhelming power of distributed force. This contrast is very similar
   to the metaphor of the power of water in flowing around and eroding
   any obstacles in its path, a frequent theme in Taoist poetry.
   
   Here are the key design criteria of Tao, all of which will be expanded
   in the sections below:
   
     * The system favors end-user convenience and simplicity more than
       any other criteria. Many OSes claim to do this but actually make
       subtle choices that favor "developer convenience" over user
       convenience. For example users often have to perform complicated
       installation tasks that could all be eliminated but are not, due
       to programmer laziness or lack of development time. The system
       must be extremely easy to use. If Win95 is considered "user
       friendly", then Tao is even far superior to this, say
       "conscientious". There are many aspects of Win95 that one could
       argue are "user friendly" (compared to earlier very crude or
       rudimentary means such as command line interfaces), but are
       definitely not "conscientious".
     * The system has a strong element of uniformity and coherence, both
       internally in the code and externally in all interfaces, such as
       for devices and the user GUI, via a totally unified
       object-oriented system. Many OSes are designed and various
       elements are continually added over time, and the system becomes
       "legacy software" that is hard to maintain and loses cohesion. Tao
       embraces the idea that software is continuously evolved and
       upgraded, including the OS itself.
     * The system is based on completely open standards and hence has
       excellent interoperability. It is also based on a continual
       creation of new open standards within it. In contrast commercial
       OS companies are often hostile toward open standards.
     * The system has excellent security. Viruses are impossible to
       contract on the system based on its design. In contrast people
       must be somewhat paranoid and go through all kinds of contortions
       to avoid infection on existing systems. Also, end users changing
       system configuration parameters will *never* paralyze the OS.
       Accidental corruption of the system integrity is virtually
       impossible; the system is "foolproof" no matter how ingenious the
       fool!
     * The system has extreme integrity and reliability. Many common
       failures associated with existing OSes are impossible in Tao due
       to stability features. Huge amounts of unnecessary time are wasted
       on fixing or debugging unreliable OSes today. In Tao, increasing
       functionality and components (new hardware and software) does not
       noticeably increase complexity or unreliability of the system.
       Sophisticated debugging features make troubleshooting easy even
       for the novice.
     * The user is almost always insulated from low-level concepts such
       as hard drives, cards, devices, memory, etc. For example a user
       might add a new hard drive, and simply see available "space"
       increase, without any notion of some objects being located on one
       drive or another.
     * The system is highly optimized. Possibly no loss of speed or
       performance occurs, and in fact the internal uniformity and
       coherence may make new processing gains possible in sharing or
       cleverly juggling resources.
       
the object

   In Tao the center of the OS universe is the "object" which is vaguely
   analogous to a C++ object except that it is intrinsic to the entire
   OS, any language can be associated with its code, and it has a unique
   version, as well as other differences. The entire OS is completely
   object oriented. Objects have certain basic properties:
   
     * An object can be contained in other objects, and an object can
       "contain" multiple objects, or copies of them. These objects can
       be located "elsewhere," say distributed over a network.
     * An object has several basic elements: a *name*, *type*, *version*
       *interface*, *code*, and *data*. Some data is read-only while some
       data is readable and writeable.
     * Objects can be "moved around" to different "places" either on a
       local computer or remote computers.
     * Objects "hook up" to other objects and pass data back and forth.
       These links are all carefully recorded and entire object networks
       and trees can be traversed.
       
   Every mass-produced OS so far does not use objects for certain
   intrinsic functions. For example a disk directory tree can be thought
   of as a single object that contains subobjects-- subdirectories. But
   the systems do not treat file organization in this way.
   
   Tao would not have a file system in the conventional sense. Disk space
   is mapped onto an object. Subobjects can be created within this
   object.
   
   There is another key way the existing OSes (both Linux and Win95) do
   not use objects in file systems, leading to endless difficulty. In
   Win95 and Linux both, a rather weird and troublesome convention of
   having extensions represent file types is used. In contrast, the type
   is an intrinsic property of the object and there is never any
   ambiguity.
   
   The use of objects makes Tao the most modular system possible. The
   common artificial distinctions in current OSes between disparate
   aspects such as files, directories, etc. are all dissolved and
   subsumed into the object concept. Nothing other than objects exists on
   the system, and all objects are accessable to the user and software
   via impervious safeguards.
   
the object browser

   In Tao, a universal object browser is available and contains the
   complete logic and interface for dealing with the entire system. The
   object browser is a cross between a web browser, an OS application
   desktop, process manager, a file viewer, and a programming
   environment. It is very cleverly constructed such that only the amount
   of information relative to the sophistication of the user is revealed.
   
   For example simple users can use it just to navigate the system and
   perform basic tasks. More advanced users can use it to troubleshoot
   and debug, "look under the hood" and even rearrange very low-level
   features of the system, or program new components. All well-written
   software on Tao also reflects this hiding of complexity to insulate
   the novice user, while retaining full power for the experienced one,
   and encourages a smooth and natural flow of progress from the former
   to the latter.
   
   The entire object browser is extremely idiot-proof yet powerful at the
   same time. Virtually anything about the system can be modified or
   changed, but there is total protection against putting the system into
   an inconsistent or inoperable state through a system-wide "undo"
   feature. In fact much of Tao is about taking the concept of "undo" to
   its full logical potential. Records are kept of all earlier
   configurations of the system and the user can switch between any
   instantaneously, without rebooting or other gratuitous operations.
   
   The object browser integrates seamlessly with other systems over a
   network. Objects can be moved around "in cyberspace" as easily as over
   a local computer, with complete safety, security, and seamlessness. An
   entire local computer is itself an "object" that can be seen in larger
   "super-objects". For example a system administrator could "drag and
   drop" some configuration parameters onto a superobject that comprises
   hundreds of computers in a network, instantly adjusting them. Or a
   similar technique could be used to transfer software or even execute
   it across a distributed system of Tao computers. Again there is total
   safety in all operations no matter what the scale, even at the complex
   superobject levels.
   
   In short, the object browser tends to blur the concept of local vs.
   remote objects to the point it is mostly not a matter of concern or
   awareness at all by the end user. Objects can be loaded off of the
   network and executed just as easily as they are loaded off a local
   hard drive.
   
optimization

   Tao is extremely intelligent and can handle multiple levels of
   caching. Local RAM and disk are both seen as intermediate caches to
   the network. The browser automatically shuffles resource usage in a
   very optimal way that minimizes execution time, "swapping", and
   "thrashing". Applications do not have to reinvent the wheel by
   inventing their own caching schemes because the Tao object browser
   system is more intelligent and streamlined than any specialized
   systems, although applications can "tweak" it.
   
   In Tao there is excellent intelligence about reusing resources. For
   example, if new software is installed over old software, if there are
   any components that are identical, no extra space is required to store
   the new components, even though they appear as unique. This applies
   within the system memory as well. (In Tao the distinction of RAM and
   disk space is totally blurred such that it makes intelligent decisions
   about where to allocate objects invisibly, automatically, and
   seamlessly.)
   
compatibility

   Compatibility is a key problem with much software. In Tao, I would say
   there ought to be an easy way for the same object of different
   versions to coexist, and a way for the user to switch between versions
   elegantly. So for example a user could install an upgrade on his
   system while the old software was still fully functional. The user
   could switch between old and new versions "on the fly" if he has
   problems with new features. When he is satisfied with the stability of
   the new software, he could delete the previous version.
   
   In other words the system embraces the concept that software is not
   static but being constantly revised in a continuous "flow" and creates
   many structures that encourage rather than hamper this process.
   
   In contrast, in existing systems, it is assumed that the software
   company will do everything right in the new version. This is a totally
   unrealistic expectation with the complexity of modern software. What
   is not needed is more or better quality control, but a system in which
   the end user has the ultimate and total control over his
   configuration. In the best case scenario, components of the OS itself
   could be added and removed on the fly, with total and foolproof
   protection against accidentally disabling the system.
   
conversion

   A very major aspect of Tao is a unified system whereby a set of
   objects are available to convert objects in one form to objects in
   another form. So for example a file "object" in one "format" (type)
   can be converted to one in another based on the inherent objects in
   the system. In Tao, there is total knowledge about the entire object
   network and the paths through which an object may be converted. For
   example, a JPEG image object might be on the computer. The user could
   call up the object and immediately see what he can convert it to and
   the paths it might take, such as first converting it to GIF and then
   to a compressed file. Different versions of the same standard are all
   understood and handled correctly.
   
   All this is possible because the system is fully aware of what objects
   are of what type and what "conversion objects" are available, and what
   objects they convert into what (based on the interface
   specifications), that is, the entire conversion network. In fact
   automatic conversion processes can be set up within the OS such that
   objects are converted on-the-fly whenever they are needed, so for
   example whenever a compressed object is called up it is automatically
   decompressed. This same system is used for compatibility processes.
   For example if a file format is given to an application object in the
   format of an "earlier version," the system can automatically call up
   conversion processes.
   
   The conversion processes can happen with code execution as well. For
   example suppose two versions of a "function" object exist. A call is
   made to the later version with data in the form of the earlier
   version's interface. The Tao system can automatically call up a
   conversion "wrapper" that exists only to convert the interface calls
   into the new format. The system has a caching technique to optimize
   this when it occurs repeatedly.
   
   Another area where built-in conversion mechanisms is useful is
   cross-compilation. Objects that convert code from one machine type to
   another are available, so that emulation functions are totally
   intrinsic to the OS.
   
   Overall, much of the Tao OS can be seen as a streamlined conversion
   between data and code in a way that is not well understood or
   practiced today. For example in many programming languages there is a
   debate between "interpreted", "compiled", "just-in-time", etc.-- but
   all code is equivalent and these concepts are relevant only as
   optimization features within the OS, analogously to disk caching.
   Objects that are used frequently should be compiled, objects that are
   used less frequently can be just-in-time compiled, and infrequently
   used objects can be interpreted "on the fly". A well-constructed OS
   could automatically make the best decisions with the help of some
   occasional explicit tweaking by programmers.
   
object installation/upgrades

   In Tao the installation process and deinstallation process of any
   component is absolutely foolproof. Often in Win95, errors arise during
   installation or de-installation that leave the entire system in a
   "half-baked" state. In Tao there are no prompts at either installation
   or deinstallation, the entire process is always completed as a whole
   without further interruption.
   
   In Tao there is no possibility of a program leaving around "files" or
   "traces" of itself anywhere in the system, because in Tao, there is
   total knowledge by the system of all "connections" involved with an
   installed object. Objects simply cannot be "orphaned" on the system in
   any way. Contrast this to the serious and aggravating Win95 problem
   where applications may put files on a hard drive that the user cannot
   consistently locate if he wishes to uninstall the application. Often
   in the past Win95 users were sometimes forced to reformat a hard drive
   and reinstall their preferred software as the only available solution
   to this inexcusable problem!
   
   Adding a new component, either hardware or software, will *never*
   disable any currently functioning aspect of the Tao system under any
   circumstances whatsoever. In the worst case, only the new component
   will fail to function. Cross-problems such as a new component
   interfering with an existing installed component will *never* happen.
   This is the bane of virtually all existing OSes that has consumed
   perhaps millions of man-hours of the most intense frustration
   imaginable worldwide on the planet. I contend that it is due to a
   poorly designed OS that can be overcome eventually if it is made an
   explicit design goal, rather than considered an inherent property of
   software and hardware.
   
   In Tao, however, when problems do arise there are very streamlined
   systems to handle them. A bug-catching system is set up such that
   information can be relayed to companies about the complete
   configuration of a system and crucial events that led to the bug. In
   some cases the adjusting of software components to deal with bug fixes
   is completely automatic, with patches automatically downloaded and
   installed over the network. The user can be totally comfortable with
   new software as Tao prevents loss of data or function in any case
   whatsoever, even when the distributing software company fails to write
   the software correctly. In worst case the user simply reverts to older
   versions of the software or data with the ease of hitting the "undo"
   option in many software packages.
   
software philosophy

   In Tao, the user is given powerful control over the object system. The
   distinction between the application created by a company and what is
   created by a user is blurred. A user can access the internal
   connections of the objects in software and modify them to his needs.
   Powerful safeguards against disrupting any system are in place such
   that anything the user does can be easily rectified.
   
   In Tao, great emphasis is placed on "silence". An object that cannot
   accomplish a processing function without prompting the user fails in
   its purpose. Prompts that appear at arbitrary and unexpected times are
   inexcusable interruptions to the flow of a user's attention and work.
   All information required to perform an operation is passed into the
   interface of an object, and the object performs its job.
   
   There are objects that serve entirely to interface with the user, but
   they are entirely separate from objects that perform operations. This
   goal is very often violated by Win95 and software that runs in it. The
   user is often interrupted with error messages, gratuitous prompts, and
   dialog boxes that could easily be eliminated with better designed
   software. This organization reflects the basic user flow of attention
   from "specifying what needs to be done" to "doing it", two totally
   separate aspects of using a computer that should be religiously
   separated from each other in both the external operation and internal
   structure.
   
   Much software has ubiquitious arbitrary "magic limits". For example,
   eight character filenames. Or another example, an entire manual is
   dedicated to describing all the buffer parameter sizes in Oracle
   databases. In Tao, any user other than a programmer *never* has to
   deal with these arbitrary software limits. They simply don't exist in
   the software except at very low levels, and all the high level
   components insulate the user from knowledge of them. All components
   grow or shrink in "size" (memory and processing time) very smoothly,
   dynamically, and invisibly as demand fluctuates. The system always
   "flows smoothly" even when almost anything breaks.
   
attitude toward failure

   Often with Win95, a solution to fixing problems is to reinstall the
   entire OS, ridiculous and absurd procedure that has occupied the
   countless time of untold magnitudes of of tormented operators. Yet it
   is conceptually trivial to design software that can check its own
   *entire* integrity and flag aspects of itself that have been corrupted
   and fix them. Even better, it is possible to create an OS in which
   corruption of the system through software or user processes is
   virtually impossible. This leaves only hardware failures, which even
   that the OS can detect and adjust for automatically. In Tao, in stark
   contrast to existing OSes, it is *assumed* any failures may occur, and
   code to handle every basic failure is included. For example, the
   system can detect and avoid on the fly new bad sectors on a disk. But
   the system also invariably notifies the user of any problems that
   arise in a consistent and convenient fashion.
   
   Early versions of Win95/Win3.x reveal this dichotomy. Originally MS
   assumed that third-party developers would never call the OS in
   incorrect ways. They would point fingers at the third party developers
   when fatal errors (locking up the system) occurred merely from
   incorrect OS application calls. After much controversy, MS eventually
   relented and put protection against incorrect calls into the OS. Tao
   takes this philosophy to the utmost degree, and assumes that any
   coupling of any component may fail. For example, a new device driver
   may not run properly, etc., and Tao can help detect this and disable
   the "offensive" component without any negative effects on the
   integrity of the rest of the system.
   
   In Tao, the source of problems are always very easy to diagnose even
   by an end user. The system has a mechanism to isolate problems down to
   individual misbehaving software or hardware components that leaves
   absolutely no room for ambiguity, because the system assumes these
   will arise routinely, as amply proven by history.
   
   In my opinion no amount of cleverness or quality control will ever be
   achieved to guarantee new software or hardware will always run
   correctly in the complex and unique end-user environment, and to
   attempt to attain this objective is laughable, misguided, unrealistic,
   impossible, and most importantly unnecessary. The ubiquitous situation
   of confusion that exists everywhere today where vendors point fingers
   at each other and the OS manufacturer could be transcended with an OS
   that always flawlessly identifies what component is failing to adhere
   to the accepted standards and does not crash merely because of these
   common and unavoidable glitches.
   
integrity, hotfixing, fault tolerance

   In existing OSes there is often the problem of "lack of integrity" in
   upgrades. A person can upgrade his system with new software that only
   half works. He cannot revert to older software, nor can he correct the
   new software. This problem is extremely acute, dangerous,
   timeconsuming, and infuriating when it involves the OS itself. In Tao
   the concept of transaction integrity is followed at all levels. Even
   an entire OS upgrade is considered a "transaction" that has an
   integral circle, either successfully or unsuccessfully applied, with
   full "rollback" even on the level of the entire OS supported with
   sufficient resources!
   
   These "rollback" and "integrity" features mean that backups are
   seamlessly integrated into the system. The user does not have to worry
   about the code/data distinction with backups. The user can switch
   versions on both code and data at any time, restoring to earlier
   versions of software or data on the fly in a transaction that is
   always assuredly complete. The end user always restores and backs up
   data in whole "chunks" related to object connections, with halfway
   backups or restorations that corrupt or disable a system rendered
   nonexistent.
   
   The Tao philosophy with regard to fault tolerance can be demonstrated
   very tangibly as follows. On a non-Tao system, if a drive breaks, the
   entire OS and applications are destroyed. The user must turn off the
   system, dismantle the computer, install new hardware, reinstall the
   operating system, all software applications, etc. In contrast, in a
   "hotfix" type drive situation, a drive can fail with redundancy in
   another drive, the user is notified, the user can replace the drive
   *on*the*fly* without even shutting down the system, and the system
   will integrate the new drive quickly and once again reach the
   redundancy safety. Applying this invaluable concept of "hotfix"
   throughout the entire operating system, with *all* software and
   hardware components reflects the basic fault-tolerance design goals of
   Tao.
   
security

   The security is such that a virus or vicious application is simply
   impossible to create on the system, in the same way that a
   microprocessor can protect some areas of code as "read only" without
   any exception. Nothing that an application is permitted to do can have
   a pathological effect on the system. In Tao there are robust limits on
   all finite resources such as memory, disk space, screen space, and
   processing time such that no processing can take on any pathological
   aspects. Certain operations such as formatting a disk cannot even be
   called by non-OS software components.
   
   In Tao there is very good security if those components are installed.
   The entire system supports encryption of all kinds of flows of data
   and code objects, partly through the automated conversion features.
   Every user in a multiuser system exists totally in a "sandbox" that is
   a fully separate and inviolable space. Every user sees a different
   "view" of every object existing on the system and has special rights
   relative to each.
   
   The security is completely uniform even when the Tao OS is operating
   on a network. The security is intrinsic to the OS and the same basic
   principles apply over a network without specialized exceptions or
   additional systems.
   
Tao device principles

   One of the greatest headaches for both programmers and end users with
   existing OSes is the integration of hardware devices. I strongly
   disapprove of the Win95 solution in which MS dedicated armies of
   internal programmers to create device drivers compatible with
   virtually all third-party hardware known to man. At best, the system
   was inelegant and not distributed, involving an unnecessary and very
   time consuming development bottleneck. At the worst, it could be
   reasonably seen as an embarrassing failure of MS to successfully
   cooperate, communicate with, and adequately direct their own
   supporting vendors.
   
   Obviously a distributed or third-party friendly system is needed.
   There is some work on developing a device/driver standard on
   Unix/Linux systems, and I believe this will progress favorably in the
   future, to the point there will be basic standards for the common
   devices that are easily and widely supported by the manufacturers:
   mouse, keyboard, disk drive, monitor, network cards, etc. Such a
   system is crucial for Tao.
   
   In Tao *everything* is *always* "plug-and-play". All hardware, all
   software, everything. Anything can be connected or disconnected at any
   time with the system handling it elegantly in every situation.
   Contrast this to the bizarre and ridiculous procedure in Win95 and
   WinNT of rebooting the computer in any of many diverse situations. I
   consider this a bogus "solution" that should have not been tolerated a
   long time ago.
   
   The user is *always* completely isolated from *all* low level device
   details. Concepts such as IRQs, cylinder/head counts, screen sizes,
   memory sizes, etc.-- the user has absolutely no need to be aware of
   any of these concepts to install the device or use the computer, and
   manufacturers and developers (both for drivers and the OS) that
   require any knowledge whatsoever of this arcane minutia for successful
   installation in my opinion have failed a basic goal of creating
   "conscientious hardware/software". Clearly Win95 and Linux both tend
   to fail severely on this demand, and it is a sign of a poorly designed
   OS that does not take into account the key Tao philosophy of
   simplicity and convenience to the user, if that is a design goal
   (which arguably is not with Linux, but that's also a problem).
   
   Obviously to achieve this kind of pervasive plug-and-play, many new
   software and hardware standards need to be devised, which will be
   difficult in a climate that is still often hostile to them. However, a
   standardized object system of Tao can expedite this process. The
   devices can contain Tao objects that interact with the computer. Tao
   can handle the upgrade tasks and logic, much of which is sometimes
   handled by third-party companies today. In Tao, new standards are
   frequently and routinely created with far less resistance and
   reluctance, because conversion between different standards is not
   tricky and intrinsic to the OS.
   
potential difficulties

     * Some may complain that a totally object-oriented OS may be slow,
       or that other ideas here cannot be efficiently implemented. But I
       generally disagree. I think good ingenuity and design decisions
       will actually make the speed of the Tao OS as fast or faster than
       existing systems, because of the overall coherence of the system.
       And again Moore's law is always applicable, such that a more
       complex OS embodying the demanding aspects of Tao will become more
       feasible in the near future. There will be a price to pay for
       every aspect of Tao but in my opinion the end result will be well
       worth it.
     * Open standards will be difficult to achieve with many companies
       thinking that they cannot make money without proprietary systems,
       and the cooperation of many companies that think they compete. But
       it may be that Linux is showing that now even an entire OS can be
       "open" and benefit the entire worldwide computing community while
       supporting companies can still be economically viable.
     * New programming standards and OSes always face heated, almost
       religious opposition at certain stages from entrenched interests
       for ambiguous and arcane reasons. I certainly hope that Tao
       development never takes on the aspects of these notorious "holy
       wars," but if it begins to gain momentum, this would probably be
       inevitable.
     * Many programmers have a hostile attitude toward developing OSes
       that minimize the technical knowledge required to install and use
       them. This attitude is gradually being resolved as a realization
       sets in that there is no net savings of time "in the long run" and
       that programmer laziness can multiply exponentially user
       frustration and time spent debugging problems that could have been
       avoided.
     * Some hardware devices will have to be redesigned to support new
       standards. For example, Win95 requires rebooting partly due to
       hardware card constructions. My opinion is that hardware cards are
       redesigned so often now, and that the overall standard might make
       constant redesigns somewhat less necessary, that this is really a
       minor objection.
     * Some will object to any proposal for a new system, focusing solely
       on spurious elements such as the reputation or background of the
       creator or proponents as the gauge for its validity rather than
       the inherent ideas, invoking the "genetic fallacy". Others may
       object that merely coming up with such an idea does not involve
       any progress toward the goal espoused. Another simple but crude
       objection would be in the form, "it's never been done that way,"
       which of course is exactly the point of Tao.
       
realization of Tao

   Tao will be difficult to realize! Many aspects of its design may seem
   technically unrealistic, infeasible, or even impossible. Yet it is
   clearly a highly desirable OS in theory with aspects that far
   transcend even the best current OSes.
   
   Tao will be opposed by companies that favor a proprietary OS such as
   MS, which is a very powerful impediment and obstacle. However it could
   be favored by those who champion open standards, i.e. the Linux
   community. One tantalizing possibility is harnessing the existing
   Linux code and massive talent force toward "gently massaging" Linux
   code in the direction of Tao over time. Arguably many aspects of Linux
   are already evolving in the direction of Tao anyway.
   
   However, Tao embodies the concept of absolute convenience to the end
   user over all other criteria. Linux is still very much a hacker's OS
   in which knowledge of programming is often required to run it. One
   possibility is a Tao-like interface built on top of Linux.
   
   There is some effort to increase the sophistication of GUIs in Linux,
   and I consider this a noble effort, but not consistent with the nature
   of Tao as enumerated here. Beneath a powerful GUI, Linux is a very
   complex Unix operating system, which is far more difficult to install
   and run than Win95, which itself is very complex. Tao embodies a
   complete reformulation of the concept of an OS starting at the very
   lowest level.
   
   Tao is not merely an open OS but in fact an open computation universe.
   I think its design goals are inherently desirable and practical and
   will eventually be achieved in some form one day not too far in the
   future.
   

- about the author

  V.Z.N. is a software engineer and web designer/programmer who 
  founded the "theory-edge" mailing list for the discussion of
  cutting-edge mathematical advances,

    http://www8.pair.com/mnajtiv/edge/edge.html

  and contributes intermittently to the "Mad Genius Research Lab":

    http://www8.pair.com/mnajtiv/

- references/resources

  The key Linux site with information and archives:

    http://www.linux.org

  Uniform Driver Interface (UDI) - new driver standard being developed
  for Unixes and potentially other PC OSes and supported by many
  major vendors

    http://www.sco.com/UDI/

  Universal Serial Bus (USB) - emerging standard with plug-and-play 
  connectivity for many peripheral devices, also supported by major
  vendors

    http://www.usb.org

  Tao of Programming - short humorous paperback with Taoist wisdom as 
  applied to programming

    http://www.amazon.com/exec/obidos/ASIN/0931137071/madgeniusresearc/

  Recent Microsoft memos against Linux:

    1st memo leak, Wired/C.Oakes

      http://www.wired.com/news/news/technology/story/15990.html

    2nd memo leak, Wired/C.Oakes

      http://www.wired.com/news/news/technology/story/16084.html

    Eric Raymond's page with many links to press coverage and commentary

      http://www.opensource.org/halloween.html
---
#  distributed via nettime-l : no commercial use without permission
#  <nettime> is a closed moderated mailinglist for net criticism,
#  collaborative text filtering and cultural politics of the nets
#  more info: majordomo@desk.nl and "info nettime-l" in the msg body
#  URL: http://www.desk.nl/~nettime/  contact: nettime-owner@desk.nl