Thursday, April 23, 2009

Deadwood (MaraDNS) roadmap

Now that Deadwood 2.3.01 is out, I spent the last day coming up with plans of what to do with this code. One plan I had was to add this code to Busybox, but the code is far too big to be a Busybox module, and making it small enough to run in Busybox is more bother than it's worth.

Quite frankly, I'm moving away from Linux. I have spent over eight years working my butt off on MaraDNS for Linux and have some small donations and a free web hosting provider to show for it. I have only gotten one job interview for MaraDNS (with Google), which didn't pan out. During interviews, when I say I'm the MaraDNS guy, I get the "What's MaraDNS?" response.

The thing I don't like about Linux is its cult-like belief system. There is an idea that people making digital media of any kind (music, movies, computer programs, video games, art, etc.) should do all of their work for fun and for free, and that people will somehow magically get money for their work (musicians should earn 100% of their money from concerts, open-source programmers can get better jobs because of the positive reputation their open-source project, people can make money from services and support, etc.)

Well, I've been in the trenches. It's more like this: If you have an email address on your web page, you get all kinds of inane feature requests and bug reports for fixed bugs in old versions of the program added to some Linux or BSD distribution. People send emails sending veiled threats demanding I support them or add the feature they want or they will no longer use my program (see this Slashdot posting for an example of this kind of attitude). People send incomplete bug reports and don't follow up when I ask for more information to reproduce the problem.

Money? Not very much. I finally, last year, cut off private email support then set up a "pay me if you want features or an unsupported OS supported" model. This worked; I even get some pocket change from people willing to sponsor me (see my list of MaraDNS sponsors).

At this point, I don't do private email support without being paid for my time. I don't add feature requests without being paid for my time. I don't support any OS besides CentOS 5 and Windows XP (with some pointers for Vista users) without being paid for my time.

I feel, on some level, like Eric Scheibeler did after moving beyond Amway (I'm right now reading his excellent book Merchants of Deception). I feel I am finally moving beyond a big lie I have been living for well over a decade.

That said, I am still working on Deadwood. Because of my current work situation, I have a lot of free time, and I still want to get a MaraDNS 2.0 out there. But, my focus has changed. MaraDNS 2.0 will have far better Windows support than older versions of MaraDNS, because, quite frankly, Windows is where most of the users are, and, yes, where most of the money is.

OK, now that I got that out of my system, what is my plan for Deadwood? Well, the next thing I want to implement is more tightly integrating the TCP and UDP code. I want Deadwood to be able to get TCP answers from the cache, and to be able to send a TCP query when getting a truncated response from upstream.

After that, I want to make it possible to have upstream_servers for hostnames besides the root hostname (".").

Then I should take MaraDNS' DNS compression and decompression code and port it to Deadwood's codebase.

Next, I can think about TTL aging and resource record rotation.

Then I can concentrate on real recursion.

There's a lot to be done with Deadwood.