Apache Fineract CN is currently using Hibernate as its default ORM. However, Hibernate's license is not compliant within Apache. Therefore this project seeks to eliminate the Hibernate ORM and Hibernate specific dependencies and replace them with core Java API and EclipseLink equivalents to make Fineract CN fully Apache compliant.
During the course of this project, I switched from OpenJPA (the originally suggested ORM) to EclipseLink after a thorough discussion with the community and my mentor. Hence upon extensive research, I recommended EclipseLink as the alternative software to OpenJPA and Hibernate. The community aims to become Apache Compliant by eliminating the Hibernate ORM. Therefore, migrating the Project's ORM to EclipseLink fulfils this goal.
- Migration for PostgreSQL - apache/fineract-cn-postgresql#5
- Migration for MariaDB - apache/fineract-cn-mariadb#8
The community is currently migrating the project's database from MariaDB to PostgreSQL as MariaDB is also not compliant. Given that the ORM is tightly coupled with the Database, I contributed to the data migration project as well.
- apache/fineract-cn-notifications#17
- Izakey/fineract-cn-demo-server#3
- Izakey/fineract-cn-default-setup#1
- Izakey/fineract-cn-customer#1
- Izakey/fineract-cn-portfolio#1
- Izakey/fineract-cn-accounting#1
- Izakey/fineract-cn-identity#1
- Izakey/fineract-cn-office#1
- Izakey/fineract-cn-test#1
Migration to EclipseLink and PostgreSQL are now complete. All 13 microservice can use them and the projects are in the QA phase.
I developed the notification service for the community in 2018 and so during the community bonding period, I made more contributions to this project.
- Notification microservice containerization - apache/fineract-cn-notifications#14
- Adding email templating - apache/fineract-cn-notifications#11
- Removed Dedicated User, added test for API and restructured API endpoints- apache/fineract-cn-notifications#10
I also, contributed to the CI by adding after failure procedure to all builds in Apache Fineract
- apache/fineract-cn-notifications#13
- apache/fineract-cn-crypto#6
- apache/fineract-cn-rhythm#10
- apache/fineract-cn-template#8
- apache/fineract-cn-teller#13
- apache/fineract-cn-service-starter#10
- apache/fineract-cn-provisioner#9
- apache/fineract-cn-postgresql#4
- apache/fineract-cn-portfolio#16
- apache/fineract-cn-mariadb#8
- apache/fineract-cn-permitted-feign-client#6
- apache/fineract-cn-office#11
- apache/fineract-cn-payroll#11
- apache/fineract-cn-identity#12
- apache/fineract-cn-deposit-account-management#12
- apache/fineract-cn-customer#12
- apache/fineract-cn-command#8
- apache/fineract-cn-accounting#13
- apache/fineract-cn-anubis#6
EclipseLink performs better when static weaving is used. However, I couldn't find a suitable plugin to fully achieve this operation. Therefore, I would take on an individual project to create one for the opensource ecosystem. I will port the EclipseLink-maven-plugin to a Gradle plugin as the original creators have declined to create a Gradle version of this plugin. ethlo/eclipselink-maven-plugin#23
After, GSoC I will spend most of my time working on upgrading the dependencies of the project.