Karbon 3 Alpha: also pure Qt5/KF5 now

On the road to a Calligra with no more need of the porting util KDELibs4Support another milestone has been passed: Karbon now also is based purely on Qt5 and KF5.

Karbon 3 Alpha without KDELibs4Support library

As with the other ported Calligra apps, some small glitches here and there and then the old bugs. Well, work in progress 🙂

You might have discovered on the screenshot that the Stencil box is shown, which in Calligra versions 2.x and before was exclusive to Calligra Flow. Adding stencils for flow diagrams and other things can be also useful in presentations or text documents, so the Stencil box will be made generally available in Calligra 3. It still needs to be thought about how to perhaps merge it with the general Shape box, that is left for later for now and surely something to work on with the VDG.
Calligra Flow itself has not seen any porting efforts so far, as the plan is to rewrite it using Karbon components, given that Calligra Flow handles the same document type as Karbon, rich vector graphic documents. The main difference has been that Karbon only supports single-page documents, while Calligra Flow also supports multiple pages. And both UIs have been targetting different use cases.
The idea and goal here is the same as with e.g. Calligra Words and Calligra Author: reusing components while providing optimized UI for the different usecases.

For now though we are still in the porting phase: get rid of “KDELibs4Support” completely, fix any regressions and then some bugs, also get all unit tests to pass again. So no dreaming about future features yet, first we need a real base for that.
There are still 21 matches in 16 CMakeLists.txt files on “KDELibs4Support” in Calligra’s codebase, sigh… Calligra Sheets, Calligra Plan and Calligra Gemini are still awaiting their final port. So time to get back to the KDevelop window… 😉

Calligra Stage 3 Alpha: next pure Qt5/KF5 one

Earlier this week we could report that Calligra Words 3 has joined the club of pure Qt5/KF5 apps, now we can say the same about Calligra Stage 3 Alpha:

Calligra Stage 3 Alpha without KDELibs4Support library

As with Words and the other Calligra apps, Stage of course has seen a few regressions due to the porting, which will be need to be ironed out in the next phase, together with the existing old bugs. Where you are invited to join our efforts!

And quite some code still left which depends on the util KDELibs4Support library (47 matches in all Calligra CMakeLists.txt files). So expect some more success reports about porting away from it 😉

In other pure-ness news, we made a decision that was hard to do, but which seems most pragmatic and which has now also reached a milestone: Krita has been split off into a git repository of its own, on its way to become a project pure on its own, outside Calligra.
git clone git://anongit.kde.org/krita
is how you can get Krita code now. The “master” branch of Calligra contains no more Krita code since a few days already. The current 2.9 version will still be maintained and released from the Calligra repo as part of Calligra 2.9, only Krita 3.0 will be the first on its own, and Calligra 3.0 the first without Krita.

This was not done lightheartedly, after all the years in which Krita and the other Calligra apps have been developed together, sharing the same libraries and many plugins and gaining a lot by the resulting synergy. Now with the success of Krita many new developers have joined its development, which is great by itself. Just, most of them are interested in a painting app, but less or not in the other Calligra apps or the abstract middleware for document-content apps, as there is with the Calligra libs. Also with more developers now hacking on Krita only than the rest of Calligra together, enhancing the Calligra libs together was often not possible due to missing time by the other app maintainers, which resulted in more and more Krita-side-only additions to the shared libs. Which made things a lot more complicated for everyone, outweighing any synergy.

All the libs and plugins shared so far have been forked by Krita and are being reduced now to the max. We already made sure Krita 3 and Calligra 3 apps can be nicely co-installed without clashes. We could also see a last synergy: all the Qt5/KF5 porting work on the shared code was done when it was still shared 🙂
Will be a hard time for developers working on both projects in the beginning due to a lot of code being similar, but no longer the same, but we will manage.

For me this means also that a feature I had on my TODO list will be harder to achieve, with all the brush-engine code from Krita no longer inside the Calligra repo: supporting sketching and scribbling in all kind of documents by pen input, using the great brushes from Krita for better looking strokes etc. But well, I first have to get to this entry in my long TODO list anyway before I think more about it 😉

Calligra Words 3 Alpha: now pure Qt5/KF5

Seeding in spring…

This year, in March 2015, we started the port of Calligra from Qt4/kdelibs4 to Qt5/KF5. Both, because Qt4/kdelibs4 is running out of support and because of the promised lands of better portability and more granular dependencies with Qt5/KF5.

The Qt developers and KF5 developers have done great efforts to ease the porting. Source incompatible changes in the API between both variants were only minimal. And with the KDELibs4Support library a great porting util was provided, which also allowed us to reach some first success in porting after just a few weeks. Only documentation of needed changes could have been better (but we are also used to high standards 🙂 ).
First easy success makes lazy, and with days getting longer and out-door temperatures nicer in the northern hemisphere other things got more interesting as well, so in the following months porting was only slowly progressing. Also were GSoC projects and other feature development done against the stable 2.9 branch during those months, so more porting would have made integrating those things also to the ported version more difficult. Thus we set ourselves the rule to just do as minimal porting as needed, using the KDELibs4Support library whereever possible. Still, a lot of clean-up work based on porting needs was done in the 2.9 branch during that time. And the 2.9 branch got merged weekly to the porting branch, and amazingly this worked without breaking things all the time, just needed minimal adaption here and there.

Harvesting in summer & autumn…

Now, the port will be only really complete once the KDELibs4Support util no longer is needed. The Kexi developers were the first to reach that point, because they followed a separate path in the porting effort, in another branch. The rest of Calligra was still to follow…
Once GSoC came to an end a few weeks ago and with that also any feature development scheduled in parallel, and with no bigger regression known in the minimal porting state, full porting mode was entered: the porting branch became official master branch and since then has seen many commits cutting out the strings to KDELibs4Support. Krita was the first to gain “fully ported” state here, thanks to funded work. Happily, due to the shared code in the Calligra libs and plugins, the rest of Calligra also could win from that funding 🙂

And with further work being done, here we present the next Calligra app that is pure Qt5/KF5-based:

Calligra Words 3 Alpha without KDELibs4Support library

More to come…

The current few regression glitches that sneaked in will be ironed out in the next weeks, along the completion of the port of the other apps. Lot’s to do still, and then also all the existing bugs from before.
But we are dedicated here to make e.g. Calligra Words finally a serious editor for serious documents (and unserious documents, of course), and we get closer than ever IMHO.

So look out for Calligra in 2016!