The first user-ready version of Krita 2 is being released today! Named after the famous Russian-French artist Chagall, Krita 2.3 is the first version of Krita since 1.6 that the developers consider ready for artists to work with. Krita is a painting and sketching application for professional artists and the development focus was squarely on this one goal: getting Krita ready for real use by artists.
To that end, the developers have paid particular attention to stability, fixing nearly 300 known bugs and on performance, especially when painting. There have been more than 1000 changes by 30 different people since the release of Krita 2.2. (As an aside, there have been about 12000 commits to Krita over its history by over 140 developers).
Watch the release movie by Kubuntiac:
Ogg version can be viewed here.
Krita 2.3 also provides many new features, ranging from brush settings presets to canvas rotation, from warp transform to a new color selector -- and of course many new brush engines.
Thanks!
But first it's time to give a big Thanks You to the whole Krita community and especially Silvio Grosso for sponsoring first Lukas Tvrdy and now also Dmitry Kazakov, to Google for sponsoring Dmitry, Marc, Adam and Jose this summer, to Peter Sikking for his help finding our focus, to the many artists and users -- David Revoy, Gaizka, Timothée Giet and others who helped test Krita and gave us their input -- and to all the volunteer developers who spent so much time on making this release a reality!
New Features
There's too much to mention, but take your time and explore -- or enjoy this screencast by NDee:
Contact Us
If you have any questions about using Krita, do not hesitate to contact us. You can find us on #krita on irc.freenode.net, use the Krita forums, or mail the Krita mailing list. Please report bugs at bugs.kde.org -- we really appreciate the effort of our testers and bug reporters! Krita 2.3.0 does not have a finished manual yet, but an effort is underway.
Download and installation
Krita 2.3.0 is only end-user ready on X11 based platforms like Linux and FreeBSD. Windows and OSX are not supported, but experimental packages might be available. Your distribution might provide packages already in alternative repositories.
Note that some distributions do not package OpenGTL. Without OpenGTL, Krita does not support OpenEXR and colorspaces with a bit depth beyond 16 bits/channel. OpenGTL also provides many filters and generators.
If you want to make full use of Krita's brush engines, you will need a Wacom graphics tablet. Other brands are not well supported by the Qt library Krita uses and will probably not work for you.
Next!
In 2011, Krita will no longer be based on KOffice, but instead on the Calligra Suite. We intend to provide proper support for Windows, a manual and many, many new features, some of which are already in development. Working on Krita has never been as fun and rewarding! So if you would like to join the international team of enthousiasts, whether as a developer, an artist, tester, documentation writer, be sure that you are very welcome and will have a great time! Join us!
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 http://anongit1.kde.org/calligra/calligra-latest.tar.gz
Unpack it:
$ tar -xzf calligra-latest.tar.gz
Initialize the repository:
$ cd calligra; ./initrepo.sh
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!
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ürzfreudig 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 bugs.kde.org and select suitable tasks for students.
Code
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!
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!
News
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:

Code
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.
Envoi
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.
So, quite silently (because I was too lazy^Wbusy to write the announcement) Krita 2.3 beta 2 has been released. However, we had to decide to have another beta since the number of release blockers hasn't materially decreased and the number of crash reports has increased. Now this doesn't mean Krita's quality has detoriated: it means that more people have tested Krita and reported issues. And that, actually, makes me very happy. We need people to test Krita and report issues if we want this release to be great!
And it's not like no work has been done in the meantime. Lukáš Tvrdý has joined Ixonos as a Qt developer -- and here's an example for students at universities all round the world: if you join an open source project like Krita and prove your worth it can be worth a lot to you when you get your degree. Having this kind of experience working in an international team developing an application for actual uses does put you miles ahead of your fellow students who've done nothing but school projects and perhaps some php for the local soccer club. Get involved! You have got nothing to lose but some time and everything to gain -- a fun time, fun, friends and a really good story for your first job interviews.
Anyway, even though Lukáš has joined Ixonos, he's still be doing stuff in his spare time. Dmitry is now our sponsored student. Sven, even though in the middle of exams has kept up his bug fixing. Cyrille, me -- everyone is pulling together to make Krita 2.3 release-ready. But if it's necessary, we will slip the release date.
Of course, release-ready doesn't mean that every imaginable feature has been implemented. David Revoy has asked where his mixing brush is -- we will do that for 2.4. Would, actually, make a great little project for a student eager to get to know Krita development before applying for Google Summer of Code next year... The 2.4 feature plan is already bulking out -- as I said the other day when someone asked about KDE 5, I hope we haven't got any big porting effort for the next ten years, but just development of features and increasing stability and performance!
Andreas Esau is the latest artist to discover Krita. First he produced this enormously powerful sketch:

Then followed on with one of the first screencasts for Krita 2.3. Watch and enjoy!
Markku Myllymäki from Finland has been experimenting with the vector support of Krita:

Code
We had particular trouble with the smudge brush engine in this period. The source of all our trouble is that we want to make it possible for the footprint of the smudge area to change following pressure during painting -- something no other applications support.
Boudewijn Rempt made sure Krita 2.3 doesn't load incompatible plugins, fixed a crash that happeend when closing krita while the filter dialog is open, fixed some memory leaks, removed the old perspective transformation tool (the new one has the beginning of the same functionality and can be extended to provide the full functionality; the old perspective transformation tool was now too different from the normal transformation tool to be kept around). Boudewijn added an improved cross-hair cursor (nicked from the Gimp) and fixed the comic book templates icons with icons provided by Animtim.
Lukáš Tvrdý fixed the rectangular brush mask with spikes, simplified and sped up the brush mask cursor for brushes with a lower density, optimized painting some more and added oversampling to curve-based brush masks. Lukáš separated the mature and the experimental brush engines in the gui. Note that we do not yet guarantee preset compatibility for the experimental brush engines!
Cyrille Berger Skott fixed the rectangular brush mask, the merging layers with different colorspaces than the grouplayer, the rotation of layers using the menu as well as the rotation of layers and images at 90, 180 and 270 degrees. He fixed the usefulness of the color-to-alpha filter on transparent layers and a problem with the smudge paintop. He fixed a crash when moving a layer using the move tool, as well as moving of group layers. The feather selection action crashed; after getting the Cyrille treatment, it knows how to behave. And the convolution worker now respects the channel flags again. A crash that happened when applying a color transformation filter like brightness/contrast to EXR layers (like 32 bit float RGB) got temporarily fixed by downscaling to 16 bit LAB and then back.
Dmitry Kazakov made the flatten operation not lose layer data outside the image bounds. He also fixed the checkers painting in the OpenGL-based canvas. Dmitry fixed a paint bug in the duplicate brush, a usability bug in the same brush engine, the brush outline when the color picker is activated and made the maximum RAM usage of Krita configurable. Following up on his summer-of-code work, Dmitry removed two (and-a-half...) race conditions in the tile backend and one in the image merger that computes the final image from that layers. Dmitry made all Krita tools support panning and color picking.
Sven Langkamp fixed problems with the move tool, especially when moving shape selections and when moving masks. He fixed the loading of old-style brush presets, fixed a crash that occurred on adding a mask to a shape layer. Sven fixed removing shapes from shape selections, the display of local selections in the layer box thumbnails and the updating of the selection projection.
Adam Celarek, in the Essen feature branch (so this is for 2.4 already), improved his next generation curve selection widgets. He improved the performance of the NG color selectors. Adam fixed the scratchpad to support transactions so experimenting with the filter brush engine in the scratchpad is now possible.
Marc Pegon fixed several bugs in the new transformation tool, especially initializing the perspective transformation option and warp mode. Marc also submitted his internship paper on writing the transform tool to his university. You can download it here -- a good example of combining work on Krita, the Google Summer of Code and internship requirements at university.
Envoi
Cyrille Berger put the Krita extensions website online. This is the natural home for all plugins that don't really fit in the Krita vision, aren't totally ready yet or that the author is unsure about submitting in trunk. There's a build service and a page for every extension. So if you have a great idea for a photo-manipulation plugin for Krita -- write it, and submit it! For now, just mail us at the mailing list, ping us on irc or post it on the forum. We're working on a sumbissions page.
Release
So... Where do we stand with our release preparations. There are still quite a few hurdles to take: we are at 68 bugs now, of which there is 1 critical, 5 are major (and thus release blockers) and 14 crashes. And it goes without saying that there are some bugs we really want solved among the rest as well. Krita gets a lot of testing these days (though more is always welcome!) and that means that while we're resolving lots of issues, we're finding new ones as well. There are still a number of unittests that fail -- one of them has been tracked down to a difference between version 0.6 and 0.8 of the jpeg library, but there are others. Those need to be solved before we can release as well. Finally, we might need to do some more work on the way our tools queue their actions. It's too early to say whether this means the release date will have to slip or not, but if it has to, then we will slip.
Still, we're getting close to about a hundred commits a week so the pace is pretty fast!
Another thing is user documentation. I'm still working on the updated manual, but I've also created something new: a Krita image that will show on the very first run and has a numbe rof layer groups, with every group explaining something cool about Krita. Unfortunately, this is only in English and I haven't found a good way to make translated versions. Especially since the file is rather big. We might end up only loading it when Krita run in an English locale.

Erm... We might want to go into the look of this a bit with some qualified artist...
Code
Everyone is really busy fixing bugs, so there are no exciting new features to report on. Still, bear with me for a report on what got fixed and what got broken!
Adam Celarek fixed the display of the soft-brush curve and fade sliders. He fixed a crash that occurred when switching paintops while the canvas was being updated, fixed the autoupdate for the image colors in the new color selector and optimized the speed of updating. A small new feature, in the KOffice-essen branch (which is the feature branch we open during trunk freeze): a template for new docker plugins, which was then used as the base for a docker for presets. Adam also beatified the transform/warp tool option pane. And -- and this is really nice -- fixed the scratchpad in the brush designer to work correctly in wash mode.
Boudewijn Rempt did some cleanup, fixed the gradient, fill and transform tool to lock the current layer while a long-running task is running, added the comic-book templates Animtim created, created the first-run picture and make it show up. Krita now also warns when you are running with a version of Qt earlier than Qt 4.6.3 -- below that, you will not be able to use your tablet. In response to a requirement from Lukas, he implemented a white-list mechanism for blending modes: some brush engines, like the pixel brush can't do anything useful with, for instance, the COPY blending mode, while others, like deform or smudge, absolutely need those. Finally, Boudewijn made sure the quick-access palette has some default content and fixed a number of memory leaks.
Cyrille Berger sneaked off to present his wife to his family in Normandy -- all the while thinking hard on a rounding problem in Krita's integer maths. He also fixed the display of the rotation feature in the pixel brush. And he painted a tree in Krita:

Dmitry Kazakov in his first month of sponsored part-time development (thanks to Silvio Grosso!) moved the pan and color picking feature of the freehand tool down the tool hierarchy: all tools support pan on middle-click now, and all painting tools can also pick a color from the canvas. He fixed the brush outline updating on the QPainter-based canvas and made sure the tool decorations are also shown on the canvas outside the image boundaries. Finally, he fixed the application of masks and filters when there is a selection.
Jonathan Riddell proposed a patch by Emmet Hikory from Ubuntu to make it possible to compile Krita on ARM processors. This got reviewed, ported by Boudewijn, updated by Emett and then committed by Jonathan. Of course, we are heavily dependent on distributions for patches of this kind --
Ana Beatriz Guerrero López from Debian is a regualar in this blog for fixing Krita to compile on ARM.
José Luis Vergara spent a lot of time fixing the smudge paintop, together with Cyrille and Lukas. The problem here is that Krita is way more flexible with smudgiing than any other application: we support various blending modes for smudge, as well a variable size of the smudge area depending on tablet pressure.
Lukas Tvrdy made it possible to test the dynabrush brush engine in the scratchpad, fixed the slow performance of the spray, hairy and chalk brush on CMYK images (but please remember this: the best colorspace to paint on is 16 bit RGBA with a linear-light profile! Try it -- the difference is amazing!). When working with the duplicate brush editor the scratchpad is now disabled (there's nothing to duplicate from, so it didn't make sense). Lukas fixed a number of memory leaks as well. He fixed the outline of the dyna tool, got a job with Ixonos, improved the dynabrush brush engine even more and fixed a crash. Lukas spent a lot of time investigating the remaining issues with our smudge brush as well.
Marc Pegon spent time polishing the transform/warp tool: he fixed the tool handles to make them visible on dark images, a number of crashes, fixed the perspective feature and made some fixes to the warp feature.
Sven Langkamp, in between exams at university, fixed a total of nine bugs in one week, and found time for a lot of fixes that weren't in bugzilla yet. Among other things, the filter dialog now is a lot faster, the convolution code got fixed, fixed a nasty bug with the move tool where a new layer would be created on every mouse-click, improved the locking of nodes by the tools, fixed the updating of previews in the layer box, and fixed a number of memory leaks.
Conclusion
There are still plenty of changes, so we're not near the Release Candidate. Please help us find more bugs by testing Krita -- and if you like some nice coding, why not join the team? Lots of nice bug fixing to be done!
