Git, the D package manager

Atila Neves via Digitalmars-d digitalmars-d at puremagic.com
Tue Feb 3 13:02:43 PST 2015


This is really good feedback, thanks. Would you be interested in 
discussing this further privately? I've already got some ideas 
brewing in my head.

Atila

On Tuesday, 3 February 2015 at 18:00:31 UTC, Russel Winder wrote:
> On Mon, 2015-02-02 at 16:50 +0000, Atila Neves via 
> Digitalmars-d wrote:
> […]
>> 
>> I have ideas that go beyond this, but this is useful input. I 
>> wonder how to proceed now about gathering actual requirements 
>> from D devs and seeing which ones are important.
>
> Learn lessons from SBT vs. SCons/Gant/Gradle: SBT is a Scala 
> build
> system using Scala programs as input.
>
> Some Scala folk got religious about Scala being the only right 
> language
> for Scala builds, and created what has become SBT. Because of 
> the way
> statically typed Scala works as a domain specific languages 
> there are
> performance and expression issues that means SBT is getting a 
> reputation
> in the very companies that should be supporting it that it is 
> "the
> enemy".
>
> A D build system must trivially support C, C++(, and Fortran?).
>
> Transitive dependency management needs careful consideration. I 
> haven't
> investigated whether Dub does this right, it may well do. Maven 
> does
> not, Gradle does.
>
> Define package, artefact, dependency carefully. Go has a strong 
> model
> (even if it is wrong). Ceylon improves on Java/Scal/etc. Python 
> got it
> woefully wrong: eggs were a mess, and PyPI is not curated well 
> enough
> (the vast majority of stuff on PyPI is unusable rubbish).
>
> Worry about platform specific packagers: MacPorts, Homebrew, 
> Debian,
> Fedora, FreeBSD, OpenBSD, etc. will (hopefully) want to 
> package. Java is
> generally a disaster for them, and Python isn't that much 
> better. Go is
> ignoring al this and creating a monoculture based on Git and 
> Mercurial
> as packages are shipped as source. I see Debian and Fedora 
> trying to
> package Go things and predict the same mess as Java and Python.
>
> Support principally a declarative DSL, but with imperative 
> structure
> possible. A build specification is a meta-program which when 
> executed
> creates the program and hence the build process.
>
> Have no clearly silly constraints, cf. the needs for SBT 
> specification
> lines always to be separated by blank lines.
>
> Be convention over configuration, but allow configuration.
>
> Use BinTray and Artifactory as well as the current Dub 
> repository.
>
> Do not be afraid to change the meta-data specification so that. 
> Dub may
> well be a good start, but it may need work. Gradle has changed 
> it's
> meta-data specifications many times despite being constrained by
> compatibility with Maven POMs and Ivy specification.
>
> Stand on the shoulders of giants, but do not assume they are 
> always
> right, be prepared to change stuff for the better.
>
> Get alpha testers in early and let them drive things – albeit 
> within the
> boundaries of your vision for the system. Dub did well here if I
> remember correctly and created a group of people who did and 
> emailed
> rather than just emailing.
>
> I better finish my essay at this point I have a London D User 
> Group
> meeting to go to :-)
>
> http://www.meetup.com/London-D-Programmers/



More information about the Digitalmars-d mailing list