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 ----------------------------------------------------------------
