From: James D. <jam...@gm...> - 2023-05-04 19:08:32
|
Hi All - I'd like to resurface this discussion. Some % of the questions I see on the Mifos slack are about the availability of the APIs at Demo or the use of Swagger, or something about the status of the work on https://github.com/apache/fineract/tree/develop/fineract-client --> Looking at the GitHub, I see that there were some changes made in January 2023 on the dev branch. Meanwhile, the site is down at https://demo.fineract.dev/fineract-provider/swagger-ui/index.html , which should be pulling from the dev branch. I also note the documentation effort at https://fineract.apache.org/docs/current/#_fineract_client_documentation So, can someone comment? What is the focus now or the immediate next steps? Thanks, jdailey James Dailey On Thu, Jan 13, 2022 at 11:26 AM Michael Vorburger <mi...@vo...> wrote: > > On Thu, Jan 13, 2022 at 7:29 PM Aleksandar Vidakovic <ch...@mo...> wrote: >> >> Hi everyone, >> >> ... my 2 cents: >> >> 3. https://github.com/openMF/fineract-client was an earlier effort (don't remember which community member created it); the Swagger descriptor was there already for a couple of years (got added to Fineract as a GSoC project), but we (actually Michael) just recently added a separate module to the Fineract repo to do this in one build; all in all I'd say they should be pretty much the same... maybe the one in https://github.com/openMF/fineract/tree/develop/fineract-client could be a little fresher given that it's automatically updated when the Swagger file is updated. > > > I agree with what Aleks states here, and would add the following additional points: > > https://github.com/openMF/fineract/tree/develop/fineract-client is not the repository of Apache Fineract. That repo on openMF is a fork, which from an Apache point of view is really no different from the 921 other forks listed on https://github.com/apache/fineract/network/members (in my view). > > What I think this email thread is really asking about is presumably https://github.com/apache/fineract/tree/develop/fineract-client (NOT https://github.com/openMF/fineract/tree/develop/fineract-client; note the /openmf/ vs /apache/ difference) -VS- https://github.com/openMF/fineract-client? > > I would venture as far as stating that https://github.com/apache/fineract/tree/develop/fineract-client is now "Apache Fineract's official Java client", and for someone who isn't already using https://github.com/openMF/fineract-client and previously invested in it, I suggest that we recommend using that, only. > >> 4. Automatic or not... kind of both: the challenge with the current REST resource classes in Fineract is that pretty much all of them are not type safe; there's a lot of manual JSON de-/serialization done; in most cases the HTTP body lands in a String variable first, and as there's no way for the Swagger annotation processor to detect what's going on in those String blobs we had to handcraft some mock classes that are only there to give context/type info to the Swagger annotation processor. This was done that way to maintain 100% backward Java source compatibility. It should cover most of Fineract's API, but there are for sure parts that are a bit out of sync. Note: there's been a discussion to introduce type safety in the REST resource classes, using Jackson instead of GSON, get rid of those mock Java type classes and most (if not all) of the handcrafted JSON de-/serialization... there'll soon be a first PR to try this out with a small self-contained module (maybe client API or something similar). >> >> 5. See my previous point; the Java code generation is fully automatic in the Fineract repo, but the mock type classes that are used to generate the Swagger file are handcrafted... if something is missing then it was already missing in the Swagger file (aka the mock classes). > > > We very much welcome any PRs from any interested parties using https://github.com/apache/fineract/tree/develop/fineract-client with suggested improvements for it! ;-) For example for the fullname field mismatch you noticed - go ahead and fix it! :) You may also be interested in having a look through the currently 52 open issues mentioning "fineract-client" in the Apache Fineract JIRA, see https://issues.apache.org/jira/issues/?jql=text%20~%20%22fineract-client%22%20AND%20status%20%3D%20open, contributions to any of those are certainly appreciated. (Further analyzing and "triaging" these issues is a form of contribution as well, of course.) > >> 6. I know that the Fineract client (the one from the Fineract repo) was used in commercial projects; I have no numbers about volume and performance though. > > > Re. performance, I feel reasonably confident in stating that given that the Apache Fineract Client is based on Swagger Code Generation and the OkHTTP client library, which are both very widely used, running into any significant client side performance issues at scale are somewhat unlikely. Sure it's not quite Google Protocol Buffers level binary serialization performance, but in the bigger picture of things, the Fineract "backend" (fineract-provider) is very very likely the much more interesting part of performance investigations than the little Java object to JSON conversation happening in fineract-client (in my view). > > Of course, any party considering production use would do their own due diligence and scale testing. (The Apache Fineract community is also very interested in any Pull Requests contributing both scale testing tools and performance improvements to the project.) > > I hope this helps? > > >> Cheers, >> >> Aleks >> >> On Thu, Jan 13, 2022 at 7:03 PM Ed Cable <ed...@mi...> wrote: >>> >>> Chinmay and Danish, >>> >>> There is some interest and inquiry coming from users in the community regarding the Fineract Client. >>> >>> I was hoping you all along with some of the past contributors to this project like @Aleksandar Vidakovic and @Michael Vorburger could help me with some of the below questions: >>> >>> 3. What is the difference between these 2 clients: >>> https://github.com/openMF/fineract/tree/develop/fineract-client >>> https://github.com/openMF/fineract-client >>> >>> Are either of these client’s considered production ready? >>> >>> 4. Is https://github.com/openMF/fineract-client/blob/master/swagger-api-spec-file.json hand coded or generated? >>> >>> 5. We have noticed that both fineract-clients only have fullname field supported when creating a Fineract Client (the database entity). This has led to the conclusion that neither are based off the Fineract-provider JAX-RS but are probably hand coded. We are wondering which one is best supported now and into the future, or if we should hand code our own client. >>> >>> 6. Have either client been used in high volume use cases? >>> |