This morning I spent some time talking over the content management problem for the Software Carpentry website with Greg. To recap: we'd like to make it easier for anyone to contribute and manage the website content (lecture pages, new bootcamps, events, etc). For example, there are plenty of bits of site building that could be automated so that contributing a new lecture or topic doesn'thave to involve wiring in links to a table of contents, forward and backward links to other lectures/topics, and so on.
Greg has already written some code that takes HTML pages for the lectures, bootcamps, and other miscellaneous pages, and knits them together to form basically the same sort of website you see here. Metadata about the ordering of lecture topics, for instance, is placed in HTML META tags, and this gets used to create forward/backward links, and overall topic pages.
It's a system that works but is newly hand-rolled and "surely since the whole idea of generating websites isn't a new idea there must be something already out there to do this for us that is being maintained and already had a bunch of bugs squashed and... right?"
Pelican looks like it might something we could work with (he says, having spent about an hour looking through the documentation). It reads in pages written in Markdown or reST, and outputs static HTML knitted together in a blog-like format (complete with an RSS feed, tag cloud, yada yada). It's built to be extensible so it would be possible for us to add in new functionality to do essentially what Greg has working right now: read in HTML, extract metadata, build custom SWC pages for lectures and bootcamps and anything else we'd want in the future.
The question is, why use Pelican if we're just going to be mostly using it to drive SWC-site specific code? That is, as it stands, it doesn't seem to do much of what we need it to do for the site, although one could argue that at least we'd be reusing the guts which should count for something (mmm, pelican guts).
So, any opinions? Has anyone used Pelican (or anything like it) and added in lots of their own site-specific functionality? How'd it go?