Vision for the first semester of 2016

Russel Winder via Digitalmars-d-announce digitalmars-d-announce at puremagic.com
Mon Jan 25 08:26:36 PST 2016


On Mon, 2016-01-25 at 07:44 -0500, Andrei Alexandrescu via Digitalmars-
d-announce wrote:

> Could you please back up that assertion a little bit? From all I
> see, 
> standard libraries of most languages grow very fast with each
> release. 
> What are your facts? -- Andrei

Go has a very small core, if you want anything else you write a library
and publish it. There is a massive and vibrant activity writing many
versions of stuff most of which wither by lack of use. Some, usually
one or two, in each domain thrive and become the de facto standard.
Everything depends on Git, Mercurial, Bazaar, and go get.

Rust threw out large tracts of what was in the original library,
including all concurrency and parallelism things, in favour of separate
crates. There is a massive and vibrant activity writing many versions
of stuff most of which wither by lack of use. Some, usually one or two,
in each domain thrive and become the de facto standard. Everything
depends on crates.io and Cargo.

Python used to be batteries included, then they moved to having a core
to which only Python committers have access.  There is a massive and
vibrant activity writing many versions of stuff most of which wither by
lack of use. Some, usually one or two, in each domain thrive and become
the de facto standard. Everything depends on PyPI, pip, and virtualenv.
Or Anaconda.

There are many facts out there favouring distributed over centralized
for everything except the language itself and the runtime system, you
just have to look. Calling for an explicit, detailed catalogue is not a
way forward in this debate.

Consider Java Platform, the system where lots gets deprecated and
nothing is removed. Ever. The library is big, and grows, but with JDK9
it will, finally be split up into modules, most of which will be
ignored since they are from the mid-1990s. There is a massive and
vibrant activity writing many versions of stuff most of which wither by
lack of use. Some, usually one or two, in each domain thrive and become
the de facto standard. Everything depends on Gradle or Maven, and
Bintray and Maven Central.

Distributed means duplicated effort, yes. It means many projects die.
Some will gain a following that leads to traction. Centralized systems
lead to stagnation and lack of contribution from all but the inner
circle, which often means a lack of energy and new idea (but sometimes
not).

The energy in the Go, Rust, Python, and indeed JVM-based communities
creating new libraries throwing them away, contributing a bit to the
core library, but generally leaving it to the core team, is actually
something missing from D except for the energy around vibe.d. Just
looking at the threads about DMD, druntime, Phobos, it is almost all
about angst rather than genuine progress.

The whole "graphics library" thing is an interesting case in point.
Lots of individual projects, very little consensus, no contribution in
the main playing fields of Windows, OSX, Wx, and Qt. I've got GtkD for
all my needs, so I don't actually care much, but as we see others care
about a cross platform GUI system, but it just isn't happening. There
is point at which small one person projects have to be pushed together
by management and made to work. Either than or one gets funded because
some organization does that. cf. PyQt, JavaFX, Qt. 

Even if you do not rate this as facts it all is. The moral of the story
is, for me, very simple:

Dub needs to be front and centre, it represents D, not DMD, LDC, GDC,
druntime, Phobos. The core of a D distribution is Dub. In this D is
like Rust, Ceylon, Python, and JVM. And unlike Go. Go is too
libertarian in my view. Rust, Ceylon, Python, JVM have the right view
for me: centralized repository and management of distributed projects.
What Rust and Ceylon are missing that PyPI has is an highly opinionated
metric that helps you decide what is good and what is dross.

Of course Dub needs a better story around executables rather than
library packages. Go (go install) and Rust (Cargo build) do this so
much better. But then Go has a project structure model, and Rust uses
TOML.  

-- 
Russel.
=============================================================================
Dr Russel Winder      t: +44 20 7585 2200   voip: sip:russel.winder at ekiga.net
41 Buckmaster Road    m: +44 7770 465 077   xmpp: russel at winder.org.uk
London SW11 1EN, UK   w: www.russel.org.uk  skype: russel_winder

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: This is a digitally signed message part
URL: <http://lists.puremagic.com/pipermail/digitalmars-d-announce/attachments/20160125/143990dc/attachment.sig>


More information about the Digitalmars-d-announce mailing list