Where’s the developer documentation?
Quilt’s developer documentation is incredibly work-in-progress, and nowhere near a usable state. However, it is being worked on, and you may preview what’s done so far on modder.wiki.quiltmc.org.
Edited: September 12, 2022
Quilt’s developer documentation is incredibly work-in-progress, and nowhere near a usable state. However, it is being worked on, and you may preview what’s done so far on modder.wiki.quiltmc.org.
For developers, Quilt provides the following advantages over Fabric:
When talking about the clean-room, we’re referring to a specific approach to contributions taken by Fabric’s Yarn mappings project. Yarn takes an approach that attempts to guarantee the safety of the project by refusing names that have obviously been inspired by names from other mappings projects, such as MCP and Mojang’s official mappings. It also discourages contributors from looking at names from other mappings projects, and requires discussions in Fabric’s official community spaces to be free of non-Yarn names.
Quilt Mappings (shortened to QM below), on the other hand, takes a different approach. As the project uses the Creative Commons Zero License (similarly to Yarn), QM explicitly doesn’t claim ownership of the names and instead any names contributed that may be derivatives of other mappings projects still have that ownership assigned to them. This, along with including license notices that explicitly show that ownership of some names may lie with other mappings projects (and that provide proper credit) — among other things — allows QM contributors to refer to other mappings projects to figure out what the best name for something should be. It also means that we don’t have to disallow discussions involving names from other projects in our official community spaces.
It’s worth noting, however, that a name being present in some other mappings project does not mean we’ll accept it. All names contributed must stand up on their own, regardless of what Mojang — or any other organisation — provides as a name.
We plan on trying to make this transition as painless as possible — by matching Fabric’s API surface, allowing you to stick with Yarn mappings if you’d like, and providing support for developers that are porting their mods. It’s worth noting that — as of this writing — Fabric mods that contain mixin plugins (for example, for conditional mixins) are supported by Quilt’s backwards-compatibility efforts, but this will not be the case once Chasm has been added to the toolchain. Quilt will provide an alternative approach with proper toolchain support later on — and we’ll help you figure out how to move to it if you need support.
As long as maintaining Fabric compatibility doesn’t negatively impact the project, we’ll keep doing it — but if it does get to the point where maintaining it is no longer feasible, we’ll help move it to a community-run project and provide its developers with the support they need to keep working on it.
In short, backwards compatibility will live on until it’s no longer possible to maintain it.
While we’re currently still working on developer documentation, we do have a template mod that you can use as a template, or just to get started. We’ll be working on docs throughout the beta period and beyond, so please keep an eye out for them!
Chasm is short for Collision Handling ASM. Chasm is a bytecode transformation library, acting as a backend that’s intended for use via separate frontends, rather than for mods to use directly. It intends to provide a safer way to modify bytecode at runtime, handling collisions automatically and trying to help mods to stay compatible.
Frontends for use with Chasm will include Access Wideners and, of course, Mixin. However, there’s no reason additional frontends couldn’t be written — by Quilt, or by the community.
Chasm has not yet been implemented, but we’re working on it!