All right, we're busy coming up with the design requirements for what DK4 will have to do. But one of the biggest early decisions will be this: how should the brand-spanking-new backend be built? What language? What frameworks? What tools?

We've talked over various options, but we're going to throw it open to the community for discussion too. Nothing can get as heated or as obscure as quickly as a bunch of techies talking tech. You think your Thanksgivings with GOP relatives get bad, try wandering into a room full of programmers and saying "Java sucks!" or "I just got a 2.18% speed increase in my data archiving cronjobs by converting them from Ruby to Python."

So a good old-fashioned technology free-for-all might be fun, here. More to the point, I'll have real-world consequences -- we're going to be influenced by your arguments.

If you don't know what the heck I'm talking about below, please ignore this thread. This one's just for the techies.

Language: Perl, Ruby, or Python?

Java is right out, because I hate it and that much friggin' typing screws with my carpal tunnel issues. PHP is right out, because of security and other considerations. The only three languages seriously being considered are Perl, Ruby, and Python.

As it turns out, people have strong preferences towards Perl, Ruby, or Python. And I mean intense feelings about it. This is probably because all three languages suck, as do all their language predecessors, but each language has a different philosophy about where it's important to suck the least.

So which should we use? That ought to be a good flame war, right there, but there's something just as important, and that's the web framework itself...

Framework?

Core web framework is dictated by language choice, and vice versa. If you're using Ruby, you're almost certainly using Ruby on Rails. If you're using Python, you might be using Django or Zope. If you're using Perl, you're using mod_perl, maybe with one of the higher level frameworks available from CPAN that build on top of it (Catalyst, Mason, etc.)

So, which is better? Anyone use more than one of them and have a real-world opinion?

To prime the pump, I'll say I'm nervous about trying to do this site on Rails: I have little information on how well it will scale, and I'm not certain how many of their most-hyped features we'd just be immediately working around anyway (like their data abstraction stuff). These two concerns also apply to dozens upon dozens of other framework engines -- pretty much all of them, in fact, to one extent or another.

Note that we've actually got rather specific technical requirements, here, and they revolve almost exclusively around speed. The number of primary "pages" on Daily Kos is very few -- the frontpage, story page, etc. But they're always in memory, they're always changing, and they get hammered hard. Optimizing that behavior is far more important than prototyping them quickly.

Now, here's the rub. All of this might be moot, or at least secondary, if by some (remote) miracle we decided to use an existing...

Content Management System?

Is there an existing content management system powerful enough to use either out of the box, or with modifications? And one that can be so easily modified that we can be confident we'd still want to be using it a few years from now, with whatever new features we might dream up?

The entire reason we're not going to be going with Scoop with this one isn't because of anything Scoop inherently does wrong: it's because the site has already begun to diverge from what Scoop was originally intended for, and as it turns out, there's large chunks of it that now don't have much to do with Scoop at all.

I'll be honest on this one. I don't see much value in using an existing CMS, because this is a very specialized application, and because the amount of customization and new features we expect to spec into DK4 (including a lot of AJAX-based code, etc.) means that we'd be ripping up as much of a CMS, percentage-wise, as we would save. And that'd put us right back where we are with Scoop now -- using a tool designed for one thing, but slowly frankensteined into something else. But if you've got one in mind that has remarkable, amazing, awe-inspiring features already built in, then tell us about it.



So there you go. Suppose you're in charge of how the backend of Daily Kos 4.0 gets built. How would you do it?