summaryrefslogtreecommitdiff
path: root/doc/todo/aggregate_to_internal_pages.mdwn
blob: 017ca242b13493f7451e9e97fff10ef715a868e5 (plain)

The new internal page feature is designed for something like [[plugins/aggregate]].

How to transition to it though? inlines of aggregated content would need to change their pagespecs to use internal().

[[patch]] in git://git.debian.org/git/users/smcv/ikiwiki.git, branch "aggregate". Migration is a two-step process: first change all your pagespecs to use internal(), then add internalize="yes" to all your aggregate invocations. --smcv.pseudorandom.co.uk

Thanks for working on this.

I see one problem, if internalize is flipped on and there are existing aggregated pages, htmlfn will not return the right filename for those pages when expiring them. Seems that $was_internal (or just the full source filename) should be recorded on a per-guid basis. Could you do that?

I'm weighing the added complexity of having an internalize option (which people would have to add, and would probably forget), with just making aggregate create all new pages as internal, and having a flag day where all inlines and other uses of aggregated pages have to change pagespecs to use isinternal().

There are real bugs that are fixed by making aggregated plugins internal, including:

  • Avoids web edits to aggregated pages. (Arguably a security hole; though they can be locked..)
  • Significant speed improvements.
  • Less disk use.

If internal has to be manually enabled, people will forget to. I'd rather not have to worry about these bugs in the future. So, I'm thinking flag day. --[[Joey]]

OK, there's a simpler approach in the same repository, branch "aggregateinternal". It just adds an aggregateinternal option for the whole wiki.

On a flag day, everyone has to change their inline directives to use internal(), after which this option can be switched on. When changing the option, you'll have to clean up the mess from old aggregated pages by hand, and re-aggregate.

If this is a direction you prefer, the next step would be to add support for existing wikis setting this option - for instance it could look for non-internal pages that were previously aggregated, and convert them to internal, the first time aggregation runs. --smcv

Sure, that seems reasonable. Perhaps ikiwiki-transition could be used to move the pages, and even, possibly update the pagespecs (not sure how it could figure out which ones tho). --[[Joey]]

I've patched ikiwiki-transition to have an aggregateinternal mode. See my aggregateinternal branch, again. "ikiwiki-transition aggregateinternal $srcdir $htmlext" moves the pages around, although it doesn't update the pagespecs (I wouldn't know how...) --[[smcv]]

[[patch]]