D needs to learn from competing languages and ecosystems.
Claudio Constantin
claukonstantin at gmail.com
Tue Sep 15 10:57:26 UTC 2026
Hello!
I want to express my genuine interest in learning D as well as
the friction I'm facing in doing so, and at the same time, relay
my thoughts on what I believe would improve adoption.
First, a bit about myself so you can understand where I am coming
from.
I started programming during the Covid era because there was
nothing else for me to do.
I'm 25, so nowhere near as experienced as many of you here.
Despite that, I want to write this to try and share my
perspective on things I have seen evolve.
Lady Luck smiled and I got a job as an Android dev, so most of my
not-so-long career has revolved around Java, and now we're
migrating to Kotlin/Jetpack Compose.
Since then I have explored more programming topics and languages,
because for me it's fun.
It's fun to learn and do things.
It was inevitable to not hear about Rust a couple years ago, but
then I tried it and fell in love with it.
Admiration towards Rust is often attributed to the language
design, which is fair. However, I don't think its popularity
exploded because of how good the language was, but because of how
complete the experience was.
Cargo, rustfmt, rust-analyzer, clippy, MIRI, rustdoc...
everything provided in one package, under the Rust Project
umbrella (rust-analyzer wasn't originally part of it, it is now).
This meant that with one VSCode extension and a shell command,
you could get a DX experience that would later set the standard
for expected language tooling.
Rust wasn't the only language providing a batteries included
experience, Golang and Dart (the DSL for Flutter) also provided a
frictionless pipeline.
One can argue that Dart never took off, but both Rust and Go did,
and while the *languages* themselves were good, I doubt their
adoption would have been as good weren't for their complete
toolchains.
Newer projects like Zig or Odin, competing with Rust, C(++) and
D, have taken stances that hinder their growth.
I'll only focus on one part that I believe is crucial, the
language server.
Zig has ZLS, but the Zig foundation refuses to adopt ZLS as an
official project.
Despite Zig being an interesting language, the language server is
underwhelming in capabilities and understanding of codebases as a
whole.
This type of friction actively hurts adoption and is an issue
that must be addressed with urgency.
The Zig Software Foundation relies on Zig doing well monetarily,
and to me, this feels like self-sabotage.
Crystal, another very cool project, is suffering from low
adoption due to bad tooling. The Crystal compiler was written in
a way that never considered the importance of such tools.
Writing an LSP for Crystal isn't easy; therefore, Crystal has a
lot of friction.
I could go on and on about this, but the point should be clear by
now.
If a language wants to increase adoption, the experience must be
batteries-included.
I have mentioned D competitors. However, other projects are
starting to realize the importance of an owned toolchain, notably
Kotlin, originally developed by JetBrains, has been taking steps
to provide an official LSP, an official formatter and now an
official build system (Kotlin Toolchain).
Same with Swift, developed by Apple. Swift went from a language
that required specific hardware to even use to a (semi-)complete
experience one can download with `winget install Swift.Toolchain`.
These decisions aren't made in a vacuum, and at first seem like
bad financial decisions, as one company sells IDEs, and the other
sells hardware.
Truth is, no one wants to use a closed source language, and no
one wants a bad, slow DX.
Python and JavaScript tooling went from slow and all over the
place to focused and fast. Projects like uv, ruff, ty/pyrefly and
Deno, Bun, oxc/biome, tsgo over the JS side were created out of
necessity, and a realization that yeah, this is pretty bad.
D is in an interesting position, it isn't as bad as Zig or
Crystal, but not as good as Rust or Go. I could compare it more
to something like dotnet.
But dotnet is working towards a better experience, their official
LSP is publicly available (but it is in prerelease), and
`dotnetup` is another official project, similar to rustup, that
acts as an entry point to the language.
What I think D needs:
- Toolchain manager, its own version of uv, rustup, dotnetup, bun.
- An official LSP, owned by the Dlang project, developed in
tandem with the compiler that should be easily managed.
- A tree-sitter parser, or at least adopt a community one, it is
expected to have one nowadays.
- Extensions for popular code editors and IDE.
- An official book you can read online, both Rust and Go provide
their own.
The items on this list aren't easy to develop and maintain, and
there's a real cost, human and economic, behind each of them.
Do I think D could become the most popular programming language
in the world if these things were done? No, I'm not that naive,
but I'm 120% sure that interest would skyrocket.
D stands as a saner alternative to C++, which is why it interests
me (and many others) in the first place.
By simply being a tinkerer and trying things out, I have seen the
patterns that both successful and unsuccessful projects follow,
and that's the conclusion I came to.
It is vital to attract that silent majority who had (or will
have) an interest in D, looked at it and said "meh, not worth it".
They might install a compiler, try and use serve-d only to be
slow and crash, write a small project to then only uninstall
everything and move on. No feedback, no suggestions, simply
apathy.
I'm not familiar with the sentiment in this community around
adoption, or if it is even viewed as an issue, but my experience
is this.
People expect something better, when you don't provide it, they
don't tell you and carry on.
I'm eager to see what you guys think of my observations and
proposals. Even if it all is wishful thinking without much
acknowledgment of the real cost, I wholeheartedly believe it is
what'll guarantee a better future for the project.
More information about the Digitalmars-d
mailing list