Maybe the most important thing about LibreOffice’s 4.0 release was the work done in cleaning the code and making it more efficient, while also doing the biggest API cleanup that has ever occurred since the beginning of the project. This would theoretically help boost the project’s development tempo and make things easier for contributors.
With LibreOffice 4.1 being currently on beta2 state (get it) and only a month away from the final release, we can already get a good picture of what impact this whole cleanup had in the development of our favorite office suite.
Cleaning the code and making it more “sexy” as Michael Meeks likes to say, continues to be a major concern for version 4.1. Here is what has been done so far:
- Tools cleanup
The tools/ module has a lot of duplicate functionality that is not needed and is not good for security. In version 4.1, a complete duplicate file-system abstraction was written out of the code
- String cleanups
Progress on the removal of the obsolete UniString class was made along with the removal of reduntant namespace prefixes all across the code for OUString and OString. This results in performance improvements and more easily readable code.
- Sane includes
Moving all the headers to a single top-level include/ directory and de-crufting the makefiles now results in limiting the confusion and unwanted complexity when building modules.
- Component service registration
All call-sites that create components with new-style service constructors were cleaned up.
- Less German comments
Comments in the code written in German seriously confuse and linger non-German developers/contributors. In this release, the translation of these comments to the English language continued (but still not finished yet).
- Less crashing
Markus Mohrhard created a python script that automatically imports documents and tests if they crash there. The plan is to run this script automatically against all bugzilla documents on a regular basis and correct things before getting released.
- Static checking
Another source of significant improvement, was the use of static checking tools to increase code quality, and hence reliability.
Another great tool we that has been improved in 4.1 is bibisect—allowing developers to have a git repository with binaries from every few dozen previous commits included inside it. This allows end-user testers to find very precisely where a given bug was introduced into the product using bisection of lots of binary builds crammed into a single git repository
- Unit tests
More unit tests were built and executed with LibreOffice 4.1 to avoid regressions as the code changes. These unit tests concern all parts of the suite, but most of all Calc.
- Build improvements
Build system improvements make version 4.1 building easier than ever. 126 thousand targets, and 1700 makefiles are now fully converted to GNU make leaving the need to use multiple building tools and scripts dead (dmake and Pearl build wrapper no longer needed).
- Calc core refactoring
The reason the majority of the new unit test concern Calc is the very significant re-factoring work going on in the core. So far, Calc was architected under the delusion that a spreadsheet is composed of cells – which created some serious scalability and performance problems.
The separation of cell broadcaster mechanism from the cell storage is the first step taken in version 4.1, wheres 4.2 will hopefully bring the complete kill of ScBaseCell and move to storage of spans of contiguous data of uniform type down a column.
Yeah, user interface improvements will actually land in 4.1 but don’t expect any ground-braking changes in the way things work. Everything(almost) stayed in place, but optical refinements, position corrections and better use of space results in a more attractive application.
One of the most interesting new features in 4.1 is the PhotoAlbum that will enrich the functionality of Impress. From now on, users will be able to create slide shows using a series of photos!
As 4.1 official release approaches more and more new features are implemented and you should expect to read a lot more comprehensive and impressive things when time comes. Till then, our job is to test and report any problems to the hard working developers. It is very important to use the current beta in all possible cases and take the time to report any unexpected/unusual behavior.
Get LibreOffice 4.1 beta-2