www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - A fork in the road

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.
Mar 30