Google Summer of Code 2022 Work Product Submission
August 31, 2022
Student
Satvik Singh
Organization
INCF – International Neuroinformatics Coordinating Facility
Project Title
LORIS Contribute to LORIS: Development of modules and API
Mentors
Christine Rogers, Rolando Acosta
Project Description and Overview
The aim of this project is to contribute to the LORIS codebase in a general sense. This was a highy flexible goal that zeroed in on to improve the pre-exisiting or add new visualizations at the dashboard. Apart from that some secondary goals were to also improve the codebase by adding documentation and improving RB dataset.
Deliverables
The list of deliverables for this project were set as follows
- Familiarization with LORIS codebase
- Improvements to the pre-existing code and issues
- Existing API and module bug fixes
- Code or improve a feature and feature requests
- Produce documentation about the changes and suggest changes
- Refactor code after review
Timeline
May-June (Phase 1)
The first phase of the timeline was spent getting to know my mentors and organization, setting up my LORIS development environment and getting accustomed to the LORIS codebase and it’s developer practices. It was also spent sending PRs related to documentation and a feature request. I have documented this phase in my installation docs.
July (Phase 2)
The second phase of the timeline was spent by me working on the Dashboard module to improve visualisations by adding the Total tooltip to the Study Progression line charts, changing the Recruitment sex bar chart to stacked and adding Total and adding a Recruitment Age pie chart. I also sent improvements to RaisinBread and finally gave my mid-term presentation.
August-Sept (Phase 3)
This phase was spent by me improving the previous PRs, me making the Recruitment Age pie chart completely dynamic and configurable and me working on a demonstration of my previously proposed idea to install and integrate Chart.js library to the LORIS codebase as an upgrade from the previously used libraries. It also included the LORIS core helping to merge my previous PRs to the main codebase.
Repository
This is my fork of the LORIS codebase. Can be used as reference for my work.
Merged Pull Requests
This is the list of my merged Pull Requests from the timeline. The PRs will be expanded upon in more detail below.
Open Pull Requests
This is the list of my open Pull Requests from the timeline. The PRs will be expanded upon in more detail below.
Visualisation PRs
- Visualising of Total in Study Progression Line Charts
- Updated Recruitment Bar Chart to Stacked and Add Total
- Added a Dynamic Candidate Pie Chart to Recruitment Dashboard
- Chart.js Integration with LORIS codebase
- Chart.js Overlapping Bars demonstration
General PRs
- Troubleshooting Documentation for lorisadmin account
- Field warnings for the Instrument Builder Module
- Fixed Inconsistent RaisinBread Data
Mid-term Presentation
I presented my work to the LORIS development team on 2nd August. I presented my journey and the progress I had made in my project at that point over the timeline. I discussed the current state of visualisations and LORIS codebase and gave suggestions to the possible directions that LORIS could go in.
Final Presentation
Presented and discussed my POC about migrating to a new library and the ideas associated with it with the LORIS development team on 6th September. Showed them demo of the library integration, pros and cons etc.
Experience
The whole timeline of Google Summer of Code was really great for me. I learned a lot in terms of new technologies such as PHP, learned the organisational workflow and how to collaborate better. The tasks were challenging and interesting and made me go outside of my comfort zone. The experience of working at LORIS for me was an extremely valuable and memorable one and will help me a lot in my career as a developer and engineer.
I would like to thank my mentors Rolando and Christine for being so helpful, providing guidance, easy to communicate with and having enough patience to see me through the project, and also the LORIS development team for their insights and help!