Pardon me while I vent

(This is longish and technical and probably not very interesting.)

Okay. So I built this content management system for a political organization I wanted to support (who for reasons that will be obvious I won’t identify), because their website looked like dog breath smells. It’s a small database of news stories and press releases, mostly, we’re talking about on the order of 1,000 pages. The system lets you enter the story text, hit publish, they get churned through templates and dropped onto the site, separated out by state, category, topic.... Pretty basic stuff.

Fast-forward five or six years; that database has grown by a couple orders of magnitude, and it’s no longer running so well. So I build a new CMS for them (one which would look pretty familiar to a certain berkshire-based nonprofit), moved all the data over, totally restructure it because they wanted a bit of a redesign while we were at it, installed the thing on a sandbox on their server, give them a good long time to get used to it — close to a year, actually, but there were some other factors there — and finally release it as their main website.

About three weeks later, I get a bug report: links from their other website, which had been pointing to individual news stories in their main website, aren’t working anymore. Other website? Oddly enough, they’d never mentioned that before. It turns out that, for five years, even though they knew they had this database system to manage news stories on their main site, they’ve been managing this other, almost identical website by hand, by cutting-and-pasting URLs from the main site and linking to them in this other site. And since the main site has now been restructured, none of those old URLs are working anymore. Thousands and thousands of links.

Okay, well that’s pretty dumb — wouldn’t you think their first question would’ve been, hey, this database you already built for us over there, any chance we could use it over here, too? — but fine, whatever. Short term, we need to get those old broken links up to date. So I scan through both databases, and give them a list of all the new urls for all the old pages — all they have to do now is a quick search-and-replace through their other site, plug in the new urls, and they’ll be set for the short term. They’ve got a technical guy who says he speaks perl and can do that. Cool. Later on we can tie that other site into the CMS, so they don’t have to keep maintaining that other site by hand.

So I don’t hear anything for a few days, I’m distracted by other work, I assume everything’s fine. Until this morning. When I get another (unrelated) bug report from them, pop onto their server to fix it, and discover:

Rather than fix the old links to point to the new pages, what they’ve done is, by hand, made copies of every one of the new pages in its old location. Then they had to work some server voodoo — a combination of symbolic links and mod_rewrite — to make sure that once the user gets to those hand-copied pages, all the navigation links will still more or less work. Thousands, and thousands of pages. By hand. Which they’re now going to have to keep up to date, by fucking hand, forever, every time they make a change in the database. Basically they’ve chosen the most complex solution possible, and set things up in such a way that it’s literally going to take more work to maintain than it would if they weren’t using a database in the first place.

It’s not that these are people who have no idea how websites work — the mod-rewrite voodoo was actually reasonably sophisticated, not to say convoluted — they’ve got some chops. All I can figure is that the problem is they’re too dumb to breathe.