October 29, 2021
On Friday, 29 October 2021 at 19:21:43 UTC, harakim wrote:
> I dread coming back to my projects and having to spend time to get them to recompile.

Do you have a recollection of why, specifically they would fail to compile when you get back to them? Language changes? Std lib changes? Third party libs? And how difficult it was to update them?

"breakage" isn't really a binary yes/no thing. Some are worse than others. One example I did in my minigui was misspell a word. I made that a deprecated alias with the message saying "it was misspelled, use THIS instead".

Now, worth noting, that isn't exactly breakage, since you can just ignore the message. I've left it like that for years now; it doesn't really hurt anything. (My own libs' policy is actually pretty strict - I almost never break anything and maintain compatibility with both old and new compilers, and with simple build systems; my "no breakage" policy even includes the specific compile command line. And when I do break something, I make it as easy as I can think of to make migration quick and painless.)

But still that's an example of a partial break that is easy to deal with. Should be able to update it in a matter of minutes.

And compatibility shims are easy: the deprecated alias is something you could too in your code. Doesn't have to be in mine. So you can choose your own compiler as well.

This is how I'd like the stdlib to be too. Where changes are needed, you make it easy. Where they're not needed, you can leave it alone.

Phobos needs some changes right now. That doesn't mean you have to delete the current code, but you also can't leave it alone out of fear of what might happen.

> Why doesn't it compile?

I'd like to know that too. Is it really the language's fault? And why couldn't you keep using the same version you had before?
October 29, 2021

On Friday, 29 October 2021 at 19:21:43 UTC, harakim wrote:

>

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.

Well, there is a bit of chicken-and-egg problem here. Difficult to become popular if we don't make some breaking changes to address some issues, but also difficult to become popular if we do make breaking changes. I also think that this thread shows a serious attitude toward the issue, although I can't really speak to the distant past...

Finally, I'd point out that popular languages do this as well. Python needed to transition to Python 3, and they did. I also just looked in on Scala after a couple years of paying no attention, and apparently they just made what appears to be a very large changes in a transition to Scala 3 (although you could argue it's a stretch to call Scala a popular language... It's a language I've never really used but keep looking in on from time to time because it is certainly an interesting language.)

October 29, 2021
On 10/28/2021 1:50 AM, Robert burner Schadek wrote:
> [...]

Thank you for a most insightful and excellent post.
October 30, 2021

On Friday, 29 October 2021 at 20:39:56 UTC, Adam D Ruppe wrote:

>

On Friday, 29 October 2021 at 19:21:43 UTC, harakim wrote:

>

I dread coming back to my projects and having to spend time to get them to recompile.

Do you have a recollection of why, specifically they would fail to compile when you get back to them? Language changes? Std lib changes? Third party libs? And how difficult it was to update them?

"breakage" isn't really a binary yes/no thing. Some are worse than others. One example I did in my minigui was misspell a word. I made that a deprecated alias with the message saying "it was misspelled, use THIS instead".

Now, worth noting, that isn't exactly breakage, since you can just ignore the message. I've left it like that for years now; it doesn't really hurt anything. (My own libs' policy is actually pretty strict - I almost never break anything and maintain compatibility with both old and new compilers, and with simple build systems; my "no breakage" policy even includes the specific compile command line. And when I do break something, I make it as easy as I can think of to make migration quick and painless.)

But still that's an example of a partial break that is easy to deal with. Should be able to update it in a matter of minutes.

And compatibility shims are easy: the deprecated alias is something you could too in your code. Doesn't have to be in mine. So you can choose your own compiler as well.

This is how I'd like the stdlib to be too. Where changes are needed, you make it easy. Where they're not needed, you can leave it alone.

Phobos needs some changes right now. That doesn't mean you have to delete the current code, but you also can't leave it alone out of fear of what might happen.

>

Why doesn't it compile?

I'd like to know that too. Is it really the language's fault? And why couldn't you keep using the same version you had before?

You have a point. I believe this was the compilation issue I had last which appeared to be a backwards-compatibility issue in the std lib:

auto sekunden = to!("seconds", double)(dauer);
		
return cast(long)floor(sekunden * 18);

It used to compile and now it doesn't. It's not a big deal. I know I have had more like this in the past but I have not kept track over the years. The only time I felt overwhelmed was when I switched from Tango + version 1 to Phobos + version 2, which is reasonable.

The point you got at was that it's mostly third party libraries I have an issue with. That is true. I had to re-download the DerelictSDL source and I did not know which version since I hadn't saved it on the flash drive with my project. When I got it, it wouldn't compile. I upgraded compilers because it used newer library functions (and made a few other fixes), but it didn't draw anything after I did that. I wasn't sure why so when I saw this message:

>

###THIS PROJECT IS NO LONGER MAINTAINED!

It doesn't compile with the latest version of DMD and I will not be updating it.

I ended up moving to a new library, bindbc.

This is just a description of the last time I pulled out an old project. There was:

  1. An instance of a library function being added in a minor version, which caused me to have to upgrade to use the current version of the library. Even though I was previously using the same major version, it would not compile.
  2. An instance of a library function call breaking with only minor version upgrades.
    Problem #1 would fine if it weren't for problem #2

My argument is that we should:

  1. Signify breaking changes in the version number. Code using a library with version x.a should compile using any version of the library x.b, where b>=a.

  2. Breaking changes should be limited to infrequent releases. Multiple breaking changes should build up and get released at the same time with an upgrade guide of some sort.

Maybe I'm just not having the correct perspective or even understanding when it comes to framework and language versioning. I just know that I have to worry about these things in D, but not in other languages.

October 30, 2021

On Saturday, 30 October 2021 at 00:39:21 UTC, harakim wrote:

>

The point you got at was that it's mostly third party libraries I have an issue with. That is true. I had to re-download the DerelictSDL source and I did not know which version since I hadn't saved it on the flash drive with my project. When I got it, it wouldn't compile. I upgraded compilers because it used newer library functions (and made a few other fixes), but it didn't draw anything after I did that. I wasn't sure why so when I saw this message:

>

###THIS PROJECT IS NO LONGER MAINTAINED!

It doesn't compile with the latest version of DMD and I will not be updating it.

I ended up moving to a new library, bindbc.

Oh, wow. I stopped maintaining Derelict years ago. That's why it no longer compiles. I added the note quite some time later. It was superseded by DerelictOrg, and that in turn was superseded by BindBC (which you've already discovered).

I should change that message in the Derelict repository to point people to bindbc. Sorry about that.

October 30, 2021

On Friday, 29 October 2021 at 21:26:52 UTC, Greg Strong wrote:

>

Well, there is a bit of chicken-and-egg problem here. Difficult to become popular if we don't make some breaking changes to address some issues, but also difficult to become popular if we do make breaking changes. I also think that this thread shows a serious attitude toward the issue, although I can't really speak to the distant past...

I am in favor of making a breaking change, even a large one, provided it will lead to a significantly better experience and more stability instead of less.

Python 3 made a serious breaking change after 20 years.
Java made some major language changes without a breaking change in Java 1.5.

Angular was by far the most popular web UI framework for new projects, but lost that edge with frequent major version releases.
Windows Vista never became more popular than Windows XP

I just want D to be in the first category rather than the last.

October 30, 2021

On Saturday, 30 October 2021 at 01:46:18 UTC, harakim wrote:

>

Angular was by far the most popular web UI framework for new projects, but lost that edge

Is that true though? What framework is more used than Angular for larger web applications?

I agree that a D3 approach is the best option, but that requires a clear direction: more high level or more low level? D3 without focus would be worse...

October 30, 2021

On Saturday, 30 October 2021 at 05:27:56 UTC, Ola Fosheim Grøstad wrote:

>

On Saturday, 30 October 2021 at 01:46:18 UTC, harakim wrote:

>

Angular was by far the most popular web UI framework for new projects, but lost that edge

Is that true though? What framework is more used than Angular for larger web applications?

I agree that a D3 approach is the best option, but that requires a clear direction: more high level or more low level? D3 without focus would be worse...

I totally agree a D3 without focus would be worse. I feel like a lot of people are hitting the nail on the head. I read Adam's commentary on his site about needing a vision and there is a post right now about D's values. If the D community can decide on a direction and people think it will be successful, they will work to support it. The ecosystem is not actually that hard to build. It's mostly built.

November 01, 2021

On Saturday, 30 October 2021 at 05:27:56 UTC, Ola Fosheim Grøstad wrote:

>

Is that true though? What framework is more used than Angular for larger web applications?

Vue and React.

November 01, 2021

On Saturday, 30 October 2021 at 01:42:29 UTC, Mike Parker wrote:

>

I should change that message in the Derelict repository to point people to bindbc. Sorry about that.

It's fine. I'm not specifically pointing to this library as an issue. If I was used to working in a language where libraries become unusable with time, I would have noticed myself more quickly. I was more pointing out that it's harder to maintain a third party library in D for some reason than Java. Lots of Java libraries don't get maintained but they still work. The worst you get is a bunch of compile-time warnings.