Thoughts on versioning

harakim harakim at gmail.com
Fri Oct 29 19:21:43 UTC 2021


On Thursday, 28 October 2021 at 14:53:26 UTC, Adam D Ruppe wrote:
> On Thursday, 28 October 2021 at 14:30:42 UTC, Ola Fosheim 
> Grøstad wrote:
>> When programmers write code for a particular 
>> language/library/runtime/compiler they tend to make 
>> assumptions, that they probably shouldn't have.
>
> Then there's the risk things will break. So be it.
>
>> One might claim that people should not write ugly code, but 
>> most applications of scale does contain ugly code.
>
> They also have their own test procedures and the option to 
> version-lock the system if the breakage is too much. They might 
> file a bug and I'm sure upstream can consider their problems on 
> a case-by-case basis if there's no other solution.
>
> What we have now is fear leading to analysis paralysis. I say 
> just do something and if there is a problem, we'll deal with it 
> as it comes.
>
> (the truth that nobody really wants to talk about is that even 
> the most popular D libraries have just a handful of users 
> anyway. we can just work with them as needed.)

I'm going to start by saying you have always been more than 
helpful on the forum, I respect your opinions, and most of my D 
problems have historically been solved by asking you or by asking 
someone who references something you wrote. I don't have any 
claim to the direction of the D language/phobos library compared 
to you, so this is not supposed to be prescriptive, but a 
different perspective.

I think the reason the most popular D libraries have just a 
handful of users is related to the idea that the D language 
maintainers should just do something and if there is a problem, 
make affected users come to the forum and ask for help. Why 
should they do that when they can easily switch to a more stable 
language?

I posted a [post on 
reddit](https://www.reddit.com/r/d_language/comments/q74bzr/comment/hgpobuu/?utm_source=share&utm_medium=web2x&context=3) in reply to why D is not popular. I dread coming back to my projects and having to spend time to get them to recompile. I didn't include this specifically in the reddit, but the libraries are pretty bad in some cases with comments like this one, from Derelict:

>###THIS PROJECT IS NO LONGER MAINTAINED!
>
>It doesn't compile with the latest version of DMD and I will not 
>be updating it.

Why doesn't it compile? Not even the maintainer wants to find 
out, what chance do I have?

D will never be popular until this problem is solved. If D wants 
to be a niche language with few people maintaining the entire 
ecosystem, rapid change is desirable. If D wants to become 
widespread, then it has to start viewing breaking changes as 
generally unacceptable and a failure of the ecosystem. For that 
reason, I would be very hesitant about doing something to break 
libraries that use std.

Auto-decoding seems like a corner case that was used for a time, 
but isn't used much anymore except by libraries that this forum 
more or less is willing to change. If that's true then I think 
it's worth a breaking change, but I still feel like that change 
needs to be viewed as a failure and retrospected upon.

I think the compiler could be smart enough to issue an error 
about the library change if it sees a type difference of std.X.Y 
and std2.X.Y in a parameter. Maybe a hyperlink to a document that 
explains a solution, for example: "Hey that old duration type 
you're passing in? You need to pass in a new version, but the old 
version takes the new version in one of its constructors. Here's 
an example ..."
I think it could "autobox" the new object for you automatically 
and give a warning. Then this transition would be like the Java 
1.4 to Java 1.5 change (like generics, but also like 
auto-boxing). I understand that might be too much to ask or even 
not desirable. I also think it should be end-of-life'd at some 
point.

I don't know how to deal with the issue of reference equality 
tests between std and std2 types, but I don't know how often that 
comes up, to be honest.

It might be worth saving up a bunch of these breaking changes and 
coming up with a D3 that is just one breaking change of language 
and library that D can go off of, without breaking changes, for a 
long time. Perhaps it would be best to leave auto-decoding in 
until that version is ready.

Based on the discussion, it seems like there is not really a 
coherent vision and things get added here and there. That is not 
how popular languages are. Their releases are few and far between 
and they take breaking changes very seriously. People can count 
on the language and when they learn or build something, it is 
typically learned or built for good. This is not to say 
everything about the way popular languages are maintained is 
better than D. I just think the community needs to figure out a 
way to create stability. It doesn't mean we have to give up 
experimentation. Maybe there could be an experimental D++ that 
ports back the best features to D in spaced-out increments for 
the common folk. D++ would allow breaking changes and would 
always have features D doesn't.

\<feelings>
Whoever said that D's target audience is not the people on the 
forum: I feel like I'm one of the people you're talking about, I 
just happen to be on the forum sometimes. For me, D is like a 
girlfriend with a borderline personality disorder. When I get 
real excited and try to rekindle a part of our relationship (ie 
try to compile something), it feels like she doesn't give a shit 
about me and I'm going to have to work for here love. Not exactly 
marriage material. Java might be ugly and not very helpful, but I 
know where I stand with her.

I would love to be more involved in the D community and use it 
for all my projects. I'd love to come up with some libraries and 
a microservice collection and even help develop some tools. As 
things stand, I hesitate to suggest using D at work, and I will 
shy away from committing to it in my side business, until I feel 
like it is stable.
\</feelings>


More information about the Digitalmars-d mailing list