This post originated from an RSS feed registered with Ruby Buzz
by Assaph Mehr.
Original Post: The joy of doing everything again. Again.
Feed Title: Open Mouth, Insert Foot (Echo Internationally)
Feed URL: http://www.bloglines.com/blog/AssaphMehr/rss
Feed Description: General geekness venting, mostly about Ruby and why Software Engineering != Computer Science, dammit!
With the release on Instiki-AR, I am now faced with a difficult problem: should Pimki remain with madeleine or switch to SQLite?
(Bottom line: I need to know my users better, so if you use Pimki please please please fill this survey!).
Background
When DHH first implemented/released Instiki, it was based around his ideas for how Rails will turn out to be. At the time I was both learning Ruby and looking at ways to better organise myself. So I started hacking Instiki to add navigation, personal productivity and other features. David was not interested in integrating them back into Instiki main, as they reduced the "no step three" installation (the GraphViz dependency) and simplicity on Instiki. I continued to work on it in the dark for awhile, but at the insistence of Gavin Sinclair, I release it publicly on RubyForge (an inssistence I now repay back regarding Gavin's patented CrapCollctor ;).
Going public has really pushed me forward: adding more productivity features at users request, getting exposed to GTD, learning more about proper development and testing practices, better Ruby and Rails knowledge and other goodies. So a big Thank You for all the users who responded over the years! (It also meant continually merging and upgrading with the Instiki source code mainline never knowing the release schedule and contents and the effort required for each upgrade but I'm not complaining I'm just sitting alone in the dark developing this for your eternal gratification and productivity)
Then around Instiki version 0.9.1, DHH was too busy to keep maintainint it and the task was givem to Alexey Verkhovsky. Alexey has release 0.9.2 as a patch release and went to on migrate Instiki to the modern rails. So between the minor release of 0.9.2 and 0.10 Instiki had gone an astounding transformation under the covers, from being based on a precursor of Rails to Rails 0.11! (<rant>When will people realise that 1.0 is not a shameful / all is perfect release, and that major changed to the API should be noted with major version number changes?!?!?</rant>)
I tried for a while to integrate Instiki 0.10 into Pimki, but gave up on this as too problem prone. There was no way I could do it and remain sane. So instead I declared Pimki2 - the new generation of Pimki. (See? major changes => major version and I haven't been smitten with lightning yet). What I did was take a fresh copy of the new Instiki and re-implement all the features. Besides the underlying changes, there is also a big philosophical move: Pimki 1.x was a hack to make it work; Pimki2 is a Get It Right phase, where I try to build it better in a sustainable way. This means better tests (TDD), cleaner code, new fetaures with a more critical view of the feature set etc. The upside is a better piece of software, the downside is that the released version (Pimki 1.8 currently) is still in the old code base.
Current State
So we get to the now and point of this post. When I finally had most of the features back to the state they were before, plus a few enhancements and the skeleton of what I want to achieve for a Pimki 2.0 release at an alpha stage...
Alexey goes and releases Instiki-AR - Instiki with an SQL backend...
And then announces that he really doesn't have a lot of time keep maintaining Instiki...
And that there's this newfangled I2 thingy anyway - a rewrite of the major features of Instiki in Rails to make a proper Rails-based wiki.
Going forward
So here are my options, on which I'd really appreciate your feedback (and if you can't be bothered to take the survey, you can always email the pimki-users mailing list or just me):
Continue with madeleine
Pros:
Simplest thing to do (nothing)
Everything required is still pure-Ruby, so easiest to install and minimise cross-platform issues
Cons:
Madeleine is problematic. Upgrading and debugging can be a pain. It also very rarely (but it happens) generates corrupt snapshot when using the zlib compression.
Harder to continue importing stuff from Instiki
Use SQLite
Pros:
Much more stable backend
Can take advantage of Active Record
Technical users can change the DB easily to run on whatever they wish
Cons:
Yet again I'll have to rewrite everything (but hopefully less so in the future)
This is not absolutely necessary. Madeleine can be nasty, but it's functional. This extra work means less work on the PIM features, which are much more important to me (and I guess my users).
No longer simple install in most cases. Gem install means having to install SQLite on your own. Zip install means I can include the DLL on windows (and possibly Mac), but Linux users will still have to get it themselves (easy on debian/ubunto, harder on others). And considering I don't have a Mac handy (yet), MacOSX support will be very limited.
At this stage I'm leaning towards using SQLite. Here are my reasons:
This will solve my need for a stable system.
At this point, Pimki2 requires you anyway to export previous contents and import them back in. This situation is likely to stay, and will be the only to import Instiki webs anyway.
I expect most of Pimki's users to be technical enough to handle the simple SQLite install, or be on Windows where it will be less of a problem. And considering you need to install GraphViz or the Mind Maps anyway, another simple external dependency is not a killer.
Downplaying (but not abandoning) the gems install means that I have better control over the version of Rails and other libraries included. I expect gems users to be techie enough to handle the missing requirements.
My course of action will be to study the Instiki-AR schemas, play around with them, enhance as necessary and then re-implement the 2.0 features. Timewise, it'll be awhile (patches and help are always welcome :) before Pimki2 will be back to alpha. Once there, I hope the new features will be a lot easier to implement and maintain.
Thanks for reading down to the bottom. Any response, comment or insight on this problem will be much appreciated.