Re: Software as society (was: Re: Documentation Standards was Re: [ox-en] UserLinux)
- From: "Niall Douglas" <s_fsfeurope2 nedprod.com>
- Date: Sun, 14 Dec 2003 19:10:26 -0000
On 14 Dec 2003 at 6:37, Benj. Mako Hill wrote:
In which case, I completely agree. Too many programmers think "if it
works, it's done". This is IMHO very poor engineering - software
needs aesthetics and quality. It needs to be far more than simply
getting the job done - it needs to create dreams within people, to
inspire them and to change the world around it.
For the most part, I agree with you. But some software is a kernel
scheduler or a list sorting algorithm. The social aspect of these
types of software seems harder to put a finger on. I'd be interested
in hearing you unpack either of these examples.
As it just so happens, I am particularly well placed to comment on
both of those. I once wrote an extension for Acorn RISC-OS called
Wimp2 which provided a preemptive multitasker to replace RO's
cooperative one. Now what was interesting about this was that for
many years preemptively multitasking existing RO applications was
considered near impossible and that while it probably could be done,
it would be too slow to be workable.
After some weeks spent slaving in assembler, I produced a working
solution. If I'd done it a few years earlier, it would have had a far
greater impact - but it still did so. Why? Because the very fact that
it could be done had a major /social/ impact, the usership of RO
could now move past the polemic debates for and against PM and indeed
a good few chose to permanently install the patch in their systems.
If you do a google search, you'll get some idea of the social impact
of what was ultimately a very small bit of code.
Regarding list sorting, I recently completed what I believe to be the
perfect list sorter for C++. It takes a std::list and applies a
combination of quick sort, merge sort (not quite finished yet) and
insertion sort with custom compare, swap and move routines installed
via static polymorphism (ie; template parameters). It uses compile-
time introspection to self-compile itself to the very best possible
and because you can do cool stuff like sort disparate lists
simultaneously, it enables interesting new idioms. Now if I were to
publish an article on this in CUJ say and people were to adopt my
ideas, a trickle-down effect occurs whereby more & more code becomes
enabled with these new idioms. Here again we see a major social
effect from yet another implementation of very old algorithms - and
hopefully someone will see my ideas, combine them with something else
and so the merry-go-round goes round again.
(2) Not everyone agrees that software quality is always something you
can speak about in such definite terms (although it's clearly more
so with software than art or literature).
Well, obviously we all have our preferences. The reason why I forked
FOX to make TnFOX was because no other library had the quality
standard I required of it (eg; WxWindows, Qt etc). While I feel that
my code's quality is as good as it's possible to make it, some might
feel that they dislike my library because perhaps I won't support
retrograde compilers. Also you will need a very fast computer to
compile it. Some people may view this as minusing the quality points.
(3) Not everyone agrees that our principle way to improve software
quality is through encouraging reuse. Competing implementations of
SSH has been a good thing for security by most accounts.
Redundancy in C libraries allowed for interesting innovation and
experimental functionality.
I take the rather odd view that there is usually one single best way
of doing most things. Thus in TnFOX there is one orthodox way (ie; my
way) and you get no room for trying to be different. This is
fundamentally not how the Unix mentality works, but then I don't come
from a Unix background.
This is very egotistical of me, and probably the biggest point
against third parties using my library. I can understand why choice
is good and competition is good, but I view those only as being
useful when there is doubt about the single right way. If there
isn't, choice and competition are wasteful eg; there should be no
reason why a system need more than a maximum of two code editors as
we perfected that years ago (and no, I don't think emacs is that by
any means).
(4) Not everyone agrees that the main point of free software is to
improve the quality of the software.
Neither do I - I've said many times here that volunteer based
projects will not produce much step-change innovation and capital is
needed for that. However, free software must surely play a crucial
part as quality will rise when people can study the source/customise
their purchases (I would mandate source to come with all purchased
software plus customer rights to modify and distribute patches).
The GPL helps open source software not waste production, but it
doesn't proprietary. Therefore it's not a good idea as there are
alternatives which don't have this problem.
As you know, many programmers who choose the GPL are not, first and
foremost, out to improve the quality of software -- that was never the
point.
And I think that's what I find the most abhorrent. We're programmers,
our first priority should be the code. Any politics we practice
should be concerned with improving the code and nothing else.
Your answer to this seems to be, "they're religious zealots and need
to quit the cult of the GPL," or "freedom is meaningless, they are
just chasing a word."
That's perhaps a bit harsh. I feel that most GPL believers are
misguided and as I've said in here previously, I can understand why.
I also have serious problems with the term "freedom" but I think free
in the context of free software means something more concrete than
freedom when used by George Bush. More importantly, I also can't think
of a better one.
I guess I find it odd that when the preamble to the GPL says good
things like removing the restriction of use by anyone, it then goes
on to commit the hypocracy of restricting certain forms of use.
That's a contradiction which negates being able to call GPL software
free software.
Cheers,
Niall