Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Is there any maintained fork #188

Open
iamareebjamal opened this issue Apr 7, 2020 · 14 comments
Open

Is there any maintained fork #188

iamareebjamal opened this issue Apr 7, 2020 · 14 comments

Comments

@iamareebjamal
Copy link
Contributor

I realize the tooling for JSONAPI is not very popular, but we have to maintain our code which is using the library heavily. It's known that this repo is not maintained anymore and there are a lot of issues in it. Does anyone have a link to a maintained fork? Or is there any maintained library with migration path?

If not, then community can decide to fork the project and volunteers can help in getting it up to date?

@multimeric
Copy link
Contributor

Hi, I've been maintaining a fork over at https://github.com/TMiguelT/flapison. I've made and merged quite a number of PRs. Please feel free to contribute.

Unfortunately it's notoriously difficult to publicise a fork. I don't even think Google indexes them. So if you can think of a good way for me to do that, let me know.

@iamareebjamal
Copy link
Contributor Author

Can you request it to be added here? https://jsonapi.org/implementations/#server-libraries-python

Seeing that JSONAPI is not that popular, this is the most useful resource to look at when searching for server implementations

@multimeric
Copy link
Contributor

Oh, that's a good idea. I'll see if I can PR that into the jsonapi docs.

@multimeric
Copy link
Contributor

PR submitted. Hopefully it will get merged and it will clear things up.

@akira-dev
Copy link
Collaborator

Hello, I will have some time to review PR during next week I hope. So new release is coming soon. I am very sorry for my lack of time to maintain this repo.

@multimeric
Copy link
Contributor

multimeric commented Apr 10, 2020

Oh, hi! While you're around, is there any way I can help with the maintenance of this library? I'm happy to help review and merge PRs etc, or alternatively if you have time now would you accept a PR containing all the downstream changes from flapison? It contains all the PRs from me into this library (7 of them), and some other changes like running black on the whole repo. I understand if you don't want all of my changes though.

@iamareebjamal
Copy link
Contributor Author

iamareebjamal commented Apr 10, 2020

Hi, it would also make sense to pick some contributors (@TMiguelT is extremely active) to maintain the library when you are inactive. This will concentrate the efforts in one place and derisk the library as it will be a community effort then?

@mahenzon
Copy link

mahenzon commented Apr 20, 2020

Hi there! @TMiguelT I'm glad to see you here (I think we've met somewhere within marshmallow-jsonapi).
My colleague (@Znbiz) and I have been working on a fork too.

The fact is that we've developed it for our production. Our goal here was to achieve full compatibility with our huge legacy codebase, so we can rewrite the existing API by one resource at a time. At that point we faced the fact, that we need:

  • JSON:API spec (a standard, finally!)
  • api spec swagger documentation (that helps a lot both frontend and backend developers!)
  • some convenient serialization / deserialization (marshmallow fits here pretty good)
  • custom sorting and filtering, that can be defined outside of the lib
  • an advanced tool to manage permissions for certain fields, not only routes
  • a tool for creating RPC resources (when the backend is already designed this way, there's no way to somehow rewrite it to be compatible with the new modern and shiny spec, so we need to create custom non-jsonapi resources as well as regular resources)
  • a centralized tool for working with PostgreSQL's JSONB fields

At this point we could say, that it needs a lot of work.

So, we came up to this solution:

  • Fork flask-rest-jsonapi and create minimal changes, just to make it compatible with the plugin system and create some other whistles like advanced sorting and filtering
  • Create a separate library for all our requirements, that can exist out the main library

Finally!

There's https://github.com/AdCombo/flask-rest-jsonapi that has these improvenets:

(for custom filtering/sorting you need to define a new method in your marshmallow field as described in docstrings)

  • some other bugfixes

And a separate library https://github.com/AdCombo/combojsonapi/, which has:


As I see, there's already some work going in the https://github.com/TMiguelT/flapison, that's cool. So I think maybe we could discuss here some suggestions / ideas how we can all together produce a better library, based on the flask-rest-jsonapi, that fits all developers' needs, is actively maintained and has cool and useful features!

Looking forward to hearing from you!

@multimeric
Copy link
Contributor

Hi @mahenzon. It looks like you've done some excellent work refactoring flask-rest-jsonapi. Plugins are a great idea, and moving a lot of the SQLAlchemy data layer into a shared module is something I was meaning to do myself.

We should obviously try to merge the two forks. Your changes are much more fundamental so I'm happy to try to rebase my changes against yours and make some PRs.

I have one reservation, however. I'm a tad sceptical of open source projects maintained under company organisations, because they tend to languish once the initial development effort is finished, and stop paying attention to issues and PRs. After all, that's what's happened with miLibris who originally wrote this. Do you have any thoughts on how maintenance might continue in the long term? Would you be open to adding collaborators even to your organisation repo? If not I can see similar problems to miLibris/flask-rest-jsonapi happening in the future.

@mahenzon
Copy link

Hi again @TMiguelT!

I'm really glad to see that you like it and are interested in collaborating!
And about your concerns regarding maintenance: we welcome collaborators to our repos! Sure, no one is interested in another stalled fork.

I've just invited you to both https://github.com/AdCombo/flask-rest-jsonapi and https://github.com/AdCombo/combojsonapi as a collaborator with write access. Feel free to push changes and open PRs. We definitely want to see some improvements and welcome collaborators! It'll be cool to see your changes from flapison

@multimeric
Copy link
Contributor

Okay that sounds great. I'll try to find time to put in some PRs before too long. Thanks for the collaboration invitations also, I can't accept them just yet because of 2FA issues but I should be able to eventually.

One other thought, do you think it would be helpful to rename your repo from flask-rest-jsonapi so that it's easier to search and/or allows it to be added to the JSON:API site as a separate project? Those are the main reasons I renamed my fork. I also think it makes it clearer to users that it's not the exact same project, especially in case your API diverges from upstream.

@mahenzon
Copy link

Yeah, I agree. It's definitely doable. We just need to come up with some new name. Sure, it'll help in different ways. Give us a day to deside. The results will be in this issue AdCombo/flask-combo-jsonapi#10

Waiting for you to contribute, thanks!

@buckmaxwell
Copy link

It seems perhaps this repository is being maintained? what is the latest on this.

@mahenzon
Copy link

mahenzon commented Jan 9, 2021

hi @buckmaxwell!
this fork is actively maintained https://github.com/AdCombo/flask-combo-jsonapi

more detailed in the comment above

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants