Fifteen years ago today, my search for a CMS both ended and began.

Up until that point, I had a hard-coded website that I’d iterated over time in various languages available at the time: bits of HTML, server-side includes, CGI scripting, Tcl, and so forth. I’d never really heard of Content Management Systems but knew I wanted something more dynamic so I could publish content and inject it into templates, in a better way than I’d been doing.

So I started hunting the ol’ internet and discovered this expanding world of the CMS; a concept that promised to separate content from display and revolutionize the way I managed my site.

Mind blown.

With the giddy playfulness of a kitten chasing a length of string soaked in catnip, I clicked to open the first piece of software in the list – the most popular one called WordPress. Downloaded it, installed it on my web host, logged in.

And my dreams careened into a wall.

The content-layout divide

In WordPress, I scratched my head a bit. Clicked and poked around the confusing and badly-laid-out back-end system. Waited. And waited. And waited for the interface to catch up with my clicks. Changed a few things (eventually) and began to see how the content was stored and how it was represented in the templates. Not so bad, I guess. Made some sort of sense.

Ever inquisitive, my next thought was: okay, so let’s change this layout so the links are over there, the categories here, the title is in a different font, the menu left aligned and so on. Perfectly reasonable things, I thought.

Could I do that?

No. It didn’t seem possible. Surely that couldn’t be right? My understanding from reading up on this brave new world of publishing was that the whole point of a CMS was to allow people to easily change how their content’s laid out.

I dug some more. Found the Themes area of the system, packed with a tonne of pre-made layouts. Scrolling through the list, I found one that looked close to what I wanted and clicked to install it. Refreshed the front-end page. Boooooom! Error messages abound. Content smashed up, stuff smeared down one edge of the screen. Images cut off. It was a mess.

I tried another theme. Similar results: errors in different places, content still broken. Eventually, I found one that didn’t break as much, but it was a far cry from the look I wanted. I hunted for things to change. The header and footer were separate, which was great. I could move a few things, tweak colours using sliders in the interface, but that only seemed to affect one section of the site.

If I changed the ‘global’ settings to apply a colour site-wide, it worked, but overall it began to dawn on me that I could only change what the theme designer had allowed me to alter. Font size and colour, but not placement. Position of the blocks on the page, but not the type of bullet point used in lists. That kind of thing.

I searched the web and found plenty of ‘advanced’ tutorials on how to change such rudimentary (to me) things in themes by first making a copy of it and then overwriting stuff. Seemed I had to understand something called “The Loop” and be able to program PHP, neither of which I cared enough to learn, simply to make one tiny change to the way the page rendered.

With a crushed spirit, I uninstalled WordPress and tried Drupal. Different animal, similar issues. Joomla: great if I wanted to learn to crawl before I could eat, but I was hungry. Typo/Blogger: purr-leazze!

I spent days, weeks, installing and trying and uninstalling software that promised so much and delivered so little. Too slow, too convoluted, too rigid. I became despondent, rapidly coming to the conclusion that maybe my home-grown solution was best and that there was no such thing as a CMS in which I could have a good starting point and then tweak things to my liking. To be able to dive in, change one little line in a template and have the entire site alter and flow my content beautifully.

One evening, out of sheer desperation, I clicked a link hitherto buried in the search results. Some guy called Jon Hicks had written a blog post. Had mentioned this little CMS called Textpattern and how he was using it. I’d never heard of it, but it sounded alright. What did I have to lose, besides another iteration of install-try-scream-uninstall?

I downloaded it, read the README. Installed it. And fell in love.

Textpattern restored my faith in content management

The interface was yellow. Very basic. The two-tier menu system was clunky, but that immediate separation of content and layout was beautifully apparent. And it was fast. No waiting for three metric tonnes of JavaScript to render the administration panels. If I clicked into the Content area, I was right there: able to Just Write. To type new articles, add links, upload images, attach them to said articles and have them show up immediately.

Venturing into the Presentation area, I could see every page template assigned to every section – some shared to cut the workload. It was mostly HTML, smattered with tags beginning <txp:...> that seemed to act as placeholders for dynamic content read from the database: <txp:title /> to show the article title, <txp:body /> to show the article body text, <txp:section_list /> to create the menu from the sections defined in the back-end, and conditional tags like <txp:if_article_list> to show something different based on how the visitor navigated the site.

It was all very logical, which appealed to my sensibilities. Plus, the CSS (stylesheet) was editable directly so I could change anything and everything I liked.

There were these confusingly-named things called Forms that seemed to act like reusable snippets of templates. I wasn’t quite sure how they worked, but if I made a change to one, it affected a whole swathe of stuff on the website, which meant I could tinker to my heart’s content and learn how everything fit together. I played with attributes on tags, and stuff changed exactly how I expected on the website.

It was a dream. Finally, my inner kitten had the string it craved.

I signed up to the Textpattern forum that same day. January 29th 2006. Made a few tentative posts over the next few days, mainly asking stupid questions. Dug around. Installed a few plugins. Some did what I wanted, some didn’t.

The templates and tags are flexible and customizable, but I could immediately see that to help myself and the community of designers and coders, nirvana was being able to find gaps in Textpattern and fill them with plugins. To make code that would ordinarily require a bunch of core tags to achieve, and to package that up in a single, flexible tag that could enhance things. Make it simpler still.

The only thing that stood in my way was not knowing PHP. But I now had the impetus to learn it. I wanted random text on my website drawn from a pool of sentences of my choosing. I found a plugin (dru_random_text, fact fans) that almost did what I wanted, cloned it and used that to learn the programming language. Wrote one, two, three… sixty plugins (most of which have now thankfully become obsolete due to gradual improvements in core functionality).

From those shaky beginnings, in 2009 I was blessed with being invited to the core development team and I’ve been there ever since, thoroughly enjoying working with a skilled team of designers, coders, writers, admins, testers, enthusiasts, and like-minded tinkerers, all striving to make this wonderful system the best it can be.

Textpattern: the community makes it

Throughout my time with the CMS, the cornerstone to the project has been the warmth and breadth of knowledge in the forum. At the risk of schmaltz, it’s my happy place where I learn new stuff about the worlds of design and content and tips and tricks and coding and friendship. And, most importantly for me, it’s where I can share what I’ve learned and pass it on.

Over the years I have had the good fortune to interact – virtually via video or the forum – with such a talented pool of individuals, and have met many members past and present in person. Examples include the amazing people behind these forum handles: amoredecosmos, destry, gaekwad, graeme, jakob, jsoo, lazlo, mistersugar, netcarver, philwareham, and zero. I’m sure there are more, and apologies if I’ve missed anyone.

Today marks my ten thousandth post in the forum. Yes, 10 000; that number still barely seems real. Yet there are thousands upon thousands of posts alongside mine containing a wealth of information on all things Textpattern and beyond, and with the help of people in the community, we’re gradually curating and distilling the best of it into sharper documentation and tips to make it more readily available and digestible for the user base at large.

Thousands of websites breathe Textpattern and help people do business, or showcase talent, or convey thoughts to the world through blogs and news channels. There have been many changes in the software over the years and it continues to evolve. The project’s founder, Dean Allen, passed away. Community members come and go; many come back again. And yet, amid the natural ebb and flow of an open-source project – the core principles of power, performance, elegance, flexibility, community and, above all, the ability to Just Write still beat at the heart of the place I’ve called home for fifteen years.

So a special thank you goes out to Jon Hicks for evangelizing the project in the early days, allowing me to discover it. And thank you to everyone involved in Textpattern who has helped – and continues to help – shape it. Your patience and dedication shine through its fabric. I love being part of this project, and look forward to seeing you – and many new faces – between now and my twenty-thousandth post.