Open Data Kit 是一个致力于数据收集、整理的开源大数据平台。从消除脊髓灰质炎（对抗疾病）到热带雨林的保护，ODK 帮助了数千个组织快速、准确、离线和大规模的收集数据。 ODK 软件的用户包括世界红十字会、世界卫生组织、疾病控制中心、珍-古道尔研究所 (Jane Goodall Institute)、盖茨基金会、卡特中心 (Carter Center) 等等。该项目发源于 University of Washington 的计算机实验室，是一个充满公益情怀的项目。

## GSoC 2019 @Open Data Kit

This summer, I was fortunate to be selected as a participant in the Google Summer of Code 2019 with Open Data Kit. It was a fulfilling and memorable experience. I participated in an open-source project while improving my coding ability, as well as, my teamwork ability.

This post is a summary of the three-months experience, including all the mistakes, learnings and progress I have made.

### Project

*Strategy to Increase Devices Supported and Validate Application Behavior

The most important task for this project was to build a secondary transferring method for Skunkworks-Crow, which allows forms exchanging in different mobile devices. Last year, we used a hotspot to send/receive data but hotspots have some limitations (e.g, in Android 9 devices, users cannot use the hotspot), so I added another method (Bluetooth) and made the two methods work well in the same application.

### What I’ve Done

• Refactor the application with a new structure (#256 closed #252)
• Refactor the style.xml (#258 closed #254)
• Build the bluetooth transferring method (#260 closed #253 #265)
• Create dialogs for bluetooth transferring method (#270 closed #268 #269 #297)
• Improve the bluetooth devices scanning progress (#272 closed #271)
• Add unit tests for most UI works and preference (#274 closed #265)
• Remove the unreachable bluetooth devices in list (#276 closed #275)
• Fix the socket closed and timeout issue while using bluetooth (#277 closed #267)
• Add the empty view of bluetooth scanning page (#279 closed #278)
• Fix the transferring results presenting (#281 closed #280 #293)
• Quick fix for the bluetooth devices list view (#283 closed #282)
• Bluetooth feature with android 9 adaptations (#286 closed #284)
• Build the default transferring mechanism and UI improvements (#290 closed #266)
• Handle the permission with storage in API level > 23 devices (#296 closed #295)

### Still In Progress

• Add reset application option in the settings (#300 closes #299)
• Update the README.md with new feature (#307 closes #287)

### Future Work

• Test the two methods, and fix issues to make the application more robust.
• Add the scanning QR Code to connect feature for Bluetooth.
• Build a better UI for both the bluetooth method and hotspot (with an icon).
• Make hotspot feature works in Android 9 (and above) devices.
• Design and apply an app icon for Skunkworks-Crow.

### Challenges & Learnings

Honestly, during this summer, the biggest challenge was my time is limited. I’m in my final college year and have lots of work to do apart from Skunkworks-Crow, so the most difficult thing was to allocate my time reasonably. In the first month, I worked slightly slower than planned, but my mentors were very nice, they gave suggestions and favors to me during that period and finally helped me catch up with the timeline.

Another challenge was communicating effectively with mentors. I’m not a native English speaker, so the first time when I had a call with my Indian mentors, I was really nervous and tried my best to understand what they said. The good news is, @dexter21 and @Shobhit_Agarwal are very nice and patient. I still remember after making a call the first time, @dexter21 wrote a very detailed meeting record in case something missed. Many things like that help me become less afraid to communicate. And I believe that is also the real goal of the open-source culture: sharing, communication and writing better code.

From the technological aspect, I didn’t have any issues. Everything went well during this summer. The most difficult part is debugging, running the program on different devices may result in some unknown issues that slow your progress and drives you crazy. So it’s necessary for developers to know how to debug like using breakpoints and loggers. I think my ability in this area has been greatly improved during this summer.

### Finally

GSoC 2019 is an unforgettable experience that has improved my abilities in all aspects. And Open Data Kit is also a very cool organization, it helps people in some challenging environments collect and manage data. With the developments of society and technology, data plays an increasingly important role. For ODK, maybe we can do something more like using learning-based methods to help users manage their large data and get more value from big and structured datasets, anyway, hope ODK gets better and better.

Last but not least, thanks to my mentors @dexter21 and @Shobhit_Agarwal! You are great mentors and it was very nice to work along with you guys this summer. And I also appreciate the suggestions and favors given by @yanokwa and @LN , not only the project but some ideas for the future.