Re-doing FOCUS-UNSW.org

It has been under my todo list for at least a year, and the development has gone through multiple iterations of trial, error and completely re-work. Yesterday morning I have finally decided to switch our church website, FOCUS-UNSW.org, from my old home-build content management system to the new Drupal based site. Not just switching the backend engine, I have also decided to change the direction, away from a failed community-driven rubbish dump to this simple information-only site.

And here is my story.

History

Our church website started its life in late 1999 (even before our church has started!) as a Slash-like simple content management system written in Perl, utilising PostgreSQL as its database, and ran as a CGI script on my old 100Mhz Pentium box connecting to the world via Bigpond Direct's permanent dialup connection. Yes, it was 33.6kbps of out-bound bandwidth that serves FOCUS-UNSW.org all the way til August 2002. I still remember after the church camp or MYC, out-bound traffic will be completely congested with people crowding in to look at the photos. Currently (as of July 2005), FOCUS-UNSW.org runs on a DSL service with 512kbps out-bound bandwidth that has slacks most of the time.

I moved from Perl to PHP 3 later in 2000, as Perl via CGI is just too slow. It was great fun learnING PHP. I don't think I have touched a single line of Perl since (partly because I am now in love with Python). I have also moved away from PostgreSQL to MySQL, as (1) I actually had more experience with MySQL (since '97) (2) PostgreSQL 6.x kept on crashing and produced corrupted database. I know PostgreSQL 7/8 is much better, but I have not bothered to come back.

The old FOCUS-UNSW.org was designed to be like a moderated blog site. Members in FOCUS can create an account, and they can write comments or articles. Articles need to be approved by administrators, and I have to grant administrator roles to some keen users. As the churches have new events all the time, it was intended to have people contribute the news of what have been happening, so I do not have to write all the contents myself.

"Community-driven" was certainly one of the goals. I later on tried to integrate lots of other third party packages into FOCUS-UNSW.org's core, like Gallery, Phorum, myPHPCalendar, etc, trying to get the community to contribute and build.

But it did not work. Admins graduated and moved on, just like everyone else in FOCUS. And very few bothered to contribute anything. As I was getting more busy in 2003, looking after MBF, buying a house, moving, preparing for the baby, etc, I no longer have the time to look after the content and any site improvement (coding does take a lot of time). It just sits there in a limbo state, a bunch of heavily hacked PHP scripts over the past 5 years, waiting to be buried. I have spelt out my frustration more than 2 years ago.

Security is also another issue. As XSS and SQL injection gets more wide spread and more analysed by the hackers, FOCUS-UNSW.org too also might be theIR next victim. Due to other commitments I just cannot afford to give constant security audits like other open source content management systems have received from its users. Much easier to be diligently upgrading an existing package, than be the only one looking after your own code. So I decided, maybe it is time to re-do the FOCUS-UNSW.org website from scratch, utilising a popular FOSS CMS. Read my explanation one year ago on the FOCUS forum.

Moreover, there are also "ministry difficulties" associated with this community driven site. Not everyone is like-minded and contributing constructive contents. Worse than contributing no content, you get people writing bad comments on our suppose-to-be community-driven church website, that is suppose to represent the church. That's FOCUS - a student church taking people from all kinds of background and having all sorts of opinions. A stranger landed on one of our pages would have no idea, and might be mistaken that these "opinions" represent what we believe. A community-driven site that lets everyone to contribute cannot add value to the package in this instance, it actually has negative effects to the whole ministry. Again, this blog has kept that part of the memory.

I started coding and finding a good CMS for FOCUS-UNSW.org early last year. I have tried out quite a few existing packages, with the aim that the new site needs to be easy to maintain, information-driven, and tells the visitors only what they need to know: who we are, what do we believe, where and when do we meet, etc.

MovableType

I started out with MovableType 2.6. I initially designed it in the way that the website is consisting 3 "blogs" - chronologically ordered news items, hierarchical pages, and "templates" where a designer can use PHP include() to insert them into various places.

I have only managed to write a little bit of PHP support library for it, before May 2004 came and SixApart announced the changes to MovableType license. Nah. I never looked at MovableType again.

TextPattern

I like TextPattern. It has a very helpful community. Dean Allen has a great mind. I reviewed TextPattern almost a year ago. I have one live TextPattern site for my baby daughter. Therefore it was one of the first to be considered when I started off designing the new FOCUS website. I even have a fully working demo site running at one stage.

But the progress of TextPattern is really disappointing. It has been a year since my previous review, and version 1 is still not out yet. Something trivial like XML-RPC support does not come in standard packages. I also wonder how many people can really get over the section vs. category semantic in TextPattern. Personally I found WordPress' (and other CMS) static page vs. blog entry is easier to understand.

So I have the test site running by itself for a while. It got forgotten, and TextPattern has never ended up being the one.

WordPress

Did I mention WordPress? When 1.5 came out in February this year, with its "page" feature maybe it would be the new CMS of choice! After playing with WP1.5 for a while, I then realise, it would require a lot of work to have it working as a proper CMS (without excessive hacks).

And talking about hacks, I do not think WordPress has the cleanest PHP code on earth. There is something fundamentally wrong down there, and that really deters me from using it for anything other than light weight personal blogsite.

Drupal

There are other packages that I have looked at, and a few prototype have been built. At the end, Drupal won at the end. It is fast. It is very modular. The node system is very flexible. It does almost everything I want without hacking a single line of PHP. Well, not quite, but you get what I mean. I will reserve my review on Drupal for another day. It is so good that I am now developing two more sites on this platform.

Beside attempting to keep the site to web standard, I wanted to keep the site simple. Two nodes that are "promoted to the front page" and "sticky at the top of the lists" gives a summary of what FOCUS is about, as well as our meeting time and venues. The about page is actually part of a "book", which gives you that hierarchical menu on the sidebar. Taxonomy is used to separate news items into different fellowship groups. And that's it! No forum, no user stories. That won't add any value to our public site anyway, reason stated previously.

Our meeting time & location page also has my first attempt to use the Google Map API. Yeah - it is good, easy to use and very flexible. Too bad that we only have satellite images but no actual map.

FOCUS-UNSW.org 2005

Future

I am hoping that FOCUS-UNSW.org can stay in the current state for the next couple of years. What about the "community" ingredient that I have left out in making the current site? Part of forum has somehow been replaced by blogs, either hosted on FOCUSer.net or elsewhere. Why come to a central place to write, when you can write at your own home? With RSS aggregators, it is not difficult keep tracking what everyone has to say.

One of my other Drupal project is also trying to bridge this gap between the old and the new. Drupal is great for content management, it is also a excellent community builder. After all, the tagline of Drupal is "Community plumbing". I have got a few ideas, and some of them were outlined in this post under FOCUS shop. Maybe towards the end of this year.