genshindev / api

A fan-made Genshin Impact API for easy access to game data.
https://genshin.jmp.blue
Open Software License 3.0
710 stars 197 forks source link

Unreleased data #109

Closed Juullo closed 6 months ago

Juullo commented 3 years ago

What is the policy regarding information about unreleased entities?

I might be misinformed about this topic, if so please tell me!

There's some artifacts, like 'Prayers to the Firmament' and 'Glacier and Snowfield' that aren't released ingame. This poses at least three problems (in my opinion):

  1. Without a way to filter them out this pollutes data for potential consumers that only want to display stuff that is ingame.
  2. The availability of translations is lower (at least you can't get them ingame, only from third party sources that might or might not be right), therefore it's hard for anyone to fix the /all endpoint option. I can't simply add an english version for the artifacts mentioned above because I don't have access to the english description. A missing translation breaks the /all endpoint (this could also be an issue by itself).
  3. This might pose problems for the continuity of this project through Mihoyo's policy regarding leaks and stuff that should be under NDA. There's a reason these artifacts aren't present on the wiki for example.

Theres some ways to go about this:

  1. Implement a query parameter 'unreleased' (or something alike) which you can include to specify unreleased entities should be included in the result.
  2. Remove them alltogether; there's plenty of time to actually implement them when they're included in an update.

I'd like to hear everyone's opinions on this.

NurMarvin commented 3 years ago

First of all thanks for bringing this up, we haven't really considered this ourselves before. Outright removing them is not something we have planned unless miHoYo contacts us and specifically asks us to remove the information about unreleased entities from the repository. We aren't bound by any NDA (as of yet) and it's also not our responsibility to make sure that every contributor to this repository upholds their NDAs with miHoYo, so we will still happily accept any pull requests with information about unreleased entities. Putting said unreleased entities behind a query parameter or similar, would be something we could explore though. The specifics on how we would implement this would still be up to debate, though I personally would suggest putting a new property on said unreleased entities, i.e. "unreleased": true or putting them in a separate folder i.e. assets/unreleased-data. We would also love to hear your feedback on how we could implement this in case you have a better idea as to how we could implement this.

Juullo commented 3 years ago

I think the technical implementation doesn't matter that much. However, since this is an open source project and not all entities are clearly defined through a schema (as far as I know, I just looked at existing ones), it would be most clear to implement this functionality by putting them in a separate folder. This makes it clear for all contributors that unreleased entities should go in a separate folder.

If you make it dependent on a property, you either have to include the property on all entities, also released ones with the value false, or define a schema somewhere that people can refer to when contributing so they know unreleased entities need an extra property 'unreleased'.

I think the important part is how it will affect usage of the API. On that topic I personally think the following requirements should be met:

The second requirement would break backwards compatibility, so I understand if you think differently.