Updating packages

Some people have been talking about the fact that not all elm packages are fully updated to 0.19 yet. One example is elm/websockets. I am working on that sort of thing now, but I want to explain the reasoning about why I am working on it after the release. I saw two paths here:

  1. Block 0.19 on those packages, making the release come out a couple months later. Based on posts like Is Evan Killing Elm’s Momentum? and nearly had a heart attack, no updates in 18+ months?, I was under the impression that folks would prefer some other path.
  2. Try to do the release earlier, leaving some packages for later. Most people can update to 0.19 and get the benefits, so their life is better. Some people some people may have to use ports or stick with 0.18 for a bit. Their life is either the same or better. This also gives me a chance to try to improve certain packages, perhaps finding a nice way to cover the Elixir folks who need certain features for their scenarios.

Given the data, I felt like choosing path (2) was a reasonable approach. In my experience with Haskell, I always wait to update to the latest compiler version because there are lots of authors with lots of packages. It takes a while for everything to get updated! We had a two month testing period with this release, so a decent number of packages were updated, but not everything. Not everyone follows that stuff super closely, and that is okay. I just wait a bit to updated my code.

I did not think to make a note about this because, to me, it did not seem like a mysterious decision, to me. It is very hard to anticipate all the ways people will see things a different way than you, especially when you have a big release with lots of stuff going on. So now you have that information.


This should have been obvious to people.
But this post is now a great place to link anyone complaining about “missing” packages in other forums.

Reading hacker news you could get the feeling that some users are paying money for a product delivered by a major company and are upset about not getting perfect software + packages
one minute after a new version release.
And beeing able to insult the creators that made the software for them, I don’t get it.

If you think past your next payslip you will offcourse agree on any change done to Elm lately. Removing native gives a lot mor incentive to create pure Elm solutions wich is the best for this language and its users in the long run. Period. And removing custom operators will let any user able to understand other people packages a lot faster.
This is hard to do, just like politicians should be saving/investing money during a boom in economy, not spend more like the public wants. But thats hard :slight_smile:
I am amazed how you Evan keeps finding things to simplify. I would belive its hard to change things that you self built and are extreamly used to be doing and calling stuff.

Btw. I belive most of the community is VERY happy with the new 0.19, the people complaining about short time gains (native++) is just the few who shout louder…


Do you have some insight about how “wait to update to the latest compiler” will play out in Elm, in terms of 0.18 support ?

@bChiquet, I wait until all the packages I need are ready. I ship a binary that needs fixed dependencies, so this has worked well for me. The package website keeps serving older packages. If you want to upgrade earlier, you can use ports.

1 Like

I think the point that people should consider is that you wear two hats in the Elm community:

  • Evan-the-compiler-author; the developer of the language and its tool chain
  • Evan-the-package-author; the developer of packages that add functionality to Elm

Obviously the first must precede the second. Some people expect the second to come at the same time as the first, but that isn’t necessary. Certainly not in the case of a package like elm/websockets, where a port-based alternative implementation is reasonable.

I read or watched a post/talk of yours where you said part of the challenge is to not merely port over web APIs from JavaScript, but to discover the right API that makes sense in a functional paradigm (Browser.Dom being a good new example). People forget that this is an Evan-the-package-author task and not apart of the language itself.


It seems like the internet demanded a release, you patiently explained that frequent major releases are not necessarily desirable because they break things, and a major release did indeed break some stuff and there was a storm-in-a-tea-cup over at HN. Your thinking, which appears contrarian, is proving itself as a good strategy and I think it always helps a great deal when you give updates like this to explain things.

Elm 0.19 is a new Rome and you have the support of many good people here to help you build it. I am finding the upgrade to 0.19 longer than 0.18, but I can also see it is a great improvement that will return on the investment made to be on-board.

Awesome job with 0.19, and many thanks from me.


Would you have a link to share about this? I’d love to read more about it.

You are right. Language version and packages are not the same. But, at the same time, elm-lang packages are part of the language. I totally understand why question about elm/websockets was raised. Some people expect that they can just update language version, fix changes mentioned in release notes and be happy.
My point here: It is OK to remove (maybe temporary) some of the packages that were part of the 0.18, but you should mention it with release notes.
Anyway, thank you @evancz for this great update

Not really - I was paraphrasing things, please excuse my artistic license.

The point I was trying to make is that Evan has done a great job of maintaining a steady long-term vision, and that there is a certain irony to be found in the behaviour of the more reactionary contributors to the debate.

1 Like

All sort of anxiety driven development discussions on hacker news and reddit are fueled by lack of information… or perhaps I’m too optimistic, even when there would be more information available…

Anyhow, I don’t mind waiting for packages being updated and waiting with my project upgrades from 0.18 to 0.19.

In the future it could be better to mention major package changes in elm/compiler release notes: https://github.com/elm/compiler/blob/master/upgrade-docs/0.19.md - as language changes are likely to affect at least core.

For my work and hobby projects, websocket being delayed, means that we also will be delayed on upgrading from 0.18 to 0.19. Also, there is no mention of Color, List.scanl being gone from core, which also break a lot of things for our projects.

Upgrading anxiety could also be mitigated by clear communication in release notes “that 0.18 is going nowhere fast, people will have time to upgrade” and by not hiding the previous version (0.18) documentation.

Instead of this: https://gist.github.com/evancz/9031e37902dfaec250a08a7aa6e17b10 - why not feature 0.18 docs/packages directly on https://package.elm-lang.org - in the right side column with a separate section:


Maybe its just me, but I constantly look up docs. Having links just die or bookmark an IP address for previous version documentation is not really user friendly.

From what I’ve read above, its seems reasonable to expect that package updates take time after a new compiler/language release, which from a end-user perspective makes it also reasonable to expect that links to previous version documentation and packages are not just dropped or hidden.


This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.