Revision 11 as of 2006-06-21 15:09:32

Clear message

Ethan Fremen is working on mailman for his Summer of Code Project. The project will use web standards, kid and mod_python to deliver a superior HTTP user experience with enhanced internationalization.

Status June 21, 2006

After realizing how utterly horked the current templating situation is, I've started redoing the templates as xhtml/kid. Once I'm done with that, I'll write the glue code that connects it into mailman, leveraging the existing work in Gui/ .

As this is my first i18n project, I wasn't quite aware of what it entailed. Right now I'm focusing on making it so a simple iteration over all elements in the pre-rendered DOM constitutes the entirety of the text that needs to be internationalized for the web UI.

Technical Plan

  • Build a fully accessible web interface using xhtml without CSS or JavaScript.

  • Enhance that interface with CSS to make it visually intuitive.
  • Add JavaScript that provides additional ease of use.

  • Modules/Supporting logic modules, to be implemented or borrowed:
    • Converters
      • RFC-8222 into an ElementTree

      • .mbox files into an ElementTree

      • Elemental RFC-8222, mbox into xhtml
      • Elemental mbox into xhtml
    • Handlers
      • feed handler
      • authentication handler
    • Modules
      • glue code to patch the 1-user-per-list situation

Notes

I've had to move away from the incremental approach and towards a reimplementation. I'm still working strictly from the existing implementation for feature-set, but because of the templating situation, I'll get there faster if I re-write the templates.

The decision to move to mod_python is based on the need for feed handlers that can maintain a semi-persistent cache and because I get access to Apache's internals. The existing CGI interface will be untouched, with the idea that eventually a wrapper will be found/written that provides backwards compatibility.

Existing templating situation

  • There's a mismash of MM- pseudo tags and python str/dict replacement for variable substitutions.
  • Many pages are generated by a sort of proto-dom.
  • All the pages are mid-90's tag soup, with upper case and lower case tags and invalid html attributes.
  • Many pieces of code generate strings with html markup. This is bad form and makes i18n/multiple interfaces harder.

Timeline

  • May 23 - June 21: Rewrite mailman interface using xhtml templates with the following attributes:
    • Provide consistent navigation throughout the Mailman interface
    • Enhance the Administrator's user listing to allow for bulk modification and to highlight users that have been set nomail.
    • Collapse duplicate pages
    • Write pages in seperable, embeddable pieces.
  • June 23- June 30: Establish the scope of the glue modules, and write interfaces/stub classes.
  • July 3 14: Write handlers and RFC8222/ mbox \> ElementTree converter

  • July 17 - 21: Fill in glue modules, with knowledge of how the (user)db-in-SQLAlchemy project is going.
  • July 24 - 31: Add page-editing, easy support for stylesheet changes, site and list specific themes.
  • August 1 - 4: Update documentation to reflect changes.
  • August 7 - 11: Add ease-of-use JavaScript/CSS.
  • August 14 - 21: Accommodate schedule slippage and add additional documentation / release / integration / upgrade code as necessary.

"a plan is just a list of things that never happen" - Benecio del Torro in The Way of the Gun