After recording the WPCandy Podcast last night with Ryan, we had a bit of an after the show show open discussion. I brought up something I remembered hearing a while back on a 5by5 podcast where I believe a guest of Jeffrey Zeldman’s said that WordPress couldn’t handle a website like IMDB, the popular Internet Movie Database.
I wrote down the comment to remember for later, because I had a feeling it was a bit presumptuous. Justin Tadlock, a very well respected WordPress developer, happened to be around the after the show show and was the perfect person to ask about my IMDB WordPress challenge.
He said (in essence) that not only could WordPress handle it, but that it could handle it better than IMDB’s current system (which I don’t know anything about). I was excited about Justin’s answer, because I remembered he has significant experience brainstorming movie-database systems. He often used movie databases as examples for tutorials to help describe custom taxonomies and custom post types, released in WordPress 2.8 and 3.0 respectively.
Justin referenced a trac ticket and his own post on linking terms to posts as references to further learning on current limitations of WordPress Core which need to be worked around to accomplish an IMDB-esque site. The gist of the problem is the ability to relate posts to posts, or one table directly to another. Currently, the custom post type and taxonomy system of WordPress relies on using taxonomies to relate two post types together. As taxonomy terms go from hundreds to thousands to tens of thousands, the scalability of the system comes into serious question.
The trac ticket on the subject is a very intriguing one where some of the brightest WordPress minds debate the need of post to post relationships. Mike Schinkel brings up some excellent use cases to support the need for implementing a major code overhaul to core. Other users understand the appeal, but maintain the primary goal is to uphold WordPress philosophy to design for the majority, and say that the current system of custom post types and taxonomies handle the majority of use cases.
There are plugins available to help achieve the desired functionality for now, which operate outside of WordPress Core. Scribu’s Posts 2 Posts plugin is probably the most notable of the bunch. And it’s arguable that such a use case is perfect plugin territory. But as Mike Schinkel notes, “each of them is operating as an island and not using a community process to speak of.”
This issue isn’t brand new, but it is getting more interesting. The ticket itself has moved all over the place, and probably isn’t the best place for the discussion to begin with, but in general has spent several months designated for future consideration. Just last week, Schinkel updated the ticket with an opportunity for very serious developers to start contributing to a community solution “Object Relationships Plugin.”
In a perfect world, the plugin would provide an avenue for implementation into future versions of WordPress. As noted throughout the ticket, many consider post to post relationships the last gap for WordPress-the-cms vs WordPress-the-blogging-platform. Dougal Campbell elegantly calls the perhaps-inevitable feature “a natural evolution of WordPress.” He even specifically calls out IMDB as an example of the type of site where such a feature would be needed.
Dougal closed his two cents with a fine summary in my opinion, where he says, “It might be version 3.4 or later before it goes in, but I think that something like this is inevitable. We need to start thinking about implementation. One day we’ll be looking back at some awesome theme, or plugin, or custom site built on this, and saying, ‘Remember when…?'”
So what say you? Is this prime plugin territory, or an inevitable step that must be taken in core to take WordPress to the next level?
Editor’s note: No information taken from WordPress Trac tickets is meant to represent plans for WordPress that are set in stone in any way. This topic is just a discussion, and in no way intended to assume the direction WordPress may take as a platform.