Android/Gecko

From Kiwix
Jump to navigation Jump to search
Android logo

Always more people use smartphones as 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, to the opposite of the Apple app. store, open to free softwares. Consequently our next big step, is to port Kiwix to Android.

The Wikimedia Fundation is really interested in the Android Version and grants 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 an we will do our best in that way.

Technology

We do not want to start an other software which would generate a lot of additional code to develop and maintain. So, current Kiwix code base has to be reused and ported. Kiwix runs currently with the help of Xulrunner, but it can also runs perfectly using Firefox. Firefox can since version 3 is able to 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).

Challenges

One difficulty is that Android devices have ARM CPUs. So we need to cross-compile Kiwix for ARM on GNU/Linux. We use that it's possible to cross-compile Firefox Mobile ; we also know that part of our code can 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)

Roadmap

Kiwix Desktop UI prototyping port (in Android Emulator)
  1. Setup Firefox compilation environment and Android emulator (20 hours) done
  2. Compile & run Firefox for mobile (20 hours) done
  3. Port of Desktop UI - XUL/CSS/JS files (20 hours) done
  4. Port components to JS-ctypes (~40 hours)
  5. Prepare the first prototype (~20 hours)
  6. Redesign the UI (~20 hours)
  7. 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.

See also