But of course, do not ask again some existing question,
unless you're sure the answer is not satisfactory (-8.
Index of Questions
Section 1: Project Goals
Section 2: Project organization
Section 3: Project motivation and history
Section 4: Project Advancement
Section 5: More about the project
Section 1: Project Goals
What is the Tunes project's definition ?
Tunes is a project that strives to design and implement a
computing system,
based upon a
paradigm
of total
computing freedom.
These words are to be taken in their fullest sense (see the Tunes
Glossary).
Assuming the above, we must also define the context in which we stand,
besides computing liberalism
So we believe that such freedom is reachable only
by providing the finest possible
grain
in software and hardware modularity.
though we have little grasp on hardware modularity.
We believe that such modularity means that modules
should depend only on other modules they actually need, so
that the best module adaptation shall be achieved.
We also believe that no reliable modularity is possible without
security, and that the most secure software frame should be use,
including total security through formal proof of software
specification when possible.
Finally, we believe that to express and manipulate this modularity,
we need unified extensible language, that could specialize to any need,
from the low-level control of computer hardware, to the highest level
interaction with humans and the external world.
Of course, none of the beliefs above is an absolute one, and anything
should be reconsidered (including the project itself) if ever
convincing counter-arguments would appear, and new beliefs may be
added if proper arguments show them.
What does the name "Tunes" stand for ?
Actually, Tunes means
Tunes is a Useful, Not Expedient, System,
which name refers to J.S. Mill's Utilitarianism.
The philosophy behind Tunes is deeply inspired by Mr. Mill's works.
The name thus reflects our commitment to write a system
that will be Useful to all and last long, not
only a toy, or a quick-and-dirty expedient hack to earn money or diplomas.
The name could have been Runes or Dunes
instead of Tunes,
but Runes are said to be cryptic
and Tunes sounded better that Dunes (-8.
You may also have noticed that this name is an implicit reference
to the GNU recursive acronyms.
However, the name of the project is infinitely less important
than its contents. So don't get over-enthousiastic or
over-suspicious just because of it.
Other names were proposed, and it may change one day.
The project also has a secret name, but hey, it's secret
(-8 well not so; ask JVS) !
What are more specific goals for the Tunes project ?
The Tunes computing system shall eventually provide all needed
integrated tools to perform any kind of computing, with a
unified
way to manipulate objects down to the finest grain,
through a standard
High-Level Language
that would be used for
any kind of programming including direct
user
interaction.
It should adapt to any kind of computer architecture and size, from
old small single-CPU system to brand new huge massively parallel systems;
it should distribute over any kind of network size and topology, from isolated
single computer systems, to clusters of CPUs over the Internet. Actually,
all computers in the world should be considered as a single network, with
nodes being more or less quickly and reliably linked (at worst, a monthly
link through floppies).
Objects should automatically, and programmably, be scheduled over the
distributed system; they should migrate or be copied as needed for the
system to run correctly when foreseen or unexpected network disconnections
happen.
Tunes should be secure
and
resilient
to network failures.
Persistence
of objects would provide a much more intuitive and secure abstraction
than files, and be considered as just migrating or copying objects to more
stable (but quite slower as for computation) subsystems.
Tunes would abolish all kinds of computer
centralization.
Not only software development monopolies will be broken down,
but even computer services will be decentralized when possible:
in each
host,
the centralized
"kernel"-based
architecture and the "OS/Application/Program/End-User" paradigm
will be trashed out to the garbage can of computer history
which they belong to. Client/Server centralized computing will
be systematically avoided, whenever parallelization is possible.
A powerful module system will come with the system. Dynamic linking
of modules would come easily through lazy partial evaluation.
Module and author authentification, and message encryption would allow
a secure system, and author payment or (dis)credit.
Automatic dynamic compilation will allow high performance, while
automatic dynamic decompilation will allow migration and dynamic module
upgrading. Security will be enhanced through a parametrizable type
system that will be enforced by Tunes, and will allow any kind of
security, from none (for the risky), to total security, through checking
of program proof vs arbitrary kind of specifications.
Finally, tools will be provided to allow automatic translation of software
from other environment to Tunes, thus providing a smooth transition
from older systems to the new one.
What public (who) does the project aim at ?
The Tunes project targets absolutely all computer users,
from newbies to gurus, either humans or other machines. We precisely
think there should be no arbitrary distinction between users and programmers.
Each object has providers and consumers, and is built upon other objects;
but anyone providing new objects, even to himself, is a programmer; anyone
communicating to the machine is a programmer; any user is a programmer. And
any programmer is a user. There are people who provide different services,
according to their various proficiencies, and who consume different services,
according to their various needs.
Thus, any kind of users will eventually be equally welcome, and will have
to, because no system is live without all those kinds of users. Of course,
during early development stage, only people ready write technichal stuff
will be actually able to program and use the system, so we're first
looking for exactly this kind of people (hey, you, who are ready to spend
time for such a great cause, we are talking to you, even if you do not have
the technical knowledge yet) !
Section 2: Project organization
What are existing structures ?
The project is organized according to an open development model.
To ensure development openness, a Charter
ensures that anyone can freely join development, that decisions are taken
fast when possible, but democratically in case of disagreement, and
dictatorially in case democracy fails to yield a decision.
The project is divided into a hierarchy of
subprojects, each having its
coordinator, with responsibility to animate and report the project activity
through a WWW page, and power to take any decision, as long as no one opposes;
a coordinator's opinion also prevails when no democratic decision was possible.
Then, a
mailing list list was created as a means
to communicate between project members.
How can I participate to the Tunes project ?
Basically, you can join a subproject (including the main one) by just
mailing to its coordinator, and will become a member if no previous member
opposes. See the Charter for details.
If there is enough people on IRC, a permanent #Tunes channel will be set up
on undernet...
What about copyright and property issues ?
The Tunes project is for computing freedom,
but also for a just reward of an author's work.
This is why any document or piece of software or any material
that will result from the project
will be copyrighted by both the project and its authors,
and distributed under the following terms:
- People using the material in a non-profit context (home computing,
research and teaching) will be allowed to do so freely, and to freely
redistribute the material to other people doing so, according to
the GNU "copyleft" General Public License modified accordingly.
- Other people, people using the material in a commercial or for-profit
context, people selling it alone or packaged with other material, will
have to first contact the project or the authors, to find a preliminary
agreement on project and author retribution.
Section 3: Project motivation and history
Why such a project ?
Because we are sick of existing computing systems that are expensive,
and can't adapt to your specific needs, except at excessively high
costs.
I (Faré)
for example never aspired to write computing systems,
but to use them, until I wanted to use software that would handle
and understand all kinds of musical data,
and discovered that to have a truely intelligent music-managing system,
I had first to have an intelligent system.
Like Can Sagan said,
"to make an apple pie from scratch,
you must first create the universe"
.
How did it begin ?
The reasons why it appeared being as old as computers, the idea of
such system is also as old. So no clear date is possible to give to
this project's birth. In 1992, Dennis Marer gathered a team to
design an implement his dream OS, to which he gave the name
MOOSE
(for Multitasking Object-Oriented Operating SystEm,
or later Multi-* OO OS & Environment). But the project
died because of lack of decision procedure, and could not be revived
in 1993.
In 1994, I (Faré)
tried to revive the
MOOSE mailing list and
project
simultaneously with Mike Prince trying
to gather a team for his similar
PIOS
project (whose goal was to implement
a new OS on top of existing ones, and allowing object migration in a
heterogeneous distributed system).
The two projects merged into one, and a
mailing list list was created with the
name Tunes, hosted at the ENS.
What will it bring that other systems don't ?
The Tunes project is organized according to an open development
model. In fact, with this model,
the quickest feedback is made possible between developers and consumers,
all existing talents can express freely,
and an elite of self-taught will constitute that may help spreading the
system and ensuring its maintenance.
That is, computer users, whether producer or consumer of computerly goods,
are granted the greatest possible freedom.
Linux is an operating
system that is being successfully developed using this development model,
and is maybe the most reliable Unix clone implementation on intel-based PCs.
But Linux is not the ultimate OS, as it only implements an existing
specification that wasn't designed with computing freedom in mind at all.
In existing systems, user freedom is hindered by
prejudices imposed monopolistic companies both by inertia
and for profit. Those prejudices are such as the arbitrary
distinction between system programmers, application
developers, programmers and final users, that forbids the latter
ones to extend the computing system according to their needs,
so that they have to wait for the former to provide them
very expensively what they could have sooner and cheaper.
Another is the idea that a the computing system needs a
centralized kernel, that only introduces overhead and arbitrary
limitations in objects the system is able to manipulate directly
at reasonable cost.....
What won't it bring that other systems do ?
In theory, nothing cannot be done in Tunes that can be done in other
systems. Now, for some feature to be implemented in Tunes, there need
be an implementor; and if Tunes is to communicate with other systems,
the documentation for the other systems' protocols need be available.
However, a system without available protocol description shouldn't
be relied upon anyway, because you can't trust its efficiency and its
maintenance, so the only problem is to find someone ready to implement
the interesting protocol inside Tunes.
We believe that open development will make it cheaper and more reliable
to find someone to implement the protocol inside Tunes than to
implement it under some other OS platform.
What does liberalism have to do with this project ?
The idea behind the project is that the whole computing world is made
of competing objects (computer hardware and software products). The theory
of Liberalism tells us that to achieve
the greatest utility, we must have the greatest possible freedom with
positive feedback on utility. Thus, this project strives to create the
freest computing world, where users will be able to freely select the computer
objects they'll manipulate according to their own idea of utility.
This project aims at providing (and maintaining) minimal tools to create
a free competition, which tools willl then be submitted to this competition.
Section 4: Project Advancement
What is the latest release number ?
The latest Tunes release at the date this FAQ is written is 0.0.0.10.
That is, version 0, revision 0, patch-level 0, internal release 10.
In any case, you may find up-to-date information on the
Tunes
WWW page.
Patches and distribution are also available at the usual
ftp address.
What are supported hardware architectures ?
The Tunes design will be as architecture independent as possible.
The final aim is that same distributed system should eventually be able to
run on the virtual network composed of all computers in the world
from old 8 bit computers and consoles to new 128 bit supercalculators.
Currently, two test implementations are intended:
a first one for Intel-based 386+ PCs (not using DOS),
and a second portable one for on any 32-bit+ computer
with a some POSIX-ly correct system.
If you're willing to port the system to another architecture,
you're welcome.
But implementation phase has not begun yet;
as important design points are yet to settle.
What are supported software standards ?
Currently, none.
But we wish to support as soon as possible all the standard file encodings and
transfer protocols. We also intend to build parametrizable converters that'd
allow convert applications written in C into applications that'd run directly
inside Tunes.
Section 5: More about the project
Where to find more information about Tunes ?
Firstly, go on the Tunes
WWW page.
It's address is "http://acacia.ens.fr:8080/home/rideau/Tunes/".
If you don't have fast WWW access to France, you can get the whole
distribution from FTP, and read it peacefully at home.
The FTP site has address
"ftp://frmap711.mathp7.jussieu.fr/pub/scratch/rideau/Tunes/",
and you may get the latest version from there.
If you use IRC, you might try joining channel #Tunes
(/join #Tunes) on undernet (/server us.undernet.org),
so that if I'm logged in, we can have a chat !
What are other related works and projects ?
There is a
Review
subproject
dedicated to finding and reviewing other related works,
to determine what must be kept, rejected, improved or added
about these.
To Do on this page
Fill the glossary entries
Wait for feedback, as usual
Page Maintainer:
Faré
-- rideau@clipper.ens.fr