aboutsummaryrefslogtreecommitdiff
path: root/doc/todo/rewrite_ikiwiki_in_haskell/discussion.mdwn
blob: ccad6435163adc1882ac20da99fa91ce4744385a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
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 [[todo/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 <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]]