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/

Reply via email to