Kiwix Google Summer of Code - Coding Projects for Offline Knowledge- Kiwix
  • For the full list of issues you can work on, see our GitHub repositories /openZIM, /offspot and /kiwix

    GSoC has three sets of projects, lasting ~90, ~175 and ~350 hours approximately so that people who can not work full-time (because of exams or whatnot) can still participate.

    WP1

    What it is: WP1 is the bot and website that provides tables like this one on English Wikipedia. The tables help editors determine which articles they should focus on in their WikiProjects. The website also provides tools for creating a Wikipedia “selection”, ie a list of articles, so that they can create a ZIM file and have a subsetted offline version of Wikipedia.

    Project A, Combinator Builder: There are currently multiple ways to build a selection, from simple article lists to SPARQL queries. We wish to create a “combinator” builder, which allows a user to combine existing or future builders to create a final selection.

    Deliverables:

    • Provide a data model for a combinator builder that integrates with the rest of the WP1 site
    • Provide a UI frontend for users to create combinator builders
    • Sufficient backend and frontend tests

    Skills required:

    • Good understanding of Python
    • Understanding of Javascript
    • Understanding of Vue.js or willingness to learn

    Difficulty: Medium

    Scope: Small (about 90 hours of work)

    Project B, Scheduled selections/ZIMs: Currently, users create their selections and then manually request/create their ZIM files. However, for certain classes of selections, such as those based on WikiProjects or SPARQL queries, it is possible that the results are stale and there are more recent results available.

    We should provide a way for a user to schedule their selection being processed into a ZIM file (1 month, 3 months, 6 months, 1 year). As part of this process, the user should provide us with an email where we can notify them that their ZIM has been created. We should also remove ZIMs from the schedule if the user doesn’t “claim” them, ie come to the website and download them.

    Deliverables:

    • Scheduling system for running ZIM creation tasks on set intervals
    • Method for collecting email addresses, and publication of privacy policy for handling of PII
    • Frontend UI for scheduling ZIM files, including handling required input and error cases
    • Sufficient backend and frontend tests

    Skills required:

    • Good understanding of Python
    • Understanding of Javascript
    • Understanding of Vue.js or willingness to learn

    Difficulty: Medium-Easy

    Scope: medium (about 120-150 hours of work)

    Interested? Check out the repo.

    Kolibri UI revamp

    Some of the content we offer is actually harvested by our friends at Learning Equality. Kolibri2zim is the tool that allows us to package it to the ZIM format. The UI rendition isn’t great and we’d like to fix that.

    Objective: Redo the menu UIs based on a new design. Foundations have already been laid in a Git branch, but some features have not yet been implemented or are missing.

    Technologies: Vue.js + a bit of Python

    Key Deliverables:

    • Finalised code changes for creating beautiful Vue.js UIs inside Kolibri ZIMs

    Skills required:

    • Good understanding of JavaScript, HTML, and CSS
    • Familiarity with at least one modern JS Framework (React, Vue.JS, Angular, …)
    • Knowledge of web development and user interface design.

    Difficulty: Medium, but short (90 hours) project

    Interested? Check out the repo!

    I18n of Zimit frontend

    Zimit is our off-the-shelf solution to turn any website into a working zim file that people can browse offline. That’s nice, but with users all around the world and mostly in the Global South, we want to make sure that as many people as possible can use it quickly, without having to go through a translation dictionary first.

    Objective: we want to automate the translation process of our zimit fronted, possibly via translatewiki.net.

    Deliverables:

    • Identify changes to text strings and prepare them for translation
    • Integration with Translatewiki for translation.
    • Release to our youzim.it production website of at least two languages.

    Skills required:

    • Good understanding of Python;
    • Be somewhat familiar with Translatewiki is a plus

    Difficulty: Easy-medium (or medium-easy?), about 175 hours of work.

    Interested? Check out the repo.

    Hotspot companion

    The Kiwix-hotspot is a neat adaption of the Raspberry pi microserver into a local hotspot that entire classrooms can connect to without having to download anything onto their devices. The hotpost owner downloads content from our library onto a microSD card running the Raspbian OS, and off they go, the hotspot is fully autonomous with Kiwix-server working as a regular http daemon. The problem arises when users want to update the available content, or download usage metrics collected by the hotspot.

    Objective and deliverable: Develop a mobile application prototype serving as a bridge between internet connectivity and the offline mode of a Raspberry Pi-based hotspot. The primary goal is to facilitate efficient data synchronization, allowing users to leverage internet benefits when available while ensuring a seamless offline experience. The application will have a very simple interface enabling users to manage the transfer of data between the remote server and the Raspberry Pi.

    Difficulty: Hard (it touches on many different techs but the good news is we don’t expect more than a working prototype), 350 hours.

    Skills required: mobile, flutter

    Look around the Offspot repository and meta issue here.

  • Want to join?

    Think hard about what you want to do, and go to the Google Summer of Code website between March 18 to April 2, 2024, to register and submit your project idea(s).

    After reviewing all proposals, students projects will be announced on May 1, 2024. (full timeline)

    Help & Tips

    We want to be clear upfront that we will not select candidates who have never made at least one PR to our codebase: we make our choice based on how candidates handle themselves (is the code clear, are there comments, how do they explain their choices when asked, etc.). PRs do not need to be related to the project submitted – we just need to know that you can work in a team. If we don’t know you, we can’t choose you! And if your project has “UI” in it, then it probably is a good idea to submit a mockup of what you plan to implement.

    (We also wrote a helpgul guide to Writing your Google Summer of Code application)

    Last but not least: over the years about half the students who did GSoC with Kiwix came up with their own project rather than one from our list – be bold!

    Do you have questions?

    Then come and join us on our Slack channel!