recent event on debconf: ikiwiki bof
[ikiwiki.git] / doc / forum / debconf13_ikiwiki_bof.mdwn
1 There has been a meeting of people interested in ikiwiki
2 [[during debconf13|http://penta.debconf.org/dc13_schedule/events/1060.en.html]]
3 on 2013-08-11.
4
5 Summary
6 =======
7
8 Ikiwiki's state and development
9 -------------------------------
10
11 Ikiwiki has reached a stable state with a working ecosystem, with the majority
12 of changes being minor adaptions and bugfixes these days.
13
14 It is unlikely that there will be a major overhaul any time soon.
15
16 If incompatible changes are to be made, that might warrant a 4.$DATE
17 transition, especially given that the [[ikiwiki-transition]] mechanism has not
18 been used for some time. Potential changes for such a transition will be
19 discussed (see below).
20
21 Names of pages and links
22 ------------------------
23
24 Several of [[the issues chrysn deals with|users/chrysn]] revolve about the
25 differences betwen a page's name, its title, the name of source and destination
26 page, how they are converted, and which is used when.
27
28 chrysn has starting to draft a page on [[plugins/write/names]], and
29 would appreciate review and comments.
30
31 Themability
32 -----------
33
34 The default theme of ikiwiki is more appealing to the people who are expected
35 to run an ikiwiki setup; end users with Web 2.$current_minor_version
36 expectations often don't have there tastes served well.
37
38 [[Recently|version 3.20130518]], templates have become more theming friendly,
39 but for the general case still require the theme to be known to mainline
40 ikiwiki, lest generic templates diverge. A planned feature is generalized
41 sidebars, where more places inside the template can be filled using the same
42 mechanism as currently used in the [[pluginssidebar]] pluin, but changes there
43 require a complete rebuild. (Not worse than the rebuilds required when changing
44 the main templates, but it would be more tempting to frequently change them.)
45
46 Examples of fancy ikiwiki themes have been brought up:
47
48   * https://www.gresille.org/
49   * https://nos-oignons.net/
50   * http://www.rezine.org/accueil/association/
51   * https://cas-libres.poivron.org/
52
53 A generalized version of the [[bootstrap|http://twitter.github.com/bootstrap/]]
54 [[theme|theme market]] would be appreciated, as the current one is targeted
55 towards a particular installation.
56
57 Performance
58 -----------
59
60 Rebuilding many pages takes considerable time, especially when sidebars are
61 changed.
62
63 A faster way to use the page index (eg. sqlite) would help speeding up the
64 usual rebuilds, but would not help speeding up massive rebuilds.
65
66 RDF backend
67 -----------
68
69 On the priority level "crazy ideas", it was discussed to augment or finally
70 change the index to an RDF triple collection. Statements would be extracted
71 from the source pages in the scan hook, and form a triple store. Pagespecs
72 would be resolved to SPARQL queries against that database; also the
73 [[todo/structured page data]] fields could be addressed with this.
74
75 Optimizations are still possible, even more generally, for example with
76 dependencies on other pages' title:
77
78 * page A sets its own title with `\[[!meta title="the A page"]]`, which results
79   in the statement '`<./page_A> dc:title "the A page" .`'.
80
81 * page B uses some kind of auto-titling link to page A: `\[[~|page A]]`, which
82   queries for '`<./page_A> dc:title ?a`'.
83
84 * When page B is built, it is stored that it depends on statements involving
85   the term `<./page_A>`, and the current hash value of all statements about
86   that term. (Those will be computed for all observed statements at scan time.
87   Pages that use more complex queries might not be able to list all their
88   dependencies.)
89
90   Also, the queries and query results executing during building page B are
91   stored in a separate cache.
92
93 * When some other page starts linking to page A, the first cache is
94   invalidated, as now there are more statements on the subject of
95   '`<./page_A>`', so page B might need to be rebuilt. Before that is done, its
96   cached queries are executed. If their results did not change, page B does not
97   need any further action.