Thu, 07 Dec 2006

What is PyBlosxom?

  • weblogging system written in Python
  • minimal core engine of about 3500 lines of code
  • blog posts are stored as individual files in a category oriented hierarchy of directories in a filesystem
  • no database is required - anything that can produce text files can be your source of blog entries
  • much of the functionality of pyblosxom is delivered via a plug-in architecture

[23:59] | [] | #-permalink-#

About PyBlosxom

Originally started as a Python clone of Blosxom but has since evolved into a beast of its own. Pyblosxom focuses on three things:

  • Simplicity - uses the file system for all of its data storage
  • Extensibility - most of the functionality is derived from its plugin framework
  • Community - several hundred PyBlosxom users who have different needs, and work in different computing environments
  • Hackable - easy to write plug-ins and tweak functionality

PyBlosxom got its name and inspiration from Rael Dornfest's Blosxom, which is written in Perl. In fact, there are a number of other Blosxom like packages written in various languages. All of the members of this family of blogging packages share the filesystem model and a plugin architecture of some sort.

[23:58] | [] | #-permalink-#

URI Representation

http://www.sauria.com/blog/2005/03/09/a-post

You can also use the hierarchical categories to provide the path to a posting:

http://www.sauria.com/blog/computers/internet/weblogs/pyblosxom/a-post

On my blog, both of these URIs refer to the same weblog posting. You can also look at groups of entries by removing information at the end of the URI:

http://www.sauria.com/blog/                                         
    shows the root of my blog
http://www.sauria.com/blog/2005/03/09/                              
    shows all posts dated on the 9th of March in 2005
http://www.sauria.com/blog/2005/03/
    shows all posts in March in 2005
http://www.sauria.com/blog/2005/
    shows all posts in 2005
http://www.sauria.com/blog/computers/internet/weblogs/pyblosxom/    
    shows all posts in the computers/internet/weblogs/pyblosxom category
http://www.sauria.com/blog/computers/internet/                      
    shows all posts in the computers/internet category

[23:57] | [] | #-permalink-#

Flavours

A flavour can be thought of as a theme or a type of output.

Another characteristic of Blosxom derived systems is the use of flavours. By appending a ?flav=<label> to the end of any PyBlosxom URI, you can specify what output format (aka flavour) you would like. The weblog world is full of potential output formats: HTML, XHTML, RSS (several different varieties), Atom, etc. The flavour system allows a PyBlosxom user to define a new flavour in order to produce output in one or more of these formats. Additionally, flavours can be theme-oriented: sunshine, rainy-day, purple-pie-man, etc.

A flavour consists of a series of templates which are assembled to form the completed output. Using this template system allows PyBlosxom users to use flavour templates built by users of other *osxom systems with only a few modifications.

[23:56] | [] | #-permalink-#

Plugins

The plugin system allows users to add functionality beyond what comes with PyBlosxom by default. PyBlosxom plugins have access to the information that the core engine has. They can read and introduce variables that appear in PyBlosxom templates, they can inject new entries into the rendering pipeline, they can render output, and they can even work with the HTTP headers that accompanied the request for a weblog page.

Here some examples of functionality that is provided via plugins:

  • archives - create an access to archives, one link per month
  • calendar nav - use a calendar as a way to navigate through archives
  • xmlrpc - metaweblog - implement the Metaweblog XML-RPC API to allow fancy posting/editing UI
  • http 304 handling - implement conditional HTTP handling to save bandwidth
  • autoping - ping all referenced urls that have trackback or pingback URI's
  • logging - log HTTP information to a file
  • lucene - use Lucene to provide full text search
  • handle text formatting of blog posts formatted using text+html, textile, or ReST

[23:55] | [] | #-permalink-#

Limitations

PyBlosxom is a small project. As such, we have no customer support hotline, our documentation will be eternally half-done, and it's likely you will run into problems eventually unless you want a bare-bones blog.

PyBlosxom is a CGI program at its heart. While there have been changes to make it work with WSGI and mod_python and other web-servers, it's still architected as a CGI program. Using it in other ways may cause headaches.

If this sort of thing infuriates you, we don't think you should use PyBlosxom.

PyBlosxom is not all things to all people. We have a framework that allows for plugins to be built, but if you're not into building plugins, then it's possible that PyBlosxom may not fit your needs.

[23:54] | [] | #-permalink-#