modip-org / spec

Please use Modrinth's spec - https://github.com/modrinth/docs/blob/master/docs/modpacks/format_definition.md
Creative Commons Zero v1.0 Universal
2 stars 2 forks source link

[RFC] The case for special-case IDs #12

Open stairman06 opened 4 years ago

stairman06 commented 4 years ago

Widespread adoption of the MODIP format is key to success. Getting hosts to serve MODIP metadata is, in my opinion, a crucial part that we need to do right. The format needs to be easy to implement from a server-side perspective, otherwise we gain no adoption. A format that's hard, tricky, or cumbersome to implement doesn't gain adoption.

Framework Overhead

Right now, the format doesn't have a ton of overhead. However, one of the current issues is with regards to modloaders/frameworks. The current specification requires frameworks to be stored just like a regular project would - and this is great from a technical perspective. It grants lots of freedom, leeway, and extensibility. But we have more to think about than just technical issues. Somebody has to be providing the metadata for the modloaders.

The requirement to serve metadata for modloaders is, frankly, a burden. Hosts don't have any incentive to - it's not their job, and convincing the developers of modloaders to serve MODIP metadata is basically impossible. And this is why I think it may be okay to grant a hopefully-temporary special exemption to some frameworks.

The Exemption

The idea is to grant special exemptions for certain IDs. This may sound like an incredibly stupid idea at first, but bear with me. I believe these exemptions could be crucial to adoption. This would prevent dependencies with the ID of framework-forge and framework-fabric-loader from needing a source project specified. Nobody has to host it, a launcher can fetch it themselves using their own methods.

Exemptions are nothing new, and would probably have been done anyway, although unofficially. If a launcher already knows of Fabric and where to get it, it has no reason to fetch potentially-outdated metadata from somewhere else. The same thing goes for Forge, which is an even larger issue as it uses a complicated installation process that can't be represented in MODIP metadata. Launchers would likely special case the Forge ID anyway.

Other Solutions

Other possible solutions that aren't exemptions:

I welcome all feedback and discussion. This is a complicated issue.

expeehaa commented 4 years ago

Special cases almost always make things more difficult and have their drawbacks, most notably that they require a different implementation. I think the spec should not default to special cases to minimize the requirements for having a complete implementation. Instead, if an implementator wants their implementation to treat certain IDs specially, they may implement it that way. But that doesn't force anyone to do the same.

immibis commented 4 years ago

Everything that you've said about frameworks also applies to non-framework mods. Should there be a special ID for TechReborn?

stairman06 commented 4 years ago

Yeah, but it's most common for frameworks. Nearly everything will require a framework of some sort. That being said, maybe there should be a special type for these standardized dependencies (e.g. "type": "wellKnown")