A lot of open-source forums are full of naive and innocent people.
People who honestly believe that software can be developed and media
can be made by nothing more than people working for fun and for free
in their free time. Indeed, people point to Linux and say "Look!
This great software project made for fun and for free!"
That's
not how software development works. Linux? It's very disorganized;
there is no central authority to standardize on things like the Desktop
interface to use, the ABI for drivers, and what not. This results in
Linux being a mess: A hodge-podge of driver ABIs (sound is so bas that
it's nay-to-unusable in Linux), desktop GUI interfaces (Qt, GTK, FLTK,
Xaw, TCL/TK, Motif and its Lesstif clone, to name just a very few),
programs at various stages of development, etc. The only thing Linux can
seem to agree on at all is POSIX, which is so old and quaint, the only
networking protocol it talks about is UUCP [1].
Linux makes
a very good server OS for someone who knows what they are doing, but it
is not and never will be an end-user desktop.
For example,
the Linux sound system. What happened was that the main developer for
Linux's sound system one day grew up and realized that the work needed
to make open-source software compared to the reward he was getting was
just not worth it. So he tried to make it commercial; other Linux kernel
developers wanted to keep everything open source, so they threw out all
of his work (never mind that his system was the standard system for
doing sound with Linux for years) and reimplemented it, more poorly.
Linux's sound is a mess to this very day, with dozens of half-baked
audio systems in place, none of which works as good as the original
system.
OK, let me go back to why this happened: The main
developer grew up. He realized that open source software development
for fun and for free is plain simply not worth it. He left the project.
No other Linux developer was able to make the same quality of code
he did.
Another example: Xconq, which I talked about in this
blog posting. Summary: The principal author, after nearly two decades
of work on the project on and off, finally lost interest in the project
and development just came to a halt without any formal announcement.
Many open source projects die like this; the developer loses interest,
but never puts closure on the project. Instead of giving the project a
proper burial, the project becomes a zombie, dead but pretending to be
alive.
Another example: FVWM. Rob Nation realized one day that
it was a far more productive use of his time to be with his wife and kids
than to work on open-source software, so he stopped FVWM development.
He handed over maintenance to other people who, IMHO, did not do as
good of a job as Rob Nation developing the software; while FVWM2 has
more features than FVWM1, the code is more unstable and more bloated.
Indeed, I still use the last release of Rob Nation's FVWM1 today when
I'm using Linux. FVWM1 ended with proper closure; FVWM2's development
has slowed down but still appears to be actively development (albeit
at a glacial pace); the last stable release was done in 2006, but a
beta release was done as recently as last month.
Another
example: People's Tactics.
The developer made a free beer "grogger" wargame for Windows that
simulates the old 1970s and 1980s wargames groggers played with hex
maps and a zillion tiles on the maps (Squad Leader and other games from
Avalon Hill, SPI, Axis & Allies which didn't use hexes but was probably
the most popular wargame of this type, etc.) He realized that he should
be paid for his work (software development, support, etc.), so removed
the website for his older free game, and replaced it with a website for
his for-pay Advanced Tactics game.
And, yes, I'm coming to
the realization I need to put closure on MaraDNS. This means my next
release of MaraDNS (MaraDNS 2.0) will be my last release of MaraDNS.
MaraDNS 2.0 will have real Windows service support for the recursive
code, in addition to a rewritten thread-free recursive core. I've done
about two thirds of this work on and off for two years; I made a lot of
progress in late 2007, and even more progress in the first two thirds
of 2009, but come September I hit a roadblock when I hit the point
of starting to implement full recursion. I have made some progress
chipping away at that roadblock, but it's slow progress.
I
also hit a point where I realized it is more fun to do things like research
Chess variants that no one plays (openings, best opening setup,
midgame strategy, etc.) than to finish up my DNS server. Indeed,
I feel this software is holding me back; it's written in C (which is
next-to-useless on a resume unless you also have C++ or Objective C;
come to think of it, with all the companies outsourcing development to
India, C development in any form might be useless at this point) in a day
and age when the buzzwords people look for on resumes are things like
"Java", ".net framework", "PHP", and "SharePoint".
I have
been spending my time working on MaraDNS instead of getting my resume
out there (it's pretty discouraging in this economy, but I shouldn't
give up) or updating my skills. I have been spending my time working on
MaraDNS instead of doing what it takes to reach my goals: To have a job
making a living wage so I can support myself and my girl comfortably in
the US (ideally somewhere where it is sunny like California, my home).
So, yeah, what I'm saying is that I'm taking a break from
MaraDNS. I have every plan to finish up the Deadwood code and come out
with MaraDNS 2.0. But it isn't going to be the end of 2009. Maybe I'll
start work on MaraDNS again next week; maybe I'll just let it rest until
2010 sometime, just as I stopped Deadwood development for most of 2008
and only started development up again in early 2009.
Do I
want to finish up Deadwood and release MaraDNS 2.0? Yes. Am I going
to do it anytime soon? Probably not. I'm having fun downloading and
trying out various turn-based strategy video games; I would rather do
that right now (or research Chess variants) than develop a program which
has only made a very little amount of money for the amount of work I've
put in to the code.
I'm growing up and realize that there are
more important things than making programs for fun and for free. Yes,
I do want to finish up Deadwood mainly to put closure on the project,
but I don't think I'll do any MaraDNS development besides basic bug
fixes after MaraDNS 2.0 comes out.
- Sam
[1]
UUCP: You don't want to know. I remember when an ISP I worked for
dropped UUCP support; UUCP was a nightmare to configure and we simply
no longer had anyone who could configure our UUCP servers. The *only*
thing UUCP can be used for is email and Usenet.