Ok, I have to admit, I have no idea if this is an April fool's joke or not.
Congratulations for demonstrating that April fools jokes can still be subtle (whether intentionally or not!) -- Jon

Having said all that, have you looked at erlang? Have you heard of couchdb? I'd strongly recommend looking at that. -- Jon

I've glanced at couchdb, but don't see how it would tie in with ikiwiki. --Joey

It doesn't really. I recently (re-)read about couchdb and thought that what it was trying to do had some comparisons with the thinking going on in structured page data. -- Jon

I'm torn about this idea, if it's actually serious. I'm very comfortable programming in Perl, and have written quite a few modules for IkiWiki, and it would be a huge pain to have to start from scratch all over again. On the other hand, this could be a motivation for me to learn Haskell. My only encounter with Haskell has been a brief time when I was using the Xmonad window manager, but it looks like an interesting language. Functional programming is cool.

There are a lot of interesting plusses for Haskell you note (in the parent page), but it's true that the idea is horribly daunting (as Joey said "If only I had a spare year"). Is there any way that you could "start small"? Because nothing will ever happen if the task is too daunting to even start.

This seems destined to remain a thought experiment unless something like that can be done, or I get a serious case of second system disease.

I've considered doing things like using the external plugin interface to run a separate haskell program, which would allow implementing arbitrary plugins in haskell (starting with a pandoc plugin..), and could perhaps grow to subsume the perl code. However, this would stick us with the perl data structures, which are not a very good fit for haskell. --Joey

On further thought... perhaps it would be easier to fork or contribute to an existing Haskell-based wiki, such as Hakyll?


As far as I know there are no other wikis (haskell or otherwise) that are wiki compilers. Since we know from experience that dealing with static compilation turns out to be one of the trickiest parts of ikiwiki, I'm doubtful about trying to bolt that into one. --Joey

Haykll isn't a wiki but it does do static compilation. The missing parts are: the web interface, the wiki link processing, and page dependency stuff. -- tychoish

(nods) Which is why I suggested it. I'm not sure whether it would be easier to "bolt on" those things than static compilation, but it could be worth looking at, at least. -- KathrynAndersen

Rather than coding plugins for the Perl ikiwiki in Haskell, I wonder how easily a Haskell ikiwiki could still support plugins written in Perl? The (old and apparently stale) HsPerl5 package might provide a helpful starting point there. -- JoshTriplett

I'm very keen on this, and would be interested in helping. I've been wanting to use ikiwiki for years, but the idea of investing time in the perl ecosystem and perl-based implementation stops me. -- Simon Michael

I've recently been wondering whether I could migrate my personal blog (powered by IkiWiki) to Hakyll. I'm really fond of Ikiwiki's wiki link syntax, as well as the linking rules, and many of the features offered by plugins. Therefore I set out to see how easily (and whether it's even feasible) to implement them on top of Hakyll. I'm totally new to Hakyll so I don't fully understand some of the concepts but I've made some promising initial progress. I decided to share my work in progress experiments here: https://github.com/jmtd/hakyll-ikiwiki

I can recognise and parse out wiki links and directives. Wikilinks are translated into HTML links, but the page-linking rules are not yet implemented (the wiki link target is passed through as-is). For Directives, I've written basic implementations of meta and tag. In both cases, I build up Hakyll Metadata, which is really a hash map. I've yet to figure out plumbing that back into Hakyll, though. I've got an idea of how to handle template, but haven't tried coding it up yet. — Jon

Cool, Jon. Have you thought about Shake + pandoc as an interesting alternative to Hakyll, perhaps a little more lightweight and flexible ? Here’s a bit of Shake code I use for rendering wiki-like pages. —Simon Michael

I've not looked at Shake yet, thanks, I'll give it a look! — Jon