]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - doc/todo/rewrite_ikiwiki_in_haskell/discussion.mdwn
(no commit message)
[git.ikiwiki.info.git] / doc / todo / rewrite_ikiwiki_in_haskell / discussion.mdwn
index cf2725594b2e5061226c258e09a347f473849ad1..851fdbe1fba1a109939e984d45139ff593a1b2df 100644 (file)
@@ -15,11 +15,74 @@ Congratulations for demonstrating that April fools jokes can still be subtle
 
 -----
 
-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.
+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.
+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.
 
-On further thought... perhaps it would be easier to fork or contribute to an existing Haskell-based wiki, such as <a href="http://jaspervdj.be/hakyll">Hakyll</a>?
+> 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 <a
+href="http://jaspervdj.be/hakyll">Hakyll</a>?
 
 --[[KathrynAndersen]]
+
+> 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](http://hackage.haskell.org/package/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](https://github.com/simonmichael/hledger/blob/master/Shake.hs#L421)
+I use for rendering wiki-like pages. —[[Simon Michael]]
+
+> I've not looked at Shake yet, thanks, I'll give it a look! — [[Jon]]