Google Summer of Code

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

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 / Kotlin).
  • Experience with CI/Automated testing.
  • Experience refactoring code.
  • Experience with dependency injection techniques.


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 / Kotlin).
  • Some UI design.
  • Familiarity with up to date Android components.

Improve Python scrapers

Skill level: MEDIUM

All ZIM files we produce are made using scrapers, the most notorious one being mwoffliner for MediaWiki websites. Others run custom scrapers written over the years, mostly using Python.
We want to rationalize the usage and maintenance of those by limiting them to their specificities only and move any reusable logic into our well tested scraperlib.

Improvements to be made:

  • Identify and move shareable code from scrapers to scraperlib
  • Maintain automated code coverage on scraperlib
  • Implement S3 Storage support into scraperlib
  • Implement S3-based optimization cache for all scrapers
  • Update the Zimfarm to support updated scrapers
  • Support the switch from external zimwriterfs tool to python-libzim

Skills needed:

  • Familiar with Python, Docker and GNU/Linux
  • Comfortable with automated testing
  • Taste for maintainable code

Improve MediaWiki Offliner

Skill Rating: HARD

Wikipedia, Wikivoyage, Wikisource, and many other wikis are make
available offline using our Mediawiki scraper: MWoffliner. Developed
for more than 5 years this is a mature and highly piece of Typescript
running on Node.js. After having focus on Wikimedia wikis, its time to
extend it to provide quality offline dumps for other kind of instances
of Mediawiki.

Improvements to be made:

  • Support WikiHow scraping
  • Provide a plugin to simplify Wiktionary layout
  • Introduce a first small version of a ZIM Javascript API
  • Increase automated testing code coverage
  • Complete Mediawiki category support
  • Fix many URL rewriting problems with non Wikimedia wikis

Skills needed:

  • Familiar with Typescript and automated testing
  • Comfortable with GNU/Linux
  • HTML DOM knowledge understanding
  • Taste for performance and code optimization

Want to join?

Then think hard about what you want to do, and go to the Google Summer of Code website between March 16-31, 2020, 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!