Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Supplementaries forcefully modifies user configuration files to create false dependencies from Sodium #2303

Closed
jellysquid3 opened this issue Feb 1, 2024 · 16 comments
Assignees
Labels
A-mods Area: Mod compatibility E-external Closed: External issue P-high Priority: High
Milestone

Comments

@jellysquid3
Copy link
Member

jellysquid3 commented Feb 1, 2024

For some reason, Supplementaries has decided to modify the user's configuration files (specifically fabric_loader_dependencies.json) to trick Fabric Loader into thinking that Sodium has a dependency on Indium.

I'm not sure why this is being done, but it has the consequence of preventing the user from modifying the file while the mod is installed. This causes massive breakages as users can't specify their own override to make the latest versions of Sodium compatible with Indium, while we wait on an update from upstream.

We need to work with their developers to get this code disabled so that the breakages stop happening, or add a breaks for the problematic versions until it is resolved.

@jellysquid3 jellysquid3 self-assigned this Feb 1, 2024
@jellysquid3 jellysquid3 added P-high Priority: High E-external Closed: External issue A-mods Area: Mod compatibility labels Feb 1, 2024
@jellysquid3 jellysquid3 added this to the Sodium 0.5.8 milestone Feb 1, 2024
@jellysquid3
Copy link
Member Author

jellysquid3 commented Feb 1, 2024

Also, another interesting consequence of this code is that (at one point) installing Suppelementaries would have broken the user's installation of Sodium permanently, as Fabric will suddenly begin complaining that Indium is a dependency of Sodium... This would explain so many random user reports we've had with nonsensical dependency resolver errors.

jellysquid3 added a commit that referenced this issue Feb 1, 2024
Need to wait for a version bump from Supplementaries, this only marks existing and previous versions as incompatible.

See #2303
@jellysquid3
Copy link
Member Author

All past/current versions of Supplementaries have been marked as incompatible. The author needs to push an update which removes this functionality. Any newer version of Supplementaries will not match the version string, so if they bump the version, that will be enough to resolve it without our input.

@TelepathicGrunt

This comment was marked as abuse.

@douira
Copy link
Collaborator

douira commented Feb 1, 2024

I should note that https://modrinth.com/mod/no-indium exists as a tiny JiJ-able mod specifically to notify the user about missing Indium. Gymnastics with dependency overrides or whatever was happening there is and was never necessary. Further, enough users use Sodium without Indium-requiring mods such that always requiring Indium is unnecessary. I can assure you Caffeine gets plenty of bug reports from users not installing Indium when they have Sodium and other mods. If you have a look at our current milestones, you'll see that FRAPI implementation is on the roadmap and coming sooner rather than later.

@MehVahdJukaar
Copy link

So first of all apologies for the controversity, I knew adding that would have sparked some funni.

Anyways as said above that code isnt there anymore and was shortly lived.

Having said this I still stand by my stance in which I firmly believe that its not our duty to assure our mods work when others mods break them.
It should not be our duty to JIJ stuff in our mods or show warnings when the very loader we built our mods on is being compromised. We do have Fapi as a dependency afterall, that is our dependency, not Indium.

It should be Sodium responsibility to inform users that Indium is required for sodium to run properly in a modded environment (yes it is for most of users as most of them play with other mods that are very likely to use Fapi).
A warning message when some fapi call by other mods is detected would be all that is needed really.

@douira
Copy link
Collaborator

douira commented Feb 1, 2024

It's obviously entirely infeasible for Sodium to detect if some other mod is going to require Indium. Scanning all other mods' bytecode for FRAPI calls is a ridiculous. It would be easier if the mods using FRAPI simply declared that dependency by means of JiJ-ing no-indium. I don't make the executive decisions around here but I don't think you're going to get a resolution to this issue like this. If you don't want to warn the user about your mod requiring Indium because it uses FRAPI alongside Sodium as is the most common case, you'll have to wait for Sodium to implement FRAPI itself.

@MehVahdJukaar
Copy link

The specifics of how such a dependency detection should be handled shouldnt be of our concern. While that one you say might be unfeasible i'm sure there are others like intercapting api calls or just looking at the declared deps in the mod .json.

Regardless its something that its not up to us to "fix" by adding extra banners and JIJ stuff. I know thats easy to do but doing so would normalize such behavior of breaking other peoples mod and requiring them to fix or warn users about, and that is not acceptable for me.
Imagine if more mods were to do this, it would of course be detremental to everybody

@douira
Copy link
Collaborator

douira commented Feb 1, 2024

The situation is simply going to have to resolve itself when the FRAPI PR is implemented then. I don't expect any other measure to be added in the mean time.

@rilakuma123

This comment was marked as off-topic.

@douira

This comment was marked as off-topic.

@rilakuma123

This comment was marked as off-topic.

@coderbot16
Copy link
Contributor

@TelepathicGrunt that code replacing it is still problematic! Now it is overriding user configuration in the other direction preventing them from adding their own overrides on Sodium, which is what the problem reported above is. Unless you can point at a commit undoing that change, the bad behavior is still in current versions of the mod.

@jellysquid3
Copy link
Member Author

@TelepathicGrunt I'm guessing you didn't actually decompile the releases being published to see what they were doing.

image

Because the code is still there in the latest release (Supplementaries 1.20-2.7.32) which is causing the exact issue we described. The source code in the repository does not match the binaries.

@jellysquid3
Copy link
Member Author

Modders are absolutely sick of getting nonstop bug reports from Sodium because of Sodium breaking/not implementing FRAPI because users don't know that they also need Indium.

Having said this I still stand by my stance in which I firmly believe that its not our duty to assure our mods work when others mods break them.

I don't care how upset with me you are. Trashing user configuration files and deliberately preventing people from using other mods correctly is completely unacceptable. We don't go out of our way to break your mods -- It's just a matter of being one person, and not having the time to implement a gigantic API surface.

Other people are free at any point to contribute back to our project to see the issues you want fixed. You are receiving my code for free, and I'm doing the work normally allocated to teams. This is an open source project. At any point you could have taken the 30 seconds out of your life to ask how we could make this easier.

Oh, wait, you did ask!

image

And we gave the obvious and trivial answer that did not require vandalizing other people's installations.

@jellysquid3
Copy link
Member Author

The infuriating part is that I have actually been cooperative with you, and have been trying to upstream changes in other projects (#2298 and MehVahdJukaar/polytone#7 (comment)) to fix issues you are reporting. This is despite the fact that you repeatedly flame me at every opportunity, and talk constantly on your Discord server about how badly you want to break Sodium, and how much you think Sodium is a terrible mod.

@CaffeineMC CaffeineMC locked as resolved and limited conversation to collaborators Feb 1, 2024
@jellysquid3
Copy link
Member Author

We've solved the issue on our side, and if Supplementaries isn't updated to stop doing this, we will simply block all versions of the mod. Your behavior towards me is unacceptable and the post-hoc rationalizing in this thread about how it's somehow "justified" because you don't like what we're doing is absurd.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
A-mods Area: Mod compatibility E-external Closed: External issue P-high Priority: High
Projects
None yet
Development

No branches or pull requests

6 participants