Ancient traditions, from times when education was
too expensive and superstition was a better way to propagate information,
have imposed the
actually, all traditions have a tendency of
which is the basis of conservatism and
Some pretend that (at least some) words are holy. That's pure nonsense.
If you're not convinced, take the word "God",
and pronounce it to a french man, he will understand you refer to a tool
which decency prevents me from describing here.
The latin for "God" is "Deus", which if you pronounce it in english,
is "deuce" which is a scoring term in tennis.
Thus, for a word to be holy, the language it is spoken in must be holy too;
however, History tells us how quickly languages appear, evolve and disappear,
as humans do and undo them, and thus are not holier than humans; now, humans
are quite human-reachable, and not holy at all.
Actually, humans can only reach human-reachable things, thus no holy thing
is in a human's grasp. Conversely, nothing in human grasp is holy. Thus,
anything we can successfully talk about is not holy, and there's no point
trying to talking about holy things.
If you don't want to apply this to the human world, at least you can
apply it to the computer world, where nothing is holy as everything was
decided and can be changed by humans.
Note that happily, things do not need be holy to be useful.
Host
Standard name for the basic entity in a computer network:
each computer in the network is typically called a "host".
Information
Measures the improbability of the known state of a system.
The more information we have, the more restricted is the space of
possible actual system states as compared to some reference distribution of
possibilities.
In computers, the basic unit of information is the bit.
Fundamental theorems about entropy tell us that
global information decreases. But locally, it can increase by using
the free part of energy in some desequilibrium, and life is such an
engine that pumps entropy.
See the Ethics of information.
Inheritance
Inheritance is a implementation hack for having refined definitions
of objects.
It's the typical example of an element of
tradition that people
mistakenly consider as being holy,
and refuse to reject even though reason demonstrates how lame it is
as compared to what we now know.
If we formalize inheritance, we see that it consists in allowing
to define higher-order functions, under the constraint that each could
be applied only once, and only just after it was defined, with even
more constraints about the way the arguments are used (each being used
only once, and having to be different from the others), and requiring
a unique argument as for single inheritance.
Anyone sensible can realize how ridiculous such constraints are.
For more serious object definition mechanism, look for
delegation (or isomorphically, functors), which are other names
for (sometimes limited) higher order functions.
Input
What is consumed by an open system.
See output.
Interoperability
the fact that a number of different entities be able
to speak the same language.
Isolation
When a computer object is not secure,
it must be isolated from possible sources of failure.
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.
Kernel
Some central part in a software program.
As any centralized bloat, it turns out to be easier to design,
but completely unefficient to use.
Also see
Centralization,
Microkernel.
Lambda-Calculus
The mathematically formalized theory of abstractions.
The usual reference for it is a 1984 book by Barendregt.
See logic and functional programming in the
Languages page...
Lazy Evaluation
Strategy to evaluate objects only when one is sure they are useful or
needed, and not before.
Lazy evaluation allows to avoid lots of (possibly infinite) computations,
while greatly simplifying the way to code high-level programs.
Liberalism
In its original, nineteenth century sense,
liberalism is the theory which shows
that in any evolving system, there is a natural
selection by survival of the fittest to that system's constraints,
so that to achieve the best state possible,
you must allow the fairest competition,
and the broadest liberty, so that
people may automatically adapt to all of the system's
natural constraints.
The accumulation of data throughout history, that follows this selection,
as well as the data accumulated as a result, is called
tradition.
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,
Charles Darwin in the natural sciences.
Some even speak about economical or biological Utilitarianism,
or moral or social Darwinism !
The current continuators of this philosophical trend may well
be the cyberneticians and memeticians.
In the Tunes project, we apply those ideas to the
field of computing systems, that is, we defend
Computing Liberalism.
But beware, many people that call themselves (or are called)
liberal do not refer to this original liberalism, but to some
degenerate tradition, that misunderstands the deep ideas behind
it, and only retain the apparent conclusions of a time, that may
well be partial or obsolete. Often, they don't even care about
the ideas and just join because they hope to benefit from some
prestige related to a "liberal" tradition.
Though the word "liberal" may be historically attached to such
people and their parties, it is not in that meaning that
the Tunes project refers to this word.
Liberty
Liberty has always been a very difficult thing to define.
Basically, its meaning would be that people (or whatever subsystem is to
be free) are able to choose themselves goals they will achieve.
Thinkers soon discovered that paradoxically,
while physical constraints, like violence, directly opposed liberty,
moral constraints (as expressed through laws),
are an essential condition for any liberty to exist.
Actually, this paradox has an easy solution,
once settled a proper theory for liberty.
We define liberty as potential information.
Security will be actual information.
Physical constraints yields a little original information (most being
redundant), while wasting a great lot of resources, which is why they
reduce liberty so much.
Moral constraints, on the other hand, allow the willing man to
focus on a restriction of the system where the world has a meaning,
that is, information, so that any new input from the world will be
additional information; thus moral constraints do increase liberty.
More, with physical constraints, people reduce each other's liberty,
while with moral constraints, people increase each other's liberty.
In the first case, people expect each other to negatively interfere
with each other's goals. In the second case, people can expect each other
not to.
For example, having people repeat endlessly the same sentences of
wisdom greatly reduces their liberty,
and the more wisdom is being repeated, the more their liberty is reduced:
by repeating endlessly, one wastes the limited available resources one
can dispose of, thus depriving potential information from being made
available with these resources; worse even, just repeating things makes
those things meaningless, however great their original meaning was,
because they do not confront to reality anymore.
Information comes from interaction, not just sitting there.
So not only is liberty reduced, but the security is small (because of
redundance) and illusory.
But on the other hand, defining lots of rules about the meaning of
sentences greatly increases liberty, by letting people communicate more
easily, thus allowing to convey lots of information that couldn't be
possible otherwise.
John Stuart Mill has written the excellent essay
"On liberty" (1859), which I recommend to everyone.
It will explain much better than we may what liberty is,
at least what we think about it in the Tunes project.
Whereas it is very well worth the purchase of a paper copy,
it is also available on-line
"here" (283K),
or gzipped
here
(103K).
Because of a natural tendency toward entropy,
liberty naturally decreases, and we need continuously fight
for it not to eventually reduce to nothing.
Man
Some fragile machine that takes several tens of years to manufacture,
with a low success rate, and only seconds to get definitely out-of-order.
The most powerful and most versatile machine known to date, however.
Meta-
A prefix that means beyond, or transcending.
The Webster says:
used with the name of an discipline to designate a new but related discipline
designed to deal critically with the original one (e.g. metamathematics)
We also apply this prefix to objects in the meta-discipline,
e.g. if the discipline deals with bars, the meta-discipline
will deal with meta-bars.
Meta-Space
An object is defined in a space, in a context. This space itself is
defined in its own space or context, which we name the meta-space.
Microkernel
As people understood that kernels only introduce
overhead without adding any functionality, they
tried to reduce kernel sizes as much as they could. The result is called
a microkernel, which is pure overhead, with no functionality at all.
The latest craze in Operating System research is to
boast about using a microkernel. Note that the size of the OS is not
reduced at all, as the functionality has only been moved elsewhere.
Monopoly
the fact that a person, company, or trust, controls a market.
The worst way in which competition can be unfair, leading
to degenerating, unproductive, uninnovative, unadapting,
traditions, which benefits only to the tenets of the
monopoly, bitterly harming the entire system.
Even when there are laws against monopolies, the power
such situation gives to the benefiting few makes opposing
them very difficult, which is why such laws are of limited
utility, it being too late when they can be applied.
Thus, there is a need to fight the conditions that make
monopolies possible, that is, wild competition, that
naturally leads to such local or global monopolies.
Again, we need to ensure the fairest competition.
Network
A networked system in the general meaning.
Networked
For an entity in a system, being linked to other entities,
that is, there being input and
output between the entity and others,
faster than the speed the entity stabilize.
For a system, having entities linked with each other.
In a common, restricted meaning for systems,
implies that little trust exists between the entities, and/or
that the system is organized in a centralized way,
and programmers only having access to very low-level communication primitives,
and having to hand-design the way information is organized in the system
(which is also a form of centralization,
as a one brain decides for all the system).
Nucleus
Another name for
kernel.
Object
a Unified concept to manipulate
computer abstractions. The name object is commonly used
for that, although the first unified frame to manipulate
computer abstractions, namely LISP,
used lists.
Look out the fake:
It's also a fad to be "Object-Oriented" !
For example, when trying to "define" objects, some people say
that an object is something that "has a unique ID" (that is, can
be individually identified). Now what is a unique ID ? In what space
does it live ? This becomes a circular definition. Identifying for
the sake of identifying is no use. Of course objects can be differentiated
from each other, but this should be done according to useful semantical
differences. Just saying "we consider objects" is enough and encompasses it.
Object-Oriented
There's a craze about any new software claiming to be
Object-Oriented.
But if you ask people what it means to be "OO",
most won't be able to tell anything,
because it's only a craze.
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,
Dylan,
SELF,
For languages with true OO extensions, see
LISP,
FORTH,
For false OO languages, see
ADA,
C++,
Visual BASIC,
Open
An open system is a system that is ever subject to
dynamic enhancement, to external suggestions, whose development team
is ever awake and open-minded
(i.e. receptive to arguments or ideas: IMPARTIAL).
The only meaningful criteria for an open mind, besides immediate interest
(see expediency), is
rationality
and selection through free competition
(see tradition,
Liberalism).
Open Development
Open development means that a project is constantly publishing
its result and accepting feedback. Liberalism tells us that if an
open-developped project has got enough publicity, it will succeed better
than any other one.
Linux,
as well as the GNU,
are projects under open development,
to write a free implementation of the POSIX specifications
(i.e. a Unix clone), and free software to run under such a system.
Both projects are quite successful, and Linux is being the most popular
and supported OS by internetters, while GNU are their most popular tools.
Tunes is committed in open development;
but its goals are quite different from Linux or GNU:
Tunes should design a new system for maximal
utility,
whereas Linux and GNU merely implement existing already specified software,
extending it according to general expediency.
Optimized
In the commercial jargon, to "optimize" means to make better, quicker,
smaller, less expensive, more efficient. As for computers, it is often
used for compilers.
Now, this word is a lie in itself: "optimal" means "the best",
and commercial liars use this word to make believe that their product is
"the best" whereas it is only "better". Better than what ? Than the
crap that the same liars used to provide. As for compilers, it just means
that code produced is better than what a quick cheapo straightforward
implementation would have been.
We do not mean that what is commonly called an "optimizer" are useless;
some are bad, some are great.
We are sorry that such a word has spread around as a common technical word
in the computer community and participates in increasing the world's
entropy.
Orthogonal
Independent.
Operating System
In the Tunes project, any common cultural background
between different computers.
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.
Output
What is produced by an open system.
To an else closed system,
input and output (often referenced to as I/O or IO),
are conveniently thought about as "magic" or "divine" operations.
Overhead
Unproductive expense.
Administration is known to produce a lot
of overhead.
Paradigm
A way of exposing things. "Paradigm" is a very faddy word.
Common programming paradigms are
functional programming,
object-oriented programming,
logic programming.
Partial Evaluation
The strategy that consists into evaluating objects
whenever one has enough information to do something useful.
Partial evaluation reduces the amount of computations that
have to be done at the last time, thus yielding better system response,
and allow to avoid many repeated computations, thus yielding better
overall system speed and size.
Partial evaluation also greatly simplifies system design and
high-level programming.
Passive
The opposite of active.
Persistence
The quality of being persistent.
The fact that objects persist until they are no more needed,
neither before, which would make the system fail,
nor after, which would waste (eventually all) the system's limited resources.
This is quite a natural concept, because this is exactly what people
need when manipulating objects.
Because persistence was too expensive to implement in computers
of the old days, a tradition developped to have non-persistent systems,
and require users/programmers to explicitly save and restore
the state of the objects they use from low-level persistent media.
Of course, this is how all traditional,
"industry standard" operating
systems, do, which is most ridiculous, very error-prone,
completely unsecure,
and is a major source of computing and programming
overhead (which IBM evaluated to
30% only of total program code, only for its more obvious low-level parts),
which is just stupid and unbearable on today's computers.
As usual, the only justification they give for that
is a blind following of an obsolete
tradition.
Actually,
as the discrepancy between memory components and computing units grows larger,
it becomes everyday more obvious
that RAM is really another cache between the CPU and persistent storage,
and that there is no reason why
normal users should still have to explicitly fill and empty this cache,
when all these things could much more reliably be done automatically
by the computer itself.
Persistent
An object
is said to persist, or to be persistent if it continues to
exist and keeps its state accross multiple sessions or shutdowns of
the computing system.
See persistence.
Portability
The fact that communication be as easy as possible.
Process
A process is a very
coarse-grained
active object.
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.
Programmer
Someone who programs a computer, who gives orders to a it.
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.