Summer of Code 2025
Write Code. Save Lives.
OpenMRS is hoping to be a mentoring organization for Google Summer of Code™ 2025! Since 2007, we've enjoyed participating in this great program and we're extremely excited about the projects and mentorship opportunities available this year. Coding for OpenMRS is a great way to practice your coding skills and, at the same time, help benefit people in developing countries who are on the front lines of public health challenges.
If you are new to OpenMRS, we recommend starting with our Guide to the New & Curious. It will introduce you to our community, the tools and spaces we use, and help you get to know the different squads and teams working on various community projects. For a more detailed history of who we are and what we do, please see here.
Google Summer of Code at OpenMRS
om.rs/gsoc
Learn more about Google Summer of Code 2025:
Google Summer of Code website
GSoC 2025 Program Administrators
@beryl @Jayasanka Weerasinghe
Please see GSoC Admin Guidelines for more information, or Org Admin Tips and Program Rules.
Projects for GSoC 2025
Talk Thread for Idea collection: https://talk.openmrs.org/t/brainstorming-gsoc-2025-project-ideas/44506
Guide: Defining a Project Ideas List https://google.github.io/gsocguides/mentor/defining-a-project-ideas-list
Project Ideas
Project Name & Expected Outcome | Rating and Size
| Project Description | Skills (Required / Preferred) | Primary Mentor | Backup Mentor |
---|---|---|---|---|---|
Support for horizontal scaling of OpenMRS instances (talk) | Large | In the scope of the project would be (depending on the progress we make using other contribution channels):
| Java, Hibernate | Rafal Korytkowski @Rafal Korytkowski |
|
Interactive Builder for Form Translations within the Form Builder | Large | Right now, in order to add translations to a form, the way to do this to add it to a configuration folder that can be picked up by Iniz. This is annoying because
The ideas is to create a UI that would enable users to add the translations for a form for any language. | React, CSS | @nethmi |
|
Archiving voided data | Large | Voiding in OpenMRS is a form of soft-deleting. We basically set a binary column to 1 and attempt to ignore data at various points. Voiding data is meant to mark it as invalid for one reason or another (e.g., an obs has been superceded or data was recorded against the wrong patient). This is very useful, because voided data can be easily restored, but over the long term (especially with “immutable” objects likes obs), this causes some OpenMRS tables to grow to contain far more voided data than non-voided data. To address this, we should add a mechanism to archive voided data with the possibility of restoring it. | Java, Hibernate
| TBA | @Wikum Weerakutti |
Service Queues | Medium | We have a service queues app in O3, which is functional, but needs some attention, both to the frontend design and to the backend APIs that are used to populate it. The goal here would be to fix various UI issues and improve the overall performance and reliability of the queue module. The Service Queues view is incredibly useful for managing outpatient clinics, allowing users to track who is waiting for service, how long they’ve been waiting for etc. | React | @Ian Bacher |
|
Improved Appointments Calendar View | Medium | We have an appointments calendar that is meant to give an overview of appointments. Unfortunately, it is currently less useful than it should be. A few things we need to address: the ability to drill-down into, e.g., monthly, weekly, and daily views; the ability to see all appointments, not just the number per service, instead of changing screens when clicking on a day or service, the app should likely display a modal; the calendar view should not be hard-coded around the Gregorian calendar, but support the various calendars from the @internationalized/date package. | React | TBA |
|
Extend Performance Tests | Medium | The current load tests cover only two scenarios, limiting performance insights. This project aims to:
This will improve OpenMRS’s ability to handle high-load conditions and optimize system performance. | Java, Gatling | @Jayasanka Weerasinghe |
|
Medium | We added Hibernate Envers for audit logging in OpenMRS 2.7.0, but right now, admin users cannot easily view or manage these logs. This project aims to build a backend module that can
| Java, Spring, Hibernate | @Wikum Weerakutti | @Manoj Rathnapriya | |
Enhancing Swagger Documentation: Automating OpenAPI Specification Generation | Medium | Errors related to the Swagger documentation have been under review, with efforts made to upgrade it to the latest versions of OpenAPI (or a similar version). The necessary pull requests have already been submitted. For this GSoC, it is suggested that, in addition to the ongoing work, efforts should be directed towards developing tooling or a mechanism that would enable the automatic generation of Swagger documentation by analyzing Javadocs, return types, and other relevant elements. Some work has already been undertaken to achieve this, utilizing reflection to scan OpenMRS resource handlers. It is proposed that further developments be made on top of this existing foundation to enhance the envisioned tooling. The ultimate objective is for the OpenAPI specification to be generated at compile time rather than at runtime, as is currently the case. This shift would ensure that errors are identified at compile time rather than being detected during runtime. For reference, Improving Our Swagger Documentation Process | Java, OpenAPI | @Chi Bong Ho | @herman muhereza |
OpenMRS Standalone | Large | Replace the Standalone with something else. Very old, can’t even build in our latest releases - we disable it as the technology no longer works and is no longer supported. We now just ship the .war file and README. Suggestion to leverage Docker - something that works by double clicking and then just runs. We never intended to use the OpenMRS Standalone version in production. But it turned out to be used in a number of places because they found it easier to use for sites that did not have support staff with advanced IT skills. We are also seeing an increasing number of people in our community who do not have lots of computer skills and just want something to download, click and run for their hospitals. | Java | @Daniel Kayiwa |
|
Improved Implementer Tools | Medium | The Implementor Tools in OpenMRS can be enhanced for better usability and functionality. Proposed Improvements:
Other potential improvements include better validation, UI optimizations, and enhancements to streamline configuration. These changes will make the tool more intuitive and user-friendly. | React | @Vineet Sharma |
|
Integrating Data Filter for Data Segregation / Multi-tenancy | Large | Data Filter is a powerful module that uses Hibernate’s filtering APIs to add additional where clauses to various SELECT statements. The use-case for this is to allow system-wide filters to be applied to the data added. Currently Data Filter includes a default set of filters that restrict the availability of data on patients to a set of locations a user has access to. The point of this project would be to expand on these capabilities to add things like: an administrative UI for associating users and patients with specific locations, additional rules to account for the various modules used in the O3 RefApp, templates for additional rules that may be useful (i.e., tie the ability to see obs with certain codes to certain privileges). | Java, Hibernate | TBA @Joshua Nsereko ? @Wyclif Luyima ? |
|
Medium |
| React | @Samuel Male |
| |
Forms Migration Tool: Help HTML Form users switch to using O3 React Forms | Medium |
|
|
|
|
Medium |
| React |
|
| |
Medium |
| React |
|
|
Pending Ideas
These ideas are either not well-defined or lack sufficient mentors. If you're interested in becoming a mentor, feel free to reach out to our organization admins.
Program Timeline
Look here for more info on the full GSoC 2025 program timeline.
DONE GSoC 2025 preparations: Community Brainstorming
Done January 27: Mentoring organizations can begin submitting applications to Google
Done February 11: Mentoring organization application deadline
Pending February 27: List of accepted mentoring organizations announced
February 27 - March 24: Prospective GSoC Contributors reach out to Accepted Mentoring Orgs, discuss application ideas
March 24: GSoC contributor application period begins
DEADLINE April 8: GSoC contributor application deadline: Prospective GSoC Contributors Submit their 2025 Applications (includes proposals)
DEADLINE TODO April 29: GSoC contributor proposal rankings due from Org Admins
May 8: Accepted GSoC contributor projects announced
May 8 - June 1: Community Bonding Period. Students get to know mentors, read documentation, prepare for work on their projects
June 2: Coding officially begins
July 14: Mentors and GSoC contributors can begin submitting midterm evaluations (for standard 12 week coding projects)
DEADLINE TODO July 18: Midterm evaluation deadline (standard coding period)
July 14 - August 25: Work Period | GSoC contributors work on their project with guidance from Mentors
August 25 - September 1: Final week: GSoC contributors submit their final work product and their final mentor evaluation (standard coding period)
DEADLINE September 1 - 8th: Mentors submit final GSoC contributor evaluations (standard coding period)
September 1 - November 9: GSoC contributors with extended timelines continue coding
DEADLINE November 10: Final date for all GSoC contributors to submit their final work product and final evaluation
DEADLINE November 17: Final date for mentors to submit evaluations for GSoC contributor projects with extended deadlines
Guidelines
Student's guidelines
Mentor's guidelines
Mentor Guide https://google.github.io/gsocguides/mentor/
Roles and Responsibilities https://developers.google.com/open-source/gsoc/help/responsibilities
Org Admin Tips https://developers.google.com/open-source/gsoc/help/oa-tips
Defining a Project Ideas List https://google.github.io/gsocguides/mentor/defining-a-project-ideas-list
Program Rules https://summerofcode.withgoogle.com/rules
GSoC Discord Chat channel discord.gg/google-dev-community
OpenMRS resources to know
GitHub: https://github.com/openmrs
Talk Forum: https://talk.openmrs.org
Help Desk: https://help.openmrs.org
Issue Tracker (JIRA): https://issues.openmrs.org