On Tue, 12 Mar 2013 12:58:30 GMT, Robert wrote:

It seems we already have conflicts:

https://github.com/Domain/java/tree/master/java

and

https://github.com/d-widget-toolkit/base/tree/master/src

I think people should at least be aware of such things, when uploading packages, so they can discuss whether the implementations could be merged or how they want to proceed. Having libraries depending on one implementation and others depending on the other one, seems really bad.

I agree. However, the package==namespace approach would also just show that there is a conflict and not prevent it. The resolution still requires people to restructure their code.

Maybe I have a look on how to implement some conflict detection mechanism for the registry/dub? Would such a contribution be welcome? Basically what we already discussed, the registry would need to keep track of files, contained in packages.

Definitely, especially considering that we need to scan packages for all contained D packages anyway, it will be good to have that in place. The question is how to best implement that performance wise:

  1. Query github for each folder? Or maybe there is a function to return the directory structure?
  2. Download the archived project .zip file, scan it, and delete it again?
  3. Some other way? Could use libgit, but that would limit it to git...

The representation in the database would then just be something like a string[] DbPackage.packages; field that has all D packages in dot notation.