One thing that came to mind is that I'd could probably really use a personal wiki .. or three. Of course, I'm a picky sort of person and had all kinds of requirements in mind which I was fairly sure I wouldn't be able to find all in one tool. Essentially, I wanted something:
- similar enough to editing a Mediawiki-based wiki that it didn't feel too alien
- that can be set up in a matter of minutes
- that used git for storing the content so I could easily carry it with me on my laptop, but then sync it to a server somewhere without pain
- could host multiple wikis side-by-side
I search the Internet using variations on the search phrase "git wiki" (e.g. "git backed wiki") which gave me all kinds of results that had nothing to do with what I was looking for but, thankfully, also a small handful of links that were on target.
The first two options I found and tried left me feeling empty: they were featureless and not actively developed. Then I found gitit by John Macfarlane.
At first my heart sank: it was written in Haskell and looked to have some sort of arcane install process. That was just my ignorance speaking though, as I soon found that OpenSuse's warehouse of packages gave me quick access to everything needed to get gitit up and running. The most important bit was a tool called "cabal" that does all of the heavy lifting for you. After doing the "one-click" install of cabal (which ironically took more like a dozen clicks), it was installed and ready to run.
After adding the ~/.cabal/bin directory to my $PATH, I made a directory for the wiki content, ran `gitit --print-default-config > gitit.conf`, edited the config file (setting a title, changing the default port; it's very well documented) and then started the wiki with `gitit -f my-conf +RTS -I0 -RTS`. The latter bit of line-noise is to make Haskell behave nicely and not constantly run the garbage collector and thereby kill my laptop battery; I got this jewel from the gitit documentation which is very nicely written in my opinion. Creating a second wiki was as simple as reproducing those steps.
Best of all, going into the wikidata/ directory and doing things like `git log` gave me exactly what one would expect. It feels like a wiki via the web browser, but it's doing git magic in the back. Just like Plasmate does. Is this a part of the future of content-centric software?
I do miss templates from mediawiki, but other than that all is good: easy editing, page history, discussion pages, file uploads, user accounts, etc. It does lack a lot of features Mediawiki has, but I need none of them (save, perhaps, templates). It uses Markdown by default (though you can use various other markup styles, including something call "literate Haskell"), but can export to a myriad of formats including Mediawiki markup, HTML, LaTeX and what not. This part is all powered by another of John's projects: pandoc.
Performance wise it is instantaneous on the laptop (as one would expect) and does support things like caching pages and sitting behind a proxy web server. I haven't bothered to set up either feature as I don't need them, but how to do so is described clearly in the gitit documentation. The gitit process is currently taking ~8.5MB of resident memory and sharing another 25MB and idling, as one would hope, at 0% CPU usage so I have nothing to complain about there either.
I'm very happy to have found such a tool, all nicely GPL'd and everything, that performs like a champ and has absolutely zero lock-in thanks to the usage of things like git (for data management) and pandoc (for content format management). If you've been on the look-out for a similar tool, I heartily recommend checking gitit out.

9 comments:
I went though more or less the same process as you did when I wanted a wiki for notes for my studies. I have used gitit for a year and a half now and it works great.
Also, pandoc is amazing – I now write almost everything in markdown and use pandoc to convert it to an appropriate format.
Minor typo : The language is named "Haskell"
Why not ikiwiki? Actively maintained, lots of plugins and works as a blog engine so you don't have to use blogger.com ;)
@Erland: i keep thinking, "This software must have a sizeable user base, it's just too useful not too!" :)
@David: oops! thanks, i've fixed it now in the article. cheers :)
@Richard: i didn't try ikiwiki because i didn't come across it. my main search was for a wiki that uses git and ikiwiki simply didn't come up :/
that said, i just took a look and it seems extremely capable and has some features that would be very nice to have (e.g. full text search).
what i'm not sure about, however, is set up time. i have to run and configure apache, install a ton of perl modules.. dunno. i'll give it a twirl later today though and see how quickly it comes together.
About other things I've seen in the Internet (Qt 5), is there a KDE 5 on the horizon now? The only reason there is for major KDE releases is Qt and KDE binary compatibility, and Qt 5 is scheduled for 2012.
OTOH, Qt 5 is claiming to do the exact same thing you scheduled for Plasma: separating interface from backends, use better the GPU and put all the GUI elements into scene graphs. I think if there is indeed a KDE 5, it will be a small increment indeed and not the massive rewrite KDE 4 was.
I can't do anything but congratulating you for being so ahead of Nokia's plans ;).
with the whole platform 11 discussion I was interested in whether KDE developers were beginning to feel the strain of keeping binary compatibility.
I looking forward to hearing more about this from the KDE developer community. no doubt there will be some anxiety and a few disagreements but I hope more opportunities :¬)
oops. I sort of wen't along with the above hijack of the blog-post. sorry for the off-topic.
ON TOPIC:
I have been looking for something similar for a while except I don't wan't to be limited to the flatness of wiki markup. I want a tree-structure of nodes each of which has a unique ID which can be linked to and which doesn't care what level it is (whether it is a page/file or a first-level list or whatever) so that I can drill down into a list and a given node might end up being a single ford or another list or an article or a book.
That's pretty much how I write notes at the moment but using just plain text and making the markup up as I go along.
Have you looked at Zim? its a desktop wiki thats written in python.
Its native vcs plugin only supports bzr (its a launchpad project), but I have a git support branch thats hopefully included on the next release.
I have more or less the same need, apparently... I wrote something like this a while ago, but never found time to actually do anything on it.
http://techbase.kde.org/User:Gdebure#Luggage
Will give gitit a try.
Post a Comment