PunBB, Discourse, and Software Breakups

Let's remember the good times.

On February 26, 2008, Imperial Conflict's original, hand-coded forums were hacked.

I bet it was Michael Scofield.

A common but tragic design flaw led to a SQL injection attack in which our devious assailant replaced all 279,871 of our posts with an embedded Rickroll video. To make matters worse, the site owner at the time didn't maintain any backups which meant that we had lost 8 years worth of community interaction across 22,421 players.

"I'm never gonna give you up." was a painful lie.

We'd been compromised before, although not nearly as seriously. If our prior attack was a missed wake up call, this was a bucket of ice water in our face.

We needed help. Imperial Conflict needed to focus on its game code, which had its own issues, rather than worrying about forum software to boot.

PunBB saved our bacon.

Regrettably, I can't vouche for their ability to save every bacon.

PunBB was 5 years old at the time, and offered a cleaner and more lightweight solution to phpBB, amongst others. It was brought to our attention by one of our players, who even ended up being a PunBB developer. For the time, this was pretty exciting.

From Wikipedia:

Until September 2011, Facebook's Developers were using Facebook Developer's Forum for discussions and bug reports, which was powered by PunBB.

We were in good company.

With an unplanned (and unwanted) clean slate, we set up an instance and were off to the races. It felt great; using forum software designed by people intending to design forum software. This was far better than our home-cooked forums ever were.

We went a strong 9 years running PunBB, committing so far as to customize it to hook into our game directly in various non-supported ways, which was admittedly risky.

On February 25, 2013, 5 years after our initial migration, we did our first major forum upgrade. That's an embarrassingly long time between upgrades but hey, better late than never, right?

That reference is far more specific than is reasonable.

Anyway, despite having to wrangle some of our custom game-integration hacks, the process was pretty smooth. Not bad considering we'd missed several upgrades in between. Kudos to their upgrade tools!

Unbeknownst to us at the time, just 20 days earlier, a new platform was released that was being driven by one of Stack Overflow's co-founders, Jeff Atwood.

The mobile challenge

Despite the smooth upgrade process, PunBB was starting to show its age.

Now, old software doesn't necessarily indicate "bad" software, but sometimes projects just lose their momentum. It's a sad truth that I've experienced myself repeatedly both in my professional career and as an independent developer.

With PunBB in particular, our players were feeling underwhelmed by the mobile experience. Having dug around in the PunBB core myself, I had a bias for the software and a tendency to defend against these criticisms but in the end our players were expressing an important truth: user expectations evolve and software had better keep up.

PunBB's mobile interface wasn't horrid. It, in accordance with their general aesthetic, was and still is very simple. It's part of what attracted us to them in the first place.

By 2013 however, responsive design was reaching new significance across the web. Mashable even proclaimed 2013 to be the Year of Responsive Web Design. It wasn't enough to just function with an adaptive layout, you had to look good while you did it.

That was PunBB's design shortcoming; it didn't look bad on mobile but it didn't look particularly good either.

API shortcomings

By 2013, the API world had also matured enough that APIs were becoming a prominent if not expected feature for many websites, services, and web software packages.

According to Wikipedia (originally ProgrammableWeb):

ProgrammableWeb tracks 9000 Web APIs that were available in 2013, up from 105 in 2005.

Not coincidentally, Discourse committed a Ruby API consumer in July of the same year, 5 months after Discourse's initial release. By contrast PunBB never released an official API, although its primary fork FluxBB seemed to have expressed interest in 2011, 8 years after PunBB's own initial release.

The timing is significant there, and this is where the comparison starts to become clear to me. When PunBB launched in 2003, APIs existed but had not yet attained the ubiquitous, buzzwordy, near-standard expectation to just be there. In 2013 Discourse was born into a world where APIs were nearly everywhere.

This is why I can't fault PunBB too much; Discourse launched a decade after it did, of course it's going to be a more modern platform.

It's time to move on.

Imperial Conflict is pretty damned old. It started in 2000 and hasn't aged particularly well. When I took over in 2016 I vowed to modernize the game and a big part of that is bringing our communication platforms up to snuff.

We ditched IRC for Discord last year, which was bittersweet but proved to be successful. We've been hovering at over 100 members for awhile now and although it isn't particularly impressive, it's a step up from the 7 or so we had idling in IRC when we made the switch.

With a similar bittersweetness we now move on from PunBB. A newer, prettier, and more functional platform is calling us, and our community's (re)growth and survival depends on us matching user expectations.

Discourse, you seductive devil

If you hadn't noticed already, I'm a fan of what Discourse is doing. As mentioned when I relaunched foohonpie.com, I'm using it here and was test driving it for Imperial Conflict. That was 2 days ago. It was that fast that I decided to pull the trigger. Similar to my experience with Ghost, it ended up being something outside of the product offering itself that pushed me over. That "something", to be blunt, was its founder's personal blog.

I've been reading Coding Horror casually for years. I say casually because it was only recently that I actually paid closer attention and realized that Jeff Atwood co-founded Stack Overflow.

If you don't know what Stack Overflow is, let me describe it in one word:

"Hmmmm..."

You know that feeling? When you realize that you're pondering something? That's an integral part of my experience as a web developer and more times than I can count it has lead me googling about some technical matter only to find a Stack Overflow question page that describes my exact situation. More often than not there is also a satisfactory explanation or proposed solution.

It's so helpful it almost feels like cheating.

Anyway, this post isn't about Stack Overflow. The point is, associations are powerful, as is personal branding. Buzzword or not, Jeff Atwood has a personal brand; a reputation. He's entertained droves of us nerds with his blog for years, he and his co-founders launched and built a resource that we devs (and others) use constantly, and now I find out that he also co-founded and launched the primary contender for forum software that I'm considering? What is this guy, the Childish Gambino of web communication?

Because the Internet needs improved communication tools. Hayohhh!

Discourse is compelling enough on its own, but just as with Ghost, the long term vision matters. I'm willing to bet on this option because there is a larger acknowledged goal, if not responsibility, to improve how we all communicate online. I can support that.

Nothing lasts forever

9 years ago when Imperial Conflict integrated PunBB into its ecosystem, we (perhaps naively) didn't expect to eventually jump ship. Having the wisdom and experience now to know better, it would be foolish to think that anything is a permanent solution. That including Discourse.

One day there might be another new hat that we switch to. If/when that days comes I'll be thankful for Discourse's data export tool, just as I've been thankful for PunBB's own upgrade tools and its community's data migration tools.

Speaking of gratitude, I really do want to say thank you to PunBB and team for the 9 years of service. As Imperial Conflict continues to move forward I'll still look back fondly on how you made our lives easier and saved us from ourselves.

Is it normal to become emotionally attached to software? No? I'm asking for a friend.