Older items: 2015: ( J F M ), 2014: ( J F M A M J J A S O N D ), 2013, 2012, 2011, 2010, 2009, 2009, 2008, 2007, 2006, 2005, 2004, 2003, 2002, 2001, 2000, 1999, legacy html

This last week, Tor Lillqvist handed me the task of mentoring Iain Billet for his Google Summer of Code project. He is working hard to make a nice viewer out of LibreOffice for Android. Rafael Dominguez's new templates dialog blog post provoked / inspired me to give a quick status update on where we're at. To re-emphasise, the bulk of this is Tor's work, with viewer bits by Iain; I just took some screenshots.

What is done already ?

For those unlucky enough not to have been at FOSDEM / LinuxTag to catch the latest status, and see the live demo fun - here is a quick snapshot of the current state of affairs:

Cross-compilation to Android (and iOS) works rather acceptably, almost the entire code-base cross-compiles out of the box for both 3.6 and master.

Basic system functions and bootstrapping works. The UNO run-time is running nicely, we dynamically binary patch the bugs in the ARM STL implementation to make C++ work, and all that good stuff.

Packaging, signing, installing and running the mix of Java, C and C++ code works reasonably reliably - though an un-install before a re-install helps avoid some operating-system leaks.

We can run a number of the new LibreOffice unit tests that exercise eg. the calc core intensively. These pass, as expected just like on a normal linux system.

We have a basic VCL / toolkit backend proof-of-concept to allow rendering windows to an Android NativeWindow, and capture event input for a Frankenstein demo.

What does that look like - well, that gives a fairly horrific, bolts and all, barely usable (even with keyboard and mouse) office suite on your tablet; here is a picture of it under the emulator:

Current state

As you can see the rendering is reasonable, albeit with the odd silly re-draw artifact but the user interface is otherwisefor a tablet device.

As part of the Google Summer of Code, Iain Billet is working hard at building a Java viewer UI for LibreOffice, that will integrate nicely into the platform, and provide fast pan / zoom / page-flip browsing, and all that good stuff you expect. Tor meanwhile (modulo having just left for vacation), is working on tiled page rendering to textures. That will allow us to quickly render portions of document content at any scale, asynchronously in a background thread, to suit the viewer. This is going reasonably well.

We have a viewer / file-manager shell to allow managing and selecting your documents on the sdcard. Hopefully this is iterating slowly towards the beautiful design from the design team:

And the initial viewer UI with page selector is coming along nicely too, again targetting the design:

The code for the viewer is in the git / master branch in the android/experimental/LibreOffice4Android directory. It should build out of the box with a make clean all install run , of course after you have followed the compilation instructions and Android how-to. Help much appreciated improving and extending this to other components: calc, impress etc. The test-files above are (for interest) 1, 2.

Ongoing viewer work

As you can see, lots of the heavy lifting is already completed, and the stage of fertile hacking is arriving, with smaller incremental forays from something working, to something better. There are still a largeish number of things that need doing / cleaning up though, some of these will help other platforms & products too:

Move to using the cunning Mozilla faulty linker not only to get faster startup, and avoid the need to de-compress and duplicate libraries from our 70Mb install onto internal flash.

Complete and expand the page rendering abstractions for spreadsheets and presentations, to allow better async rendering / zooming and navigation of these different document types.

Target Android - Intel/x86, not only to take advantage of a faster / accelerated emulator and thus quicker development iterations, but also to target Android/x86.

Optimisation: profiling, with valgrind on android or better begging a profile from someone with a beefier machine already setup.

Optimisation: removing irrelevant pieces from startup, such as parsing dimensions for many thousands of different kinds of print-able sheets of labels.

Optimisation: continuing the move to a single shared library already in-place with the --enable-mergelibs configure option to reduce link time and allow better optimisations such as global code re-ordering. This is also good for desktop users of course, and getting everything into one DSO is a pre-condition for the iOS port.

configure option to reduce link time and allow better optimisations such as global code re-ordering. This is also good for desktop users of course, and getting everything into one DSO is a pre-condition for the iOS port. Tons of UI / viewer improvements, 3D transitions, pretty page flips, and more. Improved, distinctive artwork for different file-formats (we support so many) etc.

Help much appreciated with any of that, please do mail the developers list if you want to get stuck in somewhere there.

Future editor work

Of course, a viewer, even one that handles the full breadth of formats that LibreOffice can handle, is not enough. The plan in the deeper future is to add editing functionality. That brings plenty of challenges, particularly around re-using existing code and widgets in a tasteful way.

One thing that really needs working on is a liblibreoffice.so model. That would allow developers to link a single shared library and do a small amount of platform/toolkit integration work to re-use the LibreOffice core and renderer. That is something that is reasonably do-able today in fact, indeed - it would be rather excellent to fully split the rendering core from the presentation / scrolling etc. internally. That would also allow a new, native linux, viewer client, which in turn would accelerate prototyping of what is needed for mobile. Currently a slow build, re-package, install, run appears to be required for native Android development.

Finally if you want to hear, and see more, and get involved with what we're up to, a great way to do that is by coming to: