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