scala-js / scala-js-dom

Statically typed DOM API for Scala.js
Other
318 stars 162 forks source link

Release v2.0.0 #595

Closed armanbilge closed 3 years ago

armanbilge commented 3 years ago

We're right at the finish line! The outstanding PRs are:

The only other issues in the 2.0.0 milestone are internal and don't have binary or source compatibility implications, so I don't think we should block on those.

Is there anything else?

I don't mean to be impatient or pushy, there's no real rush of course. But speaking personally I'll be very happy to have this weight off my shoulders and see all of our efforts come to fruition. And importantly start the process of propagating this change through the ecosystem.

armanbilge commented 3 years ago

I've set a (tentative) due date on the milestone for next week.

sjrd commented 3 years ago

FYI, I will be on vacation the week of October 25. I don't think you'll need me for the release at all, but just in case. ;)

armanbilge commented 3 years ago

Well I did goof it up once before 😳 thanks for letting me know. In theory we can release anytime this week (all the aforementioned PRs are ready), I am hopeful David will chime in with his blessings/objections :)

japgolly commented 3 years ago

Hello. Sounds great, let's get this release out. My only contribution to the plan is that I think it'd be a good idea to do an RC first. One reason is that the new release process is still new, another reason is that I'd love to try it in a big app, make sure everything works as expected and all tests pass, so that if there are any mistakes we've made, hopefully we catch them in time before locking ourselves into bincompat for the entire 2.x series. Actually it might be a good idea to let the community do the same.

armanbilge commented 3 years ago

Thanks for chiming in! Hope all is well ❤️

Yes, I think doing an RC is not a bad idea. Actually we've been publishing snapshots all along so I was planning to try PRing laminar against one of those snapshots. But an RC works too :)

I'd be shocked if there aren't any mistakes, but I would be surprised if there is a mistake with bincompat implications.

armanbilge commented 3 years ago

FWIW, what I'm most concerned about re binary compatibility, is making sure we loudly communicate that downstreams should remove the for3use213 from their build configs. Because it is far too easy to merge a Scala Steward update to SJS-dom v2 without paying attention to this. And this would have as bad binary compatibility implications just as if we just published SJS-dom v1 for Scala 3.

japgolly commented 3 years ago

Yeah very good point! Maybe a big bold instruction at the top of the release notes?

Thanks for chiming in! Hope all is well

Thank you! Unfortunately it's just bad news after bad news. Funny thing is that I have unrelated appt next month that about something that could be cancer which, I think at this point I'd just laugh and say ggs. I'll probably be fine eventually though. Unfortunately for my OSS contributions I might be a bit randomly flakey for a while. I am sorry about that but not much I can do. Looks like you've been doing awesome work so as both a co-contributor and as an end-user, thank you!!

armanbilge commented 3 years ago

I am so sorry to hear that 😢 I certainly don't want to pile on, and hope that I haven't by pushing for this release. Just let me know.

japgolly commented 3 years ago

Oh my bad, no, no, not at all. Nothing like that :) When I have a bit of capacity I like to pop in and do what I can. No pressure :)

armanbilge commented 3 years ago

Anything else? Should we cut an RC?

armanbilge commented 3 years ago

I just tried building raquo/scala-dom-types against 8a2d8f6c. It was ... extremely easy. Didn't have to make any changes or even get any deprecation warnings, because it was already using the dom.* aliases defined in v1.

japgolly commented 3 years ago

Should we cut an RC?

Yeah let's do it! In fact, I'll do it now...

armanbilge commented 3 years ago

Nice! I am currently looking through SJS-dom's downstream dependencies to try and figure out what important projects to help along with a PR.

https://mvnrepository.com/artifact/org.scala-js/scalajs-dom/usages

armanbilge commented 3 years ago

Downstreams to test with RC:

japgolly commented 3 years ago

Alright cutting RC1....

armanbilge commented 3 years ago

We're on central: https://repo1.maven.org/maven2/org/scala-js/scalajs-dom_sjs1_2.13/2.0.0-RC1/

armanbilge commented 3 years ago

I've PRed the RC to all the projects listed above. Anything with a checkmark is confirmed to pass CI (the rest seemed to work locally but are waiting for CI approval to run). So that seems good.

OTOH, it is concerning that scalajs-react is still getting the same error:

exception caught when loading module class dom: package org.scalajs.dom contains object and package with same name: raw

https://github.com/japgolly/scalajs-react/runs/3945795061#step:4:7584

armanbilge commented 3 years ago

Nice, looks like scalajs-react merged in the RC 🎉 Can we promote to 2.0.0 final?

armanbilge commented 3 years ago

I drafted release notes including a brief migration guide, any feedback appreciated: https://github.com/scala-js/scala-js-dom/releases/tag/untagged-49373abfe3b367bc7f89

sjrd commented 3 years ago

Somme suggestions:

-It is published for Scala 2.11, 2.12, 2.13, and 3.0 against Scala.js 1.5.
+It is published for Scala 2.11, 2.12, 2.13, and 3.0+ with Scala.js 1.5+.

Those +es are important because users need to understand that 3.x and 1.x will stay backward binary compatible, and that therefore they can use any newer version.

-scala-js-dom v2.0.0 is entirely source-compatible with v1.2.0, besides some corrections to facades and many new deprecation warnings.
+scala-js-dom v2.0.0 is source-compatible to a great extent with v1.2.0, besides some corrections to facades and many new deprecation warnings.

You can't say "entirely" and "besides" in the same sentence without sounding contradictory. Also it's best never to make any promise of source compatibility, because there can always be a corner case that breaks.

Example migration

Great :)

armanbilge commented 3 years ago

Thanks @sjrd! :)

japgolly commented 3 years ago

Nice, looks like scalajs-react merged in the RC :tada: Can we promote to 2.0.0 final?

Nah, scalajs-react isn't much of a test, I wanna upgrade this in a big app before we lock in bincompat

japgolly commented 3 years ago

Nice release notes!

japgolly commented 3 years ago

FYI I expect to be done with my testing within one more day, or maybe 1.5 days if problems. So far though, everything's looking good. :tada:

I did notice one small issue. DragEffect was moved to .dom but there wasn't a deprecated alias. I thought there might be some more too and spent a little time trying to work it out, but decided to stop because it'll take more time than I have, and possibly than its worth. Such are the sad realities of working on OSS for free but if you can think of a good-enough, fast-enough way of checking what else we missed, go for it :)

japgolly commented 3 years ago

615 is a blocker, else we'd be locked into bincompat of ReadyState being only applicable to MediaSource.

armanbilge commented 3 years ago

I thought there might be some more too and spent a little time trying to work it out, but decided to stop because it'll take more time than I have, and possibly than its worth.

I'm sure there are at least a few these. Apologies, since I did a bunch of the migrating so they're probably all of my screw-ups. The community will run into some of these, and either fix and move on, ignore and don't upgrade, or complain in which case we can patch 😆

japgolly commented 3 years ago

FYI: Added a little migration helper script that I used to the release notes (same as I do for scalajs-react releases those who follow that). It obviously won't do everything but it's a nice ~80% reward for ~20% effort.

armanbilge commented 3 years ago

Cool! You added this where? 😀

japgolly commented 3 years ago

The draft release page for 2.0.0

japgolly commented 3 years ago

Alrighty, those two PRs are my last. After they're merged, we're good go from my side. :rocket: :rocket: :rocket:

armanbilge commented 3 years ago

Thanks to you for testing so thoroughly!!

armanbilge commented 3 years ago

I updated the release notes with the latest PRs. We're 🚀 for me too.

japgolly commented 3 years ago

....and we're ready to go! I did the last release, you should have the honour this time. I know it's just a tag and push but it's symbolic :)

Dude, thanks so much for all your effort in getting to this point! Really appreciate it. It's been tiring work we had to slog through, but it's been a pleasure doing it together!

How nice it's going to be not having this release on our shoulders, hehe.

armanbilge commented 3 years ago

I did the last release, you should have the honour this time.

Well that's only cause I buggered it up 😆

Dude, thanks so much for all your effort in getting to this point! Really appreciate it. It's been tiring work we had to slog through, but it's been a pleasure doing it together!

Same to you! Been such a pleasure working with you, so bittersweet now that things are going to calm down a bit here. Maybe we'll intersect on some other projects elsewhere :)

How nice it's going to be not having this release on our shoulders, hehe.

THIS. Also hope you find lots of time to relax and get better ❤️ really appreciate the push here this week to get this out.

armanbilge commented 3 years ago

Tagged and publishing. @japgolly do you mind doing Twitter/Reddit comms like last time? I'll cover the rest.

armanbilge commented 3 years ago

We're on central! https://repo1.maven.org/maven2/org/scala-js/scalajs-dom_sjs1_2.13/2.0.0/

japgolly commented 3 years ago

Alright! Shared on Twitter and Reddit.

Same to you! Been such a pleasure working with you, so bittersweet now that things are going to calm down a bit here. Maybe we'll intersect on some other projects elsewhere :) Also hope you find lots of time to relax and get better :heart: really appreciate the push here this week to get this out.

And yeah absolutely, and on that note, thanks for putting up with a few side-effects like me forgetting everything on earth. I'm a bit embarrassed that so much of our collaboration has overlapped with me being at the bottom of my game but we did get through it well enough. Look forward to hopefully working with you again some day! Take care mate!