Friday, April 14, 2006

FlexWiki 2.0 Progress - The Big Commit

One of the things I've been working on - a little at a time, usually about half an hour a day - is a fairly extensive rewrite of FlexWiki. We're calling it FlexWiki 2.0, and not coincidentally, it involves an upgrade to .NET/ASP.NET 2.0.


I've been working on it for what feels like a loooong time, and for various reasons (some good, some less so) I hadn't checked in until today. Well, today I checked in the code - woohoo! So now we have two branches in CVS, which will make life ever so slightly more complicated, but which will allow me to sleep better at night. I do nightly backups of all my data, but that's not really the same as having it under version control at SourceForge.


This partial rewrite was driven by the desire to give FlexWiki a better authorization model. I still haven't even started on that part of it - first I had to untangle the existing caching code from the storage engine, and separate out a bunch of special processing that deals with something called "backing topics". Don't ask.


Anyway, what I've got now is a much cleaner, more extensible design than what was there before. Of course, I still have to do performance testing once I finish coding the new security and caching features, and that will almost certainly drive some complexity back into the design. But I remain hopeful that the design will enable future work to be done without the sort of elbow-length-gloved-colonoscopy type of overhaul I did this time around.


In October, I started tracking the time I've put into developing this new version of FlexWiki. So far I'm at 75 hours, which is either a lot or not much depending on how you look at it. There's a lot left to do - the source in its current state doesn't even compile - but the main refactoring I was doing has unit tests that cover 94% of the class, so I've got a solid start. My to-do list activities include:


  • Getting the build reconfigured to deal with two branches.

  • Getting a build for the 2.0 code working.

  • A few more minor refactorings.

  • Re-implementing support for built-in topics

  • Implementing security support.

  • Re-implementing caching.

  • Establishing some sort of performance testing regimen.

  • Documentation, cleanup, and generally making sure it works after everything else I've done.

  • Taking some sort of serious break from working on FlexWiki. :)


Anyway, today was a major milestone for me, so I thought I'd share. If anyone has any comments on the code or the design, I'd love to hear them.


  1. This happened quite a while back now and even more progress has been made, but I still think it's worth...

  2. This happened quite a while back now and even more progress has been made, but I still think it's worth

  3. While the new 2.0 version is still alpha, can later builds of the previous version be made available? For instance, formatting of text inside tables (such as coloring cells, and so on) is only available in builds 1699 or later. However, the latest build available for download is 1696, as far as I can tell. Thx.

  4. Yes, we've been really bad about pushing new builds of the 1.8 branch out to SourceForge, but you can always get the absolute latest builds of either branch from The latest 1.8 branch there is much better than the 1696 build in many respects.

    One of these days we'll get something better pushed out to the SourceForge website. I just haven't had time to do it.

    Hope this helps!