Showing posts with label open source. Show all posts
Showing posts with label open source. Show all posts

Monday, November 30, 2009

How we can once again become UNIX-ish

Eleven is Louder writes about the unix philosophy and linux today. Well, hes right and wrong, but mostly he misses the point!

As a programmer, atleast for me, the Unix philosophy is more about making the programmers life simple by making the tools "ortagonal" and standardizing the interfaces on read/write semantics, then it is about the command line interface.

Of course we can have a modern system based on those ideas! For example:

Sound: Instead of this horrible buggy complex mess that is alsa+pulseaudio, we can archieve the same thing, today, with OSS4¹ and NFS, SSH or Samba. And we get portability, higher quality mixing, lower latency and an easier programming interface for free.

KIO-slaves: Whats the point of of the KIO subsystem when FUSE exists? NIH in all its glory. Fortunatly KIO-FUSE exists, so you can access a textfile inside a tarfile on a remote webdav share with any program, not just KDE centric ones.

X: Lets drop the whole mess! The only thing it does nice is forwarding, but even that is botched compared to what it could be! Try using it without a hacky NX server over anything but a local link and you know what im talking about! Wayland seems like a clean codebase to replace it with, and it can even run X within itself!
But even Wayland dosn't adhere to the Unix philosophy: the way to do X unixy would be to make every application window a bitmap, toolkits into generators of bitmaps, all manipulated by unix tools like imagemagick, which in turn can be accelerated by opengl/cl. All shared over NFS, Samba or SSH.
Check out plan9 from bell labs, its in many ways the successor to Unix.

Then of course there is uzbl, etoile, gobolinux....

We can have a modern system, based on the spirit of the Unix philosophy!

¹ Not the OSS of the 90s. Yeah, it sucked, get over it.


Very late edit: I have since learned that my own experience of sound networking only worked by dumb luck, and wouldnt in reality. Still, the P9P networkprocol for device sharing could be ported.

Sunday, July 5, 2009

Nearly the silver bullet for software design or -A wise man has learned from his mistakes, a smart man learns from others.

If we study the world the best method to develop the most widespread complex product seems to be evolution. Genetic individual evolution is familiar to most, the individual receiving the highest progeny spread their genes most. Quite selfevident.
Genetic cooperative evolution is the theory that a behavior or characteristics that benefit the group as a whole, spreads even tho it penalizes the individual.
Then we have memes. A meme is an idea, and as everyone knows an interesting idea is spread more than an uninteresting. As the smallest child knows, someones word is not spread as a perfect copy. Memes therefore possess the three characteristics required for evolution, a method of replication, a replication value and mutation.

A complex very successful example of cooperative genetic and memetic evolution is religion. If there were an original religion, it probably rose from genetic cooperative evolution, as to spend a seveth of the weeks idle, or to not eat meat, certainly is a disadvantage the individual. (Here's a small logical trap, the assumption that religion is a disadvantage to the individual is based on today's religions.)
Religion is also apparently a victim of memetic evolution, as we no longer believe in Zeus, Athena and Apollo, or, for that matter, Odin and Loki. The idea of eternal life is found in most major religions in some form, which is trivial to explain with memetic evolution.

Evolution happens faster the larger the population, as a larger population allows more mutations and a smaller population quickly becomes homogeneous due to the commonization of the, at the moment, 'best' genes.

What the hell has this to do with software? Yeah.. Evolution can be compared with:
The development of parallel products that compete for the user base. Capitalism.
Iterative design, release a close to viable product and expand and refactorize continually.
Open Source, or software communism. As the software is a product of the developers, more developers are equivalent to larger population.

Are there any projects that live by these guidelines? Yes, many! One example is that 40 years ago, an operating system was created to port a game to the PDP-7. It was written in a few weeks, and was worthless as real operating system. But the virus was released, AT & T sent the source code to universities, companies and the U.S. government. It was called Unix. Today Unix is more or less a niche product, but before its 'death' it gave birth to several offsprings, and a bastard, Linux.
The only thing I know, that prevents Linux from being a fully-fledged Unix, as it follows the posix standard, is that the certification is pricy as hell, and applies to the entire operating system, ie each distrubition need separate certificate.
On the top500 list of the world's fastest super computers, more than 85% are running linux, on top 10 on the list 100% are linux-based. Although computers are sold with Windows preinstalled, Linux is the choice for about 4% of users. It is also popular on everything from netbooks, mobile phones to integrated solutions.

Which is a great testament to the soundness of the evolutionary software design principles.

However, the open source model is driven by meritocracy, which means that an optimal solution converges slowly, as either very influential and many developers have to understand both the problem and the solution well. If it converges at all, since the iterative design allows applications to build on 'unfinished' solutions, the problem of switching infrastructure can become to great to be practicly doable. X is a great example..
But perhaps the question is irrelevant? I cannot see how a centrally controlled and marketing-driven software production can create better solutions.