Sunday 13 October 2013

CFCamp: PresideCMS goes open source

Guten Tag
(and that's the end of the German... I'm over-extending myself even with that much!)

Alex Dom and I flew from Gatwick to Munich late yesterday afternoon, touching down mid-evening. An hour or so later we were wandering around Germering in the middle of the night with Alex going "I think it's down here... just a bit more... further... still... I think..." (where "it" was their hotel... I was staying at a different one). But after a km or so stroll, we found their hotel, dropped their bags off, and went back to downtown Germering for a meal. Most things were closed (10pm, sure... but it was Saturday night?!), but we found a very traditional-seeming restaurant - Zum Griabig'n - which was still open and serving various renditions of flesh and potatoes, so we settled in. The food was hearty and the beer was perhaps one more than I needed (two at Gatwick, two on the plane, one over dinner), but all was good. I slunk back to my hotel a coupla km down the road, and collapsed in a heap.

At 9am Sunday morning Alex and Dom were giving one of the pre-conference presentations "Open PresideCMS Sneak peek". I dunno who I feel more sorry for: me for having an unfairly-significant hangover, or them for being up so early presenting. There were another three punters there besides me: Birgit Pauli-Haack, Gary Gilbert (I only just associated the person with the name, having googled him up for a link), and a bloke called Thomas (to whom I did not talk too much, so don't know how to find a link for him). I think that's a reasonable crowd for Sunday morning. People were definitely engaged and asking questions & joining the general discussion, so I think it was a success.

Oh, there were also a few other of the usual CFML community suspects about the place too, in Mike's session "CFML from Scratch". Early birds. All of them looking far better than I felt.

Alex gave us a run down of the history of Pixl8's PresideCMS, and how they arrived at the decision to re-write it and open source it. It's not quite ready for community hands-on yet, but he took us through a lot of it, dwelling on existing sites running the current closed-source version. The open source rewrite will be mostly backwards-compat with the current version, and function at least the same, but with a view to future enhancement. I took some notes... now that I read them a bit more rough than are useful, but I'll try to summarise his points. This might be a bit stream-of-consciousness.

I also hasten to add I'm on my third pint of the afternoon: two over lunch, and I'm plugging through my third as I type this. 

Pixl8 is a London-based web studio, and have been doing their stuff for over ten years. I've been working with Alex on and off as a supplier, client and employee (at different times) for about than long too. We're good mates.

PresideCMS has been around for almost that long too. Initially it was developed on BD.NET (now pretty-much defunct, I think) and OpenBD. I's never been actively developed for ColdFusion (ie: the Adobe product). Alex quite rightly points out that when he was needing to make platform decisions, CFMX7 had just come out, and it was decidedly meh. CFMX6.1 was a great enhancement to CFML (CFCs! Java!), but it didn't really do anything that interesting again until CF9. In the mean time Railo wasn't really there yet, so partnering with New Atlanta seemed to be a sensible direction to take at the time: BlueDragon was mature, and being very actively developed. Also at the time it seemed like it would be good to be able to hang off the ".NET" in the BD.NET name, but ultimately that didn't really come to much: no-one cared. But at the time it made sense.

Alex described PresideCMS as a "mid-level" CMS, and they target mostly memership associations, such as the Society for General Microbiology and SciDev, two sites Alex used in his presentation to demonstrate various bits of PresideCMS functionality. SGM runs on BD.NET.

Due to what I gather were some code-compatibility or support reasons (I have a note to clarify this with Alex, and I'll update this when I do), Pixl8 have decided to port to Railo. I have to say that if for no other reason, my opinion is that moving to Railo is "backing the winning horse" as far as CFML engines go.

Pixl8 have decided to open source PresideCMS, but before doing this, they are retiring their decade-old organic "architecture", and Dom is in the process of re-writing the whole thing from the ground up using contemporary design / development practices. This is a fairly bold move, but makes sense if they are open sourcing and as well with their extensible design philosophy. As far as I know PresideCMS has always been fairly extensible, but I get the impression from what Alex said that it worked in a way that it helped if you were on the Pixl8 team and already knew how to do it. This is no indictment of Pixl8, as I think most software tends to grow this way.

All the inner workings of the content management side of things are written as a bespoke application using Dom's new PresideCMS object model, but the PresideCMS-driven websites themselves are ColdBox websites. ColdBox did a lot of stuff that Pixl8 wanted to do, and in a way that they figured was a good approach, and integrated well with the way PresideCMS manages the content. They also use Coldpspring for their DI. I asked why they don't use WireBox for their DI, and Dom echoed my own sentiment: WireBox is too intrusive. It requires one's components to have WireBox-specific metadata coded into them, which - to me - seems like a poor approach. It means that the components that WireBox manages need to be "WireBox-aware".Coldspring's approach of working around existing components that are completely DI-framework unaware makes more sense to me.

Another interesting thing that Alex said was that PresideCMS is going to be engineered to run on Railo, with no consideration of ColdFusion at all. They're not going out of their way to make it not work on ColdFusion, but equally they are not making any dispensations for it either. This is interesting as I would still usually aim for cross-compat with "Mothership", but I guess there's just not the compelling business case to do so.

Alex says his decision to go open source had a few facets, but primarily a lot of tenders these days insist on open source solutions. This is lacking in common sense, but it a business reality.

From a non-business perspective, Alex clearly stated - and I know he means it - that he thinks PresideCMS is actually a pretty good piece of software, so he wants to get it out there! Alex (and Dom) are very clued-up CFML community people, and I know if they think that, they're right. This can only be a good thing for the CFML community's open source software base.

As far as release dates go? Dom wants to polish up a few more things, as well as getting some of the re-write out of "alpha" before opening it up to (or throwing it on the mercies of ~) the comunity. But Alex also said he'd think about opening it up to a smaller audience first, if the interest arose.

The second half of the presentation was a "roll-yer-sleeves-up-and-look-at-some-code" session with Dom. It was all interesting stuff and I really liked what I saw - and Dom's / Alex's explanations of why they had done the things they'd done all rang true - but it was very technical and my notes doing really correlate into anything that would be useful in a third-party blog article.

I'm gonna encourage Alex / Dom to do a blog version of Dom's presentation. I'd be happy to host it here, although I know Dom's got his own blog, and I think there's a Pixl8 blog too (although that looks more like a PR effort), so they might want to do it there.

Everyone else is now either in Kai's "The JVM is your friend" training course, or at "Introduction To Mura CMS". I'm CMSed out, and whilst Kai's training sounds excellent, I am on a tight budget for this conference (the budget covers beer. Oh... and food occasionally), so couldn't afford it. So I'm biding my time by propping up the bar at Agua, the bar/restaurant annexed onto the conference centre. Last night's hangover is now gone (well it's 4pm, so one would hope so! But I am well on the way to the next one). Fortunately I have a Railo bug and a CFLib UDF to write up, so I will continue my bar propping and blogging for another wee while, until those sessions get out, and I can consult with people as to what's next.

Where, btw, did this fresh pint come from?!