Skip to content

Instantly share code, notes, and snippets.

@ebenezergraham
Last active October 1, 2019 23:02
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ebenezergraham/b0f46714b4821650db62cb68b03f50f2 to your computer and use it in GitHub Desktop.
Save ebenezergraham/b0f46714b4821650db62cb68b03f50f2 to your computer and use it in GitHub Desktop.
Final GSoC submission

GSoC 2019 Final Submission ⚡

Organization: Apache Software Foundation

Project Name: ORM Migration

Mentor: Isaac Kamga

Student: Ebenezer Graham

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.

Project Evolution

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.

Pull Requests Made for EclipseLink

Additional work done during my internship period

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.

Pull Requests Made for PostgreSQL

Migration to EclipseLink and PostgreSQL are now complete. All 13 microservice can use them and the projects are in the QA phase.

Other Contributions made to the community during this GSoC Season

Notifications Service

I developed the notification service for the community in 2018 and so during the community bonding period, I made more contributions to this project.

Travis CI

I also, contributed to the CI by adding after failure procedure to all builds in Apache Fineract

Future work

Create a gradle plugin for Static Weaving

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

Upgrading Spring Boot, Spring and Gradle version

After, GSoC I will spend most of my time working on upgrading the dependencies of the project.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment