Absolute vs Root Relative URLS
I've spent quite a bit of time (probably 4-6 hrs in total) this past week reading a lengthy debate between absolute and root relative urls in the wp-hackers mailing list. There were a number of interesting points brought up on both sides. I gleaned a lot not just about the subject of the debate but about the nature of open source projects and how major decisions are made in them.
The biggest argument for absolute urls seemed to be mainly that they can be used anywhere regardless of context and it will always be clear what they point to. If my content gets taken out of context then I can be sure that links will still work. To the people of this viewpoint wanting to serve content this way makes it seem simplest to store it that way in the DB and if the domain name changes that they can run a simple search and replace on the DB.
The argument for root relative urls largely focused on development/staging/production environments where moving the content to a new domain name (e.g. dev.example.com to qa.example.com to example.com) is a common daily occurrence and search and replace would be less practical. For the proponents of this argument it seems more reasonable to filter all of your output wherever absolute urls are necessary in favor of a DRYer database.
Some of the directions the conversation took were quite interesting. The proponents of absolute urls seemed to like to suggest that dev/staging/production sites like this were a more narrow use case since content can be previewed using Wordpress' built in preview post functionality and though there might be legitimate reasons to want a more robust testing/previewing system it was less necessary. This led to allegations that the WP core team is preventing WordPress from progressing and competing by trivializing use cases further from their own experience. This of course led to unproductive statements like, "I've been doing enterprise development for 15 years so I know what I'm talking about", responded to by statements like "Well I've been doing enterprise development for 18 years so I know what I'm talking about".
The main feature of the debate however was chaos. There is no central authority on how to resolve this sort of question (though some people seem to think there is and it's them) and it's not clear to me whether this is a good thing. The upshot of this is that not much will change until it's clear to the majority that it would benefit the majority, and with an issue this divisive no such thing is clear. Consequently there is a lot of inertia. This is not helped by the fact that the core team tends to support decisions made in the past because they were around when those decisions were made (and didn't get fed up and leave).