digitalmars.D - A fork in the road
- Florin Mihaila (113/113) Mar 30 This thread was inspired by the current discussion on generality
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.