There are so many programming language but only a few really appeal to the majority of developers, hence their popularity (most used) and community size explosion. Popular languages have more hands on deck hence their Accumulative Advantage: more developers -> more ideas -> more contributions -> more tools -> more third-party packages -> more corporate support (because most of these developers work for companies) -> more apps -> repeat. This very advantage gives birth to many more advancement to the language and it’s ecosystem. As more and more people build their businesses and tools around the language, they are incentivize to continuously invest their engineering resources and money to improve the overall ecosystem. Think about it 🤔
So what’s my point in relation to D?
D is a unique but still familiar language. It has almost all the attributes suited for a mainstream programming languages. It’s statically typed but still manages to be fluid and easy to write code in like any dynamically typed language. It’s got all the powerful features I’ve seen in any other language out there, either comparably similar or better. Moreover, it’s got some of the most brilliant people behind it. This is why I’ve gone as far to write several articles about why D is great for development including this one on OpenSource.com.
So why isn’t D mainstream?
So first of all you may ask, why is it even necessary to be mainstream or “popular”? Isn’t staying small and nimble how we can attract quality over quantity?
I agree with this sentiment to an extent but the cost definitely outweighs the benefit. When a larger community is well managed with clear roadmap and communication of high-level goals, they can accomplish more. Clear roadmap and communication of high-level goals ahh? Yep. That’s one of the key missing ingredients of the D community even as small and nimble as it is. Despite the clever language design and seemingly promising direction, D lacks in the soft side. This is what I believe holds the grow and adoption of the language back.
Soft skills… the people and organizational things.
A train with no destination
- The roadmap of the D language is still very unclear and the project page on GitHub has not been updated for over a year. See https://github.com/dlang/dmd/projects
- There’s little to no communication of language objects and mobilization of the community to reach certain milestones. There’s almost no organizational side to the D Language Foundation.
So why do I still use D?
- D is technically the best out there for me. It’s the only modern system programming language with a clean and familiar syntax.
- It’s very powerful and capable of solving any domain problem: web development, network applications, system development, scripting, gaming, etc. This is rare because almost every language out there is either suited for one thing or the other.
- It’s got a package system. Unless you’ve got infinite amount of time on a project, you’ll need to use code others have written to solve similar problems you may have. D makes it easy to discover such packages from it’s package repository. Almost all modern language have similar centralized package repositories.
- A great community. D has got one of the best communities I’ve ever seen. The community is very welcoming and helpful. The only thing we lack now is mobilization and direction.
- It keeps getting better. D has consistently improved over the years that I’ve been in the community. Yes, it moves at a slow pace but it doesn’t invalidate the fact that things keep getting better.
- It can be better. Comparatively, D heavily lacks in community organization, leadership communication, development tools, third-party packages, user-friendly documentation, learning resources, onboarding experience and general ecosystem polish. These can make D unappealing for certain projects with the need for a matured ecosystem. However, this can be made better.
As this year comes to an end, I hope the D Language Foundation and community revisit past mistakes and look for way to make things better. I am here to stay.