For a while I've wanted to refactor a lot of stuff in Zaapt and I finally got my chance to do it and much more.
I've been meaning to tidy up a few things in http://zaapt.org.nz/ (deprecated) Zaapt for a while and over the past two weeks I've hacked on it lots and lots.
In short point form, the changes I have made are:
- updated the sessions to be Apache 2 compatible
- tidied up all the DB access modules
- re-worked a number of components into processing/rendering pairs
- added proper RBAC to Zaapt
As always, a small list doesn't do justice to the amount of work I have actually put in. Add to this that fact that I've been hacking on it constantly since the end of June and you can see where Zaapt has gone in the meantime.
In fact, Zaapt is still only 10 months old so it really has come a long way from being nothing beforehand.
Here, I'm just going to touch on a few different things related to recent happenings in the Zaapt world.
There is more interest from other people around Zaapt these days but still no hard-and-fast site to say "hey looky over there, there's a Zaapt site and you know what and I didn't make it". I can't wait for that day to come and I promise you, it'll come before Zaapt is 1 year old.
Or at least, I hope it will.
From Apache Perl to Apache 2
This is something I had to do which just made sense. Apache Perl is looking a bit long in the tooth and of course, it's going to be removed from Debian in Lenny so I had to move away sometime.
As it turns out, porting Zaapt over to Apache 2 wasn't that hard, just a little picky. I had to change a few little things here and there once I'd Googled for the information I needed but mostly it was harmless.
From Sarge to Etch
Most of my sites are still running on this Debian Sarge box but I now have one running on Debian Etch. In the next week or so, I'm going to start porting all the sites over to the new box from the smallest to the largest. Firstly, Zaapt itself and http://simple.zaapt.org.nz/ (deprecated) Zaapt Simple, then kapiti.geek.nz (now chilts.org) and finally KiwiWriters. As they say, "it's quicker to build a 5" telescope and a 9" telescope than it is to build a 9" telescope".
From weirdness to Roles and Permissions
After I showed Donovan how my old privileges worked, I knew it was confusing by the look on his face. The good news is however that Zaapt now has a good implementation of Role-Based Access Control and it's much the better for it. Currently it does the simplest level but it's easy to add some of the more advanced levels later even though I think that will be unnecessary.
Adding RBAC has been the hardest change I've had to do to Zaapt so far. Not because it was tough, just because RBAC is implicit in a CMS like Zaapt and used in a lot of places. I had to change a lot of the Mason processing components as well as the database schema.
This addition to Zaapt had to happen now because otherwise it would become even harder later on when more sites, more users and more content models are using it.
Finally, because I'm changing servers, it gives me a prime opportunity to test it all works when I migrate the databases across but before I switch the DNS.
From Development to v0.1
Zaapt is still young but it is almost ready for the first official release. I know about the adage "release early, release often" but I just never felt that Zaapt was in that release position yet. Still you'll note that I'm only going to release as v0.1 but that's just because I know there are many more things to do before I get to a v1.0 state.
I will however now adhere to that phrase, moreso in the "release often" thing. That way, to upgrade from one version to the next would be relatively easy and certainly less of a headstrain.
And finally... a New Site
I wanted to get a simple-ish site going on Debian Etch, Apache 2 and all the new refactored stuff so I created http://amazingstructures.org/ (deprecated) Amazing Structures just as a hobby site. So far it just maps a few structures within a few categories but this is going to be expanded over time with many more features planned along the way.
As it turns out, its use of in-built Zaapt content models is straightfoward, but the site also has a very complex custom content model of it's own.
This is another great example of a custom content model which extends Zaapt without any trouble whatsoever. An even better example of a custom content model is the Challenge model (using SoCNoC as an example) over on KiwiWriters.
That's it for now, but remember to lookout for a v0.1 of Zaapt in the next few weeks (and as a bonus, with a new Event content model too).
Posted: 20 October 2007