| 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