Some thoughts
berni44
dlang at d-ecke.de
Mon Nov 25 16:53:43 UTC 2019
Last week I forgot to take my vitamin D pill and got into a deep
depression where I decided to end my help on D. I used the whole
saturday morning to write a bye-bye-message. Meanwhile I realised
my mistake with the pill and I'm up again (and I won't leave).
But I think, part of the thoughts I wrote down might still be of
some interest. Therefore I want to share them with you.
Berni
----------------------------------------------------
From time to time there are threads in this forum with hundreds
of responses. Most of the time, after having read the first few
answers, there is nothing more in the rest of them, but one
repeating theme (often burrowed beneath the surface): Why is D
not the programming language no. 1?
From my perspecive, D is currently like a racing car with rusty
axis, flat tyre and hardly working breaks. But people discuss
about adding a rear spoiler, whether a new turbo gear will help
and maybe sometimes even the color of the car. And then they
wonder, why the car still is not no. 1.
For getting D up in those lists, which compare programming
languages, I think getting back to the fundamentals is most
important. I see two of them:
a) Remove bugs
b) Improve documentation
Let me get a little bit more into those two:
a) Remove bugs
About 20 years ago, I had a strange experience. In a team we
where programming a server in java and after running that server
for some time it slowed down and eventually crashed. This
repeated several times. After long research we found out, that
the bug was to be found inside java.utils.vector. It was the
first time, that a bug was not in my own code, but in the
language itself. At that time we discussed to switch to an other
language but having no usefull alternative we decided to rewrite
the vector class instead.
The next time, when I had this experience again, was a few years
ago with D. And when I wanted to report the bug, I found out that
it's been reported allready years ago. And this repeated several
times since. If allready one bug is enought to make people
discuss moving to an other language, what do dozens of them do?
According to bugzilla [1] there are currently 406 bugreports
concerning phobos. Probably half of them are allready fixed or
clearly of wontfix type or invalid. But it's important to remove
all others. And from what I've seen in the source code, I'm
pretty sure, there are much more bugs hidden in there, some of
them as deep as in the underlaying C functions. Get rid of all of
them.
I think, a good idea would be something similar to the freeze
cycles Debian uses. Maybe D 2.100 (call it D 2.1) could be used
here for good. At some time, maybe D 2.095, start a freeze, which
means, no new features are allowed from that time on (put new
features in a separate branch for the time being). Increase the
freeze with every version: Only fix bugs of severity normal or
higher from D 2.096 on, Only major from D.2097, and so on. Add
charts like the one on [2], so everyone can see the advance.
How to do that with too few people who contribute? Well
gamification could be an answer: Allow people giving plus points
to others who did a good job (or call them kudos if you like) and
add sort of an alltime highscore table. Add some promotion system
where one can get up the ladder when some criteria is fullfilled,
getting a new title like "bug hunter" or "bug expert" or
whatever. Make these criteria easy to fullfil in the beginning
and more difficult later on. Add some bonusses (a star next to
the name in the forum, some additional feature to use, ..., being
listed on the front page as top bug hunter or what ever). I hope
you get the picture.
b) Improve documentation
An important step would be to replace the current phobos
documentation by the ddox version or by dpldocs (from Adam
Ruppe). That would allready be a great improvement. But there are
also so many functions, where the description is a oneliner that
hardly tells, what the function's doing. And the public example
just giving a special case. From this, beginners may not
understand how to use the function, especially when it's a
template. (I had to peek into the source code in the last weeks
from time to time, to find out, what a certain function really
does or how it is supposed to be used.)
There are hidden features (like %r in formattedWrite, or %*d in
formattedRead) or even wrong documentation (again std.format, for
example, which tells, that the format string for formattedRead
behaves the same like formattedWrite, which isn't true). Get that
right.
And every place, where the code does not behave like the
documentation tells, it's a bug that needs to be fixed. Don't
preserve the bug. All bug fixes are breaking changes. And they
are always necessary. For example: "%s" behaves somewhat strange,
when arrays of strings are printed. They are quoted: ["aaa",
"bbb"] instead of [aaa, bbb]. To fix that, a minus flag has been
introduced (which now makes it hard to fix "%50s" as a side
note). This did not break code, but in the longrun this attitude
is part of the answer why D isn't no 1.
I would also recommend to reduce the amount of "red" on the whole
homepage. Red is associated with "danger" and that works
subconciously. As D is percieved as the "red" language, that
cannot be removed completely, and that's not necessary, but for
example a red line between the main menu and the content is
sufficent. Replace the main menu by something from white over
gray to black. Or use #3931b0 as a secondary color.
[1]
https://issues.dlang.org/buglist.cgi?bug_severity=regression&bug_severity=blocker&bug_severity=critical&bug_severity=major&bug_severity=normal&bug_severity=minor&bug_severity=trivial&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=VERIFIED&component=phobos&list_id=228741&product=D&query_format=advanced&resolution=---&version=D2
[2] https://bugs.debian.org/release-critical/
More information about the Digitalmars-d
mailing list