Where we stand
October 2nd, 2007

It's been a while so I guess I owe you an update.

For the last few months I've been taking a hiatus from Natural Docs, so if you e-mailed me or posted in the forum and didn't get a response that's why.  I know that kind of sucks of me but I really needed to not think about it at all for a while.  I've been getting burned out on it which is why it's been taking longer and longer to put out even small releases.  I've been doing this since November 2002 after all.

I'm feeling much better now, but there are going to be changes.  I'm not going to keep banging my head against the old Perl codebase anymore.  The engine has needed a big overhaul for some time now — it just can't do some of the things I want it to do without a major rewrite.  I'm also tired of dealing with Perl.  It was great for the little thrown together version I made for myself years ago, but it's deficient in pretty fundamental areas: classes, inheritance, even function parameters.  I've worked around them pretty well, but Natural Docs has grown too complex and I can't bring myself to do a major rewrite in Perl.  If I'm going to be rebuilding most of it anyway, I'm taking the opportunity to switch languages.

So for the last few weeks I've been working on 2.0, and it's where I'm going to spend all my time going forward.  It's being written in C# with .NET 2.0 and Mono for a lot of reasons I won't go into here.  I know .NET often implies being tied to Windows but I'm designing it to be cross-platform from the very beginning.  I already have it running on Linux with Mono and will be testing it there every step of the way.  I'm building the back end on top of SQLite, which I also have running on both platforms already.  Managing everything Natural Docs was pulling out of the code and all its cross-referencing was getting hairy with in-memory structures, and it would just get dramatically worse with the things I have planned for 2.0.

I have to say I think I made the right choice.  So far this has been a lot more interesting and enjoyable for me.  It's not a trudge through old code that I know I'm just going to have to rip out someday.  It's fun learning a new language and framework.  Natural Docs is actually being brought into this century with Unicode, multithreading, localizations, etc.  Features I've had in my head for a long time can actually get built instead of being held back by assumptions I made years ago.  And doing some things in a modern language is just so much damn easier than trying to approximate it in Perl.  I love how cleanly some things can be done now.  I now think my burnout was due to the fact that working on Natural Docs was just objectively starting to suck and it was time for a change.

At some point I'll tie up the development releases and call it 1.4, but not right away.  Plans can change, but right now as far as I'm concerned that's the end of the road for the Perl codebase.  I'll start posting the 2.0 code, a roadmap, and an explanation of its features when I have more to show for it.  It's too early now, and it will still be a while before you have something to play with even in pre-alpha form.  I also don't want to talk about specific features just yet in case some of them don't pan out.  But they will be cool.  Have they not been cool thus far?

I've gone through my backlog of messages and responded to anything that came in within the past two months.  If you sent me something earlier than that and are still interested in a response, send it to me again.  I figure most people aren't by that point.  Also, if I ever take another hiatus in the future where I don't even do support I promise I'll put some sort of notice up first instead of just falling off the face of the earth.

So that's where we stand.  Feel free to e-mail me if you have any thoughts or questions.

Earlier   Later
February 10th development releaseNatural Docs 1.4 release candidate