Fabulously-Optimized / fabulously-optimized

A simple Minecraft modpack focusing on performance and graphics enhancements.
https://download.fo
BSD 3-Clause "New" or "Revised" License
882 stars 82 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:

Madis0 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.

I am currently still having a "wait-and-see" approach.

Maybe I'll consider it for 1.21 if the situation changes by then.

Edit: for more context and timelines, Fabric was released on 1.14, but modders started caring on 1.16.x (Sodium, FO) Quilt was released on 1.18.2, so it would make sense to see modders start caring on 1.20.x.

coderbot16 commented 1 year ago

The problem is that this approach leads to a circular outcome. There's not many quilt exclusive mods because platforms, modpacks, and other mods aren't quilt exclusive, and platforms and modpacks don't support quilt since there's not many quilt exclusive mods. So just keep that in mind when you directly work around Quilt mods as they start to move over, as it seems is happening with better grass.

Madis0 commented 1 year ago

I am not saying that Quilt should have more exclusive mods, in fact any kind of exclusivity is actually bad for the user.

What I'm saying is a natural progression of how Quilt could replace (or "replace") Fabric:

  1. First-class support by loaders and listings (if your mod supports Quilt, mark it as such!)
  2. Few devs that find Quilt tools as beneficial (performance/graphical mods) will move over
  3. Modpacks will see that Quilt is worth switching to
  4. Users will see that Quilt is worth switching to
  5. Mod devs will see that Quilt is worth developing to (whether exclusively or not is case-by-case)

In an ideal scenario, most mods will keep working on Fabric and Quilt as they won't use Quilt internals. But those that do could drive the force for the entire ecosystem, if they themselves are significant in it.

LambdAurora commented 1 year ago
  • As of now, being easier to port to did not actually mean it would be faster to actually do so. Still took two months to get it on 1.19.3. Note that I'm not blaming the dev or Mojang for anything, just stating the current state of things. Maybe there will be a bigger speed difference for 1.19.4/1.20/1.20.1 mods?

It took me two months because I shockingly have a uni life to attend.

1.19.3 wrecked atlases, model loading, and resource loader. Which are things LambdaBetterGrass heavily depend on. It would have taken me longer to port anything if I chose to stay on Fabric. Quilt provides me with the abstractions I need to work with virtual resource packs and with great integration within the game (this is good for both devs and users). I chose to not reinvent the (my own) wheel.

This also guarantees faster updates in the future even though it was not that visible in 1.19.3.

  • Currently the UX of using Quilt is still suboptimal. JumpQuilt is needed for CurseForge (please vote) and GDLauncher (to be implemented in their rewrite)

As far as I know it's a false issue, people had no issues working with JumpLoader for Fabric stuff back in the days. It also means stuff works despite the lack of support from CurseForge.

I am not saying that Quilt should have more exclusive mods, in fact any kind of exclusivity is actually bad for the user.

Depends on the case! In this case the LBG exclusivity is kind of good: some intended behavior was broken due to lack of support on Fabric. For example LBG's built-in default resource pack is intended to be enabled by default upon pack discovery if the pack was never seen before, this is not supported by Fabric but by Quilt. The mod also has now better support for resource loading features. Any optimization made on the abstraction will actually be applied to the mod as well and be good to the user. (And Quilt resource loader actually implements some optimization measures).

I'm getting a bit tired about the "exclusivity" debacle, it's not like Fabric which was incompatible with Forge mods, Quilt has compatibility with Fabric mods making the exclusivity argument kind of useless. Sure some mods don't work with Quilt but they're a minority, and usually have weird stuff associated to them, which would have broke in another context too at one point.

Madis0 commented 1 year ago

It took me two months because I shockingly have a uni life to attend.

1.19.3 wrecked atlases, model loading, and resource loader. Which are things LambdaBetterGrass heavily depend on. It would have taken me longer to port anything if I chose to stay on Fabric. Quilt provides me with the abstractions I need to work with virtual resource packs and with great integration within the game (this is good for both devs and users). I chose to not reinvent the (my own) wheel.

As I said, I'm not blaming you, any other mod devs or Mojang for it. I know what it means to rewrite code, I am a dev too. All I said was facts - it did not necessarily took less time to port it right now (from a user perspective). Maybe due to personal life, maybe due to the time when 1.19.3 was released (holidays), that's currently beside the point.

I understand the points you made about making it Quilt-exclusive and I do not blame you, personally, for it.

As far as I know it's a false issue, people had no issues working with JumpLoader for Fabric stuff back in the days.

Fabulously Optimized started out on it and the biggest problems were harder mod installing, somewhat slower install (Forge bloat) and startup. Are they dealbreakers? Not necessarily. Are they objectively worse UX compared to current state of things? Yes. CurseForge Launcher is still the most used and most impactful (download count, rewards for modders) launcher for this modpack, so these things must be considered.

I'm getting a bit tired about the "exclusivity" debacle, it's not like Fabric which was incompatible with Forge mods, Quilt has compatibility with Fabric mods making the exclusivity argument kind of useless. Sure some mods don't work with Quilt but they're a minority, and usually have weird stuff associated to them, which would have broke in another context too at one point.

Indeed, that is a better state of things. But I'm not quite fond of the idea that some devs promote: "move to Quilt, because it supports Fabric mods too".

So why move if Fabric also supports Fabric mods, has alternatives to mods that moved to Quilt-only, and is supported by every popular launcher already? Semi-rethorical question, please don't quote internal code structure benefits here. The goal is to think of that question from the user perspective.

Madis0 commented 1 year ago

Edit: these responses were made to a comment in between mine.


It's also worth noting that Iris is about to move to Quilt-recommended (but not required) and their installer will be installing Quilt instead of Fabric.

🤷 If there would be some Quilt-exclusive features that are too hard on Fabric, maybe that could be enticing.

Personally, I'm not against moving to Quilt, but it's quite a big change to make

Exactly. It's a big change, so it must not be done for the sake of it. Lots of preparation from all parties is needed to make it worthwhile, and I do not feel that it is an important change for FO in the near future. In the far future (1.21+), sure, possibly.

Another reminder that this is just a big loop as well.

I do not agree. Fabric vs Forge for example had faster loader updates for new MC versions, smaller and more flexible API (faster startup, smaller mods), and the mixin-based approach made it easier for modders to achieve more complex mods that used to be (near-)impossible.

What does Quilt have that any random user can see? The better error popup is a good example, but right now that's the only example I can think of.

Besides supporting modders, I can't understand from the bit that I've used CF Launcher how it's better than any other,

Well, it also has the best CurseForge integration in terms of installing modpacks, mods, resource packs. Whether it is the best overall though, is up to any user. All I'm saying is that it is important, because it is the default, just like Modrinth's launcher will be for Modrinth.

LambdAurora commented 1 year ago

We're June, and now I've seen the pretty disappointing treatment of mods that dare go Quilt only.

Rather than to look into JumpQuilt, which pre-Fabric supported modpacks did not have any issue to use its predecessor, I see a will to recreate, feature-incomplete versions of the mod to replace them in the pack.

So, I'd like to put back on the table a reconsideration of the current treatment of Quilt, especially that now QSL and Quilted Fabric API have finally a stable versioning since we consider the libraries to be stable enough.

Madis0 commented 1 year ago

We're June, and now I've seen the pretty disappointing treatment of mods that dare go Quilt only.

Rather than to look into JumpQuilt, which pre-Fabric supported modpacks did not have any issue to use its predecessor, I see a will to recreate, feature-incomplete versions of the mod to replace them in the pack.

I'd say you're looking at it from a wrong angle, which I'd draw a parallel to the new, currently more relevant event #626. Just because some mods are "jumping ship" does not mean there is yet a critical mass doing it.

I'll not switch to Quilt just because some mods switched over - for now that just means a minor inconvenience and a void to fill. But as with the aforementioned event, it already means that some smaller changes must be made (discontinuing GDL, changing MMC instructions etc), it is a good time to make bigger changes for my own behalf (https://github.com/Fabulously-Optimized/fabulously-optimized/issues/627), and a migration strategy to eventually exit CF could be considered.

I have considered accommodating Quilt by doing something like providing an overrides file similar to my Fabric one, though for the time being I don't really understand the syntax described there and didn't fully test it yet as it seemed to lack a feature or two I'm currently using.


Here's a summary of what I currently think of Quilt:

Here is a summary of what I'm currently doing:

Here's what you can do:

LambdAurora commented 1 year ago
  • CurseForge support of Quilt is there but still sucks. JumpQuilt is a thing but using it would not be an upgrade to users in terms of UX. CurseForge still has the majority (~60%+) of downloads for FO so this will not be ignored.

Overall I am definitely blaming CurseForge a lot more, everything feels like an uphill battle with them, except maybe when it comes to malware.

  • Adding mods to the pack is currently painful on all launchers - CF would suggest Forge mods and others would suggest a subset of Fabric mods. Solution would be to ask more devs to mark their mods as Quilt-compatible.

I have not noticed that many Fabric mods not marking their mods as Quilt-compatible, but I guess that might be user-bias. In the Quilt Project Discord every linked mod updates or releases are asked to at least mark their releases as Quilt-compatible because then why advertise there?

  • Quilt lacks Fabric-like overrides which benefit FO a lot in logs and alphas-betas. As the syntax is different, I am not sure it can work the same as the Fabric file yet.

I believe that Quilt has now Fabric-like overrides with equivalent features despite the different syntax.

  • Quilt overall has less development at the moment, which may affect bugs and version updates and does not instill confidence of sustainability, [...]

So far, despite slower pace at the moment, there wasn't any critical issue affecting bugs or version updates.

[...], neither does this event. More time is needed to see how things go.

That's kind of a shit argument here, during that event the development did not care about kashike's tantrum and continued to work, as said in the statement, and as this GitHub PR comment testifies.

About #626, from what I read on the issue it seems to be a solved question since the modpack now bundles those mods? I'm not sure how it's more relevant if it's solved.

And I will reiterate, what I find extremely disappointing is how easy it has been to replace one of the mods with a low quality resource pack the minute it jumped to Quilt. No discussion with the mod author. The thing to learn with that is, as a mod author, I can't expect support from one of the de-facto OptiFine alternatives modpack. Now if I have users complaining about how fractured the mods are compared to OptiFine, I can't suggest this modpack anymore and will have to recommend alternatives.

Madis0 commented 1 year ago

And I will reiterate, what I find extremely disappointing is how easy it has been to replace one of the mods with a low quality resource pack the minute it jumped to Quilt. No discussion with the mod author. The thing to learn with that is, as a mod author, I can't expect support from one of the de-facto OptiFine alternatives modpack. Now if I have users complaining about how fractured the mods are compared to OptiFine, I can't suggest this modpack anymore and will have to recommend alternatives.

I do not understand this argument, please elaborate. Here's my point of view:

You had made a Fabric mod that replicated OptiFine's better grass with all of its features and more. As of 1.19.3, you decided to leave Fabric for various reasons.

There were some interested parties who considered porting it or creating an alternative, but back then (and now) none exist.

So what's the best alternative? A resource pack. I looked around for available packs and they weren't satisfactory for several reasons (availability, maintenance, license, hardcoded textures etc) so I made my own.

No discussion with the mod author.

With all due respect, what kind of discussion did you expect? I honestly cannot understand.

So I did the most sensible thing and adapted to the situation in a way that causes the least friction to my users and you.

LambdAurora commented 1 year ago

I do not understand this argument, please elaborate. Here's my point of view:

You had made a Fabric mod that replicated OptiFine's better grass with all of its features and more. As of 1.19.3, you decided to leave Fabric for various reasons.

There were some interested parties who considered porting it or creating an alternative, but back then (and now) none exist.

So what's the best alternative? A resource pack. I looked around for available packs and they weren't satisfactory for several reasons (availability, maintenance, license, hardcoded textures etc) so I made my own.

My point is that now I know I can't expect modpacks to support me if I want to use better APIs that make my life easier and allow me to update more frequently. Or at least, not in the current state of things.

Aside from CurseForge, now that Modrinth has modpack support, and this modpack is on Modrinth as well, and considering that the launchers supporting Modrinth have better support for Modrinth, I think a variant of the modpack on Quilt is not too far-fetched, aside from the annoyingly increased maintenance burden, which I totally understand as I'm also a fan of lessening maintenance burden.

No discussion with the mod author.

With all due respect, what kind of discussion did you expect? I honestly cannot understand.

* I didn't try to convince you to port to Fabric anyway to respect your decision.

* I didn't use any of your resources that your mod consists of, so no licensing issues.

* The idea of "better grass" isn't unique in your mod in regards of patents or similar, so that is irrelevant as well.

* If I skipped the mod and did not provide an alternative in FO, you could possibly have had more users run to you to blame, annoy etc. So I saved your nerves by not really _blaming_ you at all.

So I did the most sensible thing and adapted to the situation in a way that causes the least friction to my users and you.

When I say discussion, I expected to at least be informed of the change. I only was made aware because someone brought it up in a totally random discussion on Discord. I at least appreciate not having attempted to convince me to get back to Fabric nor causing licensing issues. And I have in no way talked that the idea of "better grass" is unique.

Like, there's been talks here previously but not confirmation on the fate, that's what I at least wanted to know.

If I skipped the mod and did not provide an alternative in FO, you could possibly have had more users run to you to blame, annoy etc. So I saved your nerves by not really blaming you at all.

I'm not sure, so far I've seen users complaining at how bad the provided alternative is, and I have already people asking why Quilt so I already have tags on Discord to explain why.

Overall, it's just, I don't know, I'm a bit upset that CurseForge doesn't do shit, that I wasn't aware of the change, and I'm tired of fighting for so much stuff.

Madis0 commented 1 year ago

My point is that now I know I can't expect modpacks to support me if I want to use better APIs that make my life easier and allow me to update more frequently.

I'd rephrase it as "mods cannot expect modpacks to follow their footsteps in important decisions".

When I say discussion, I expected to at least be informed of the change.

Everyone who is interested in following what changes are done to Fabulously Optimized are free to follow and discuss in this GitHub repo and/or Discord, such changes are usually cross-posted and publicly discussed with the userbase. I didn't notify you, the dev, directly, because I didn't have anything to suggest or ask at the time - it was solely a reaction to your decision.


That said, let's steer this conversation back to Quilt Loader itself. Any issues with specific mods can be discussed in separate issues or privately, if sensitive.

Madis0 commented 11 months ago

Status update, from newest to oldest news.

Madis0 commented 8 months ago

Sustainability update:

There are still ways to go.