GSoC 2020 - Upgrade Platform Core Libraries Project - Final Presentation

Primary mentor: Moses Mutesasira @mozzy

Backup mentor: Sharif Magembe @sharif

Student: Pahonsi Bebeto Achile @achilep

Project Link : https://wiki.openmrs.org/display/projects/GSoC+2020+%3A+Upgrade+Platform+Core+Libraries+Project

1.Overview

We need to upgrade our Platform Core libraries ,to be able to leaverage all the latest functionalities in the latest released versions of these libraries. As first priority we would need to upgrade Java . This project will address the issues that will arise during the Upgrade.

2.Objectives

Main Objectives

Upgrading Java from OpenJDK 8 to OpenJDK 11. Note that Java 11 is Only supported out of the box in Spring 5. (COMPLETED)

Extra Credit

  • Upgrading other Libraries that are pending.

3.GSoC Contributions

I did work on FHIR module and FHIR Module v2 Since we are replacing the FHIR module module with FHIR Module v2 and FHIR Module v2 is still in the development .

OpenMRS Core :

Tickets Completed :

Upgrade Core to Compile and run on OpenJDK 8 ,9,10, 11,12,13,14

1.Ticket https://issues.openmrs.org/browse/TRUNK-5496 .

Junit migration

2.Ticket : https://issues.openmrs.org/browse/TRUNK-5812

Pull Request : click here to view all the Pull request

3.Ticket :https://issues.openmrs.org/browse/TRUNK-5813

Pull Request : click here to view the list of committed message

4.Ticket : https://issues.openmrs.org/browse/TRUNK-5814

Pull Request : click here to view the pull request

5.Ticket : https://issues.openmrs.org/browse/TRUNK-5816

Pull Request : click here and here to view all the pull request

6.Ticket : https://issues.openmrs.org/browse/TRUNK-5817

Pull Request : click here to view all the pull request

7.Ticket : https://issues.openmrs.org/browse/TRUNK-5818

Pull Request : click here to view all the pull request

Upgrading other Libraries

8.Ticket: https://issues.openmrs.org/browse/TRUNK-5814

PR: https://github.com/openmrs/openmrs-core/pull/3290

9.Ticket :https://issues.openmrs.org/browse/TRUNK-5769

PR: https://github.com/openmrs/openmrs-core/pull/3232

10.Ticket :https://issues.openmrs.org/browse/TRUNK-5770

PR: https://github.com/openmrs/openmrs-core/pull/3231

11.Ticket : https://issues.openmrs.org/browse/TRUNK-5771

PR: https://github.com/openmrs/openmrs-core/pull/3233

12.Ticket: https://issues.openmrs.org/browse/TRUNK-5772

PR: https://github.com/openmrs/openmrs-core/pull/3246

13.Ticket : https://issues.openmrs.org/browse/TRUNK-5773

PR: https://github.com/openmrs/openmrs-core/pull/3250

14.Ticket: https://issues.openmrs.org/browse/TRUNK-5774

PR :https://github.com/openmrs/openmrs-core/pull/3245

15.Ticket : https://issues.openmrs.org/browse/TRUNK-5775

PR: https://github.com/openmrs/openmrs-core/pull/3244

16.Ticket : https://issues.openmrs.org/browse/TRUNK-5776

PR : https://github.com/openmrs/openmrs-core/pull/3249

17.Ticket :https://issues.openmrs.org/browse/TRUNK-5777

PR: https://github.com/openmrs/openmrs-core/pull/3247

18.Ticket: https://issues.openmrs.org/browse/TRUNK-5778

PR: https://github.com/openmrs/openmrs-core/pull/3248

19.https://issues.openmrs.org/browse/TRUNK-5521

PR: https://github.com/openmrs/openmrs-core/pull/3213

20.Ticket: https://issues.openmrs.org/browse/TRUNK-5779

PR: https://github.com/openmrs/openmrs-core/pull/3268

21.Ticket :https://issues.openmrs.org/browse/TRUNK-5780

PR: https://github.com/openmrs/openmrs-core/pull/3269

Tickets in progress:

1.Ticket : https://issues.openmrs.org/browse/TRUNK-5844

PR: https://github.com/openmrs/openmrs-core/pull/3548

2.Ticket: https://issues.openmrs.org/browse/TRUNK-5764

PR: https://github.com/openmrs/openmrs-core/pull/3227

3.Ticket: https://issues.openmrs.org/browse/TRUNK-5767

PR: https://github.com/openmrs/openmrs-core/pull/3226

Webservices REST Module

Tickets Completed :

Upgrading other Libraries

1.Ticket: https://issues.openmrs.org/browse/RESTWS-781

PR: https://github.com/openmrs/openmrs-module-webservices.rest/pull/437

2.Ticket: https://issues.openmrs.org/browse/RESTWS-782

PR: https://github.com/openmrs/openmrs-module-webservices.rest/pull/439

3.Ticket: https://issues.openmrs.org/browse/RESTWS-783

PR:https://github.com/openmrs/openmrs-module-webservices.rest/pull/440

4.Ticket: https://issues.openmrs.org/browse/RESTWS-784

PR:https://github.com/openmrs/openmrs-module-webservices.rest/pull/441

5.Ticket: https://issues.openmrs.org/browse/RESTWS-785

Pr: https://github.com/openmrs/openmrs-module-webservices.rest/pull/442

6.Ticket: https://issues.openmrs.org/browse/RESTWS-786

PR: https://github.com/openmrs/openmrs-module-webservices.rest/pull/443

7.Ticket: https://issues.openmrs.org/browse/RESTWS-787

PR: https://github.com/openmrs/openmrs-module-webservices.rest/pull/444

8.Ticket: https://issues.openmrs.org/browse/RESTWS-779 and https://issues.openmrs.org/browse/RESTWS-780

PR: https://github.com/openmrs/openmrs-module-webservices.rest/pull/445

Open Web Apps

Ticket Completed :

Upgrading other Libraries

1.Ticket: https://issues.openmrs.org/browse/OWA-99

PR: https://github.com/openmrs/openmrs-module-owa/pull/72

Talk thread discussion:

  1. https://talk.openmrs.org/t/gsoc-2020-upgrade-platform-core-libraries-project/28757
  2. https://talk.openmrs.org/t/openmrs-core-junit-5-migration-status/29484

4.Weekly Reports are listed below:

  1. Week-1
  2. Week-2
  3. Week-3
  4. Week-4
  5. Week-5
  6. Week-6
  7. Week-7
  8. Week-8
  9. Week-9
  10. Week-10
  11. Week-11
  12. Week-12

5.Resources

1.Talk thread discussion:

  1. https://talk.openmrs.org/t/gsoc-2020-upgrade-platform-core-libraries-project/28757
  2. https://talk.openmrs.org/t/openmrs-core-junit-5-migration-status/29484

2.Source Code Repository:

  1. OpenMRS Core : https://github.com/openmrs/openmrs-core ,
  2. FHIR module : https://github.com/openmrs/openmrs-module-fhir ,
  3. Webservices REST Module : https://github.com/openmrs/openmrs-module-webservices.rest
  4. Open Web Apps : https://github.com/openmrs/openmrs-module-owa
  5. FHIR Module v2 : https://github.com/openmrs/openmrs-module-fhir2

3.mid-term video presentations

4.Other Resource

  1. https://spring.io/blog/2018/09/21/spring-framework-5-1-goes-ga
  2. https://github.com/spring-projects/spring-framework/wiki/Upgrading-to-Spring-Framework-5.x

6.Future Works:

  1. migrating to using JPA instead of raw Hibernate. The rationale for this is less to enable supporting other JPA providers and more because Hibernate’s new feature development is primarily focused on being a proper implementation of the JPA spec. So, for example JQL gets more attention than HQL these days and the Hibernate Criteria API has been “deprecated” in favour of the JPA version (it’s not going away anytime soon; it’s just not receiving new features).

  2. Migrate to using a child Spring context per module instead of a single big Spring context. This is much more pie-in-the-sky, but it could likely result in a reduction of the time it takes to refresh the main Spring context (which is a large chunk of the start-up time). This would need to be tested to ensure that, e.g., modules can still add services to the Context object, etc.

7.Thoughts on GSoC:

It has been a wonderful experience for me for the last 12 weeks to work with OpenMRS and GSoC community. I would like to thank the entire OpenMRS community for providing me with this opportunity, my mentors Moses Mutesasira and Sharif Magembe, Ivo Ulrich, Daniel Kayiwa, Ian Bacher for the support and help they gave me through out the process and at last Google for this wonderful experience .

2 Likes

great work done , Thanks @achilep

2 Likes