Namespaces - DNS and other

Posted 9 Mar 2003 at 01:12 UTC by Malx Share This

I think namespaces question is important to rise here. This article is a try to summarize knowledge about namespaces. You should consider as a start to discussion. The main question is - "Is it possible to create distributed namespace system without root of authority to be functional replace of DNS?"

First of all I should apologize for my English. It is not my first language. If you are not able to read bad language, just post comments on subject.

Examples of existing namespaces.

  • DNS names - names are composed of Latin characters with numbers, separated by dots.
    Designed to contain hierarchical information about geographical or other structures.
    It is a key, which used to retrieve data of several categories (MX, A, SOA etc).
    Uniqueness: world wide (Internet), local scale (for intranets).
    Managed by: different organizations have hierarchical structure of agreements with root.
  • IP names - well known representation of IP as a decimal numbers, separated by dots.
    Also used with several modifiers (port, protocols etc).
    Uniqueness: world wide (Internet), local scale (for intranets).
    Managed by: different organizations have hierarchical structure of agreements with root.
  • URL names - based on DNS names with addition of protocol-name and some other local name space (name of directory or username).
    Uniqueness: world wide (Internet), local scale (for intranets).
    Managed by: It's up to local admins. Mostly unmanaged but have suggestions of better usage based on well-known standards.
    Examples:, http://host:81/dir/file
  • File System(FS) - there is quite a number of different FS representations. Most of them are hierarchical with a root. Names composed of different characters (but Latin is preferred) separated with certain character ("/" e.g.).
    Uniqueness: only inside one computer system.
    Managed by: It's up to local admins. Mostly unmanaged but have suggestions of better usage based on well-known standards.
    Examples: /etc/ppp/ppp.conf, c:\program files\apache, [abc.bcd]dddd.ext;11
  • IRC network names - It is string of Latin characters with "Net" substring. Names are not bound to or guarded by DNS or any other name system. They used freely and well-known.
    Uniqueness: world wide
    Managed by: none. You could use just any name you like.
    Examples: EfNet, DalNet, UnderNet, ForestNet, LitNet, RusNet, DalNet.RU, Dal.Net.Ru
  • Software names - any application or software library has it's name. Could be just anything. Often used in conjunction with name of company.
    Uniqueness: depends on software popularity
    Managed by: none. You could use just any name you like. But your decision could be violated if it is resembles some TM (it is used only after you gain some popularity).
    Examples: less, yacc, mozilla, Netscape Communicator.
  • Personal names - any name written with local alphabet. Used to point to certain person. Often used with addition of parents and family name (in old times - geographical locations).
    Uniqueness: They are not unique.
    Managed by: local authorities, guided by local traditions
    Examples: Linus Torvalds, McLoud of McLouds clan, Frodo from Shir.
  • Object names in programming languages - any string according to language rules. Often used with special characters to define it's type and meaning ("[]", "()", "$", "%" e.g.).
    Uniqueness: any if not used by some library. Unique to application or package or module or local block. There are different naming conventions.
    Managed by: none or project leaders
    Examples: printf(), navigator.plugins, echo, lpzStringObject,
  • Channel commutation - you personally assign names or numeric ids to every channel you have. You know where it leads. And you are not interested in details of hops and commutations (just ignore method of setting it up). That means if you have link A-B-C-D then A could mark channel as "1", B could mark it as "234" connects "453", C - "AAA" connects "bbb", D - "link to A". So every node is replicating all IDs same time mapping them to it's own local namespace.
    Uniqueness: You have no globally unique ID.
    Managed by: local staff and agreements between parties
    Examples: Telephone dedicated links, ATM(?)

Aspects of namespaces usage.

  1. Content types inclusion

    It is common practice to include some type information into name to give hint on usage or ways of interacting with object. It is not required but is a common practice. Examples are:

    • image.jpg - "images" is a name and ".jpg" is type of content, but "file name" means concatenation of them.
    • - here "host" is actual name and "www." part means that this host could be possibly accessed by HTTP and ".com" means that it possibly belongs to some commercial company (type of organization).
    • - for our campus network has special meaning. This is third ("3") server ("0") of building #12.

  2. Local namespaces with global and local alias

    Local name spaces are usually referred as "relative" or "internal". If I have company with domain name "" I could setup search string to "" and use "foo" instead of full version "" for internal purpose.

    Some of namespaces has ability of making local aliases. It is not actually feature of namespace, but the software implementation. For example I could configure my DNS to translate string "ad" to "". So I could type "ad" into browser location and go to correct site. But I need to be aware of the fact of aliasing and tell my friend full site name if he need it.

    Here is another example, where using of aliases is not optional but actually required. If you would try to add Jabber user "" to you roster most of software will show you only "jon" (or any other nick name you like). Same with ICQ numbers. So unique names are not used for everyday purpose. They are only a way to add new user or find one.

  3. Search/input interface issues

    Same aliasing could be implemented by client software. For example in Mozilla you could have key (alias) for every URL in bookmarks. Also client software could provide you with local namespaces (you could enter "cmp" in location box and software will replace it to "" for you).

    But the real issue is with limitations of searches. If you try to search string "" inside WHOIS database you would be greatly surprised by number of resulting entries. It will be just disastrous for stability of naming service if there would be some way of substring search of all DNS names. And you could not just ask client software developers to disable searches - you need these limitations to insure stability of name identification and uniqueness.

  4. Storage/transfer media

    The namespace must have certain standard way of mapping into printable text (example is 4 bytes IP commonly represented as 4 decimal numbers separated by dot). It should be short for easiness of printing on paper, pronouncing it aloud, writing it down, inputting etc.

    Also it should have some element for namespace type identification. Such as "http://", "@", "www." Actually this element will not prove string to be of certain namespace, but it gives you hint on which of namespaces it could be.

  5. Stability and accuracy of identification

    It is impossible for a DNS name to float. If you will implement naming system based on number of votes or level of trust, then in theory you could have takeovers. You just can't be sure all mail will be delivered to you host if someone will gain more trust to be called "" then you.

    Other thing is accuracy of naming. If you see some text signed by "Jon Woe" you can't tell who is he without querying for additional information (location, job, phone etc).

  6. Filtering and differentiation

    It is a popular issue to make filtering systems based on parts of name. I could setup filter for "*.ua" to allow access for all users from Ukraine (actually it is not true, but it will not stop me from using filters ;) Or you could block part of IP namespace or charge different amount of money based on destination IP (or phone number).

  7. Localization

    There is trend to allow usage of national characters in names used worldwide. You just could not deny people of using their own language for naming purposes any more! But still you should solve the problem of mapping these names to worldwide readable English.

  8. Aliases

    You could have several names, which are pointed to same object. I do not know is there need to know that it is the same object or not. There is lot's of examples - host has several IPs, same web site accessible with different URL names (main site with many names or mirrors of main site).

  9. Tool or solution

    You should consider the question of usage policy. Would it be solution for naming objects of predefined type or anyone could use it for whatever it like. Example is DNS usage for storing package names or services (

    Very likely product will not be adopted if you would limit usage to hosts only (or whatever objects). Also this same time means tolerance to user errors. It is strange, but product or standard tolerable to errors will be more popular (just recall DNS, HTML, scripting languages).

Problems to solve.

  1. Handling renaming, splits and concatenations

    Let's see a company with domain name "". It is possible it will split into 2 independent "" and "". The questing is - "who will get control of old domain name?" That means all it's mail and URL hits and ... Is there any namespace-level solution for simple switch implementation? It will announce that requested name is not available any more, but here is the list of possible alternatives.

    As an example I would point to "DalNet.Ru" IRC network (btw it has nothing in common with DalNet ;). It was splited into two independent networks "Dal.Net.Ru" and "DalNet.Ru".

    You could imagine what "renaming" stands for ;) And "concatenation" is a case when you should add two namespaces to reflect administrative changes etc.

  2. Acquiring additional information based on name

    I keep seen newsgroups request from web developers for a way to get geographical location information about their visitors. They need it for special forwarding, filtering or statistics.

  3. Distributed managing

    I think implementing any sort of rootless management will lead to raising power of local bosses. Single user just can't decide the level of trust for every Internet node so it will make a list of "parents" it trusts. Why it is bad? It is easy for local boss to say "You would not get resource X until you will make me a Trusted Entity" or "Until I would be the only your trusted entity".

    Now with having a root in other country one could be more certain in stability independent of local policy. You really need to study distributed solutions for such issues.

  4. Easiness of usage

    If a dumb admin could not setup it and dumb user could not find admin for doing it for him it will not work.

  5. Stability and uniqueness

    Business users will require stability of identification.

  6. Anonymity

    You would certainly loose lots of content contributions if you deny anonymity. Why? See a user working for company Y posting an article about something strange to Net. It I could get all information about that user in one click (that means automatically and 100% accurate) I could use this fact to fight company Y. That means user could loose his job for posting strange articles in his own free time. So it will made him keep his official face all the time.

    So naming system must give a choice between stability and anonymity to support both business and private users (or etc).

  7. Migration

    How you would migrate from existing systems? What you will do if you are not able to fix existing software or hardware in any way? Proposed solution must not depend on changing all of nodes. May be changing ISPs DNS software will be enough for migration.

So ... Is it worth to design yet-another-* ?

Also keep in mind that it is almost to impossible to design perfect namespace. Even DNS names are not used for the same purpose they seemed to be designed for. And ... people actually could cope with anything in long run :-).

Is it enough to invent bad NS with ability to grow by proposing just a rough usage guidelines? You will just see how it would evolve to workable solution ;-).

An immodest DNS proposal by Arkady, posted 9 Mar 2003 at 23:32 UTC by badvogato » (Master)

This article and its responses may be helpful to you. As for me, I don't see any need to design yet-another-* of anything which shrinks the one-on-one human contact into ever accelerated machine dependent broadcasting schemes

Object Type Metadata, posted 13 Mar 2003 at 07:04 UTC by jbucata » (Apprentice)

This might be slightly OT, but I thought of this after reading your aspect #1, titled "Content types inclusion":

You make mention of embedding information about a file's type in its name ("foo.txt" is a text file). Another example of embedding type information in the name of the item is Hungarian notation.

However, Hungarian notation has a good supply of detractors. If you need to change the type of intFoo to now be a long, you really can't--you have to instead drop intFoo and replace all occurrences of it with lngFoo. In the above-linked page, Robert C. Martin adds, "Hungarian notation is, when all is said and done, a commenting technique. And the one great law of comments is that they lie."

And come to think of it, doing the same with filenames is also "considered harmful". See the superb article on Ars Technica on the subject. In particular, outside of IE circles it's generally considered rude to use the file extension on an URL for the file type when a valid MIME type is presented.

So while embedding type information in object names might be thoroughly conventional by now, if you try to do that in a new system, you may make a lot of people angry, and it may be widely regarded as a bad move.

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!

Share this page