Boudewijn Rempt

Thursday, 28 October 2010 10:05

Last Week in Krita 42 -- release update

Well... Krita 2.3 hasn't been released yet. The third beta has been tagged this week, and will be released soon. Lots of bug fixes there! But there are still a number of bugs that block release as well as some failing unittests. We don't want to release with known crashes, for instance. So all those blockers need to be fixed before we can create the first Release Candidate.

You might also have heard something about problems in the KOffice community. Since Krita is based on KOffice technology, those problems might affect our release schedule. There's nothing fatal going on, though.

Within the KOffice community there has been a long-standing disagreement about the architecture of the core component called "Flake" -- the object component technology that ties together various kinds of content in one document and that is used for the vector layers in Krita, as well as the tool system.  Beyond those disagreements, there are also interpersonal issues that have been plaguing the KOffice (but not the Krita!) community for a long time.

What is going to happen now is that the people who cannot come to agreement anymore go their own way, each of them taking a version of KOffice and pursuing their vision. It's best characterized as a divorce: there will be, at least for some time, two projects based on KOffice.

Krita is not going to strike out on its own -- although the developers and contributors discussed that amongst themselves. But Krita is not going to be part of both versions of KOffice: there's one Krita project and one team, and Krita will continue in one of those versions of KOffice. Worst thing that might happen is that people running trunk will have to use "svn switch" to move to another source tree checkout.

The most important thing to note here is that the Krita developers are all together. There's no loss of focus or of fun for us, and we're pulling together to make Krita 2.3 really ready for artists. We're working and looking towards releasing Krita 2.3 this year, after fixing the release blockers.

The bottom line: Krita 2.3 will still be released this year, and it will rock!


Krita featured in the second installment of the KDE Commit Digest, where Boudewijn gave an overview of some of the core techological advances in Krita 2.

Sven Langkamp discussed his attempt at gaining the next level in painting performance, 500 pixel diameter brushes on 6000x6000 pixel canvas using Qt Concurrent.

And Cyrille Berger presented his rendition of the Övertorneå Kyrka:


It might seem slow going, but we managed to get down to four failing unittests, two major bugs, thirteen known crashes, making 67 bugs in all. A new face^Wname on Krita's irc channel, William Steidtmann is diving deep into Krita's histogram calculation code where he has discovered some bugs. No commits  yet -- but very promising hints of fixes coming up.

Cyrille Berger fixed the loading of jpg images with some invalid exiv tags as well as a very nasty rounding bug in the channel scaling code.

Dmitry Kazakov fixed a lot of bugs in Krita's vector layers, made it possible to add effect masks to shape layers (though there are still performance issues here that might be difficult to solve) and fixed a memory leak that occurred when showing filter previews.

Laurent Montel in one of his regular sweeps through the entirety of KDE's code repository fixed a bunch of memory leaks.

Lukáš Tvrdý fixed border artifacts when using the Gaussian blur filter in an effect mask or layer, fixed the small-tiles filter and a bunch of smaller bugs.

Sven Langkamp fixed a bug where the ordinary tools could paint on local selection masks -- this sounds cool, but in practice the painting was limited by the selection itself and nothing really worked. He fixed scaling for vector layers, mirroring of layers, improved the performance of the specific color selector and fixed a bug where the popup palette was very slow when selecting a color with the tablet.


It's difficult to say whether we will need a fourth or even a fifth beta, but we are committed to making this release great. I think we have fixed the original set of crash bugs by now, but the really good work-out given to Krita by everyone who's been testing has uncovered new bugs -- and that's great! We don't mind at all if you use the beta's to find new bugs for us to fix.

Wednesday, 01 December 2010 19:33

Very Nearly Release Candidate Time!

Towards the First Release Candidate (inches at a time)

You might be feeling that we're twiddling our thumbs in the Krita community -- but nothing could be less true! The last bugs to fix, the last tests to fix before a release (we don't have any unittest failures anymore!), especially an important release like tend to be tricky and time-consuming. Of course, there are also real-life issues that make people busier than usual. Work, a new job, the renaming of the KOffice project, school and university -- all that stuff can't be ignored forever.

Still, it's time for an update.

Next week we hope to release the first release candidate of Krita 2.3. This is the big one, the one that you need to test. Because if nobody tests it, nobody will find the last few bugs and we will release another abst&uumlrzfreudig Krita. I would prefer a hundred bugs found that make us postpone the release to January to a release on time, with a hundred bugs found once Krita appears in distribution's repositories.

And right now we need people to help triage the crash bugs using Krita from subeversion. There are a number of open crash bugs that we cannot reproduce ourselves; and that makes fixing real hard. If other people can reproduce, we might learn more about the circumstances those crashes occur.

Krita on Meego

Following hot on the heels of FreOffice and KOffice on MeeGo, I made it possible to compile Krita on MeeGo, using the mobile profile of the KDE libraries. Kevin Ottens did most of the work on that profile, with me and Marijn Kruisselbrink helping. Marijn then did the packaging using the MeeGo OBS build system. All that was left to do was to remove all deprecated KDE code from Krita and run!

I have a WeTab at home, which is a fun little device. The hardware looks pretty cool, and after a series of updates the software isn't half bad either. It's fun to finger paint, but frankly, without a pressure-sensitive stylus a tablet is never going to be a great platform for art.

And for keyboard-less tablet usage, Krita's user interface needs a bit of tweaking, to say the least!

Google Code-In

Krita is part of Google's Code-In program. It's a busy time for our project, so we probably could be more active in mentoring and creating tasks. But there are some very nice results already and I'm very impressed by the people joining us on #krita.

Matus Talcik had the first version of the history docker done before Google Code-In actually had started! He's now working on refining it, to show snapshots for every history step in the docker.

Salma Sultana has prepared a really nice screencast about Krita 2.3:

Other people are hacking on VBR brush support and other items. What we need, though, is more mentors with more spare time -- and someone to go through our bugs and wishes on and select suitable tasks for students.


No exciting new features, of course! Everyone has been trying to fix the last bugs and unittests that prevent us from delivering a release.

William Steidtmann has been fixing bugs in the histogram code; with that done, he's now focussing on fixing the filters that show histograms.

Boudewijn Rempt has been replacing deprecated calls to KDE library classes and removing warnings.

Francisco Fernandes has started hacking on Krita -- his first patch fixed the usage of the Delete key. It now always clears the selection, no matter the layer type. See his blog for details! Welcome Francisco!

Dmitry Kazakov fixed loading, saving and recalculation of clone layers. He also fixed handling the various grids and the grid tool and the convolution code.

Cyrille Berger fixed several unittests. He also squashed a very nasty bug where dolphin, plasma or even konsole would hang when starting krita, for instance by clicking on a jpeg image. Cyrille improved the performance of the (ancient) raindrops filter enormously.

Lukas Tvrdy fixed the jpeg unittest and several issues in the autobrush unittest.

Sven Langkamp cleaned up the paintop settings selection list and fixed a crash in the shape selection. And that fixed another unittest.

And there were many, many more fixes -- too many to enumerate here. Go, update your checkout and test, test, test!

Monday, 06 December 2010 08:20

Moving to Git!

Or... Where did my Krita go?

For about five years, until 2005, Krita was developed in KDE's CVS repository. In 2005, it moved to subversion. And now, in 2010, Krita will move to KDE's git infrastructure. This is a much bigger change than from CVS to SVN, and people will have to learn some new habits. We might even change some of our ways of working.

And at the same time, the name of the parent project changes from KOffice to Calligra. This is in recognization of the fact that the "KOffice" technology Krita is based on has a wider purpose than just enabling office applications. See the Calligra announcement for more information!.

In any case, if you were one of the brave people following Krita development, you'll have to adapt a bit. Where you previously checked out the Krita source code from subversion and kept up to date with "svn up", you'll have to do the following:

Download the latest repository tarball*:

$ wget -c

Unpack it:

$ tar -xzf calligra-latest.tar.gz

Initialize the repository:

$ cd calligra; ./

And from now on, with a simple*

git pull

You can keep up to date! All the building steps are still exactly the same.

* NOTE: Problems have been seen when doing git pull, if the second step (unpacking the .tar.gz) is done on an NTFS partition. This may also apply to Fat 16 and Fat 32 partitions. Typically these are not partitions created by Linux, but by Windows or on removable drives.

If the experience of other KDE projects that have moved to git is anything to go by, this move will make Krita development go even faster!

Monday, 10 January 2011 20:39

Last Week/Year in Krita

2010 -- what a ride! Krita as a project came together, acquired a vision and really invested an enormous amount of energy in making Krita ready for real users. There'll always be bugs, I'm afraid, and there'll always be new improvements to make and the next release will always be better than the previous one. But there's no doubt that with Krita 2.3.0 we've created something quite solid.

Here's the result of ace tester and champion bug reporter Sinozukke's experiments with the sketch brush:

Going over my old Last Week in Krita posts, I'm myself amazed at how much has actually happened in 2010 -- apart from two major releases, 2.2 and 2.3! And the growth of the team is stunning as well. We're planning a 2011 sprint, but we won't fit in my house anymore!

For me personally, 2010 was quite a bit rockier than 2009. Parts of it were excellent, parts of it were plain tough, and I have learned that commuting for three hours a day gave me lots of time for Krita that I somehow don't have when working from home. But...

2011 is going to rock!

Since Krita development has moved to git, together with the change from KOffice to Calligra Suite, it's much easier to do development in branches. That means that features land in master (what used to be called trunk) much later, but in a more complete state. It also makes it trickier to report on what's going on!

Together with MyPaint maintainer Martin Reynolds, Sven Langkamp has been busy fixing the MyPaint brush engine plugin for Krita. A really nice example of cross-project cooperation, and the mypaint brush engine is very nearly ready for prime-time. Some brushes are still a bit slow -- and the Krita mypaint plugin will never be as fast as using the brushes natively in MyPaint since we need to convert between the way the MyPaint brush engine code expects image data and the way Krita stores it. But it's usable, not just a really cool hack. And moreover, it's a great example of the way different projects can work together!

Cyrille Berger is busy with a special vector shape to make it easy to create a layout of boxes for comics -- and possibly speech bubbles as well. He also made it possible to use a pattern as a source for your brush coloring, added progress reporting to the macro replayer and made it possible to record applying filters in a macro. Plus the long-standing filter api refactoring...

Geoffry Song and Cyrille Berger have improved the assistant feature that has been a promise for so long and made it usable. With assistants you can construct your image using ellipses, boxes, splines and lines. Then you can paint, and if you come near one of the lines, your brush will be magnetically attracted (and the strength is a setting) but you're still painting. You can modify, move and delete the assistants on the canvas and even load and save a construction of assitants for reuse in another painting.

Silvio Heinrich worked on improvements of the usability of the present management.

Boudewijn Rempt has made a feature return we lost in 2006 -- guides that you can drag out of the rulers. One small bug left, though -- the guides aren't long enough. It's likely, too, that Krita users will let the guides remain in the their repository in the rulers and use the ultra-cool assistants instead to construct their paintings!

Matus Talcik implemented a brand new history docker with thumbnails -- and now is investigating OpenCL integration in Krita.

Lukas Tvrdy created a new brush engine inspired by alchemy and made mirroring work -- not the canvas mirroring one uses to check the painting now and then, but painting and seeing the mirror half appear. As demonstrated by Animtim:

And there's much more coming: everyone is full of plans for cool stuff -- and we're not forgetting to keep the bugs down either.

Krita Sprint

The Krita team is growing and growing... Last month, we've seen Silvio Heinrich, Matus Talcik and Geoffry Song produce patches! So much that for the next sprint, we can no longer use my kitchen table. We're trying to find a nice new location.

But apart from a location, a t-shirt is a must as well! So... Go to the forum and show us what you think a well-dressed Krita contributor should wear in 2011! b

Wednesday, 02 February 2011 09:03

Krita Update!

Calligra moved to git december 12, 2010. We're in February now, and since then there have been 2222 commits -- not counting various branch merges. There are now 37 active feature branches. Not all of that work is for Krita, but in the onslaught it's getting difficult to actually keep track of all the work!

Lukáš Tvrdý has taken over the job of planning the next Krita sprint from me -- I was just too overloaded to actually do anything. With the team growing, I'm sure this sprint will rock as much as the previous one. Just don't forget the t-shirt design effort!

Kubuntiac a.k.a. Bugsbane, webmaster of is busy working on a feature overview of Krita. We need screenshots to show off!

There's one lovely design by Animtim already, featuring a squirrel. During GCI, Heroid told us in #krita that "kirta" is Albanian for squirrel and asked us what we thought of a painting squirrel as a Krita mascot, the whole team rather fancied the idea.

New Krita user Rachepatty showed this strong self portrait in the forum gallery:


KDE e.V. has accepted the proposal to send Lukáš, me and Animtim to LGM. Animtim will hold a workshop centered around drawing comics using Krita. Lukáš intends to present the state of the art in Krita, while I want to man a booth with one or computers running the latest Krita, introducing everyone who's interested to Krita in the proposed LGM lab area.


Not content with fixing bugs, for instance in the experimental paintop and the mirroring feature beloved by Animtim, Deevad and other artists, Lukáš (who is now also working profesionally on Calligra for Ixonos) has been having a lot of fun exerimenting with mirroring, in his multihand branch. For now, there is hardcoded symetry mode with the axis point in center with six brushes. Lots of fun to be had!

Cyrille Berger has started work on making it possible to have multiple inputs for every brush preset parameter -- like having both "pressure" and "random" (still called fuzzy, I think) influence the size or opacity of your brush footprint. He improved recording, in repsonse to queries by a user on the forum and made it possible to use gradients or patterns as a color source for painting. Krita 2.3 already feels old now...

Boudewijn Rempt has mostly worked on fixing bugs for Krita 2.3.x -- improving memory handling and backporting fixes from git.

Silvio Heinrich has been working on implementing new blending modes. Look at this before and after screenshot (the first is with regular Krita, the second with his new blending modes enabled).


and after...

(his own artwork, by the way!)

Silvio has also worked on improving the canvas rotation, mirror and zoom, and on improving the smudge brush.

Sven Langkamp has been chipping away at user interaction niggles, imprving the toolbox, moving the mirror options to the brushes toolbar, fixing shortcuts for tools and lots more bugs. And then for kicks and giggles added a channels docker and a basic workspace manager!

Geoffry Song has improved the assistants -- freely placable guides on the canvas that make painting along lines and shapes much easier -- beyond all recognition.


While there are some regressions -- and we're on top of those -- and some severe bugs have been discovered after the 2.3 release, Krita really seems to fulfil its promise now; it's really quite stable under most circumstances, the performance is good and the features and improvements keep coming in. So get out your wacom and start painting. We need new entries in the showcase and the forum gallery!

Wednesday, 02 March 2011 08:35

Summer of Code 2011

Last year, Krita had a hugely successful Google Summer of Code with four outstanding projects that all delivered really great code: a new transform tool with warp and everything enabled, a new extensively configurable color selector, a hatching brush engine and finally a multi-threaded projection renderer.

So what will happen in 2011? While we are waiting to see whether KDE will be accepted as an organization this year, the Krita team is already eager to discuss ideas and plans with potential participants. We are looking for students who will stay the course, maintain their code after the Summer of Code ends and who will share the fun of working on Krita with the rest of the team. We've got some ideas that might tickle your fancy all lined up: -- but you might have something else in mind. Doesn't matter! Join us on #krita on and tell us your ideas!

(Image by Animtim)

Saturday, 19 March 2011 07:46

Libre Graphics Meeting 2011

Soon it'll be time for the Libre Graphics Meeting again. Thanks to KDE e.V. sponsorship, Boudewijn, Lukas, Animtim and possibly also our webmaster, Bugsbane will attend! Animtim intends to give a workshop on painting comics with Krita (his third episode of Wasted Mutants is out!), Lukas a talk on the state of Krita, and I'll be around, ready to field any questions anyone might have!

The Libre Graphics Meeting is a completely unique conference in the free software world: it brings together developers from many projects, from GIMP  to Krita, from MyPaint to Inkscape, from Scribus to F-Spot and many, many more. There are project presentations, lab sessions, workshops, meetings on interoperability... Last year, it was also attended by many artists and visionaries. The mix is totally invigorating!

The one thing that always bugs me, though, is how little attendance there is from graphics-related projects from the KDE worls. Come on! There should be people from Digikam, Gwenview, Kdenlive and so on. It's a really friendly, inspiring place! The Libre Graphics Meeting organization can also sponsor travel, which is why they have a yearly pledgie campaign, which I really recommend to you:

Click here to lend your support to: Libre Graphics Meeting 2011 Montreal and make a donation at !

Wednesday, 23 March 2011 08:01

Krita in March 2011

Busy times ahead... We're working towards the first snapshot release of Calligra, which will be taken from git master. And git master already contains many delectable improvements over Krita 2.3.x... And the Calligra sprint in Berlin is coming up, as well as the Krita sprint in Amsterdam and Libre Graphics Meeting in Montreal. And then it's time for Akademy, again in Berlin.


We had a couple of really nice contributions from newcomers in the past few weeks! Bug fixes and even some feature development.

Srikanth Tiyyagura implemented a long standing wish: the ability to split an image into a number of tiles. He's still working on refining his patch, but the first part has been committed. Srikanth has also been fixing bugs in the layerbox.

Valentin Cheillon fixed a bug in the filter dialog: the scrollwheel whould change the active filter instead of scroll through the list of filters. He's now looking into fixing some more bugs.

Geoffry Song improved a very important part of Krita: the smoothing of freehand lines. This is something that I already blogged about in 2004. Since then, many people have contributed improvements: Adrian Page, Cyrille Berger, Bart Coppens and many others. I guess the work is never done -- it is kind of a tough problem -- but with Geoffry's latest work we have something really nice.

Silvio Heinrich created a new "smudge" brush engine. Smudge between quotes because it's also a color mixing brush... And some iterations later, the speed is much improved! Already, David Revoy and Animtim have create create art with it: 

Ryu by David Revoy

Ganesh by Animtim

Dmitry Kazakov, again sponsored by Silvio Grosso, has been working on fixing issues with really big images. While not perfect yet, the tile pooler is now useful again, even when using multi-layer images of about 10000x10000 pixels. The pooler mainly improves painting speed when starting a new stroke, and so is extremely important, even if it's a hidden feature.

Cyrille Berger has fixed a bug in the color profile handling in the pgn import/export code. He fixed bugs in tonemapping, improved the sensor handling, especially for brush footprint spacing

Marc Pegon fixed a bug in the transform tool: when scaling up/down an image using the transform tool from one of the corners when there is perspective, the corner now strictly 'follows' the mouse cursor.

Sven Langkamp merged the mypaint brush engine plugin into master, where it's available for every artist to test! He also fixed saving predefined (gimp-compatible) brushes: angle and scale were not saved, as well as locale problems in Krita brush presets. Sven made it possible to select different layers in different views on the same image: there's some fallout here, so please give the layer handling in the layer box a good test!

Lukáš Tvrdý has worked on improving the multihand tool some more: there's now support for an airbrush mode and you can mirror vertical, horizontal or both. He fixed the flickering of the experimental brush engine.

And more

Don't forget to checkout episode three of Wasted Mutants! And if you're in Montreal for the Libre Graphics Meeting, join Animtim in his Draw Comics With Krita workshop!

Saturday, 30 April 2011 08:22

Krita April Update

I've been wanting to sit down and write a little update on Krita all week -- but was too busy. And that while so much has been happening. The most exciting news are the four Google Summer of Code projects -- well, maybe more properly three, with one being shared with Calligra.

Dmitry Kazakov, who last year made Krita's projection update stack -- the bit that computes the final images from your layers -- multithreaded and determinitistic will work this year on making all the tools multithreaded and queued. This will make Krita even more responsive and even more importantly, much more stable.

Srikanth Tiyyagura will improve the resource handling in Calligra beyond all recognitions. Right now, handling resources is mostly a manual thing -- you can copy your patterns, gradients, brushes and presets to the right place in your .kde/share/apps/krita directory, and remove them manually. He will make adding new resources, deleting existing resources (or rather, hiding them), getting resources from a Get Hot New Stuff server. And then he will implement tagging (to be compatible with Gimp's resource tagging, and finally tagging of images to create a sketchbook interface for Krita. This will integrate with Nepomuk.

Bruno Morais Ferreira wants to add a new selection tool to Krita, using the SIOX algorithm. If time permits, he might also spend some time improving the existing selection tools. This neatly ties in with the work Dmitry is doing as a sponsored Krita developer together with Sven Langkamp on improving the actual selection data structures.

Siddharth Sharma has already started working on the PSD import/export filter work for his summer of code proposal. Since Adobe has opened up the specs for the CS version of photoshop, writing a psd filter no longer involves a lot of reverse engineering -- merely a little, since experience tells us that the spec seldom is very accurate or up to date. Okteta might yet see a great deal of use! The plan is to do both import and export!

Of course, this is not all: in a week, the Libre Graphics Meeting will be held in Montreal. Lukas Tvrdy will present the latest developments in Krita, Timothy Giet will give a workshop on drawing comics with Krita and Boudewijn will be around to give a personal introduction to Krita to any artist willing to listen and play -- and he will be giving a presentation on Krita to graphics professionals at the Saturday event. 

And one week after the Libre Graphics Meeting, Krita developers and users from all over the world will get together in Amsterdam, where the Blender Institute has graciously made available a room for us to gather and discuss the next stage in Krita's development. We already have had some preliminary discussions with artists David Revoy and Timothy Giet which pointed us in one very clear direction: polish, polish, polish!


Lukas Tvrdy pushed his improvements to the sketch brush to master. The sketch brush is very popular with artists, and these changes allow artists to associated sensors with properties like offset scale, density or line width. These sensors can be input from your tablet like pressure, but also randomness, speed, distance... The sketch brush already made for very lively lines, but it's even better now!

Srikanth Tiyyagura started working on fixing up the Krita dialog boxes. We were still using the old QGridLayout class to layout dialogs everywhere, but the newer QFormLayout is preferred because it adapts the layout of labers and input widgets to platform standards. It's not done yet, but when done, it will make Krita blend in much better with a Gnome desktop environment, for instance.

Geoffrey Song made it possible to compile Krita with an alternative compiler, Clang -- but more importantly, did some hefty optimization work in the ruler assistant and the circle mask generator. The latter is used every dab of every stroke with the circular autobrush to calculate the mask. Any performance improvement there translates directly to a better painting experience!

Cyrille Berger fixed a bug in our superslider's look and feel when using the Qt Curve style: this was done at the KDE UX Sprint. He also made it possible to save jpg and png files in directories with non-ascii names.

Silvio Heinrich spent a lot of effort on fixing Krita and pigment's composite operations and added a channel alpha lock option. Here we hit a conceptual difficulty. As Silvio explained:

Right now we are trying to maintain compatibility with Gimp and Photoshop but this two applications really behave different when it comes down to compositing. For compositing Photoshop uses some kind of weighted average (or whatever) to mix the source color into the resulting color and recalculates the alpha value accordingly when the destination color is semi transparent but Photoshop does this only for compositing while painting.

And you can disable this by locking the alpha channel in Photoshop. Gimp doesn't use this at all (besides the "Normal" blending mode"). Gimp behaves for all blending modes expect "Normal" like if the alpha channel is locked.

And now we are here with Krita.

Krita doesn't distinguish internally between compositing the brush strokes and layer composition (it uses the same code). To make it compatible to Photoshop I implemented the blending mode computations after the specs of Adobe. And since Krita doesn't distinguish between the two compositing types I only could bring this all together by adding the "disable alpha" button so that the user can choose what he/she prefers.

So now we have a new button in the layerbox that allow you to chose the blending behaviour you prefer. It took a bit of effort to get compatibility with old Krita files back. And then Silvio and Cyrille investigated a bug in using selections with 16 bit integer/channel colorspaces. Some good detectve work by Cyrille resulted in a fix by Silvio -- much needed, since more and more artists are discovering that working in 16 bit/integer rgba gives much nicer results!

Pierre Stirnweiss> fixed compilation of Krita with Microsoft Visual C++ -- one day we will get Krita packages on windows!

Dmitry Kazakov finally fixed a bunch of memory leaks before having to go into hiding because of a gruelling university assignment!


See you soon! Give Krita a try and join the growing band of master users of Krita master! Let's end with a nice bit of art by André Vaz:

Last week Lukas and Animtim gave a joint presentation on Krita at the 2011 Libre Graphics Meeting in Montreal. It was a great success! One of the people in the audience was Linux Weekly News Nathan Willis, who the same week published his take on the presentation. It's now freely readable, and well worth reading!

joomla template
template joomla