Instiki
TODO

This is a TODO list of improvements I’d like to see in this branch of Instiki.

If you’re interested in working on any of these topics, set yourself up with BZR, do a

% bzr pull http://golem.ph.utexas.edu/~distler/code/instiki/svn/

and start hacking away. Send me an email, when you’ve gotten somewhere, and I’ll pull the changes from your BZR repository.

TeX Output

  1. We need LaTeX macros to support the various itex commands that are not part of standard LaTeX. These go in the preamble in the LaTeX templates, app/views/wiki/tex.rhtml and app/views/wiki/tex_web.rhtml.

    • Mostly done. But there are still a few bits to fill in.
  2. The “TeX” link at the bottom of each individual page works. But the “export entire web to TeX” function is busted. This should be fixed or removed. (I’ve disabled it, along with the pdf-output feature. Neither really worked right, and both are dog-slow.)

Content Negotiation

  1. We currently send application/xhtml+xml to all XHTML User-Agents (and to MathPlayer and the W3C Validator, though MathPlayer is tricky). Perhaps it would be better to only send application/xhtml+xml if we are using the “Markdown+itex2MML” filter? Maruku is designed to produce well-formed XHTML+MathML output, which, for the most part, can stand being sent as application/xhtml+xml. I’m afraid I can’t say the same for RedCloth (“Textile” filter).
  2. Do real content-negotiation for the Slide Notes page in the S5 view. Currently, IE gets text/html and everyone else gets application/xhtml+xml.

Accessibility

  1. There’s an excessive reliance on tiny fonts and low-contrast colours, in certain parts of the interface.
  2. Make the Accesskeys in Instiki Editable.

S5 Integration

  1. The S5 view works in Opera, but Safari’s Javascript support in real XHTML is rather broken (latest WebKit nightlies even crash on some slideshows). The only workaround had been to send the S5 slideshows to Safari as text/html. This is now fixed, but the code for working around Safari’s bugs could still be improved. Maybe, if Safari supported MathML, it might even be worth it.
  2. The Slide Notes page, is served as text/html to IE, and as application/xhtml+xml to everyone else. This is suboptimal for MathPlayer users. But, given that IE’s rendering of S5 slideshows is suboptimal, anyway, perhaps it’s fair to assume that anyone delivering an S5 slideshow in Instiki isn’t using IE.
  3. Maruku should have a syntax for entering Slide Notes.

Caching

Mostly, the algorithm for expiring cached pages works well. But, occasionally, it screws up, and you want to expire a cached page manually. If you have command-line access, that’s as simple as deleting the corresponding file from the cache directory. But many users won’t have command-line access. For them …

  1. Create an interface to expire cached pages.
  2. Figure out how to automatically expire pages which contain a flash[:notice] message (after the user has seen the message).

Performance

Let’s be blunt: Instiki is kinda slow. Some of this is because Ruby and Rails are kinda slow. Ruby 1.9 (when Rails becomes 1.9-ready) will provide a huge speed-boost.

But Instiki itself could probably be much accelerated, with some rewriting. It would be good to

  1. Identify the bottlenecks.
  2. Fix those things (besides Rails itself) that are not Ruby 1.9-ready.

Other

The main Instiki site has a TODO list of its own. Of particular interest, I think, are:

  1. Interface to rename or delete individual pages.
  2. interface to rename or delete Webs.

Some other things which would be nice:

  1. An interface to manage uploaded resources.

    • Right now, you can easily upload files to the wiki. But listing the files which have been uploaded, and being able to selectively rename or delete them, requires commandline access.
  2. Themes.

    • Instiki offers a (somewhat lame) selection of the overall colour-scheme, and the ability to add per-Web CSS customizations. It would be better to offer Themes, as S5 does, where you can swap out the whole CSS file, and radically change the appearance.