Ever more people use smartphones as a medium for their digital life. This is especially the case in emerging countries, which are targeted by Kiwix. We think Android will be the most important mobile platform in the next years, especially for the cheapest devices. Android is in addition, unlike the Apple AppStore, open to free software. Consequently, our next big step is to port Kiwix to Android.
The Wikimedia Fundation is really interested in the Android version and financially supports the development of this port.
We focus on tablets because this seems to be there where Kiwix can help a lot, especially in India, but the software should also run on smartphones and we will do our best in that way.
We do not want to start a separate project, which would generate a lot of additional code to develop and maintain. So, the current Kiwix code base has to be reused and ported. Kiwix runs currently with the help of Xulrunner, but it also runs perfectly using Firefox. Firefox can since version 3 launch third party software, like Kiwix. Fennec, Firefox for mobiles, was launched a few month ago for Android, so we hope that Kiwix could be ported to Android using Fennec or something similar (see this example).
One difficulty is that Android devices have ARM CPUs. So we need to cross-compile Kiwix for ARM on GNU/Linux. We know that it's possible to cross-compile Firefox Mobile; we also know that part of our code compiles for ARM because we have ported kiwix-serve... but we never did it for the whole software.
Porting a Xulrunner application to Android is not documented and it seems we are one of the first projects trying to do that. Here are three different approaches:
- Compile Firefox mobile and hack the code (easier way)
- Compile Firefox mobile and run the code with -app code (middle way)
- Compile Xulrunner for Android (most complicated)
- Setup Firefox compilation environment and Android emulator (20 hours)
- Compile & run Firefox for mobile (20 hours)
- Port of Desktop UI - XUL/CSS/JS files (20 hours)
- Port components to JS-ctypes (~40 hours)
- Prepare the first prototype (~20 hours)
- Redesign the UI (~20 hours)
- Prepare a first public version (~60 hours)
It's not clear exactly how at the end it will work, but we will firstly try to hack the fennec code adn afteward try to see how to do that more cleanly.