URIs, Java Packages and Domain Names
I've still got about 25 or so domain names hanging around. God knows why... I'm still stuck in dot-com mindset in many ways, but some are too "good" to let go, so I keep paying my "internet tax" every year to hang on to them. I should just let them go and concentrate on one domain, but instead I've got domains and variations of them. It's sort of a sickness, really. I've got variations of my name (rbeatte.com, beattie.info, beattie.biz), domains for my parents and wife (hilltopmarketplace.com, anaasensio.com), then of course a list of million dollar idea names (manywhere.com, janywhere.com, imobs.com, emobs.com, simpleface.com, mobitopia.com, mobchalking.com, etc.). It's like a virus I just can't shake.
Many of these I only pay for in year increments because I keep thinking that I'll come to my senses in the year ahead, but instead I keep renewing. Janywhere.com was one of those - I just renewed it a couple weeks ago. Why? Because it's cool! Yeah, you know! J for Java and anywhere meaning mobile and... okay. I'm nuts.
But here's my point on this. As I'm developing with both Java and XML and I'm creating a bunch of Java package names and URIs for my new XML specs. So which domain name do I use? I've chosen "manywhere" as my main domain name and business name. It's not official, and because of Sybase's "iAnywhere" division, it might even be a trademark violation because of their similar mobile focus. And what happens tomorrow when I decide I like something different better *or* what happens if I forget to renew and someone scoops up that domain on me? What about in a few years - say I create some cool tools and a useful XML spec, release them to the public, but then go nuts and decide to become a monk and stop paying for my domain name. Someone else comes along, grabs the domain name and starts using it for something similar yet different, invalidating all those package nams and URIs.
In short, domain names are the stupidest things in the world to base URIs on because we don't *own* the domains. I already think it's sort of wacky to have a unique identifier like a URI include technology specific implementations like http:// or ftp:// etc. If I have 2 URIs that are exactly the same except for the protocol, are they *really* different? Anyways, I get the idea - these names are supposed to be globally unique, and I too thought at first that domain names where a good way to do it. But that was years ago when domain names felt like something that was mine, not leased. After a few years of paying for these names, I realize that it's all very ephemeral.
Java package names are also as vunerable to this same flaw as well. It hasn't happened yet that I know of, but at one point or another, there's going to start to be serious problems with package names based on domain names. It's not written in stone that we need to name our packages after our domains, and I've already seen some developers skip the domain thing and just name them after themselves, or something random, or even after a generic domain like Sourceforge's org.sf.projects, etc. But it's a strong suggestion that you organize this way and at some point in the future, this is going to fall down.
I think that the W3C or some organization should come up with a database for top level URI names. Something very easy and free to register for. The URIs wouldn't be anything specific, but wouldn't be a GUID either. There's a happy medium between something as potentially litiginous like "cocacola.com" and "eec97550-47a9-11cf-b952-00aa0051fe20". An ID, created by a central registry could be much shorter and still be unique.
Let's say we choose a six letters/number combination like A2B4C6. That's enough for, if I'm doing my math right, 36^6 combinations, which is well over 2 billion unique names, maybe a few less if you take out the confusing combos like 0 and o, and 1 and l. Then you can sign up, get an easy to use, yet unique URI ID, and use that without worrying about paying Network Solutions their yearly tithe. To work with existing systems we'd create a new scheme called uid://. So at the top of XML docs you could see something like "uid://QW4D21/j2ee/dtds/web-app_2_2.dtd" or something like that. It seems geeky, but eventually we'd all learn that QW4D21 is Sun Microsystem's ID, and go from there.
Well, *something* like that needs to be done because we're building all this infrastucture on a house of cards. In a few more years when there's more churn in domain names (being bought, used, discarded, repurchased, used, etc.) it's going to start creating real chaos. Because, again, we DON'T OWN our domain names. (Some might say, they own us... ;-)).
What do you think?