Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR switches FML to use Fabric Mixin instead of Sponge's.
Background
Mixin's last release was in December 2021, and until 2 months ago it saw no public commits. In late January, a 0.8.6 snapshot was pushed, but it has several issues and missing features (an injection point was broken, and the new mixin source feature isn't actually used), and we have seen no progress on fixing them.
Mixin has never shown a desire to bring on more than its current one maintainer (who has little time available), and PRs don't end up being merged for the same time reason. Moreover, our communication with the Mixin maintainer is horrendous, not only because there are few channels of communication (they use a Discord IRC bridge that only shows them 2 channels from our Discord server), but also because we have been pinging them constantly with no reply in weeks, and it has been that way for years.
Additionally, we have also promised in our 2023 end-of-year blog post to look into alternatives. It's been 2 months, it's about time.
The Fabric fork
Fabric has their own fork of Mixin, which has several features that "stock" mixin doesn't provide (although some are provided in the new snapshot, but they either cause other issues, or are simply not fully implemented):
Using the fork comes with no penalty for us, as we can proxy their maven and forever store their mixin artifacts, without allowing them to be changed.
Assuming Mixin will eventually have all of the features Fabric's mixin has, we can switch back to Sponge Mixin without causing any issues.
Testing
You can test that interface injections and mixin prefixing works by writing a mixin that mixes into a vanilla interface, and that throws an exception. The mod ID should show up in the stacktrace.
Testing previous behaviour
To test that Fabric's version of Mixin does not break intended Sponge Mixin behaviour, you can run with Mixin Booster in 1.20.1 packs
See Sinytra/Connector#383 too for more information.