Am 13.09.2013 12:00, schrieb deadalnix:
On Tuesday, 10 September 2013 at 20:48:58 UTC, Andrei Alexandrescu wrote:
We've been experimenting with http://code.dlang.org for a while and
things are going well. In particular Sönke has been very active about
maintaining and improving it, which brings further confidence in the
future of the project.

We're considering making dub the official package manager for D. What
do you all think?


Several remarks (I'm a dub newbie, so it is mostly conditional stuff) :
  - Can we manage repositories ? For instance can I use my company repo
instead of code.dlang.org ? Can I use several repositories with some
kind of priorisation ?

It supports specifying a list of registries that is searched linearly for packages in its config file (or as a command line argument) - I think I still need to document that, though.

The registry currently supports only GitHub and Bitbucket repositories to source packages from, but that can be easily extended by implementing the "Repository" interface.

  - How does the tool handle several version of a package ?

In the current registry implementation, git tags of the form vX.Y.Z[postfix] are taken as the available versions. When specifying dependencies it's then possible to use relational operators to specify a range of acceptable versions, of which the newest is used. Things like the version pinning mechanism proposed by Jacob can still improve things in this area.

  - What is the process to get some code on code.dlang.org ? We must
settle something if this have to go "official".

My idea (the status quo) is to keep that as open as possible. Anyone can register an account and register his/her repository. Package names are reserved on a first-come-first-serve basis. This process would then be augmented with community votes, automatic package deprecation and sporadic moderation to keep everything clean in the long term.


  - What is the dependance management strategy used ? How does it
resolve conflicts ?

There are basically three areas where things can conflict AFAICS:

 - Accepted version ranges for packages that are referenced by multiple
   other packages: Here the best version that satisfies all given
   ranges is used if possible, otherwise error out

 - Selected configuration for a package: This is resolved to the first
   possible set of configurations if possible, otherwise error out
   (this is a bit more complex due to the platform playing a role in
   configuration selection)

 - Conflicts in code (i.e. module/package name clashes) - This is
   currently not handled, but there have been discussions about that
   topic:
http://forum.rejectedsoftware.com/groups/rejectedsoftware.dub/thread/1/

Reply via email to