This year's Google Summer of Code is drawing inexorably to its close: the first indication that season of mists and mellow fruitfulness is indeed upon us. The KOffice students are busy tying up the last threads, adding the last flourish of polish that makes all the difference before they will slake the satisfied sigh that goes with work well-done. So - what did we achieve this year? In our very best tradition, read on for an overview!
This year, KOffice had seven slots. Lorenzo Villani has been working on Kexi web forms, Carlos Licea has worked on making it possible to load KPresenter 1.x (.kpr) documents in KPresenter 2.0. Luká Tvrdý has worked on a Chinese brush simulation for Krita, Fela Winkelmolen on a calligraphy brush for Karbon, Fredy Yanardi on notes and presentation view support for KPresenter, Pierre Ducroquet on ODF support for KWord, and finally Benjamin Cail on converting the .doc to .kwd file import filter to import directly to ODF - and on improving the graphics support in libwv2.
Our choice of projects in 2008 was dictated less by a desire for flashiness - rather we were determined to choose those projects most likely to add solid worth to KOffice. Additionally, life was somewhat easier for our students than last year, when both KOffice and KDE were still under heavy development and every Monday was basically spent on getting the latest binary and source incompatible changes incorporated. This year, only KOffice was a rapidly moving target! And next year, we'll have reached the coding nirvana of feature development against a stable foundation.
Carlos Licea, mentored by Camilla Boemann, is an old hand at KOffice and KPresenter hacking, and was already quite aware of the challenges. His job was to code completely from scratch a new import filter for a rather under-documented file format, namely the old KPresenter .kpr format, which also doesn't map easily onto the OpenDocument presentation format. It's not really something for cool screenshots, but it is amazing how far Carlos has come: the filter is basically ready!
Thanks to Fela Winkelmolen, well-known from KDE games, Karbon now has a really cool and flexible calligraphy brush that can make use of all the features of a high-end tablet, but works just as well with a mouse. The amount of functionality delivered by Fela is amazing, and, fortunately, very visible from screenshots:
Lorenzo Villani, mentored by Jaroslaw Staniek, has been enormously productive: thanks to his work, database applications defined in Kexi are also available through HTTP and HTML: Kexi Web Forms. For the user and application developer this is almost completely transparent: thanks to the KexiDB2 library, the web forms daemon is able to do reverse-engineering on the database and discover the table names, the stored queries and provide the user with an appropriate HTML form to create or update rows.
Pierre Ducroquet and his mentor Sebastian Sauer are old hands at their task: like last year, they worked on improving the OpenDocument support of KWord. The focus this year was on proper support for page styles - and Pierre also implemented table-of-contents, saving of lists, and headers/footers. Header and footer support is something that demanded a large amount of work, because the way KWord supported these features still dated from the very first version of KWord designed by Reginald Stadlbauer.
Benjamin Cail, mentored by Boudewijn Rempt, but actually helped out most by Werner Trobin and David Faure, had chosen to port the .doc file filter to create OpenDocument files instead of .kwd files. An interesting aspect of this is that his work is actually completely independent of KWord. Indeed, because of the heavy development going on in KWord, Benjamin mostly tested converting documents using koconverter and then loading the .odt file in OpenOffice Writer. But since the ODF libraries of KOffice weren't ready either, Benjamin has spent time on the generic style handling, too. The .doc importer uses the wvware wv2 library, which was originally intended to be shared by Abiword and KWord. But the Abiword developers decided to stick with wv1, and development on wv2 stalled. Benjamin, as part of his work this year, has implemented Escher image loading for wv2. Is it all done? No, not yet. There's plenty left to do, but that's what you get with a humongous file format like .doc. Still, the improvements are very tangible!
Fredy Yanardi, another old Summer of Code hand, mentored by Thorsten Zachmann, had two KPresenter tasks before him: adding support for editing notes with slides, and implementing the presentation view for KPresenter. This means an important stride for KPresenter: together with Carlos' work, KPresenter is really getting ready for release.
Luká Tvrdý was new to Qt development, KOffice, and Krita. He still managed to implement a complete new brush engine for Krita, designed to simulate Chinese brush painting, but which actually is more or less the basis for any bristly brush engine. Luká went through many implementations, but the end result is very impressive:
All this code is already in KOffice 2.0 Alpha 10, which will be released this week for you to play with.