Fabulously-Optimized / fabulously-optimized

A simple Minecraft modpack focusing on performance and graphics enhancements.
https://download.fo
BSD 3-Clause "New" or "Revised" License
955 stars 86 forks source link

Quilt Loader impacts #257

Open Madis0 opened 2 years ago

Madis0 commented 2 years ago

TL;DR: Fabulously Optimized will not move to Quilt soon, but it is something that has to be considered long-term if it becomes widespread.


Here is a FAQ of why Quilt matters to Fabulously Optimized, and what has to be done to accommodate it.

What is Quilt? The site describes it as

The Quilt project is an open-source, community-driven modding toolchain designed primarily for Minecraft. By focusing on speed, ease of use and modularity, Quilt aims to provide a sleek and modern modding toolchain with an open ecosystem.

...but it is essentially a fork of Fabric Loader and API because of conflicts within its management team.

Why does it matter? Because some current Fabric mod devs are planning to move over to it, dropping support for Fabric altogether. And others, well, aren't. Who knows, how many mods will be affected in the long term.

When does it matter? Possibly when more launchers and Curseforge supports it.

The first beta released on 2022-04-20 and Modrinth had the mod listing support from the start. Then some launchers followed, and... will see.

Can Quilt load Fabric mods?

In most cases, yes. As Quilt is a fork, most Fabric mods should be compatible with Quilt initially – but this may not be the case forever.

Can Fabric load Quilt mods?

No. Quilt mods are distinct from Fabric mods, and not defined in the same way.

Can I install Fabulously Optimized and replace Fabric with Quilt now? Probably, while Fabric mods are still supported in it, but do not ask for support regarding that.

How long will backwards compatibility for loading Fabric mods last?

Quilt will likely continue to support Fabric mods directly for quite some time – at least until Quilt is properly established. However, at that point, we do plan on dropping first-party support for Fabric mods – although, there’s no reason the community can’t continue to maintain that support, and we’ll provide the required resources if someone else decides to continue that part of the project after we stop maintaining it.

So what if Fabulously Optimized wants to move to Quilt?

The mod list issue? Edit: read this comment for an update

~Quilt, similar to Forge, is using a system where a list of all used mods must be sent to the server. That means the server can see all mods you use and disallow you if you are not using the mods server allows (regardless of whether the mods you use provide the same features or not).~ ~Fabulously Optimized deems that as an invasion of users' privacy and freedom. No one should be banned because they use "too many mods" or "not the right zoom mod". The servers can already ban any cheaters or rule disobeyers with existing, heuristical plugins, they do not need to see the names of the client mods for that (nor do the cheat mods announce themselves anyway). Quilt has said there will be no configuration or opt-out for that system, so one must hope there will be an external mod that can opt this out.~

So what if Fabulously Optimized will stay on Fabric?

What about both? Maintaining two modpacks is too much for me.


Sources:

Kichura commented 2 years ago

Replying to this as it seems relevant to my personal needs:

  1. The privacy context is the top priority and that i do not wish for everyone to be affected by a blocking-wall in a sense that for example being that you are only allowed to use sodium instead of optifabric / canvas renderer due to the server owner choosing this type of path instead of letting the user decide on what they want to use in this respect,

    and while i do recognize that this would reduce cheaters to a minimium - this would in turn cause server owners/quilt developers have to whitelist/blacklist multiple mods in hopes this would be effective which...unfortunately isn't. it would in fact make things worse for novice/experienced modders as they must obey on what the server owners want people to use. (malicious or not)

  2. The compatibility mode is helpful so that mod developers have more time to decide on rather they wanna make the jump to quilt in it's entirety or not as it is considered fair similar to forge -> fabric jumping. Although i am not sure on how many developers are considering this as some of them haven't seen this yet or just aren't ready for it due to burnouts and all that - but i assume documentations could help this a bit but who knows?

  3. I am looking forward to the beta obviously. although with the two things i have discussed along with madis; this would be considered questionable in some ways as i cannot be sure on how well the migration will turn out - even if i decline it; i just cannot guarantee the final result(s) of it.

surfaceflinger commented 2 years ago

Privacy issues can be easily resolved by adding a mod that would make the client look like vanilla. Wurst already has this as a module, but not standalone + it would create the same concerns as their zoom mod.

Kichura commented 2 years ago

Privacy issues can be easily resolved by adding a mod that would make the client look like vanilla. Wurst already has this as a module, but not standalone + it would create the same concerns as their zoom mod.

Well the main problem with this is that people can still figure out what your client is regardless of brand name so this won't change anything - it needs a more prior approach when trying to reduce exposure.

TiboOpGithub commented 2 years ago

Privacy issues can be easily resolved by adding a mod that would make the client look like vanilla. Wurst already has this as a module, but not standalone + it would create the same concerns as their zoom mod.

Well the main problem with this is that people can still figure out what your client is regardless of brand name so this won't change anything - it needs a more prior approach when trying to reduce exposure.

The problem isn't that they see you using quilt (I think) but as long as you can make sure the server doesn't see all your mods by having a mod it seems like a good solution.

maximumpower55 commented 2 years ago

As a quilt dev... I Just want to add something quickly here about the common assumptions about the modlist sending in quilt, it will not be in the loader, it will be in the qsl networking module and i highly doubt any mods in FO right now use the networking module from at least fabric.

Madis0 commented 2 years ago

As a quilt dev... I Just want to add something quickly here about the common assumptions about the modlist sending in quilt, it will not be in the loader, it will be in the qsl networking module and i highly doubt any mods in FO right now use the networking module from at least fabric.

Alright, but if any single mod uses that, the module still sends the entire modlist, right?

maximumpower55 commented 2 years ago

As a quilt dev... I Just want to add something quickly here about the common assumptions about the modlist sending in quilt, it will not be in the loader, it will be in the qsl networking module and i highly doubt any mods in FO right now use the networking module from at least fabric.

Alright, but if any single mod uses that, the module still sends the entire modlist, right?

Yes.

maximumpower55 commented 2 years ago

Instead of just adding reactions to my comment i think it would be better for you to actually join the quilt discord to have a good ol' chat since github issues is not a good place to explain this, https://discord.quiltmc.org/.

maximumpower55 commented 2 years ago

Also you will be fully able to patch this out

maximumpower55 commented 2 years ago

Fabulously Optimized deems that as an invasion of users' privacy and freedom. No one should be banned because they use "too many mods" or "not the right zoom mod". The servers can already ban any cheaters or rule disobeyers with existing, heuristical plugins, they do not need to see the names of the client mods for that (nor do the cheat mods announce themselves anyway). Quilt has said there will be no configuration or opt-out for that system, so one must hope there will be an external mod that can opt this out.

This isn't meant to be a anticheat, also if the server doesn't allow you to use like a zoom mod for a example just don't play on that server

maximumpower55 commented 2 years ago

Also this might be a bit off topic, but forge does this exact same thing and no body seems to care about that

Madis0 commented 2 years ago

@maximumpower55

Instead of just adding reactions to my comment i think it would be better for you to actually join the quilt discord to have a good ol' chat since github issues is not a good place to explain this, https://discord.quiltmc.org/.

I did it last year, it initiated a long discussion: https://discord.com/channels/817576132726620200/847158608524345394/857245880466145280 The result was: https://discord.com/channels/817576132726620200/847158608524345394/857601674167975966

Feel free to ping me there if you want to add anything to that discussion.

Also this might be a bit off topic, but forge does this exact same thing and no body seems to care about that

[sarcasm]

Indeed I don't care about that as

[/sarcasm]

...but that's not the point. People want an alternative to Optifine and I provide that.

I do my best to choose the best mods but I know that if someone would get a feature nerfed on a server (or maybe the server not liking the mod list altogether), they will want to or be forced to return to said Optifine. And that behavior is unhealthy for the entire modding community - getting blamed just because you're using the wrong thing, not because you broke any rules with that thing.

gdude2002 commented 2 years ago

Hello! Quilt community manager here.

I just woke up so this may not be the most fantastic of responses, apologies.

The mod list packet is not designed to be an anti-cheat solution. Quilt will not be providing any mechanism to filter users based on it, nor will it be taking steps to make it difficult to patch out. As mentioned earlier, it will be part of the QSL networking module and, as it's a standard plugin channel packet, will require the server to be listening for it before sending anything.

The main reason the packet exists is to ease moderation in Quilt community spaces where the intention of a mod developer is ambiguous. It was a response to the long-winded issue about how to define cheat/utility mods - for grey-area mods, this will give us a yardstick to figure out whether the mod developer intends for their mod to be used on servers that do not want their mod to be used there.

Most of us completely agree that this isn't an ideal solution, and we'd love to get some suggestions on better approaches. That said, it's been an awful long time now, and we haven't really seen anything reasonable other than "screw what you need, remove it". Ultimately, we accept that some servers do not have competent or reasonable staff members, and that is the main drawback - but I also personally believe this is possible to mitigate with a good community solution to blacklisting categories of mods, rather than forcing server owners to do it themselves (although, as mentioned before, Quilt as an org will not be providing ways to action these packets).

Essentially:

I think that's about all for now - I am unlikely to reply to this issue for a while since I have a pile of stuff to do before the beta on the 20th, but I do appreciate people's concerns here and would love to see a better solution to this problem post-beta. Feel free to hit me up on Discord if needed.

Madis0 commented 2 years ago

@gdude2002 Thanks for the reply. In my opinion, a reasonable solution would be to broadcast only the mods that use said networking API instead of all mods the client has. Because obviously the server needs to communicate with the mods that network and this would preserve the privacy of mods that do not network at all or use a different method (like a different API).

gdude2002 commented 2 years ago

@gdude2002 Thanks for the reply. In my opinion, a reasonable solution would be to broadcast only the mods that use said networking API instead of all mods the client has. Because obviously the server needs to communicate with the mods that network and this would preserve the privacy of mods that do not network at all or use a different method (like a different API).

That's an interesting solution - how would you go about denoting this?

Madis0 commented 2 years ago

Perhaps the API could provide a listener and all mods that register on it get their list sent at once?

gdude2002 commented 2 years ago

Doesn't that just make it opt-in? Kinda defeats the point

TheMadHau5 commented 2 years ago

It doesn't really help against "grey-area" mods either.

A common pattern in 1.8 cheats was to co-opt a well known "good" mod (say, keypress or cps mods) and then patch it with cheat functionality and distribute that. This system (like Forge's) is completely ineffective to that.

Madis0 commented 2 years ago

Doesn't that just make it opt-in? Kinda defeats the point

Hmm no, I meant like if they want to use the abilities of the API, they must notify the API of their presence first and then the API records that and provides the methods. Like instantiating a class, though that's a bit different concept.

gdude2002 commented 2 years ago

I feel like this wouldn't work out for a number of reasons:

  1. It'd make the API surface incompatible and generally worse
  2. Most of the grey-area mods I'm thinking of wouldn't be using the networking API in the first place

Either way, probs better to have this discussion in a Quilt space - I'm not a Quilt dev (the Community Team is completely separate) and I doubt most of the devs are aware of this thread

gdude2002 commented 2 years ago

It doesn't really help against "grey-area" mods either.

A common pattern in 1.8 cheats was to co-opt a well known "good" mod (say, keypress or cps mods) and then patch it with cheat functionality and distribute that. This system (like Forge's) is completely ineffective to that.

This isn't an anti-cheat! This is about moderation issues in Quilt spaces. I've said that a couple times.

Madis0 commented 2 years ago

@gdude2002

Either way, probs better to have this discussion in a Quilt space - I'm not a Quilt dev (the Community Team is completely separate) and I doubt most of the devs are aware of this thread

Could you refer to the most appropriate place for this discussion (e.g. specific thread in Quilt's discord)? Don't really want to post in the wrong place and get an answer "this has been discussed already".

gdude2002 commented 2 years ago

Probably the best thing to do is make a thread on the toolchain server entitled "modid list alternatives" or something like that, in #qsl-general

RaptaG commented 2 years ago

https://github.com/PolyMC/PolyMC/issues/406 Support from PolyMC (?)

gdude2002 commented 2 years ago

We've confirmed support in both ATLauncher and PolyMC so far, yes.

LambdAurora commented 2 years ago

@gdude2002 Thanks for the reply. In my opinion, a reasonable solution would be to broadcast only the mods that use said networking API instead of all mods the client has. Because obviously the server needs to communicate with the mods that network and this would preserve the privacy of mods that do not network at all or use a different method (like a different API).

Spoiler alert, this is standard Vanilla protocol... At the time it was called Plugin Channel, but the idea is every custom packets that are defined there have an identifier, meaning that if a mod uses the networking API for a packet you'll have a channel with the mod id as the namespace.

Madis0 commented 2 years ago

@LambdAurora

Spoiler alert, this is standard Vanilla protocol... At the time it was called Plugin Channel, but the idea is every custom packets that are defined there have an identifier, meaning that if a mod uses the networking API for a packet you'll have a channel with the mod id as the namespace.

So why won't Quilt use it? Or maybe I'm misunderstanding your point.

gdude2002 commented 2 years ago

I think the point was that your solution isn't really any better than what vanilla already offers - the idea exists because that wasn't enough on its own.

Julienraptor01 commented 2 years ago

I don't understand why quilt has to add that if fabric can work without it.

gdude2002 commented 2 years ago

Considering it was about moderation concerns and Fabric has minimal moderation at best, that's not really much of a statement haha

Julienraptor01 commented 2 years ago

Moderation ? Didn't you sayed that the mod list wasn't to do anti-cheats ?

gdude2002 commented 2 years ago

I fully explained this above, and yes, I did indeed say that. Please take another read, I'm not explaining it twice in the same issue.

gdude2002 commented 2 years ago

I figured I'd update this issue with a few new data points now that Quilt is in beta.

TheGlitch76 commented 2 years ago

Quilt has said there will be no configuration or opt-out for that system, so one must hope there will be an external mod that can opt this out.

Hi, QSL Core dev here. The main problem is with individual mods opting out of being part of the mod sync list, not users being unable to disable it entirely. I can't speak officially for the approach the team will decide on, but it is extremely unlikely that we will not provide some way to disable it fully, if it is the solution we go for.

It is up to the server you are connecting to whether or not to accept users with the mod list syncing disabled--same as Forge servers today.

Madis0 commented 2 years ago

There are now talks that the modlist idea may be scrapped as the feature flags could be sufficient for Quilt moderation purposes. As the RFC has not been merged, no final decision has been made yet.

Simplest way to explain feature flags is that the mod defines points of communication and if the server sends specific data, it changes the settings appropriately on the client. For example, a minimap that has server-side toggles to disable radar and caves and respects the server's choice when the server requests those toggles to be off.

I'd say that is a fair approach and it is already being used in various mod loaders for a while, as it's something both the client's mod and the server's mod have to opt into.

Sources (long conversations):

Madis0 commented 2 years ago

Curseforge supports marking mods as Quilt now. Didn't yet check if the modpacks in their launcher are supported as well. Edit: no https://twitter.com/CurseForge/status/1529766591403118598

gdude2002 commented 2 years ago

The tweet points out that there's no launcher support yet - they're still figuring that out.

osfanbuff63 commented 2 years ago

Can Quilt load Fabric mods?

In most cases, yes. As Quilt is a fork, most Fabric mods should be compatible with Quilt initially – but this may not be the case forever.

From SpyglassMC/Spyglass#957:

@osfanbuff63 Quilt when reaching full release will have full support for Fabric mods. The point of [eventually] porting the mod is to support & utilize the more healthy ecosystem. ie. You would be able to use all of your Fabric mods alongside before they are ported.

Madis0 commented 2 years ago

https://www.curseforge.com/minecraft/mc-mods/jumpquilt is now a thing, for what it's worth.

LoganDark commented 2 years ago

Personally, I wouldn't like to see a move to quilt. It's a shame that a few mods are moving away, but that's their decision. I suppose the ideal scenario would be two modpacks, one for pure Fabric and one utilizing the quilt backwards-compatibility, allowing users to pick which one they prefer. If one day you decide to drop Fabric support altogether you will be leaving a lot of people behind.

I don't have an objective view of the situation (unfortunately) so I can't make any statements about the relation between the two loaders. If there's a neutral resource I could draw from I don't know about it.

gdude2002 commented 2 years ago

Oh hey Logan, been a while since I've seen you around.

I think the best way to come to an opinion is via your own experience, personally. While it's impossible to deny (in good faith) that what happened at Fabric happened, it's worth noting that Quilt doesn't define itself as "an opponent", rather that it tries to be an improvement by serving as the final nuclear option that nobody really wanted to take.

Why not hang out on Discord and see for yourself whether you're a fan of the concept or not?

LoganDark commented 2 years ago

Oh hey Logan, been a while since I've seen you around.

If I understand correctly you transitioned to the Quilt spaces which I am very explicitly not a part of. Though with that said I've also been inactive Fabric-wise for the past year or so.

I think the best way to come to an opinion is via your own experience, personally.

I am very biased and have an incomplete view of the situation so please take all this with a grain of salt:

So my personal view of Quilt is "unnecessary" and "unfortunate", and therefore "to be avoided"... which is almost certainly not a very good opinion to have, but still one that at least some others seem to share (to a certain extent).

Why not hang out on Discord and see for yourself whether you're a fan of the concept or not?

It's difficult for me to justify that. I've never had any issues with the official Fabric community spaces. Plus there's personal stuff happening right now that means I won't be on Discord until September 12th.

I know this isn't the place to discuss all the Quilt drama but I just thought I'd give you a little more insight.

gdude2002 commented 2 years ago

If I understand correctly you transitioned to the Quilt spaces which I am very explicitly not a part of. Though with that said I've also been inactive Fabric-wise for the past year or so.

Indeed I did, I'm a Community Manager there now - I was headhunted by the initial planning group a few months in, though not before being banned from Fabric spaces for something someone else did and that I wasn't involved in (along with at least one other who were similarly uninvolved). I am on around 180 Discord servers though, so I tend to see modders all over the place.

While ultimately people's reasons for moving to Quilt are of course personal and their own, calling Quilt a major overreaction ignores the months of issues that affected the LGBT community (and to some extend the plural community) members that were using Fabric's spaces at the time, as well as the blatant disregard of the meaning of "community project", something Fabric still (dishonestly in my opinion) uses to describe itself.

Indeed, some of the issues people have complained about continue to happen

Anyway, super appreciate you being honest, and I hope your first steps as a plural system go well - Quilt is extremely supportive of both LGBT people and plural systems, and there's a lot of people (systems and not) there that would be happy to help you out if you need support!

On Thu 4 Aug 2022, 14:19 LoganDark, @.***> wrote:

Oh hey Logan, been a while since I've seen you around.

If I understand correctly you transitioned to the Quilt spaces which I am very explicitly not a part of. Though with that said I've also been inactive Fabric-wise for the past year or so.

I think the best way to come to an opinion is via your own experience, personally.

I am very biased and have an incomplete view of the situation so please take all this with a grain of salt:

  • I wasn't there for what happened at Fabric
  • I don't see anything wrong with Player or how they treated the situation following the incident (but, again, difficult to find neutral sources on that)
  • I think Quilt was a major overreaction and Fabric is still very technically impressive regardless of blips in the community spaces
  • I think Quilt's efforts to diverge and create incompatibilities with Fabric could have been avoided
  • I think it's too late to go back now

Why not hang out on Discord and see for yourself whether you're a fan of the concept or not?

It's difficult for me to justify that. I've never had any issues with the official Fabric community spaces. Plus there's personal stuff https://morethanone.info happening right now that means I won't be on Discord until September 12th.

I know this isn't the place to discuss all the Quilt drama but I just thought I'd give you a little more insight.

— Reply to this email directly, view it on GitHub https://github.com/Fabulously-Optimized/fabulously-optimized/issues/257#issuecomment-1205247043, or unsubscribe https://github.com/notifications/unsubscribe-auth/AABR26NE2KRLEZPYYTVJMSDVXO7OJANCNFSM5QQASYLQ . You are receiving this because you were mentioned.Message ID: @.*** com>

LoganDark commented 2 years ago

your first steps as a plural system

Slight correction: I've been this way for over 3 years now, it's just that someone only showed me that website a few weeks ago, so I had no idea what it was called or that it was supposedly not too uncommon. That's why I link it whenever it's at all possible to do so; it's an important resource for people to know about. :)

gdude2002 commented 2 years ago

Oh cool, sounds like you're finding your way now either way though!

I agree, it's a fantastic resource, I'd also recommend familiarising yourself with PluralKit when you return to Discord if you haven't already - it's been invaluable for the systems at Quilt. You probably knew about it already though, haha

Anyway this isn't really the place for this chat I guess - feel free to hit me up on twitter or discord if you feel like it, and I hope things go well \o/

On Thu 4 Aug 2022, 14:40 LoganDark, @.***> wrote:

your first steps as a plural system

Slight correction: I've been this way for over 3 years now, it's just that someone only sent the link to that website a few weeks ago, so I had no idea what it was called or that it was supposedly not too uncommon. That's why I link it whenever it's at all possible to do so; it's an important resource for people to know about. :)

— Reply to this email directly, view it on GitHub https://github.com/Fabulously-Optimized/fabulously-optimized/issues/257#issuecomment-1205274040, or unsubscribe https://github.com/notifications/unsubscribe-auth/AABR26P3RCK6XFPQA2W6NSTVXPB57ANCNFSM5QQASYLQ . You are receiving this because you were mentioned.Message ID: @.*** com>

coderbot16 commented 2 years ago

If one day you decide to drop Fabric support altogether you will be leaving a lot of people behind.

This outcome doesn't follow from what you wrote. As long as launchers support Quilt, and as long as all the existing mods work on Quilt, nobody will be left behind, because everyone installing the modpack will still be able to use it.

User preferences between Quilt and Fabric have little to no bearing here because using Quilt or Fabric is just an implementation detail of the modpack af the end of the day.

If mods that the modpack relies on or would like to add are Quilt only, then it follows that the modpack should switch to Quilt to ensure that the user experience is not compromised.

LoganDark commented 2 years ago

This outcome doesn't follow from what you wrote. As long as launchers support Quilt, and as long as all the existing mods work on Quilt, nobody will be left behind, because everyone installing the modpack will still be able to use it.

It's not because of technical limitations that I said that. There are users who do not use Quilt for other reasons, like myself. Those are the people who would get left behind by such a migration.

coderbot16 commented 2 years ago

I don't think there's evidence to conclude that these users make up a meaningful proportion of FO's userbase or contributors, so I don't think project decision making should be constrained by them.

The decision of whether to use Fabric or Quilt for FO should be done based on the relative technical merits of both, since those are what ultimately impact the user experience. While Fabric seems to be the better option currently, it's likely that Quilt will be a better option as it matures and gains support from all popular launchers, hence the creation of this issue.

Madis0 commented 2 years ago

Coderbot said it well, and just to reiterate that this is the official stance, I'll repeat:

I am interested in moving over to Quilt only when it is technically the only feasible way forward, aka only when most (or most important) mods do it. I do not want to do it for "community reasons" for either loader, because ultimately I view both as just tools.

I hope that clarifies it for people who downvoted the OP as well.

coderbot16 commented 1 year ago

LambdaBetterGrass has moved over to Quilt in the 1.19.3 update since it was infeasible to port the mod to 1.19.3 without utilizing the APIs that Quilt provides related to resource reloading. As a result, I think it's now worth evaluating whether a move to a Quilt-based modpack that uses JumpQuilt on CurseForge is worthwhile.

In my experience, the original JumpLoader (for Fabric) only really caused one big issue, which was a resource loading bug that was caused by fragile code I originally wrote for Fabric API. Needless to say, that problem wouldn't be relevant for JumpQuilt, so I think it would be worth doing a feasibility test of FO on Quilt rather than potentially wasting time replacing or porting a dependency that already exists, which is the only other option.