Looking for a Web-based content management system that uses Perl instead of PHP? Want to serve dynamic and static content with PostgreSQL, not MySQL? What started out as a hobby project by Hendrik Van Belleghem, based in Bazel, Belgium, has grown into Spine – a Perl Web content system for Apache on Unix systems. With so many LAMP (Linux Apache MySQL PHP) content systems available, Spine offers a refreshing alternative with the tried and tested Perl language and is database independent. Open Source Identity interviews Van Belleghem about Spine, a lesser-known alternative to the popular Web CMSs.
How did the Spine CMS project start and how many lines of code have been developed since its inception?
Spine was developed to scratch an itch. About 10 years ago, some friends and I were asked to build a new Web site for the college we attended. One of us had developed a PHP application called Baseweb, which we used as the back-end to the Web site.
I wanted to build my own site, but lacked the knowledge to do it in PHP. I had picked up Perl about 2 years prior so it seemed like a good challenge to write a CMS from scratch.
Initially, it started out as a collection of CGI scripts, using the features from Baseweb as a guide. The first release of Spine had around 1000 lines of Perl code. Right now, it's roughly about 16,000 lines. Quite a few of the basic features from Baseweb still exist in Spine to this date.
The project has gone through some major overhauls over the years, both on the technical (code clean-ups and rewrites, platform support, documentation, features and design) and practical (source control, project management and bug tracking).
What is unique about Spine and is there a market Spine is particularly well suited to? The fact that it's completely Web-based, including administration, is interesting.
I've always set certain requirements when I looked at Spine's design. I wanted it to be intuitive, low on dependencies and fast. I didn't have a specific target market in mind when I started. It was more of a personal itch. Along the way, I tried to generalize the feature-set and usability to suit a wider crowd.
There are a few of the things that pop out at me, for instance, the transparency of dynamic content. Basically, this means that for the visitor, the site looks static. It is possible to mix existing (real) files and dynamic content. Spine will automatically pick this up and serve the static content over the dynamic content with the same filename. Another feature, granular access control, seems to be one of those things that half the professional CMSs out there still don't have.
The multiple database support is a very nice feature that you won't find that often. Once the Web server is configured and the database is loaded with default site content, site maintenance is done completely through the administration panel. On the side of mod_perl (which provides the speed, similar to how PHP gets it's boost), both version 1 and version 2 are supported. A CGI back port is also in the works.
What level of feedback have you had from Spine users and what is the community like?
Like far too many Open Source projects, the user base is quite limited. Occasionally, I get a question from someone about installation or configuration. In the past, I've had code contributions, feature requests and template and documentation contributions.
I’m very grateful for that feedback and I encourage feedback. I've received good responses from the people that do use it but I fear that the slow development cycle might have scared a few.
There are quite a few open source content systems developed with PHP, why did you choose Perl?
At the time of the first release, PHP was not as mature as it is now and Perl 5 was also quite new. Perl was the language that appealed to me the most, partly because it just wrote naturally. CMSs only became mainstream a few years later and by that time, there was no argument to switch to something else. I've never regretted choosing Perl.
The Perl community as a whole is just wonderful and they've helped me quite a bit in picking up new things (quite a few that could be applied in Spine).