On Thu, 14 Mar 2013 08:35:34 GMT, Robert wrote:
I think that one key thing to remember is that if dub is trying to become D's official package manager, it can't rely on external libraries for anything (except for the standard library). So, any package format that it supports either needs to be parseable with Phobos or with dub's own code.
That is something I don't really understand. If we go for SDL for example, why would it be better to redo Nick's work in dub or copy his code in, than having a build script download his library into the build directory? It is essentially the same thing, except that you end up in having to maintain a copy of already existing code.
I do understand that we should probably not depend on a library offering functionality that is also present in phobos, because why would we do that? Isn't phobos good enough? ...
But I don't really see the point in duplicating code. Soenke already did this for some functionality in order to make bootstrapping easy, but at least to me it seems to be less work to maintain a build script downloading some source code, than to maintain copies of libraries.
It has been mandated by Walter and Andrei that anything official to the d-programming-language org must not rely on any D code outside of it. In particular, whatever program becomes D's official package manager cannot rely on 3rd party libraries. So, anything it needs either needs to be in Phobos or in its own repo. This was brought up with regards to Orbit (another package manager for D), which currently relies on Tango and some other 3rd party stuff.
So, if dub is going to be D's official package manager, it can't be using 3rd party code. Any 3rd party code that it currently relies on or will need to rely on for new functionality (e.g. reading SDL files) needs to either be integrated into dub's repo, or it needs to get through the Phobos review process so that it can be in Phobos. If dub isn't trying to be D's official package manager, then it doesn't matter. 3rd party apps can rely on whatever 3rd party code that they want to rely on, but that doesn't fly for official stuff.