This gist contains the details about My GSoC '22 Project with The Mifos Initiative. During GSoC, I worked on refactoring, migrating the codebase to kotlin and rewriting android-client using the Mifos Android SDK.
In all the Android Applications of Mifos- android-client, mifos-mobile, mobile-wallet- there is a lot of repetitive code which deals with interacting with the Fineract APIs, which was optimized by moving it into a single library (fineract-android-sdk). This library needs to be added as a dependency to the android projects. This will save a lot of code and facilitate independent testing. In GSoC, I worked on implementing the same for one of the Mifos Applications (android-client). I integrated the fineract-android-sdk with android-client.
The fineract client library has now been tested and published here. It may be used in projects written in Java, Android, or Kotlin. For more instructions on how to use the library, read README.md
- Update the Android client to latest dependencies
- Rewrite Android client to consume SDK instead of native code.
- Write appropriate unit and integration tests.
- Update CI/CD to reflect above changes
- Update corresponding documentation for building the app.
- Overall stability by increased testing coverage through a more stable and error-free codebase.
- Improved developer experience through faster build time.
- More seamless release management and upstream contribution
- Reduction of time to upgrade
During the community bonding period our plan was to upgrade the dependency of android-client and replacement of FindBugs tool with SpotBugs during the first half of the coding time frame.
The phase started with upgradation of dependencies to their respective latest versions and migration from com.android
to androidx
dependency. I also upgraded the android SDK and compiler android SDK to the latest version. The current versions of some important dependencies after upgradation are as follows:
Dependency | Past Version | Current Version |
---|---|---|
com.android.tools.build:gradle | 3.3.2 |
7.2.1 |
com.github.Raizlabs.DBFlow.dbflow | 3.3.2 |
7.2.1 |
com.amulyakhare:com.amulyakhare.textdrawable | 0.3.0 |
1.0.0 |
During this time, upgradation of Gradle was one of the biggest challenges since the application was operating at gradle version 4.10.1
and now it has been migrated to version 7.5.0
of gradle.
After the upgrades, I started working with migration of Java code to Kotlin version 1.7.10
.
Some UI enhancement was also introduced with respect to XML files, in which I refactored the old syntax according to the latest standards for developing user interface(UI) using XML.
Cleanup of issues and Pull Requests was also done during the timeframe of Phase-1, which included old PRs and Issues which were irrelevant with respect to the recently upgraded codebase.
The phase majorly deals with the integration of fineract-android-sdk with android-client.
Some of the build failures occurred during the rewriting of the android-client with fineract-android-sdk which includes
- Build
- Lint Check
- PMD
- Checkstyle
Currently, the integration of SDK is under progress.
- PR-1866 - Build fails due to a dependency on bintray
- PR-1868 - restructured: xml files for regex row*.xml and util files
- PR-1870 - restructured: xml files for regex item*.xml
- PR-1872 - restructured: xml files for regex fragment*.xml
- PR-1874 - restructured: xml files for regex activity*.xml and dialog*.xml
- PR-1879 - DBFlow dependency refactor
- PR-1881 - Upgrade project gradle version and dependency bumps
- PR-1890 - Issue 1889
- PR-55 - dependency upgrade (fineract-android-sdk)
Google Summer of Code with The Mifos Initiative was the most rewarding experience I've had as a student till date. It was incredibly amazing to have the chance to collaborate with talented developers from the community. I am grateful to Danish Jamal, Shashank Priyadarshi, Chinmay Kulkarni, and my mentors, for helping me with my project throughout the summer and extended timeline. Also, I would like to acknowledge Edward Cable and the entire community for their enthusiastic support in GSoC '22.
If you want to know more about the project, feel free to contact me here:
- Email - avivijay.2019@gmail.com