GSoC’19 with Open Data Kit
Here’s the summary of what I’ve done this summer as a student developer under Google Summer of Code’19. I got an opportunity to work with Open Data Kit on one of there undergoing project i.e, ODK-X - Push Notifications. I would like to share my experiences, summarize what I’ve done, recall the many things I learned over a plethora of successes and failures, and talk about future work to be done in the space.
The proposal for the project can be found here.
Organization: Open Data Kit
Mentors: Jeff Beorse, Li Lin
GitHub Repositories
- Skunkworks-Bat (Android App)
- Skunkworks-Parrot (Desktop Application)
Introduction to the project
The ODK-X - Push Notification consists of two applications currently code-named “Skunkworks Parrot” and “Skunkworks Bat” that was written during Google Summer of Code’18. “Parrot” is the desktop application, written in Java, that provides a user interface for writing messages, creating user groups to receive them, and sending those messages via the Firebase Cloud Messaging. “Bat” is the Android application that receives these messages via Firebase, checks the user credentials to see if the user is in the group that should receive this message, and displays the message to the user.
My first aim of the project was to stabilize and test both the applications so that they can be fully released and integrated into the ODK 2 tool suite. The second major improvement which I had proposed was to add interactive notification feature.
Issues and Pull Requests for major features:
Changes merged to skunkworks-bat
- Firebase Initialization error (#23)(#24) (#25)
- Permission Requests (#26)
- Multiple Group Storing (#27) (#28)
- Notification List UI (#30) (#31)
- Multiple anonymous users (#32)
- Unit Tests (#33)
- Interactive Notification (#34)
Changes merged to skunkworks-parrot
- Minor Improvements and bugs solving (#41, #35, #43, #38, #39, #45, #42, #49, #46, #47)
- Database Tests (#50)
- Interactive Notification (#51)
Changes under review till now
- Automated UI Tests (#52)
Here are the demo videos of the project:
Future Work
- There is much scope for UI Improvements.
- Notifications which include images, videos, etc.
- Allowing Supervisor to use Delivery Options provided by FCM.
- Notifications through which Supervisors can create an event in the worker’s app and an alarm would be created for it.
- Functionality to ‘star’ any notification for future reference in the client’s app.
CHALLENGES FACED:
Initially, I faced challenges while setting the project and later on, I faced difficulties in writing the tests for both the application as it's my first time with testing. On both occasions, Li Lin helped me a lot. And whenever I need to understand the flow of the code, Jeff Beorse was always there to assist me. Thanks to my mentors — Jeff Beorse, Li Lin and all other community members.
Lessons Learned:
Obviously, I gained a lot of technical knowledge from other members of the community as well as while working with the code. But I also learned some general advice that I will continue to follow in the future as well.
- Be sure to make your thinking visible to other fellow developers
- Try to communicate as much as you can with community members, both developers, and users
- It’s important to be flexible with your work priorities as anything can come out of the box.
CONCLUSION:
Working with Open Data Kit was my first experience with open-source software development and I really enjoyed it. I learned many good coding practices, dug deeper into the Android framework, code refactoring, etc. Contributed to a very worthy cause and worked with real customers and people from various parts of the world. It was a very enriching experience, which I intend to continue participating.
I would like to thank all community members of ODK and particularly Jeff Beorse and Li Lin, my mentors for making this happen.
Thank you, Google!
Doing a big open source contribution was one thing I always dreamed of. Without google, I wouldn’t have gotten this opportunity to meet these amazing people and get this invaluable experience. Thank you, Google for giving me this opportunity!