Google Summer of Code

For the full list of issues, see our GitHub repositories /openZIM and /Kiwix

Improve Custom Android App implementations

Skill Rating: HARD

Our Custom apps are a great way for users to download a subset of the content that they want without having to navigate through a list of daunting content. They are currently seeing rapid growth in adoption and we want to improve the experience for our users currently using them by increasing their stability.

Improvements to be made:

  • Validate zim files from hash to ensure they are not corrupted.
  • Implement the recommended backup download solution to fix corrupted files.
  • Write a simple intuitive UI for this download solution.
  • Research solutions for embedded zim files without unpacking the content from the APK and implement the most feasible solution.
  • Look into the best way to move OBB files within the file system of between devices and implement any feasible solutions found.

Skills needed:

  • Android dev experience (Java)
  • Basic knowledge of the JNI.
  • Some UI design


Improve the Kiwix Android apps CI setup and increase our code coverage

Skill level: EASY

We have a basic automated test setup for our Android application using Travis Continuous Integration and Bitbar cloud testing. During this project you would be improving existing test infrastructure as well as writing new tests to help combat regressions in our code. As well as writing tests you would be refactoring parts of the code base to improve test-ability and readability.

Improvements to be made:

  • Write new unit and instrumentation tests to improve code coverage.
  • Where needed make use of dependency injection in test implementations.
  • Refactor code where needed to allow it to be unit tested and improve readability.
  • Specifically ensure the following areas are tested: Network, File System, Content Download, JNI interactions.
  • Improve our CI build process to allow for quicker and more targeted testing.

Skills needed:

  • Android experience (Java).
  • Experience with CI/Automated testing.
  • Experience refactoring code.
  • Experience with dependency injection techniques.


Create a Kiwix Hotspot App

Skill level: EASY

This project would involve creating an application building on the Kiwix Android application that would allow local devices to connect to an Android devices hotspot and then view the articles in the ZIM files that were download and hosted on the hotspot device.

Improvements to be made:

  • Create a webserver for a fork of the Android app.
  • Create the UI to select which files you wish to host.
  • Make the necessary components to allow devices connect to the wifi hotspot to browse ZIM files on that device.
  • Investigate DNS tricks/forwarding to make the experience more seamless.

Skills needed:

  • Android experience (Java).
  • Basic knowledge of the JNI (check out kiwix-serve).
  • Some UI design.
  • Knowledge of how networks work.


Improve Kiwix Android User Experience

Skill level: MEDIUM

This project would involve general user experience improvements including improving the UI of specific portions of the Kiwix Android application to allow users to interact more intuitively with the application and to implement more modern design patterns and components from later Android Support Libraries.

Improvements to be made:

  • Improve the UI/UX of various features of the app including tabs, and navigation.
  • Migrate activities to use newer components such as constraint layouts and unify the style across both activities and devices.
  • Implement a few commonly requested features such as highlighting or a more in depth history.
  • Work with other team members to highlight areas that you feel could do with improvement most, plan them and then implement.

Skills needed:

  • Android experience (Java).
  • Some UI design.
  • Familiarity with up to date Android components.

Want to join?

Then think hard about what you want to do, and go to the Google Summer of Code website between March 25, 2019 and April 9, 2019 to submit your projects!

How to apply

Please read our guide to Writing your Google Summer of Code application

Do you have questions?

Then come and join us on IRC via!