TITLE OF PAPER: pyblosxom - A Microkernel Approach to Blogging URL OF PRESENTATION: _URL_of_powerpoint_presentation_ PRESENTED BY: Ted Leung PAID FOR BY: CONFERENCE: PyCon 2005 DATE: Friday, March 25, 2005 LOCATION: GWU Cafrtiz Conference Center, Marvin Theater -------------------------------------------------------------------------- REAL-TIME NOTES / ANNOTATIONS OF THE PAPER: {If you've contributed, add your name, e-mail & URL at the bottom} Ted: "thanks for sticking around to the bitter end" (we're pretty bitter too) (i could use a bitter)(I could use a couple of something too, if we're going to discuss this)(Don't think we're going to find that at the Apple Store) wants to build interest in working on pybloxsom, writing plugins, easier installs, etc -- turn java webloggers into python webloggers pybloxsom name from Perl package called bloxsom - everything stored in the file system category oriented directory hierarchy edit with any text editor can edit posts using your favorite editor - plugins do all the work used to implement most of functionality - simple, compact engine ~3.4k line python [Demo of url format - cool date stuff, also cool category & directory ] - can supply feeds by category (eg, only java posts or only python posts) - this is a feature :) Flavors - templates - default flavor is html, can get others by adding flavor=rss to url Plugins Most features are implemented via plugins * Archives, Calendar nav, HTTP 304, Logging, XMLRPC, Lucene, etc. [Demo of editing weblog offline (w/ecto) and getting preview/publishing] Configuration Tips - web server config CGI mod_python, Twisted, WSGI (in 1.2) + mod_rewrite - Configuration file: config.py file is assignments to a dict named py py['datadir'] - where the posts are py['plugin_dirs'] - where the plugins are py['load_plugins'] - plugins to load, in order (not needed? Just for ordering?) - Config testing pybloxom.___ Development - Plugins! Plugins Are python modules Suplly callback functions Are called by PyBlosxom at specific times Callback chains Multiple plugins provide callbacks with the same name Each will be called in order (according to py['load_plugins']) Plugin arguments Callback functions are passed the "args_dict" HTTP request info Configuration dict def cb_start(args): request = args['request'] config = request.getConfiguration() http = request.getHttp() cgi_form = http['form'] data = request.getData() [Top Level Architecture chart - See slides from web] [Chains of Callbacks chart - See slides from web] Two renderers: regular renderer debug renderer stages / callback hooks: path_info - breaks URL apart to figure out what weblog entry to get filelist - figures out what files to open, puts them in dict to get rendered prepare - stuff to do before rendering logrequest - debug callback, gets response data + http headers render - see render pipeline below render pipeline: (templates) head - non entry related top of page date_head story story_end ___ [I missed one] foot - in Ted's weblog this is actually the sidebar thanks to CSS Entry Parsers Allow us to hook the parsing of blog entries allows people to write however they want Two callbacks: cb_preformat - this is where you'd convert ReST, etc cb_postformat Initialized via cb_entryparser XML-RPC System (diagram) handler (subethaedit now comes with 'automatic' ascii art generation) +--> xmlrpc +--> blogger ---------+ +--> metaweblog ------+ +--> pingback ---+ V XMLRPC [Example: w3cdate - see the slides] Futures - WSGI/Twisted (PyBlosxom 1.2) - Static Rendering - Caching - Alternate templating/rendering engines - Improved Internationalization ( could use help here ) - Comments plugin Picture challenges (anti spam measure-- "type the text you see") Comment moderation - Atom API - Yarn/HEP Integration Q&A: ---- Q: whats the default url style? A: organized by date... er, by category and then date (??) Q: multiple categories per item? A: different pybloxsom community wisdom: - symlink (doesn't work so well) - will guaraldi's plugin (see pybloxsom site) Q: Is there an XML format? (you could add a categories attribute) A: Most of PyBlosxom developers are allergic to XML, so, probably not, but we'd accept a patch (maybe) or a plugin (more probable) Q: original entry on day 1. I change my entry the next day... now it has a different date and it shows up under a new URL. A: ___ (missed answer) there's a plugin that will ask you what behavior you want [user: hacked a plugin to preserve date] -------------------------------------------------------------------------- REFERENCES: {as documents / sites are referenced add them below} pybloxsom: ??? perl bloxsom: ??? ted's blog: www.sauria.com/blog ecto: ??? [no wireless Internet connection in the room, so we can't look them up] -------------------------------------------------------------------------- QUOTES: "And that's basically it." (after 20 minutes of frenetic diagramming, code, and demos). -------------------------------------------------------------------------- CONTRIBUTORS: {add your name, e-mail address and URL below} Nick Bastin Bob Kuehne Linden Wright Ian Jones Jonathan Blocksom -------------------------------------------------------------------------- E-MAIL BOUNCEBACK: {add your e-mail address separated by commas } -------------------------------------------------------------------------- NOTES ON / KEY TO THIS TEMPLATE: A headline (like a field in a database) will be CAPITALISED This differentiates from the text that follows A variable that you can change will be surrounded by _underscores_ Spaces in variables are also replaced with under_scores This allows people to select the whole variable with a simple double-click A tool-tip is lower case and surrounded by {curly brackets / parentheses} These supply helpful contextual information. -------------------------------------------------------------------------- Copyright shared between all the participants unless otherwise stated...