Skip to content

Instantly share code, notes, and snippets.

@evancz
Last active February 2, 2019 15:47
Show Gist options
  • Save evancz/4cc6c31dd4d56dfb8dd41727f4fe0229 to your computer and use it in GitHub Desktop.
Save evancz/4cc6c31dd4d56dfb8dd41727f4fe0229 to your computer and use it in GitHub Desktop.
NOT FOR SHARING

LIST ONLY - NOT FOR SHARING

Elm 0.17 is finally done enough to share. I am really happy with how things came out, and I hope folks are able to see how everything fits together in the new world. Now again, please do not post around about this on the internet. Discussions and questions should happen on elm-dev and #elm-dev as appropriate. Finally, please read this entire post.

Why so quiet about 0.17 so far?

I think Elm has benefited greatly from the fact that I am very deliberate about the overall narrative. How does Elm relate to JS? What makes this release timely? What makes it unique?

There is one key idea that I think is really great, and I think it will be copied into JavaScript libraries. Hopefully the copies will have clear and honest citations, but it has not always happened that way. So I have known this idea for 3+ months now, but I knew if I posted about it, the JS library that copies the idea would almost certainly get released well before Elm 0.17. Being "second" to an idea that I came up with in the first place is not a narrative I like.

Now, it is 100% true that having Elm ideas implemented in JavaScript is great for Elm, especially if the relationship is well-documented. This is probably the most common way for people to stumble into Elm these days! So I don't want to be misunderstood here. Replicating the ideas in JS is great, I just want you to do it after I announce the final release of Elm 0.17 publicly. I personally think the risk of bad actors is relatively high, otherwise I would not have been quiet for so long or written this paragraph.

It is totally possible that I am being overly risk averse here. Or making bad estimates about the magnitude of the risk. Maybe! I just wanted to explain my behavior over the past few months. I am in a rough place trying to be open and predictable for the Elm community and trying to do what's best for Elm in terms of narrative. Please be kind to me, this project, and this community!

About 0.17

I am currently preparing a bunch of resources updated for 0.17. Not everything is done, but they are close enough. I recommend you read them in this order:

Installing 0.17

I have made installers for mac and windows. Run the installer and it should take precedence over 0.16. Run the 0.16 installer and it should take precedence back.

I have made a tarball of binaries for linux. Just untar it and add the executables to your PATH ahead of your existing Elm stuff.

If you can go this route, I'd like to know if you run into any problems. It would be best to catch any platform specific problems before the release!

Note: One person has reported that they needed to delete ~/.elm/ to get things working. Please let us know if this is true for you as well.

Remaining Work

Here are the things I still need to do:

  • Write the 0.17 announcement
  • Get Graphics.* working in evancz/graphics
  • Add back laziness primitives to elm-lang/html
  • Continue improving the gitbook (basically, lots of existing docs are moving to a different format and I'm adding stuff that has been on the back burner for a while)

I will be working on these things over the next week or two. Nothing is too hard, just need to churn through it on my own.

In particular, I think the 0.17 announcement will clarify the overall vision here and go into some details that may not be super clear based on the docs yet.

Covering the Web Platform

I outlined the overall goals for covering more of the web platform in this post. Currently 0.17 covers the following stuff:

I focused on these three to try to develop a nice pattern for web platform libraries. This is how subscriptions came to be in the first place. I expect to add libraries for mouse, keyboard, and history in the next few weeks. They are all pretty simple.

The entire web platform is not really that much stuff when you look at it seriously. So I think the healthiest thing for Elm is to have all web platform libraries live in the @elm-lang organization on GitHub. As I have said before, I do not expect to be compiling to JavaScript forever, so it is worthwhile to minimize the interface between Elm and JS as much as possible. I know some people are eager to help with creating these web platform libraries. Please give me some time to develop a coherent process for making sure a desire to help can also translate into great results. Doing a release is complex, and some things need to happen afterwards.

About Feedback

I am curious to get your feedback after you have read all the links I provided and made something with 0.17.

There is a lot going on here. Some of it seems scary if you do not know the whole story yet. For example, it seems crazy that there is not a signal library anymore. How can that be?! But when you see how everything fits together in 0.17, it becomes pretty obvious that this is a better world. It means my thesis now has very little to do with Elm, which is sad for me, but ultimately not that big a deal if it means Elm is a better and simpler language.

Also, please try to be friendly and positive in your discussions with me. Like, if you can frame things as a question (not a demand or statement) I would really appreciate that.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment