milton / README.textile


Milton is the realization of something I started with PHP a long time ago. I’ve always wanted a site I’d written but the mechanics of the database and so on really bog me down and made the several attempts fail. So, this time, I’m going to start out simple and then build slowly, starting with something that can take a Drupal import and then adding features to that later on.



  • Dated posts (blog-ish or news-ish)
  • Static pages (/about or products)
  • Nested comments. I love this feature in Drupal and plan to keep using it. Hopefully I can make it more visible.
  • Tagging. Moving away from categories, the site should allow for tags and include some navigation facility for them as well.


  • URL management is central. Objects know their URL and when it changes they register the new URL. This has the cumulative effect of the system knowing every URL an object has ever had and then redirecting users to the object’s new address properly. When an object is unavailable the redirect machinery will properly return a 410 Gone response.


  • Template documentation
  • Decent default template
  • Subscriptions to new content. The site must have RSS and/or Atom feeds as well. These should be: site, site comments, per-page comments, and per-tag.
  • Versioned posts. The mechanics of this could get interesting, but when a post is changed, the old copy should be around for the sake of archiving. It should be available to the template as well, in case I choose to publish a version history.
  • Multiple copyrights. There should be License objects that hold either a logo or a text blurb along with a title for various methods of license (public domain, copyright, CC, etc.) and entries should have a menu to change it.
  • General file attachments
  • Image attachments via ImageField
  • Add ability to set the default state of comments for sites that do not want to use it. Don’t bother loading comment-related features (such as template tags) in such a case.


  • Allow SITE_ID and other variables to be set from a MiltonSite object, or something like that. That way one set of FCGI instances can serve all hosted sites instead of needing one class per site so that the settings file is done right.
  • Private posts. The system should use Django’s groups to allow a post to be read only by a specific group of logged-in users.
  • Spam protection. Using either Akismet or Mollom, the site should check for and filter spammy content. This may mean the introduction of a moderation queue.


  • Allow Drupal import to import a specific taxonomy as the section list instead of content types.