On making Libre Office suck less – a major refactoring effort - FOSDEM 08 #
Libre Office is currently in a phase of code cleanup and refactoring that turns the whole code base upside down. What
that means is that people need tooling to avoid quality from going down and allow for new features going in without too
much risk. The project made good experiences with using gerrit for code review of patches, tinderbox for fast
integration testing, strict whitespace checks to avoid unintended mistakes, use clang compiler plugins. They have less
process that allows for change anywhere in any part of the code base.
There is an easy hacks page for people to
get started quickly. I know that kind of thing from the Hadoop issue tracker and really appreciate having this to get
new developers comfortable with the code base and all the tooling around. They apply reply-header mangling to allow for
responses to go back to posters on their mailing list w/o prior subscription. They moved from their own dmake that
wasn’t industry standard to standard make tooling to build the project. They are in the process of translating all the
German comments – shout-out to all German speaking readers of this blog: Help the Libre Office developers understand
the code better by providing your German speaking skills for translation.
Some anecdotes: They found 4+ String
classes in the code base and managed to get rid of one of them only recently. They are busy killing dead code, kicking
out string macros, fixing cpplint warnings, refactoring code that was writing pre-STL into clean STL code, getting rid
of obsolete libraries, fixing the windows installer, killing proprietary translation services and replacing that with
an open one, getting rid of cargo-cult componentisation, getting rid of code duplication e.g. in the import filter
implementation. They are reducing structure sizes for calc, switching to a layout based frontend, optimising the red
lining for writer. The goal is to really have no no-go areas.
In order to retain quality in this fluid setup
they opted for a drastic increase in unit- and integration test coverage, using bug documents as source for tests.
Though the Bugzilla assistant they made it way easier even for non-experts and end-users to submit bug
reports.
They are going for time-based, 6-monthly releases. Due to a long build time they are keeping track of
all past binary builds for bi-section purposes – currently in git which most likely isn’t the most ideal
choice.
What works is putting graphs of bugs created vs. fixed over time in front of developers to keep the
number of bugs low.
Within version 4.0 Libre Office is shipping:
- better interop features for word
documents with comments
- RTF drawing imports
- RTF improved formulae import
- Docx annotation
support
- CMIS support for better interaction with Sharepoint, Alfresco and Nuxeo
- More import filters e.g.
for Microsoft publisher
- Visio is now completely supported
- Support for arbitrary XML to spreadsheet
mappings
- Conditional formulae
- Stock option pricing support
- Android remote control support for
slides
- Libre Logo integration for schools
- Image rendering, smoothing, re-sizing and scaling was
improved
- Better support for right-to-left writing arabic languages
- Style previews for fonts
- Better
unity integration
There even is an Android port in the works!