With an avalanche of last-minute commits, the KOffice Google Summer of Code students finished yet another great Summer of Code. We had some very exciting projects this year, and most of them were as great a success as last year. Read on for details of the achievements.
This year we had:
We had one disappointment this year, our student due to work on collaborative editing disappeared, only to surface around mid-term with a code drop — before disappearing again. So no collaborative editing in KWord this year. You cannot win them all.
But the other five students have delivered outstanding work, often going far beyond what their mentors thought possible initially. Let's take a look at what they have done up to now!
In last week's Commit Digest we already saw part of what Emanuele has done this summer: mixing colours in a way that looks and feels completely natural, by simulating the way light is reflected of pigment. This is a two-way process: to go from a colour defined in RGB to a colour defined by the properties of pigment and light and back to RGB again. The first step is usually done by using a spectrometer and actualling measuring the colours. Emanuele has created code to simulate that without special equipment, and in a way that is repeatable and makes it possible to experiment.
But that was only part of his work: another part of the project was to make it possible to paint with more than one colour at the time and to be able to make the brush pick up existing colours from the canvas: complex loading and bidirectional paint transfer. The colour mixing really grabbed Emanuele, leading him to create more and more sophisticated code, leaving little time for the complex loading and bidi paint transfer part of his project. However, he managed to check in a preliminary version just in time... and right now he is staying in his sea-side cottage coding, coding and coding. More commits are to follow!
The new Flake architecture for KOffice 2.0 not only enables us to create applications that integrate all kinds of possible content in specialised documents, there is also infrastructure to make it easy to add interesting functionality to shapes through plugins. Fredy's mission was to implement a number of these plugins, both to demonstrate the flexibility of our architecture and to add useful functionality to KWord. Remember, with KWord 2.0 rewrite we lost a lot of existing functionality because it has actually been a complete rewrite.
By now we have:
And because he was done before the end of the Summer of Code he added a new popup widget to select colours from palettes and edit new palettes.
They said it could not be done. But Marijn did it: fully editable music right inside any KOffice document. Essentially a plugin of the same level of complexity as KOffice's justly famous formula editor. The plugin supports multiple voices, measures, adding and removing of notes of every description, loading and saving in ODF documents, import and export to and from the standard MusicXML format. Marijn started his work already before the Summer of Code, when he was able to show notes in KWord when he visited me in April. Interesting bits are the automatic line wrapping, which is more complex in music than in text.
This plugin more than anything else shows off the power KOffice has gained through the Flake architecture. Marijn is very enthusiastic and will continue working on the music flake: connected notes, lyrics, multi-page music and fallback support for OpenOffice and other ODF-compatible applications are all on his to do.
Oh, and as you can see... it is actually possible to seamlessly develop KOffice on OS X, too.
Confession time! Right after the KWord rewrite started, KWord did not support ODF at all anymore. Pierre's work therefore included essentially recreating ODF support, together with his mentor, Sebastian Sauer. He was present at the ODF meeting in Berlin, in the KDAB offices, and has gone from strength to strength. Not too mention that he had to hack stuff into KWord that was not even supported by Qt Scribe like the line-through styles. Heck, even OpenOffice doesn't support this part of the standard! Among the other hurdles he had to jump was a test suite that depended on OpenOffice.org default behaviour that contradicted the ODF standard. Great work, and Pierre, too, has said he will keep working on ODF support in KOffice.
Krita never had the famous marching ants selection visualisation invented by Bill Atkinson for MacPaint. We have always shown our selections as masks, following my philosophy that there is not that much difference anyway. Besides, I did not know how to do marching ants. Only marching ants is perhaps a little meager for a whole summer of code project, so Sven took on the whole selection-is-a-bitmap thing.
Last year, Emanuele created a bezier curve framework for Krita that led to magnetic selections and bezier curve selections: however, those curves were mercilessly converted to pixels. Given the hard work Jan Hambrechts and Thorsten Zachmann have put into the flake vector path shape, it seemed silly not to try and re-use that in Krita.
Krita's selections now consist of two components: a masks that allows gradations of selection and editable paths that allow editing of the path shape at all times. The combined selection can be visualised as a mask, as marching ants, both or not at all. Sure, there's still a lot of work to do, and I managed to break some of his work when working on nodes, layers and mask — my bad! — but Sven has advanced Krita 2.0 in a really important way.
A selection that consists of vectors:
And one that consists of a pixel mask:
In Other Words...
Like last year, the KOffice hackers have been very lucky with the students who offered to work on our project. The interaction has been great, with students coming to the ODF hack sprint and Akademy. KWord now has three people regularly working on it instead of just one. That said, there is still plenty of space in KOffice for aspiring hackers who want to cut their teeth on a challenging, visible and fun project. If you feel that there should be a presentation tool more fun than Keynote, a diagram application cooler than Omnigraffle, a chart app that makes statistics blush when they lie — or if you think file formats are really cool, then do not wait for next year. Join us now!