On Tuesday, 24 May 2022 at 21:53:36 UTC, Ola Fosheim Grøstad wrote:
>In short, it says nothing of use. We dont try to attract 50% of all programmers. Even 1% would be huge!
Reread what I wrote in this channel and you'll note that this is very consistent with what I'm saying.
To be successful, you need to be really good at something. You need to be even better than everybody else at this thing. And the 1% of people who really need this thing will be willing to overlook other shortcomings.
In turns, this grows the community, the codebase, the tooling and so on. This grant the resources to make the project good at a second thing and so on.
For instance, I remember about 10 years ago, when Rust was just starting, Andrei mentioned that Rust skipped leg day. This was funny and true: rust has that one thing about ownership it did extremely well, but everything else D was better. Where is rust now and where is D? Why did this happen? Well, the thing is, D is good at many thing, but it's not great at one thing. You therefore don't get that 1% of dev who really want or even need it.
The second thing is capitalizing on these devs. They will build tool and an ecosystem and this is a virtuous cycle. Except we keep breaking this cycles in a few ways:
1/ Ballooning complexity. The most jaring exemple is the attribute soup. The main problem is, most of the code out there is not quite attribute this or that compliant, so interoperability doesn't quite work, and making it work require major efforts, as anyone who contribute to phobos will be able to confirm.
2/ We do not get much benefit from that complexity, in any case, nothing that make it worth the cost. While we have attribute that are supposed to provide some guarantee, they are in practice often unable to provide said guarantee, either because there are hole in the implementation, but more often because there are fundamental design problems with them.
3/ We break these tools constantly, for weak reasons. Making a shorter in/out contract syntax. Making throw an exception. Named arguments. return is now an attribute. etc... All thee change break tools, and do not provide the kind of benefit that can counterract the loss of tooling.
These action taken effectively prevent the ecosystem from growing. Just like bonsai, it get trimmed on a regular basis, so it stays small.