Different styles but equivalent functionality
When I first released TurboGears, I got a lot of questions about why I chose package X instead of package Y. When you’re talking about any sufficiently mature set of packages, trying to answer a question like that is an invitation to an endless discussion. I refer to that as the “emacs vs. vi” debate, since that’s the example that’s been with us for a long time. I’m all ears when one solution is demonstrably better for a task than another, but more often than not it’s a six-of-one, half-dozen-of-another sort of deal.
So, I shouldn’t be too surprised that a thread I started yesterday about a triviality would result in more than 50 messages from more than 30 people. I could’ve just flipped a coin, I guess
Update: Hey! I learned something new from this thread. I learned about bike shed painting. Neat.


There’s something else you can learn from the thread… the majority of people who voted for the RESTful/Zopeish/noun-verb form did so without further comment, whereas hardly anybody who voted for something different refrained from explaining *why* they made that choice. And more often than not, that choice had to do with their preferred implementation techniques or what they thought was practical/possible to implement.
This strongly suggests that noun-verb URLs are simply more pleasant to look at and/or type, and the only reason people choose anything else is implementation reasons. I don’t recall seeing a single argument that any of the other forms you proposed were better for users, with the possible exception of the ‘article-10′ spinoff discussion.
So, I think that with a little meta-analysis of the thread, you probably got *much* better advice than a coin flip; you just might not have realized it.
That’s true. I had only read a few messages in the thread when I put this post up (and, of course, I wasn’t serious about doing a coin flip).
Many geeks do start mentally going through the implementation of something right away without just thinking about how they’d *like* to use something. I still do that sometimes, but I’ve generally reprogrammed myself against that kind of thing. (It’s not unlike the reprogramming you need to do to get yourself into the YAGNI mindset).
I think people who are thinking about what URLs they’d like to *use* are being silly, because people click links, they don’t “use” URLs. You can’t reliably hack URLs by appending verbs, unless you know a lot about the underlying system. And expecting anyone to know about the underlying system is pretty silly, IMHO. The only place it matters is when you are generating URLs internally, i.e., implementation. So considering implementation is one of the few things that makes sense to me.
People in general (programmers particularly) have a deep intrinsic desire to create hierarchies and taxonomies, but they are often just ditzing around with no purpose. I think this is endemic in URL design, where “/” becomes some magical character in people’s minds. Sometimes intuition is good, sometimes it is a red herring. I think here intuition doesn’t offer anything particularly useful. OTOH, people’s intuitions aren’t particularly *wrong*, they are just baseless, about something that doesn’t matter than much in the end anyway. Which is why it is a bikeshed moment
People *do* use URLs. Sometimes you need to tell someone to type one over the phone. Sometimes you send them in email. Sometimes you need the customer to tell you or email you what URL they’re looking at. You also need to *construct* URLs in your application. (And noun-verb forms allow you to use simple relative URLs in that case.) These are all usability issues, as is the fact that noun-verb allows you to omit the verb in the simple “GET” or “view” case, as well as the REST API case.
So, I disagree that URLs don’t matter. Per the Zen of Python, Beautiful is better than ugly, and readability counts.
I think the reason that people care is that URLs are like the “name” of a thing that you’re putting on the web.
Sure, this article could easily be http://www.blueskyonmars.com/5A7E, and be done with it. I happen to like the slug style that WordPress uses and the fact that URLs, when copied and pasted, can potentially tell the recipient of the url about what’s on the other side. Those Vignette URLs (3,5323,12332,231) always seemed kind of annoying.
But, you’re right. In the end, this makes *no difference* in how the app really works.
I’ll take my bike shed in red, please.
A funny story kind of related to this.
I protoyped my site in CherryPy and used the usual verbs and nouns I thought worked. Then I demo’ed it for a non-techie over the phone and they had the hardest time loading the page. I thought something was seriously broken and started checking my code more closely.
Turns out the noun was ‘openCases’ but the non-techie was typing ‘opencases’. Yuck. So, people *do* use URL’s and assume the case of the text.