Warning: I’m pretty goddamn angry. This post reflects that.
ICANN have approved .xxx. Sigh. If I were an American, I’d now be saying something like “ICANN have jumped the shark”. Instead, I’m British, so I’ll say “ICANN are fucking useless twats who need a firm kick in the bollocks”.
.xxx is so blatantly stupid and driven by money. It’s going to be $70 to register a .xxx, apparently. They’ve already got quarter of a million domains lined up for pre-registration. $10 of that $70 will go to some fund to help kids not look at porn or something equally worthwhile.
The whole thing will remain pointless. Without legislative action to mandate that porn sites all use .xxx, the point of the thing is dumb. But because DNS is global, whose law is going to apply? US law? Danish? Korean? Saudi Arabian? Turkish? Unless you enforce .xxx, it’s pointless. And if you enforce .xxx, it’s unworkable. Lose-lose. And think what enforcing it means: some 19-year-old goth chick on LiveJournal wants to put up some racy shots of her breasts from some vampiric ritual she just did with her boyfriend, and she has to put it up on livejournal.xxx rather than livejournal.com? There’s bloody thousands of adult blogs on Blogspot and so on. Good luck with that. It’s not just about getting porno studios to register some new domains: it means getting thousands of people to move their content around.
So, we can’t do that. That’s politically and practically impossible.
But, you might say, I mean, even if you don’t enforce .xxx, you can still use it to filter content, right? Maybe. Let me explain how that might work.
Well, you either filter it by domain name or by IP. First, by domain name: that is, you make it so that little Johnny can’t visit any website where the domain component of the URL ends in the string “.xxx”, in which case all little Johnny has to do is go to a web-based nslookup tool, type in the domain he wants to look at, and then replace the domain with that IP address. All you’ve done is blocked him from looking up the IP address associated with that domain. It won’t work for everything, but the sort of people you are trying to prevent accessing porn don’t care that they can’t find a particular site. Once the kiddiewinks have found porn, they’ll whack it on a USB stick and you, dear parent or guardian, will be none the wiser. The filter has to work 100% of the time or it has failed.
Okay, so we can’t do it that way. What about if we were to get a list of all the .xxx zone files, nslookup up them all periodically and then use that as the blacklist. Okay, let’s do that. That’s a more promising approach. Except, until some bastard like me comes along and registers a .xxx domain, and points A subdomain records for a whole bunch of popular sites like Disney or Google or Focus on the Family or Wikipedia. Now your periodical check of the .xxx domain space happens, you garner all the IP addresses and you block ‘em all. And so now you can’t access Google, Wikipedia, Focus on the Family and all the other sites I’ve added as A records. That kind of sucks, right? (Except Focus on the Family: the world would be a better place without those assholes.)
So, a .xxx domain name can’t guarantee that there is porn there and the lack of a .xxx domain name can’t guarantee that there isn’t porn there. And because the mapping of domain to IP is many-to-many, you are screwed if you use either as an exclusive way to filter content. And because you can’t use either IP or domain to filter content, you have to use the content itself to determine whether to filter the content. Really.
I’m not just a raving lunatic here, go read the IETF’s RFC 3675. Really, if you know anything about the Internet, it takes only a small amount of brain power to see why .xxx is stupid. The fact that ICANN either cannot see that or can put aside the completely obvious problems with such a scheme because someone brings a giant wheelbarrow of cash and dumps it in their lap should be reason enough for ICANN to be rapidly disassembled and replaced by a group of people who’ve actually got a clue about the Internet.
.mobi is a dumb idea too. Tim Berners-Lee pointed this out in 2004 and the W3C Technical Architecture Group agreed. There really is no point in .mobi.
Experiment time. If you haven’t got a handheld device with Internet access like a smartphone, consider this a thought experiment. Without using Google, I want you to go to the website of Vodafone. What did you type in? vodafone.com? vodafone.co.uk? vodafone followed by the commercial extension for whatever country you are based in? Congratulations, you are sane. vodafone.mobi? I bet you if you typed that in, you are either Terence Eden or you work for DotMobi.
On a mobile phone without a QWERTY keyboard or on-screen touch keyboard, given the standard layout of letters on keys, it takes more button presses to type “.mobi” than it takes to type “.com”. The one place where you want to optimise for the least number of butto presses–on a goddamn phone!–and it takes more buttons to type in the mobile-specific URI fragment than it does to type in the generic one. (If you are on an iPhone, there is a button you can press which plonks .com in, and if you hold it down it brings up some other popular TLDs like .org, .net, and your country specific ones like .co.uk)
And why? What’s the point? The world is not split into a Desktop Web and a Mobile Web. If I’m sitting on my sofa using an iOS or Android device over wifi on my home DSL connection, am I ‘desktop’ or ‘mobile’? Neither. If I’m sitting on the train using a 17” laptop on a shaky 3G connection, am I ‘desktop’ or ‘mobile’? Both. I’m using a device in a particular context. Maybe you can customise my experience a bit by doing content negotiation and feature detection and graceful degradation and all those other cool web-dev buzzwords. But that’s at the level of the web browser, not at the level of the domain name.
If I’m on an iPhone or Blackberry, and you’ve got a .mobi domain, should I send e-mail to your .com or your .mobi? I mean, if the domain name system is there to distinguish between different devices, why restrict it to just HTTP? Why not have an FTP site so that I can upload files to a different domain when I’m using an FTP client on my mobile device. No, that’s a fundamentally silly idea. What about SSH? I have an SSH client on my phone and on my iOS devices. Should I SSH into the .mobi domain rather than the .com? Should we have mobile-specific IRC servers on .mobi rather than generic domains? Should mobile devices have to use a specific pool.ntp.mobi NTP server rather than the generic pool.ntp.org servers everyone else uses? What about Gopher and Usenet and BitTorrent and World of Warcraft and Skype and your-favourite-protocol-here?
And what about if I want to give a URI of a web page to someone? How do I know if they are on their mobile device and thus need the .mobi version or on their immobile device and can just be given the generic domain? What happens if I give them the wrong one? Surely, their browser and the server should be clever enough to talk to one another and figure out what is going on. Yeah. That’s my point.
Why are we importing WWW-specific assumptions to DNS, when DNS covers all services? What happens if someone invents WWW2 or whatever next week, some new protocol that makes the WWW look as old-fashioned as Gopher does now. Won’t we regret having the DNS system based on the silly assumptions of today?
And that brings us to the final part of this idiotic, DNS-themed ménage à trois: .tel. Wikipedia explains the point of .tel:
The domain's purpose is to provide a single name space for Internet communications services. Subdomain registrations serve as a single point of contact for individuals and businesses, providing a global contact directory service by hosting all types of contact information directly in the Domain Name System, without the need to build, host or manage a traditional web service. Additionally, as of July 2010, every .tel domain acts as an OpenID and an increasing number of Voice over Internet Protocol (VoIP) clients can 'dial' a .tel domain name directly. The TLD implementation also supports the hCard micro-format.
Whenever you read the phrase “is to provide a single name space for” in the context of a TLD, an alarm bell should start going. Unless you bloody well threaten people with going to jail, you are never going to get everyone to use the TLD.
The basic idea of .tel is that you can get back some telephone-related metadata about the registrant.
Yeah, there’s a way of doing that now using humble HTTP without creating a DNS-based monopoly. You send out an HTTP GET request to the resource you are interested in with an Accept header that looks like this:
Accept: text/x-vcard, application/xml+rdf, text/n3, application/xml+xhtml, text/html
Feel free to tack anything else on the end as you see fit.
Then you parse the response like this:
- If it gives you back a vCard, you extract the telephone number from the vCard.
- If it gives you back RDF, you parse it into a graph and query it for common predicates representing phone numbers (you want a list? Google it yourself) and use the FOAF primary-subject-of pattern.
- If it gives you back HTML/XHTML, you run it through an XML parser or HTML parser, extract any microformats, follow the representative-hcard parsing rules, and if there is a representative hCard on the page with a telephone number, you extract that. If not, you extract all the telephone numbers in the hCards. If there are no hCards, you check to see if there are any links with the type “text/x-vcard” and load those and extract the telephone number. If there are none of them, you run a regex to get everything that looks like a phone number. If you need some idea of what phone numbers look like, you take a look at the language-region encoding in the lang/xml:lang tags of the page. Oh, and look for links where the href begins “tel:”. There’s probably some “skype:” links you can extract too.
I’ve been meaning to write this code and put it up as a web service. Now you don’t need .tel at all: you go and make all your fancy iPhone and Android apps so you can just type in a company’s web address and it brings up a list of their phone numbers and you push or tap or whatever on the one you want.
Again, the same problem is there as with .mobi. Imagine if you wanted to call Oxford University. You know their domain is ox.ac.uk. What’s their .tel—ox.tel? oxforduniversity.tel? oxuni.tel? Adding another domain doesn’t solve the problem, it means you now have two domains to remember–two problems. The use case is “dial the domain”: you can remember the domain and you want to dial it. Adding another TLD doesn’t solve that, it means you have to remember another domain.
I think what I’ve shown fairly conclusively with this is that everyone sucks at DNS and that ICANN is broken. New TLD allocation is now being driven by marketing, fashion and whoever can dump a sufficiently large pile of cash on the desk of the relevant people at ICANN, rather than actually provide a compelling argument for that TLD. How do we fix that? Fuck knows. I’ve heard that some of the Wikileaks and Pirate Bay crowd are working on a distributed alternative to DNS. That might work. Politically, we should push for an actual democratic version of ICANN, and get a bunch of wise Unix neckbeard types to join and require all TLDs to get a supermajority vote of ICANN or a future counterpart to ICANN. Or we could form a loose coalition of people who are willing to just direct all DNS lookups for idiotic TLDs like .tel, .xxx and .mobi to /dev/null.
Thanks to Hacker News for putting this on the homepage.