Beware: this page is under perpetual construction...
So could you please send me feedback,
ideas, corrections, suggestions, annotations, or insults,
so I can enrich this page.
I'm Francois.Rene.Rideau@ens.fr.
Centralization is the simplest design: have a one lord who will rule the land, and transfer all worries, all responsibilities, onto him. Even if perfectly honest all well behaved, the central referee is limited in the amount of information he can handle, and the speed with which he can handle it. Soon, he won't be able to treat all the requests that everyone has to address him. So he'll demand always more and more power to be able to complete his duty; and people will have to wait for his decisions, and obey to his orders. And when he doesn't have time at all, people will have to do things themselves, without any help from him, and sometimes despite his irksome and inexpert administration, or even against his fascist police.
He can be a dictator, or a central administration;
as far as computing is concerned,
He can be a hardware or software "vendor",
a "server" computer or application,
or an operating system "kernel".
The problem is not his lack of kindness and good will,
even if with heady power and false-hearted sycophants,
He may lose all occasions to show it.
The problem is that even if He remains upright,
a system based on centralism heads straight to disaster.
See Dictatorship, Communism, Democratic Centralism, Server, Kernel, Vendor, Monopoly, Computer industry, Committees.
However, there is a great danger about committees:
firstly, when some people not being represented and defended in the committee,
the committe will completely disregard those people's interest,
perhaps vowing them to a certain death, or to eternal doom.
Such committees may share out anything subject to them as a loot,
and define private grounds for committee members to establish their
domination upon.
Then, when the committee members do not feel bound enough to the interest
of people they supposedly represent,
so they will start doing work for themselves;
they will issue irksome pernicky rules, because it makes them feel
useful and knowledgeable;
and they will divide their work into an arbitrary hierarchical layering,
because it allows them to summon more subcommitees made of even more idiotic
eggheads than themselves, and feel superior.
That's why any committee should be strictly and controlled, its members democratically elected or dismissed, and its debates and decisions never secret; that's also why committee members should be considered as responsible of any harm they may cause. Only that way can those serious traps be avoided; for committees are needed whenever technical decisions are necessary.
See Administration, Computer industry.
See Computing Liberalism.
This means computerware consumers must have access to real information,
not advertisement or propaganda, and be free to discuss computer problems
and acquire computer education.
This means that there must be the fairest possible competition
between computerware providers: no single vendor or vendor trust
should ever have any monopoly;
This means
This freedom is being able to adapt and extend the system
according to one's needs and taste, while still reusing existing parts
of the system one already has It is the freedom not having the choice
to stick with the lame tools currently provided by a company or rewrite
everything from scratch. It is the freedom not being subjugated to a
computer vendor ever after you finally choose between those monolithic
software. It is the freedom not having to buy ever bigger computers to
support ever growing packages that contain ever more features you do not
need and not the ones you do need.
at the finer possible grain of software. This theory of freedom constitutes some kind of computer liberalism. It is fight for individual freedom against undue company (or worst, state) monopoly to achieve the natural selection of the best for the greatest welfare of all. The arguments for liberalism have been sufficiently developed since the late eighteenth century, so that we do not have to repeat them extensively. We just point out that the same arguments apply to the computer market as well as any market, and that by providing a most secure fine-grained modular system, the fairest possible competition and greatest liberty is made possible.
Considering the
Computing System
as a whole is the most natural thing;
but for mostly commercial reasons,
this is not what the
computer industry
does and provides to its purchasers. Instead,
the computer industry imposes a layered paradigm where
This system recalls that used in the mafia, some sects, and actually is
the same as in any hierarchically organized mob.
Of course, all this layering is purely arbitrary, with no efficiency or
design ease reason.
The victim is the next link of the chain (sometimes
all links, when a corporation is present in the whole chain), and
ultimately, the customer.
Also see Computing System, Computing Freedom, Computing Liberalism, Operating System, Programmers, Users, End-Users.
Also see Tunes, Operating System.
Traditional Operating Systems have a very high grain (the basic object size being a file, and the typical packaging grain being the huge "application"), thus yielding poor performance and adaptability. The unsecure C language forbids a smaller grain. As long as OSes will use such a language, the computer industry is bound poor results.
Also see God.
In traditional OSes, processes are so unsecure that the system has to completely, systematically paranoidly isolate processes one from the other. This isolation is like having people put in quarantine to prevent possible diseases to propagate. But it also prevents people from interacting one with the other (i.e. to have any social life), and finally people have to cheat it to live at all, and it then loses its few advantages after having wasted a living.
Also see Centralization, Microkernel.
Liberalism is commonly applied to economy, where it tells that to achieve prosperity, you must firstly allow the fairest (not the wildest) competition between companies to have the quickest adaptation. Particularly, information should be freely available, and discussion freely allowed, so that people may compare and choose; choice should be free, and not based on prejudices. And secondly, you must encourage free enterprise (not free crookery) and small businesses when possible, to achieve the finest adaptation. Particularly, trusts and monopolies should be fought whenever they eventually appear, and stricly, democratically, controlled when they are inevitable.
Liberalism does not apply only to economy,
as show the works of John Stuart Mill in the moral sciences,
or Charles Darwin in the natural sciences.
Some even speak about economical or biological Utilitarianism,
or moral or social Darwinism !
In the Tunes project, we apply those ideas to the
field of computing systems, that is, we defend
Computing Liberalism.
All this has of course nothing to see with the "liberal" parties of various countries, who claim to defend the name, but seldom the ideas, and never the according policies.
Look out the fake: It's also a fad to be "Object-Oriented" !
The meaningful idea behind this dull fad is that of having a unified way to manipulate objects, but few understand it even partially, and even fewer are those fully conscious of what it means.
For true OO languages, see
BETA,
SELF,
or Dylan.
For languages with true OO extensions, see
LISP,
FORTH.
For false OO languages, see
ADA,
C++,
Visual BASIC.
In the false-hearted paradigm imposed by computer industry, an arbitrarily delimited part of a computing system that only deals with limited, first-order, low-level, services while inducing severe "context-switch" overhead for every single operation.
See Persistence
We know from computing liberalism
that coarse-grain is bad, so that processes should be
avoided when possible.
However, in traditional systems, processes are the basic
execution unit, and are very coarse-grained. In fact,
traditional systems use
unsecure languages (like C),
and thus all programs obtained are intrinsicly unsafe, and thus
need be wrapped into some paranoid protection frame for the system
to be secure at all; this frame is the
process.
In traditional systems, users are opposed to
programmers.
This is not the case in Tunes; everyone works according to his own
knowledge and proficiencies, and produces or consumes objects independently
from these objects' technicality.
In traditional OSes, threads are light, user-rewritten versions of
the OS's processes.
When programmers see that their OS's process concept is too bulky,
that their OS's scheduler introduces too much overhead, that they
need a potentially high number of asynchronous procedures that share data
quickly and don't overflow the "process table" or do numerous system
calls, they use thread packages to cope with it. Thread packages are
unsecure dirty (but sometimes necessary) hacks.
See SELF......
Note that we at the Tunes project make no arbitrary distinction
between using or programming. Programming is using computer
programs, compilers or interpreters, so programmers are users (they also
use a lot of other programs, as most computer users). Conversely,
by interacting with a computer, any user actually programs, even without
knowing it. Hitting a key is some trivial kind of programming, but it is;
writing a short macro is programming; filling a form is
programming. Thus computer users are programmers.
Of course, there are different levels of programming, more or less
proficient programmers, programmers with more or less technical,
theoretical, or practical knowledge; there are infinitely rich different
ays of using a computer.
But you may not cut a clear line to differentiate "users" from
"programmers", or "programmers" from "system developers" that would not
be purely arbitrary and without any intrinsic meaning
(in mathematical terms, we'd say the space of computing levels is connected).
Thus, the system must provide an equally integrated interface to all possible computing abstractions the users-programmers (the term "user" will be used herefrom in this text to encompass any kind of using the system) We must distinguish the current computer technical proficiency of a computer user from his being providing or consuming information to others. One may provide information such as text, sounds, images, without computer programming proficiency, or write very complex programs without ever publishing them. Conversely, one may use (read) a computer document
See Programmer.
Back to the Tunes Home page.
Faré - Francois.Rene.Rideau@ens.fr