mod_virgule

Raph Levien is the original author and maintainer of the official mod_virgule. What you're looking at here is a hacked version that I use to run robots.net. I needed more features than are provided in the official version but the project accepts few patches and tends to progress at a glacial pace. While both the original mod_virgule and my forked version are far from being well-optimized, my little robot site gets around 70k raw hits / 25k page views per day and is holding up just fine with this code. We've also been Slashdotted twice with no ill effects, which isn't bad for a site running on a PII 400 MHz box!

Raph has absorbed some of my modifications and changes into the official mod_virgule since I released this version and may eventually fold more of this functionality in (or not). In any case, this is strictly an unofficial version. Use at your own risk and don't expect Raph to provide any support for my changes. There is no guarantee that future official versions of mod_virgule will be compatible with this version or will contain any of the features I've added.

Raph's original version had lots of hard-coded references to Advogato.org. I've replaced all of those with user configurable equivalents or generic replacements. Now, if all the disclaimers haven't scared you off, you're probably wondering what my version does that the original doesn't:

  • FOAF RDF records are generated for each user account
  • Blogs may be aggregated via Atom, RSS, and RDF Site Summary
  • Faster trust metric and diary rating updates
  • Spam score triggers auto-removal of spammer accounts
  • Trusted users can flag observer accounts as spam
  • Special users can delete user accounts
  • Function names now conform to Apache module guidelines
  • New head_content tag makes additions to page headers possible
  • Site admin email address is now user configurable
  • Article topic/categories are now easily configurable
  • Config.xml loaded once instead of on every hit
  • Compiles against Apache 2 API
  • Compiles against libxml2 (Martijn van Beers libxml2 patch)
  • RSS 2.0 support
  • RSS exports 15 rather than 10 headlines
  • User list is configurable, paged and sorted by cert level
  • The /article/ index page is no longer hard-coded
  • The sitemap is configurable instead of hard-coded
  • "Forgot password" feature (roughly based on Steve Kemp's patch)
  • Trust Metric handling is more robust
  • No "vanishing file" problem
  • Improvements and fixes to UTF-8 handling in forms
  • Link element in headers to allow automated RSS discovery
  • Article titles are links to articles
  • User account page has consistent, easy to read menu layout
  • Usernames may have spaces, dashes, underscores, and dots
  • Articles can have topics/icons like slash or scoop sites
  • Users cannot certify themselves
  • Favicon support
  • Improved, detailed diagnostic info on test page
  • Posting, replying, project creation authorized independently based on cert level
  • Code has been partially cleaned up and commented
  • Underlying code now has the ability to delete as well as add db entries
  • Removed certs are actually deleted
  • Removed project relations are actually deleted
  • XML-based banner add rotation module
  • Path handler allowing banner ad to be inserted as SSI
  • "include" tag for including nested XML files
  • Assorted compiler warnings were fixed
  • Assorted improvements to makefile
  • Assorted segfault bugs fixed

Also, a few of the features found in my version have slowly made their way into the main version:

  • Usernames are passed to Apache and logged
  • Configurable pass-through directories
  • XML tag that renders differently based on user login state
  • Code to prevent duplicate replies to articles
  • External CSS used to configure color scheme
  • External CSS used to configure cert colors
  • Cert levels are configurable
  • Project list is alphabetized
  • Trust metric seeds are configurable
  • Removed much illegal HTML
  • DoS vulnerability in cookie parsing fixed

Version number note: The version number in the official mod_virgule has been stuck at "1.41" for a couple of years, so I've added a concatenated date string to the "official" version number. This version/date number is reflected in the Apache module registration to make it clear what version of code is being run on a given server.


Copyright © 2007 by R. Steven Rainwater, All Rights Reserved.