GSoC’21 Community Bonding Period @OpenMRS
A brief introduction about Google Summer of Code and how I found out about it.
Google Summer of Code(GSoC) is a global mentorship program to engage more students in open-source development. Students utilize their summer breaks working with a recognized open-source organization for ten weeks on a programming project. The perks? The mentorship you get. The experience you gain. The skills you develop and hone. Both technical and soft skills. And if this wasn’t enough, you also get a stipend for completing your project milestones.
I found out about GSoC in my first year of college through two of my seniors, who had been a part of this program. I had since then, wanted to be a part of it, and finally became a part of it this year!!
The organization and the project
As mentioned in the title, I was accepted for a project at OpenMRS. I found OpenMRS in December last year when I was scrolling the GSoC ’20 organizations' list to look for an organization that best aligned with my current skills and interests. I started contributing in February ’21, mainly in the FHIR module.
The project for which my proposal got accepted is the Support for Extended Operation in FHIR. I will be working on this project under the mentorship of Varun Gupta and Ian Bacher.
Goals and tasks of the project in brief:
- Implement the
$lastn
operation on Observations - Improvise the implementation of
Observation.category
to allow enhanced filtering in the$lastn
operation. - Implement the
$lastn-encounters
operation on Observations - Implement the type level
$everything
operation on Patients - Implement the instance level
$everything
operation on Patients.
Project Repository: github.com/openmrs/openmrs-module-fhir2
The Community Bonding Period
I received my acceptance mail on 17th May 2021. The community bonding period began right away.
Community Bonding Period- Week 1
The week began with our welcome into the organization. We were made familiar with our duties and responsibilities as a GSoC student developer. My mentor also welcomed me with an email and informed me about how to reach him and his availability. He also advised me to use this time to interact more with the community and briefed me up about how we will proceed with the project. So I got back to it. I interacted with fellow GSoC students on OpenMRS Talk and connected with some of the community members on LinkedIn. I also went through the codebase, particularly that of the search in Observations. I read the documentation on the $lastn
operation and made a list of my doubts. Also started a public thread about the project on OpenMRS Talk, which would be used to discuss and, post updates and progress of the project.
Community Bonding Period- Week 2
I couldn’t give much time during the first half of the week, since I was busy resolving a few issues about my Bachelors’ project. In the second half, the discussion with my mentor started. I briefed him up about my initial approach and was advised to look into better approaches. I also started coming up with a rough implementation of $lastn
operation.
Community Bonding Period- Week 3
I realised that my initial implementation was not performing exactly what the operation was required to perform, so I changed my implementation and faced another problem- Hibernate’s Criteria API did not support some of the required functions. I briefed my mentor about these changes and issues. We discussed a workaround to the lack of window functions(dense ranking) in Criteria API. Another issue was that the OperationParam
does not support chaining functions. My mentor advised me to drop chaining for the first pass and, come back to it later. I created the relevant tickets and epic to get ready for the coding period.
Perseverance and the willingness to fail
-Ian Bacher
This one statement, said by one of the mentors at the social hour, held for GSoC’21 students and mentors on June 4th, really struck a chord with me. Thus, the community bonding period came to an end, and I am excited to begin the coding period.
Stay safe and get vaccinated!