[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Delegating ownership of namespaces named through schemers.org



Andrew Wilcox <awilcox@xxxxxxxxxxxxxxxxx> wrote at 2006-01-31T07:18:50-0500:
> In CPAN, if you write a module that interactions with, controls,
> tests, analyzes, works with, improves, extends, or otherwise has
> something to do with Apache, you can put your module in the "Apache::"
> namespace.

CPAN does this because they are trying to name by taxonomy.  I think
that, once one drops the taxonomy, delegating exclusive authority under
top-level names (each of which is the root of its own hierarchical
namespace) makes sense more sense.

I've tersely annotated some quoted examples below with the analogous
examples in the kind of system I'd favor.

> these lines.  (If we use a flatter namespace as Neil recommends,
> replace all "web-server:apache" with "apache" in the following
> description).

(apache)

> One person would be able to register their open source library as
> "web-server:apache:foo", someone else could use
> "web-server:apache:bar", and a third person could use
> "web-server:apache:baz".

(apache-foo)
(apache-bar)
(apache-baz)

> Now, once you have a universal identifier, you and only you may create
> additional symbols with that particular name using the double colon
> extension mechanism in the current specification.
> 
> For example, suppose Apache was written in Scheme, and the Apache
> webserver itself had the schemers.org name of "web-server:apache". 
> Using the extension mechanism in the current specification, various
> parts of the server could be named such things as
> "web-server:apache::front-end", "web-server:apache::internals", or
> whatever.

(apache front-end)
(apache internals)

> Only the Apache team could name things like that.
> 
> However this would not give the Apache team control over the
> "web-server:apache" namespace.

(apache)

> Other people can still use "web-server:apache:foo",
> "web-server:apache:turbo-charge", "web-server:apache:hate", or
> whatever.

(apache-foo)
(apache-turbo-charge)
(apache-hate)

> 
> But once you had "web-server:apache:foo", you and only you (or people
> you delegated your authority to...) could name things such as
> "web-server:apache:foo::abc".

(apache-foo abc)

Or: (apache.org abc)

Or: (org apache abc)

-- 
                                             http://www.neilvandyke.org/