]> sipb.mit.edu Git - ikiwiki.git/blobdiff - doc/todo.mdwn
design for rss feeds and blogging
[ikiwiki.git] / doc / todo.mdwn
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..7926fd95417c979939f2a011beae24f3bf87bb2a 100644 (file)
@@ -0,0 +1,185 @@
+## online page editing
+
+* Eventually, might want page deletion.
+* Eventually, might want file upload.
+
+## recentchanges
+
+* Should support mail notification of new and changed pages.
+
+  Hmm, should be easy to implement this.. it runs as a svn post-coommit hook
+  already, so just look at the userdb, svnlook at what's changed, and send
+  mails to people who have subscribed.
+
+  A few details:
+  1. [[Joey]] mentioned that being able to subscribe to globs as well as
+     explicitly named pages would be desirable.
+  2. I think that since we're using Perl on the backend, being able to
+     let users craft their own arbitrary regexes would be good.
+
+     Joey points out that this is actually a security hole, because Perl
+     regexes let you embed (arbitrary?) Perl expressions inside them.  Yuck!
+
+     It would also be good to be able to subscribe to all pages except discussion pages or the SandBox: `* !*/discussion !sandobx`, maybe --[[Joey]]
+
+  3. Of course if you do that, you want to have form processing on the user
+     page that lets them tune it, and probably choose literal or glob by
+     default.
+
+     I think that the new globlist() function should do everything you need.
+     Adding a field to the prefs page will be trivial --[[Joey]]
+
+  The first cut, I suppose, could use one sendmail process to batch-mail all
+  subscribers for a given page.  However, in the long run, I can see users
+  demanding a bit of feature creep:
+
+  4. Each user should be able to tune whether they see the actual diff parts or
+     not.
+  5. Each user should be able to set a maximum desired email size.
+  6. We might want to support a user-specified shibboleth string that will be
+     included in the email they receive so they can easily procmail the messages
+     into a folder.
+
+  --[[BrandenRobinson]]
+
+## pluggable renderers
+
+I'm considering a configurable rendering pipeline for each supported
+filename extension. So for ".mdwn" files, it would send the content through
+linkify, markdown, and finalize, while for ".wiki" files it might send it
+through just a wiki formatter and finalize.
+
+This would allow not only supporting more types of markup, but changing
+what style of [[WikiLink]]s are supported, maybe some people want to add
+[[CamelCase]] for example, or don't like the [[SubPage/LinkingRules]].
+
+The finalize step is where the page gets all the pretty junk around the
+edges, so that clearly needs to be pluggable too.
+
+There also needs to be a step before finalize, where stuff like lists of pages
+that linked back to it could be added to the page. However, doing linkbacks
+also needs to tie into the main logic, to determine what pages need to be
+renered, so maybe that won't be a plugin.
+
+## blogging and rss
+
+The wiki should emit rss feeds for pages. The simple case is a regular
+page. The complex case is a blog composed of multiple pages.
+
+### single page
+
+Just create an rss feed with one element, that contains the last diff to
+the page, or the contents of the page, or something like that. Whenever the
+page is changed, rss readers should see the single post in the feed as a
+new post, so they'll dump out the page again. Simple, allows subscribing to
+any page as an RSS feed if you want to see just changes to that page.
+
+### multi-page blog
+
+This also takes care of the feature of wanting to make a wiki page
+comprised of several sub-pages that can be independantly edited. Add a
+token that can be embedded into a page and that specifies a [[GlobList]] of
+pages. Now when any page matching the globs changes, this page must be
+updated too. 
+
+For the html rendering, just embed the most recently created N pages in the
+[[GlobList]], with the title of each being a link to the individual page,
+plus a link to an additional page that lists all the titles of every
+matching page in creation order (archives). Plus at the bottom a small web
+form that prompts for a title and allows creating a new page for a new blog
+post.
+
+For the rss rendering, generate a proper weblog of the same pages.
+Of course for permalinks use the links to the subpages.
+
+Note that this allows for weblogs with different sections, etc.
+
+Requirements:
+
+* Need to keep track of creation dates of pages in the index file.
+* Need to keep track of the globlists in the index file.
+   - Probably need to redesign the index file format to allow for this sort
+     of future expansion.
+* Need to make _ render as " " in page titles.
+* Also need to support as much other punctuation as possible in page
+  titles, ideally all of it. Punctuation that is illegal in filenames for
+  various good reasons should be embedded encoded in the filenames. Blogs
+  tend to have more punctuation-intensive page titles than wikis.
+* Need to pick a good token and note that the token will need to be passed
+  multiple parameters. Possibly something like this:
+
+       [[rss pages="myblog/*" show="30"]]
+
+## revisit case
+
+Being case insensative is handy, but it does make the [[BackLinks]] a bit
+ugly compared to other links. It should be possible to support pagenames
+that have uppercase, while still allowing them to be linked to using any
+case.
+
+## html
+
+Make the html valid. Add css and prettify. Make RecentChanges use table for formatting, and images to indicate web vs svn commits and to link to diffs.
+
+All of this should be doable w/o touching a single line of code, just editing the [[templates]] BTW.
+
+## sigs
+
+Need a way to sign name in page that's easier to type than "--\[[Joey]]"
+and that includes the date.
+
+What syntax do other wikis use for this? I'm considering "\[[--]]" (with
+spaces removed) as it has a nice nmemonic.
+
+OTOH, adding additional syntax for this would be counter to one of the
+design goals for ikiwiki: keeping as much markup as possible out of the
+wiki and not adding nonstandard markup. And it's not significantly hard to
+type "--\[[Joey]]", and as to the date, we do have page history.
+
+## recentchanges more than 100
+
+Possibly add "next 100" link to it, but OTOH, you can just use svn log if
+you need that data..
+
+## search
+
+* page name substring search
+* full text (use third-party tools?)
+
+## lists
+
+* list of all missing pages
+* list of all pages or some kind of page map (probably covered by the rss
+  feeds stuff above)
+
+These could be their own static pages updated when other pages are updated.
+Perhaps this ties in with the pluggable renderers stuff.
+
+## page indexes
+
+Might be nice to support automatically generating an index based on headers
+in a page, for long pages. The question is, how to turn on such an index?
+
+## basewiki underlay
+
+Rather than copy the basewiki around everywhere, it should be configured to
+underlay the main srcdir, and pages be rendered from there if not in the
+srcdir. This would allow upgrades to add/edit pages in the basewiki.
+
+Impementaion will be slightly tricky since currently ikiwiki is hardcoded
+in many places to look in srcdir for pages. Also, there are possible
+security attacks in the vein of providing a file ikiwiki would normally
+skip in the srcdir, and tricking it to processing this file instead of the
+one from the underlaydir.
+
+There are also difficulties related to removing files from the srcdir, and
+exposing ones from the underlaydir. Will need to make sure that the mtime
+for the source file is zeroed when the page is removed, and that it then
+finds the underlay file and treats it as newer.
+
+## Logo
+
+ikiwiki needs a logo. I'm thinking something simple like the word "ikiwiki"
+with the first "k" backwards; drawn to show that it's "wiki" reflected.
+
+## [[Bugs]]