Computing freedom (was: a no-kernel system)

Francois-Rene Rideau rideau@clipper
Wed, 28 Dec 94 4:05:55 MET


>  I have the impression Fare is
> focused on the standard processor box (1..n processors on one users desk,
> with some disks).  Your box, under your scheme, would collect a working
> set of modules.
   I don't know how you got this impression; I hope my messages weren't
*that* against my mind, but let me say that I don't see the system this
way *at all*.
   To me, as I may have said already before, the whole world is a computing
system; so yes, communications may slow and unsafe indeed, and we may have
to rely on an extremely heterogeneous hardware *and* software basis. On top
of that, we'll offer abstractions, device drivers, and standard objects, to
allow *free* computing (which does not mean software being free of material
cost (=money), but free of all those unnecessary, harmful, arbitrary,
sometimes monopolistically dictatorial or stupid-commitee-issued
restrictions that waste a computer user's life (not to mean that *all*
computer companies and commitees are stupid or dictatorial either; some
do great job indeed); free in the meaning that computer users are free to
do what they want, and not only what companies let them do; free to
customize and program just anything, and not only to choose between
a limited number of existing "buttons" and "selection boxes" in pretty but
stupid and slowly 5736 evolving windows and menus.


> Objects frequently migrate.  Now it's much tougher to maintain a working
> set.
> 
> Links aren't stable or fast.  You don't have that required module, and
> you have no way of getting it (or getting it fast).
>
> Modules characteristics change over space/time (scoping causes different
> modules under same name at different times to be acessable).

   Yes, of course. Getting modules is *slow*. But why should it be *slower*
than getting the program that needs the module ? This assumption is just
plain stupid, and it may be true on existing systems just because OS
providers do not care about modules at all. But why should we make it true
on our system ? There are *easy* solutions to that !
   When you go to the software "shop", you'll bring a software map, that
lists the modules you have (well, those that you and/or the automatic mapper
deem interesting). Then, the "shop" will automatically select whatever
modules you need that the "shop" has, and conversely, whatever modules
you have, that the shop needs. Then, if security/copyright barriers are
passed, module transfer will happen automatically.
   Now, if you want to choose manually whatever modules you import and
export, then *you* are responsible for modules lacking to obtain a working
system. And if you didn't pay enough to get the needed modules, then *you*'re
responsible too, and you don't earn the modules; of course you may ask for a
credit, or just look for a cheaper/free module elsewhere. If you didn't bring
enough floppies to transfer everything, you're also responsible. And our
module system will not increase, but only *decrease* actual module traffic
to achieve working software, as software providers currently need send *all*
modules needed on a bare computer with their systems for it to work, whereas
they'd only have to send modules actually needed on the specific target
computer. Users would also pay less money, as they wouldn't have to buy
multiple versions of the same modules together with different packages;
their harddisks wouldn't be overfilled with those copies either.


> You can only afford very small computers (embedded).  When you're fighting
> over a wasted byte, who can afford to support multiple standards?
>
> One thing you forget is the nature of businesses to support everything so
> their users don't get pissed about a particular format not being
> accessable.  If you foster the creation of multi-standards, then our beast
> will grow large.

   Hey, are you argueing that nobody should be free to write a program that
diverges from the standard distribution ? Are you trying to say that a
centralized instance should do *all* the work, and that people would have
just to enjoy the result and be happy ? This *is* communism and
totalitarianism.
   Let me recommend you the reading of the essay "on liberty" by John Stuart
Mill, (and perhaps of those essays on evolution by selection by Charles
Darwin). Only by freedom may software evolve toward a better state; natural
selection will help the fittest survive; and people will abandon huge, stupid,
inefficient modules by themselves. Only by granting people the liberty to
the how bad things can be will you show them how good the modules you
provided them are, and how better they could be. Being "the best" does not
mean anything if you're the only one. Standards appear by themselves when
they are needed, and if only if you let them free will the better arise;
if you give the power to choose to some cast, it will end in power abuse
by unproficient or dictatorial commitees. The only thing that should be
centralized is information providing services, that point to other service
providers, including rival information providing services. Mill and Darwin
found it all at the same time in 1859, and it applies to politics as well
as biology and computer science.
   If users are free, the system will evolve to fit users' interests; if
companies are free, the system will evolve to fit companies' interests.
I don't want our OS to be a new MS-DOS, and I vow any such system to
Gehennom. Freedom is freedom to live differently, and to be informed about
how others do things so you can choose. Freedom means accepting *laws* (i.e.
protocols) that you may upgrade, that help you communicate, and forbid people
from depriving each other of each other's freedom. Freedom also means
*refusing* actual management of private business by anyone else (i.e.
submission to any vendor's choices).

   Now, as for small computers, let the small computer users choose themselves
what modules they will use; be sure that *they* know far better than *you*
what *they* do or do not need. If communication is fair and fast enough, bad
modules will naturally be replaced by better ones, and people who require bad
modules will be responsible for their modules not being supported. Centralized
information providers (I insist on the plural) will help people choose modules
from their actual specifications and/or other people's actual feedback, rather
than just from the provider's prestige.