A fork in the road
Florin Mihaila
email at example.com
Sat Mar 30 23:47:09 UTC 2019
This thread was inspired by the current discussion on generality
creep. I'm only a guest in this house, but I hope the following
can contribute to the discussion.
Like many people here, I am comfortable with multiple programming
languages. I do not currently use D, and I am reasonably content
with the ones I use the most. But I have always kept an interest
in the D language, albeit from a distance, because it seemed to
hold a big promise: that of leaving the tar pits of C++ and the
inevitable compromises of managed languages, and replacing them
with a language at once elegant, safe, portable, and efficient.
The thought of not having to choose between scriptability and
strong typing, manual and automatic memory management, fast
compilation and advanced meta-programming, and so on, is very
appealing. I also like the freedom from corporate masters, the
fact that the original creator stays fully involved, and that he
is joined by another programming wizard who, when faced with an
infinite number of choices, decided to go all-in on Dlang and
contribute full-time because he saw D’s potential.
My sense is that everybody arguing about the language on this
forum is here because they love it. This is why I find it
paradoxical that D seems to be going through a crisis of
identity. One possibility is that people are frustrated with its
relative lack of impact, which is vastly out of proportion with
its potential. Other languages manage to grow despite their
sometimes severe limitations; why is it that D lags so far
behind, despite its amazing strengths?
It might feel natural to diagnose this situation as a failure of
management, but I think that would miss the mark. Instead, I
propose that the current difficulties stem from a subtle
confusion: to manage and to lead are not the same.
Steve Jobs famously recalled how Gil Amelio at one point
described his own job as Apple's CEO: "Apple is like a ship with
a hole in the bottom, leaking water... and my job is to get the
ship pointed in the right direction"
(https://youtu.be/kveOixeuD5w?t=33). Notwithstanding the
hilarious placement of foot in mouth, obviously Amelio’s
strategic concerns were misplaced at a time when the Apple ship
was on the verge of sinking.
In a way, the situation with the D language is the opposite:
people are so focused on plugging all the holes, urgent or not,
big or small, without breaking or throwing away anything, that
the ship cannot help but oscillate in place. It stays afloat, but
is robbed of direction. One might make the case that Walter's and
Andrei's job shouldn’t be to plug the holes in the bottom of the
ship, of which there are many. More than that, they shouldn’t be
kept hostage to the process by asking them to assist directly in
fixing the numerous mistakes that tend to prop up while various
holes are being plugged. Rather, they should be free to focus on
steering the ship. I suggest it is in the best interest of the
community to stop expecting them to manage, and focus on allowing
them to lead.
What does that mean? If they shouldn't act as managers, who
should do the managing instead? Maybe this is the wrong question.
It could be that what is needed is not to change the management,
but to change the game. By this, I mean that good governance
rules could make possible a form of collective management. There
are plenty of instances of successful OSS projects to learn from.
Ignoring any specifics, the idea would be that the community
could figure out a process by which the various language
proposals are discussed, developed, and prioritized. As a result,
Walter and Andrei could cease to be involved in each and every
discussion. Their current load is obviously not sustainable.
Instead, they should be charged primarily with the stewardship of
the project. At any moment, they should decide on which of the
few, fully fleshed-out, top proposals to focus on. They should be
free to work on finding the best ways to integrate them into the
language. This, in turn, requires trusting their judgment with
respect to the merits and flaws of various solutions.
The change of direction proposed by Andrei suggests a way out.
Borrowing a page from the playbooks of other languages, rather
than attempting to plug all holes while preserving all existing
behaviour, plug only the ones that are truly pluggable, and make
the others irrelevant by replacing them with better constructs. A
process for considering language proposals akin to the JSRs in
Java could allow new geological layers to gradually deprecate and
replace the older ones. The main focus could move from backward
compatibility at all costs towards shoring up the foundations. I
expect that, contrary to the common fear that too many
deprecations will chase away the users, they will be even more
willing to stick around, because they will feel assured that the
language is in good hands and is growing the right way. I suspect
there are more than a few skilled programmers out there who are
sitting silently on the sidelines, waiting to see signs of
stable, healthy progress before jumping in. They behave like big,
influential investors: they only invest in a company once they
are fully confident that it is moving in the right direction.
Successful languages allow themselves to change; they adapt and
grow. What D is going through at the moment feels like a crisis,
but it can also start a renewal. This has happened before: at the
turn of the millenium, C++ used its own crisis as an opportunity
to reshape itself, made some hard choices, and ensured its own
survival. More than resilient, the C++ community proved to be
antifragile (https://fs.blog/2014/04/antifragile-a-definition/).
Arguably, today C++ is doing better than ever.
Both Walter and Andrei are unattached to their ideas, and don’t
hesitate to throw them in the fire as soon as they become aware
of better ones, no matter where they come from. Their expertise
is second to none, and both are clear, precise, and patient
communicators. They are fully committed to move the language
forward. They engage with others only with respect, and do not
gratuitously appeal to their own authority. I submit that this is
actually what good leadership looks like. Crucially, the language
enjoys strong popularity with plenty of passionate, competent
programmers, with many different skills, many of whom are active
on this forum and are more than willing to help.
There are several possible futures for the D language. Compared
to others, its smaller footprint means its legacy burden is also
smaller. Moreover, from a design standpoint, D starts from a very
advanced technical base, and its developers are brimming with
creativity. In this light, there is no reason why D cannot
succeed in transforming itself and claim its rightful place in
the industry, the same way C++ did. It’s only a matter of finding
a way for sailors and officers to work well together.
More information about the Digitalmars-d
mailing list