One thing that I think could be improved is the choice of data format for the values. Right now, it looks like we standardize on JSON by convention, and I think this will hold Namecoin back as it grows, because JSON is not an extensible format.
By extensible, I mean extensible to new types. For example, how do you encode a date in JSON? Usually something like this:
Code: Select all
{"createdAt": "2014-04-10T17:49:36Z"}
Code: Select all
{"createdAt": 1397152067}
Both of these will work, but the problem is that any consumers of this data must learn how to process these out-of-band. You go look up somewhere in the documentation, on the wiki, that the "createdAt" key is actually a UNIX timestamp, or an ISO-8601 formatted date string.
In the small, that is fine, but in the large, it falls apart, because you can't have useful generic processors. I think that when building a foundational platform like Namecoin, the ability to generically process data is key to success.
Right now, Namecoin encodes IP addresses as strings, for example, the keys being more or less agreed upon out-of-band. But a string is a string, and an IP address is an IP address. If you write a piece of code that scans over names in the blockchain, how does it know it's looking at an IP address? Look at the key? A regex? Out-of-band specification of data types doesn't scale as an application platform.
I propose looking at an extensible data format, EDN for example. You could specify a DNS record like this:
Code: Select all
{ :ip #info.namecoin/ip {:version 4 :addr "192.168.0.1"}
:ip6 #info.namecoin/ip {:version 6 :addr "2001:4860:0:1001::68"}
:email #info.namecoin/email "user@example.com"
}
Code: Select all
info.namecoin/ip
A namespaced, extensible format like EDN makes Namecoin a much more scalable platform. By scalable I don't mean "able to handle a lot of users", I mean that the platform can scale easily to new application participants. New participants can create new types, and can work with existing types generically.
I really believe in Namecoin. I think it's a fantastic system. It's the platform for blockchain-based functionality.
Ted