Project info for mod_virgule

Share This Created 13 Nov 1999 at 00:28 UTC by raph, last modified 10 Jun 2010 at 20:42 UTC by laburu.


Freshmeat page:


mod_virgule is the Apache module developed to power the Advogato web site. Mod_virgule was created by Raph Levien. His code, which we'll call classic mod_virgule, was used to run Advogato through Oct 1, 2006. On that date, Advogato was migrated to a newer fork of the mod_virgule code maintained by Steve Rainwater. This codebase is now used to run both Advogato and It was actively maintained through 2012. Raph's classic version of mod_virgule is no longer maintained. A third fork of mod_virgule, unrelated to Advogato, was created by Luke Kenneth Casson Leighton and is called xmlvl.

Mod_virgule is written in C and relies on GLib, libxml2, and the Apache Portable Runtime library.

Your Help is Needed!

Below are a few of the things where we most need some help right now

Remove GLib dependency: Building mod_virgule now relies on GLib only for the GHash functions in netflow.c. These could be rewritten to use the Apache APR hash functions instead. This would reduce the compiled module size and simplify the build requirements. Because this code affects the trust metrics, any patch would need to be throughly tested before being accepted.

Document the existing codebase using Doxygen: The mod_virgule codebase is large and poorly documented. Some sections of code have no comments at all. The comments that do exist are not in a consistent style. In order to facilitate continued improvements to the code, it would be very helpful to have well-commented code in Doxygen style. This task is more complicated than it sounds. Much of the existing code is less than ideal and may take substantial research to document fully. The current maintainer as well as the original author of significant portions of the code will attempt to answer questions about the functionality where possible.

Improved build system: At present, building mod_virgule is complicated and generally doesn't work if the target platform varies slightly from the development platform. It would be nice if a potential user could download mod_virgule, type configure, make, and get a functional mod_virgule or a meaningful explanation of any missing libraries that need to be installed. Completing this project would involve using the GNU autotools (e.g. autoconf, automake, etc). At a minimum, the goal would be to achieve successful builds on Red Hat Enterprise Linux, CentOS Enterprise Linux, Debian, Ubuntu, and other common Linux distros. Razvan Cojocaru has submitted a patch for this item.

Automated testing framework for mod_virgule: With the increased development activity surrounding mod_virgule, it would be helpful to have an automated method of regression testing for new builds. This work could be completed in any of a variety of scripting languages such as Python or Perl. An existing web testing framework such as twill might simplify this process.

Updating Legacy APR and libxml API Use: Mod_virgule has been patched over the years to use more recent versions of the Apache Portable Runtime (APR) library and DV's libxml2 but, in many cases, this was done using backward compatibility layers to minimize the effort of moving to the newer libraries. We still rely on deprecated functions and old-style API usage that we can't be sure will present in future versions of these libraries. It would be very helpful to have someone audit the codebase, looking for deprecated API usage, and offering patches to bring the code up to date. Additionally, the APR library shipped with Apache 2.x is much more extensive than the API available on Apache 1.3. There may be cases where mod_virgule utility functions can be removed altogether and replaced with APR API calls.

Developer Links


Websites based on mod_virgule

Help us improve this list by adding a link to your mod_virgule-based website.

License: GNU GPL

This project has the following developers:

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!

Share this page