[KLUG Members] Software Theory

Peter Buxton members@kalamazoolinux.org
Tue, 10 Jul 2001 21:43:20 -0400


Bob Brown and I were speaking of KDE v. GNOME, and we got into the stated
goals of toolkit designers. KDE is primarily a desktop and toolkit which is
evolving into something more; GNOME is a toolkit, GTK+, welded to the
CORBA/Bonobo Software Object Model, which was designed to be the Most
Perfect, Most Complete desktop/ORB in the world. This led me to:


The Ontological Theory of Software Development

Descartes's Third Meditation contained the so-called Ontological Proof of
the Existence of God. (Similar is Anselm's reductio ad absurdam Proof of
God.) Cutting to the chase, it basically says that ideas are things, and
since we can conceive a Perfect God, and no inferior thing can 'birth' a
greater thing, this God must exist.

(This must be bitter irony to we who can conceive of perfect SO's, but can
never seem to find, date and marry them.)

This is the GNU philosophy in a nutshell, only negatively expressed. The
Hurd (the Perfect Kernel), Emacs and GNOME were all conceived first as the
best of their respective classes (often before a single line of code was
committed to CVS). Thus:

1. I can conceive of a perfect and complete
   [editor|compiler|desktop|shell|kernel|whatever].
2. This conception is a real idea.
3. No [whatever] is perfect and complete if non-existent.

Ergo, 

4. I can code the perfect [whatever], or, the perfect [whatever] must exist.

It must be noted that this philosophy is quite different from the original
Unix philosophy, which came across more as something out of William James:
that OS is perfect which I believe does 90% of my work. ;)


The Ourouborous Theory of Compiler Design.

In reply to this, Bob mentioned a similar phenomenon: language designers who
regard their programming language as complete and perfect only when they can
write the language compiler in the language itself. Thus, we find:

1. This language is very good and complete.
2. The compiler/interpreter of such a good language must be good, too.
3. I can write the compiler in the language, which is even more proof of how
   complete it is, therefore good.
4. Repeat steps 2 and 3 until perfect.