3 ms·
That's what the "V2" signifies: a major, (potentially) breaking change. I'm not surprised nor upset that V2 is radically different. It's all in the versioning
by mbStavola 5y ago
That's what the "V2" signifies: a major, (potentially) breaking change.
I'm not surprised nor upset that V2 is radically different. It's all in the versioning scheme!
- buu700 5y agoEh. They're allowed to do that as per a literal definition of semver, but they turned it into a completely different tool with completely different usage patterns and use cases. It's one thing to have to make some small tweaks to handle an isolated breaking change in a dependency. It's another matter entirely to have a perfectly good core part of your stack deprecated out of the blue and told that you need to rewrite every line of code that it touches. I see this as analogous to the Angular 2 situation, except that Google actually did a good job maintaining Angular 1 (retroactively named "Angular.js") for a number of years afterwards and providing a solid migration path. Everyone who had staked their projects and businesses on the future of Angular 1 was understandably annoyed. All that being said, while I have problems with specifics of their approach, I actually think Yarn made the right call on this. After NPM caught up with v7, it became a bit of a wasted effort to have two redundant projects that were almost drop-in replacements for one another. Yarn staking out a different path at least justifies its continued existence. What I think could have been better is if they'd put an explicit acknowledgement in the migration docs that Yarn 2 wasn't going to be a good fit for all users of Yarn 1, and a recommendation of NPM 7 as an alternative successor to Yarn 1 for such users. An even nicer gesture would have been if they'd written an alternate migration doc for Yarn 1 -> NPM 7.
- e12e 5y agoIt's more than that. It broke working projects because v2 was opt-out, not opt-in. If they'd made a new tool/project called "yarn2", leaving "yarn" alone, that would've been fine.
- ojkelly 5y agoIt’s opt-in though? You install it into your repository, and it gets vendored. The yarn 1 binary on your machine will use yarn 2/3 if it’s in the repo, otherwise it will just run yarn 1 as normal.