Hello everyone,

If you haven't been doing so already, you need to name your libraries
under unique namespaces, to avoid conflicts.  It is important and
easy. It is important because it allows everyone's libraries to
coexist.  It allows everyone's libraries to be in the same search
paths, and it allows unforeseen combinations of importing arbitrary
people's libraries into the same program.

For examples, I'm going to show some of Eduardo Cavazos's library
names, because he's been making many good libraries but currently
they're not named under unique namespace(s), and this could become a
major headache. He has library names such as
(color rgba), (math basic), (misc list-stack), (geometry pt), and
(cfdg).

But what if someone else wants to use these names?  How are we going
to use everyone's libraries which are named the same?  We'd be
required to have separate search paths for everyone and we'd be
required to always be reconfiguring the active search paths depending
on whose same-named libraries are needed.  This alone is a major
headache and enough to discourage use of such libraries.

But there's an even worse problem: such libraries cannot be used by
the same program, because they're named the same.  What if we want a
program to import some (acme foo) library which directly or
transitively imports someone's libraries and we also want the program
to import some (xyz bar) library which imports someone else's
libraries, at least one of which has the same name as the other
person's.  It's impossible. This is not good.  It is very bad.

It's for these two reasons that I tell people to claim at least one
unique namespace to put their libraries under.  It's really easy and
well worth it.  If we all don't use unique namespaces, we're going to
be kicking ourselves.  So watch out!  If I see you naming libraries
(which are not throw-away examples) without a unique top namespace,
I'm going to bug you about this.

I also say that ports and interfaces (e.g. FFI or IPC) of others'
things should always be under a unique namespace of whoever made the
port or interface library.  Because someone else very well may want to
make their own port or interface of the same thing but their's is not
going to be exactly the same, and so in order for these libraries to
coexist, they need to be under unique namespaces.  E.g., IMO, only the
OpenGL or GTK projects have the right to use (gl ---) or (gtk ---).

So:
  (generic thing)
should be:
  (think-of-unique-project/personal-name generic thing)

Please do this, else I'll crack your repositories and rename your
libraries for you, and you won't like the names I choose :)  In the
time it took me to write this, everyone could have claimed their
namespaces and typed them 100 times.  We could even have namespace-
choosing parties, and we could probably get some of those girls who
have parties for certain products to come over if we tell them they
can name their products too.

Thanks,

--
: Derick
----------------------------------------------------------------

Reply via email to