-## Design
-
-7. For each fancy podcast episode, write a blog post containing
- `\[[!meta enclosure="WikiLink/to/media.mp3"]]`. (Don't specify
- more than one enclosure -- but if you do, last one wins.)
-7. When rendering to HTML (single-page or inlined), append a link
- to the media file.
-7. When rendering to RSS/Atom, the text is the entry's content and
- the media file is its enclosure.
-7. Don't break simple podcasts in pursuit of fancy podcasts.
-
-## Implementation
-
-### Completed
-
-* Cover the existing simple podcast behavior with tests.
-* Add an `enclosure` field to [[plugins/meta]] that expands the
- given [[ikiwiki/WikiLink]] to an absolute URL (feed enclosures
- pretty much need to be, and the reference feeds I've looked at
- all do this).
-* Write failing tests for the desired single-page and inlined
- HTML behavior, then make them pass by adding enclosure stanzas
- to `{,inline}page.tmpl`.
-* Write failing tests for the desired RSS/Atom behavior, then make
- them pass via changes to `{atom,rss}item.tmpl` and [[plugins/inline]].
-* Match feature-for-feature with
- [tru_podcast](http://www.rainskit.com/blog/542/tru_podcast-a-podcasting-plugin-for-textpattern)
- (what [[schmonz]] will be migrating from).
-* Enrich [feed metadata](http://cyber.law.harvard.edu/rss/rss.html)
- by catching up `rsspage.tmpl` to `atompage.tmpl`.
-* Verify that [[plugins/more]] plays well with fancy podcasts.
-* Verify that the feeds validate.
-* Subscribe to a fancy feed in some common podcatchers and verify
- display details against a reference podcast.
-* Verify smooth transitions for two common use cases (see testing
- details below).
-* Code review: don't add enclosure divs unless we have enclosures.
-* Code review: genericize download link for more use cases.
-* Code review: don't confuse old readers with Atom names in RSS.
-* Code review: instead of hacking back to `$link`, just provide it.
-* Code review: show author in addition to feedname, if different.
-
-### Must-have (for [[schmonz]], anyway)
-
-* Think carefully about UTF-8.
-* Verify that _all_ the tests pass (not just my new ones).
-
-## Migration
-
-### Upgrading within ikiwiki: from simple to fancy
-
-#### My test podcast
-
-For this test, I chose a podcast that tries to work around ikiwiki's
-current limitations by issuing two separate `inline`s:
-
-* One with `feedonly=yes` that includes `.mdwn`, `.pdf`, and `.mp3`
-* One with `feeds=no` that includes only `.mdwn` (and makes a trail)
-
-This has the following effects:
-
-* Browser: sees just the articles (each of which has a manually
- created link to its corresponding media file)
-* Feedreader: sees all the articles and media in one flat stream
-* Podcatcher: sees just the media (sans articles)
-
-I want instead to write one `inline` with these effects:
-
-* Browser: sees just the articles (each of which automatically links
- to its enclosure)
-* Feedreader: sees just the articles (each of which specifies its
- enclosure)
-* Podcatcher: sees just the enclosures (each of which has an enclosing
- article, rendered as the media's "description")
-
-#### Upgrade steps
-
-7. Set up a non-production copy of the podcast.
- 7. Visually diff RSS and Atom feeds against production.
- 7. Subscribe to the copy (both feeds) in `r2e`, iTunes, Downcast.
-7. Apply fancypodcast patch to the installed ikiwiki:
- 7. `cd ~/Documents/trees/ikiwiki && git checkout fancypodcast`
- 7. `git diff --no-prefix master > ~/Documents/trees/localpatches/www/ikiwiki/fancypodcast.diff`
- 7. `cd ~/Documents/trees/pkgsrc-current/www/ikiwiki && make deinstall && make install clean`
-7. Verify that simple podcasts are unaffected:
- 7. Rerun `ikiwiki --setup`.
- 7. `diff -uB simple-before.rss simple-after.rss`
- * A few new elements and attributes, as expected.
- 7. `diff -uB simple-before.atom simple-after.atom`
- * No change.
-7. Remove the feed-only `inline` and enable feeds on the remaining one.
-7. Convert articles' manual download links to `\[[!meta enclosure=""]]`.
-7. I want existing and future podcatchers to get my new fancy
- episodes, and I know my podcast isn't in any planets, so I'm
- going to skip [[tips/howto avoid flooding aggregators]].
-7. Rerun `ikiwiki --setup`.
-7. Verify browser shows the same stuff.
-7. `diff -uB simple-after.rss fancy-after.rss # and atom`
- * MP3s and PDFs are no longer naked enclosures, but belong to
- articles as they should.
- * Articles have updated modification times, as they should.
-7. `r2e run` (both RSS and Atom)
- * Nothing new with the default `trust-guid = True` (otherwise
- would expect updated articles).
-7. iTunes "Update Podcast" (both RSS and Atom)
- * Added one episode per article, with article text as the episode
- description.
- * Kept old naked-enclosure episodes around.
-7. Downcast refresh (RSS):
- * Added one episode per article, with article text as the episode
- description.
- * Kept old naked-enclosure episodes around.
-7. Downcast refresh (Atom):
- * Added one episode per article, with no episode description
- (expected, see feature table).
- * Kept old naked-enclosure episodes around.
-
-Different tradeoffs are possible. These seem okay to me.
-
-### Importing into ikiwiki: fancy (from another CMS)
-
-#### My test podcast
-
-For this test, I chose a podcast currently being published with
-Textpattern and tru_podcast, because I'd strongly prefer to publish
-it with ikiwiki instead.
-
-#### Upgrade steps
-
-7. Set up a non-production copy of the podcast.
- 7. Visually diff RSS and Atom feeds against production.
- 7. Subscribe to the copy (both feeds) in `r2e`, iTunes, Downcast.
-7. With a fancypodcast-enabled ikiwiki installed:
- 7. Copy content from Textpattern to ikiwiki:
- 7. Match article paths to preserve `/YYYY/MM/DD/post-title` permalinks.
- 7. Match enclosure paths (or redirect) to preserve Textpattern's URLs.
- 7. Match titles, post dates, and guids with `\[[!meta]]`.
- 7. Match feed paths with permanent redirects from `/atom/` to
- `/index.atom` (and same for RSS).
- 7. `\[[!inline]]` the articles.
- 7. Rerun `ikiwiki --setup`.
-7. Stop Textpattern, start ikiwiki.
-7. Verify that podcatchers see the feeds and don't redownload anything.
-7. Naively add two new blog posts, one with an enclosure.
-7. Verify that podcatchers download the new enclosures.
-
------
-