In addition to my github issue and after reading carefully the whole discussion, I have notice some points which make me (ironically) laughing:
-
“At this time we are not prepared or planning to modify this data structure in the response, the time for that type of modification has passed as it should have been addressed during the RFC process. We do understand that it was not clear at the time during our RFC process this was the case and we are already doing retrospectives to improve this process.” => so the priority should be on fixing the issue instead of speaking about how to improve for next time (no worries, you will have months or even years for that), especially since “next time” is somewhere, far away, in the futur.
-
“The primary goal behind this new structure was to pick some kind of standard for a response structure, ideally not reinvent the wheel and try to use an already existing standard” => good goal! We are lucky, there is already an existing javascript reference implementation named “Apollo”, it’s even written black on white in the github of the project. Unfortunately, strapi v4 is incompatible with that standard (caching issue). At the end, it seems that strapi v4 is just creating the last (15) competing standards… congrats…
-
“In our case we picked JSON API: https://jsonapi.org/” => Good choice for REST API, not at all for GraphQL which is different by design and have nothing to do with JSON API
-
“This meant unifying the REST and GraphQL data responses, error handling, filtering/paging system, ect.” => again, there is nothing to unify, REST and GraphQL are different by design and even it’s the reason why GraphQL was created. Going against that difference means missing the primary goal of GraphQL. Sorry but if strapi goal is to unify GraphQL with REST then the only way is to drop GraphQL support
-
“Remove Attributes and throw everything under data in GraphQL => Not possible due to breaking changes” => I guess it’s a joke?!? Seriously guys, who is using strapi v4 in production right now? Strapi v4 is more a beta than a stable product atm and only early adopters are trying to migrate on it (no offense, it’s a perfectly normal situation). Even the migration guide is missing for now! If your concern is about semver, a very easy solution is to release a new graphql plugin (for example “graphql-apollo-plugin”) with an initial v4.0.6 version and that’s it! Simple, easy. Once v5 will be ready, simply drop the current graphql-plugin and replace it with graphql-apollo-plugin (renamed graphql-plugin, ofc)
Now let me provide a bit of context:
I’m currently working on a huge migration both frontend (vue v2.x => v3.x) and backend (strapi v3.x => v4.x) with a strong deadline of mid-feb. I have already spent a lot of time to migrate DB schema from v3 to v4 manually.
Now, no doubt, GraphQL API in v4 is just unusable as is and so my mid-feb release is fucked because I will have to switch back on strapi v3 everything which is already migrated at frontend side.
Not only that, but since strapi v3 is in maintenance mode, I will have to plan another migration for backend side (aka building my own or switching on another strapi-like product) so it’s the whole roadmap which is now totally fucked.
Tomorrow, I will have to explain that to my boss and, if I’m not fired immediately, I will have to buy a lot of redbull, in order to develop 24/7 during the next months. I guess everyone here could very well understand why I’m really upset.
I’m really sorry if my words aren’t as kind as they should be, I’m just very disappointed because of that horrible situation. However, I’m still confident about a brillant futur for strapi and love all guys which works hard to make it better.