There is TODO information scattered throughout the source code, but I'd like
to put some higher-level items here:

- Add a variable to the context that says who you're logged in as.

- Maybe add support for something like a convert command (e.g.,
  "hello.py:convert.html").  At least provide some way to pick a different
  filter.

- Add conflict resolution to the merge page.  This is already partially done.
  Specifically, the form processing should already be happening.  All we
  (should) need to do now is to present the user with a list of textarea
  fields, with one for each conflict.  Note that you fix all of the conflicts
  at once, which means that the server doesn't have to try to keep any state.
  It also makes it easier for the user to see everything at once.

- Create an ":add" command.  When you go to "http://mysite/:add", it asks you
  for a filename, for content (a textarea), and for which branch to put it
  into.  This will look very much like the ":edit" page.  In the normal Unix
  fashion, append a newline to the end of the input before committing, to
  ensure that every line in the file ends with a newline.

- Validation of branch names and other user-inputted data.

- Add better error messages.  Make good use of HttpResponseBadRequest,
  HttpResponseServerError, HttpResponseForbidden, and other goodies.  By the
  way, it seems that returning HttpResponseNotFound is better than raising
  Http404, since the former apparently allows you to include helpful error
  messages.

- Get some fancy CSS, pretty forms, etc.

- Improve Django authentication.  Right now you can only login/logout over
  https, but you can still use your cookie over http.  It seems like all
  activity should happen over https if you're authenticated.  Is it possible
  to make the authentication cookie only work over ssl?

- Grab more info about users from Django.  Make commits use the user's name
  and email address.  People should only view/edit their own branches unless
  they are an editor, in which case they can view/edit any branch.

- Look at what they call an inclusion_tag at
  http://www.djangoproject.com/documentation/templates_python/#inclusion-tags
  and use it for stuff like {{ baseurl }} and other things.  This should clean
  up our context dictionaries quite a bit.  What other tags do we want to add?

- Make the HTML+Django templates output filter fancy: maybe allow people to
  manage relative links {% link name/of/target Description of Link %} so that
  we can determine if links are followed within a branch or not.  In general,
  see if we can reduce the need for absolute urls ("baseurl" and
  "sslbaseurl").  Maybe there's other fancy stuff we can do.

- Create user "home directories", so that they can see the branches that they
  own and control which ones are submitted for merging.

- Let anonymous users "edit" a page, but rather than saving the changes to the
  original file or to a branch, instead create a patch, and save that patch in
  a Django database.  Then make it so page owners can apply patches and commit
  the results.

- Add a tool for viewing the history of a page.

- Add a tool for browsing and diffing branches.

- Vim in the web browser, WYSIWYG HTML editors, and other cool stuff like that.

- Blog support.

- Create a nice set of sample Smug repositories (with CSS, etc.).  Maybe even
  have one that looks like mediawiki.
