I've always held a deep admiration for the open source movement ever since I first stumbled upon the free 3D creation suite, Blender, many years ago. I'm just really in awe of the many impassioned volunteers who work tirelessly to share in the vision of creating software that is freely available to everyone. One particular program that caught my eye a few years ago was Krita, a free and open source painting program that can be enjoyed by concept artists, matte painters, illustrators, comic artists, and anyone who has ever wanted to dabble in digital painting.
Krita has grown immensely since I first took notice of it. And now, with Krita in version 3.1 and sporting an excellent new animation feature, it was time I learned more about the work going on behind the scenes to make Krita the stellar free program that it is. I recently spoke with Boudewijn Rempt, who has been the maintainer of Krita since 2004. Here he shares with us what it took to get Krita to where it is now.
A group photo from the last Krita sprint (in front of the entrance to the old Mint in Deventer). Picture by Beelzy.
From left to right:
- Boudewijn Rempt (maintainer)
- Sven Langkamp (krita hacker since 2003)
- Scott Petrovic (webmaster, UX guru, author of the first English book on Krita)
- David Revoy (Pepper and Carrot artist)
- Irina Rempt (interviews, kickstarter support)
- Bollebib (Belgian animation artist)
- Dmitry Kazakov (full-time developer)
- Julian Thijssen (summer of code student: works on opengl)
- Wolthera van Hövell tot Westerflier (manual, tutorials, community management, summer of code student: works on color management, kickstarter organization)
- Jouni Pentikäinen (summer of code student: works on animation)
- Timothee Giet (icons, tutorials)
Tell us a bit about yourself and how you got involved with the development of Krita.
Originally, I'm a linguist. I wrote my MA thesis on the verbal system of four Kham languages -- that is, Tibeto-Burman languages spoken by a group of hill tribes in the west of Nepal. After I graduated, I was not surprised that there wasn't a job for me, and since I was already married and my wife was expecting, I retrained myself as a software developer. That was easy, I had been coding since I was twelve.
For quite a long time, I was a happy user of open source software and a productive software developer for my bosses. Oh, and I was involved in the PyQt community -- I even wrote a book on using Python and the Qt toolkit to create applications. And then I was given a small Wacom tablet. I had this idea of using it to draw a map for the fantasy novel I was writing.
Since I was a Linux user -- I started using Linux in 1994 -- I needed a Linux application that worked with my tablet. The only application around that supported tablets was GIMP. GIMP is a fine application! But I didn't understand it. To be honest, I knew nothing of computer graphics, and all my painting and drawing had been done with tradtional tools up till this point.
So, having decided with all the hubris of a young programmer coming up against a totally unknown field that GIMP was unusable, I did what comes naturally: I started my own project. That did not get very far! And so I started looking for something that was simple enough for me to understand, written in a sane language using a sane toolkit. Krita was written in C++ and used Qt. One out of two wasn't bad, and I liked and knew Qt already, so I checked out the source and started hacking...
At what stage was Krita at when you came on board?
Quite sad, actually. Krita had started out as KImageShop, back when every Linux desktop tried to create a "native" suite of applications. It was going to be KDE's Photoshop or KDE's GIMP. But the effort soon foundered, and then after a pause, the application got renamed to Krayon, because a German lawyer protested, and someone else started rewriting the core.
That guy went to India to discover himself, I believe, so the project petered out until the name Krayon became a problem, with actually the same german lawyer guy complaining. It was too close to crayon.de, a website that sold e-stationery... So Krayon got renamed to Krita. Around that time, another developer got interested and started with yet another rewrite of the core engine.
When I arrived, in October 2003, Krita could load images, had layers and you could move layers around. That was it -- no paint tools, no filters, a blank canvas. So I first started developing a brush tool. That was hard! I had no experience at all with C++, and no experience at all with computer graphics. Which meant that my first three attempts were failures. But when I blogged about those failures, people saw that the project was alive, and joined in.
That was when we started getting ready for a real release! Which took until 2005... Because we just had to rewrite the core engine once more (we have rewritten it twice more since then, we're not afraid of changing big chunks of code!).
Showing the default interface of Krita.
Artwork by Tyson Tan
As Krita Maintainer, what are your responsibilities?
Well... Everything, really. I write a lot of code, triage bugs, I mentor students who join through things like Google Summer of Code, I organize sprints, I prepare kickstarter fund raisers, handle a lot of user questions, write release announcements, make the releases for Windows, OSX and Linux, do some community management...
I've been the maintainer since 2004, when Patrick Julien left the project. The responsibilities have grown since then: back then, it was still a hobby, one we took seriously, but a hobby, nonetheless. We didn't have users, for instance, which makes a lot of difference!
How many regulars are currently involved in active development of Krita? Is there a core team?
I guess we can call me and Dmitry the core team -- Dmitry is funded full-time to work on Krita, and I am funded part of the time. Then there's Scott, who is always working on the website and UX design. My wife, Irina, does the interviews, handles the shop and the kickstarter rewards. Wolthera does a lot of community management, the manual and also codes. Timothee maintains the icons set and has done three video training courses. Timo handles the Steam shop. We're pretty much always there. Then there's an ever changing group of people who hack on Krita, add some features, fix some bugs. Some people are active for a longer period, some people we only see around the end-of-year holidays, when they have time to hack on Krita.
Over the history of Krita, about four hundred people have contributed to the codebase.
Merida by Ramon Miranda
License: Creative Commons Attribution-ShareAlike 4.0 International License
What can you tell us about the KDE community that Krita is part of, and the role of the Krita Foundation that was formed in 2013?
KDE started out in 1996 as a project to create good, usable, consistent desktop for Linux. Over the years, the community has grown to be much bigger than that. It's still one of the biggest and most diverse free software communities outside corporate sponsored things like Apache. There is very little corporate involvement in KDE, almost everyone is a volunteer.
Like I said above, when Krita started, the KDE project tried to provide an alternative for everything that people might be used to, and one of those applications was an image editor like Photoshop. So Krita has grown up inside the KDE community, and it's still a good fit. Our forums, source code repository, bug tracker, project tools, mailing lists, it's all part of KDE.
At this point, the KDE community creates applications like Krita or Kdenlive (a non-linear video editor), libraries like the KDE Frameworks, a learning portal like WikiToLearn and a whole lot more.
Then we created the Krita Fondation in 2013 with the express goal of raising funds to employ Dmitry. Dmitry was finishing university, and we didn't want to lose him! The KDE organization explicitly doesn't fund development, so we needed our own organization for that. We directly modeled it on the Blender Foundation, actually.
What makes Krita stand out from other painting software, aside from being open source?
Well, we make Krita for artists who want to create images. It's not an image editor with a brush engine, it's really meant for sketching, painting, illustrating. So that is what we optimize the workflow for. And people tell us that that works very well for them!
The other thing that makes Krita different is that we, as a team and a community, are people with faces who can be approached. If you've got a problem in a closed source application, chances are slim that you can interact with the actual developers to get the problem resolved. It's part of being open source, but it's also because we try really hard to be friendly.
Showing Krita's popup palette.
Artwork by David Revoy
What are some of the biggest hurdles in development?
Hardware. In all kinds of ways: drawing tablets come with truly atrocious drivers. Video drivers that are broken -- right now, there is a whole set of Intel-based laptops with a particular revision of the Intel HD3000 display chip and driver versions that just don't do what they should do. And we get the bug reports.
And hardware is also problematical because it's expensive, so we don't have access to all the configurations people run into trouble with. Sure, we'd like to support the Microsoft Studio and its new wheel -- but we cannot afford to buy one! Wacom, Huion and Yiynova have given us development hardware, which is awesome! But we had to buy a Surface Pro 3 to check out the problems people have installing the wintab drivers.
What significant features have come about in Krita in 2016?
2016 was special because we released both the last version of Krita 2.9, and the first 3.0 versions. The big number change is because the underlying development platform, Qt, got updated: we went from version 4 to version 5. That's a really huge change and it took more than a year to do.
At the same time, Krita 3.0 was the first version with the new animation feature: Krita now makes it possible to become the next Chuck Jones or Milt Kahl! You can do traditional, hand-drawn 2D animation with Krita now, and we're still expanding on that feature.
We also added a lot of other improvements, many funded by the 2015 kickstarter, like improved layer workflow, improved grids and guides, new filters, a whole new brush engine, the new manual went live, we started doing binary releases for Linux, OSX became a fully supported platform.
Showing the animation GUI.
Artwork by Tyson Tan
Do you have any personal favorite features?
Parents don't have favorites, right? I still think the system of pluggable brush engines is very neat -- the whole plugin system is neat, even the basic engine for doing color calculations is a plugin that loads plugins. I'm now working on Python scripting, and the possibilities are enormous!
There are some features I really dislike, too, like the animation export to video. That is just so incredibly hard to maintain.
Krita obviously benefits greatly from extensive community involvement. If someone wants to participate, what can they do? What is most needed?
Everything! Helping people out on the forums, reddit, wherever people discuss Krita is already really useful. Triaging bugs -- we get dozens of bug reports a week, many are duplicates, and every bug needs to be reproducible before we can start trying to find a fix. Translations are done through the KDE translation teams, and they definitely need help. That reminds me... I must fix a bug with the translations not being loaded if the desktop is already translated to a certain language. Well, bug fixing, too! Fixing bugs can be a lot of fun, actually, and it's the best way of getting to understand our codebase.
And, of course, use Krita, show your work, participate in the discussions we have when designing new features or improving existing features.
Congratulations on the coming release of the "Made with Krita" art book! Are there plans to make more books as a regular funding project?
Yes! The printed copies should arrive this month, and we're very excited about it. Seeing the work people do with Krita is really what gives me the drive to continue. If this book sells well, then we'll certainly do a Made with Krita 2017.
We're also working with David Revoy to publish an international edition of his Pepper & Carrot comic this year. After that... Who knows? There are already books about Krita in English, French and Japanese, with Japanese leading with three different titles.
What is in store for Krita in 2017? Are there any major changes or exciting new features being considered?
In 2017 we want to complete the features funded by the last kickstarter:
* Make Krita use SVG instead of ODG for vector layers (ODG is the OASIS OpenDocument standard for office document graphics, which we used because Krita used to be part of the KOffice/Calligra suite of applications, and that was the native vector graphics format). * Improve the usability of the vector tools * Replace the text tool (which was also OASIS OpenDocument based) with a new text tool that uses SVG and has better usability and internationalization features * Add scripting support using Python.
When that's done, we want to go for another fundraiser, this time with stability as its main theme. We've been changing so much code, been adding so many new features that it's really time to take stock! Not that we haven't been fixing bugs in the past year, more than 1000 bugs got fixed in 2016... But we feel that it's time to start doing a polishing round again.
That's what we did with the first fundraiser, actually. In 2009, we did our first fundraiser to sponsor Lukáš Tvrdý to go through bugzilla, and fix bugs and improve performance. It resulted in Krita 2.4, which was the first release of Krita that artists could use with real confidence.
Demonstrating the use of the perspective tools and instant preview.
Artist: Wolthera van Hövell tot Westerflier
License: Creative Commons Attribution-ShareAlike 4.0 International License.
Might we see a Krita app for Android/iOS in the future?
I don't really know. We used to have a version of Krita, Sketch, with a gui optimized for tablets. And we had a version, Gemini, that would switch between desktop gui and tablet gui if you'd use it on something like a Yoga or a Surface pro and went from Windows 10 desktop to tablet mode. But we had to drop that code when we ported Krita to Qt5, and restoring it is going to be a lot of work.
If we'd get our Sketch gui back, an Android version would be the first choice, since we've got a Cintiq Hybrid Companion. But Wacom has discontinued that, and it looks like there are fewer and fewer, if any, Android tablets with pressure sensitive pens left. Most new tablets with pens are Windows 10 tablets, and there Krita already runs -- getting Gemini back to work would help a lot there, though.
iOS is a bigger problem. Fundamentally, the iOS app store's rules are incompatible with the GNU Public License, and with about 400 contributors, relicensing Krita to something compatible is a hard problem. The macOS appstore has the same problem, but there you can work around it because it's not the only way to get software on your Mac.
For both iOS and Android, there are also technical challenges: Krita uses OpenGL 3, these tablets only support OpenGL 2ES. The ARM processors have a vectorization extension that isn't supported by the library we use to support vectorization, and that means brushes and blending modes will be a lot slower. The processors are slower in any case, and there isn't as much memory as on a PC.
All in all, I think it's unlikely to happen in 2017; next year we'll see what the tablet market looks like. I am guessing we'll see even more Surface Pro clones, and even fewer Android tablets with pens.
I'd like to thank Boudewijn for taking the time to answer my questions. It's been really neat to see how Krita has grown over the years, but also great to get to know more about the history of its development and some of the key players involved. I encourage everyone to go and have a look at Krita, and if you have the time and ambition, please do consider helping out where you can.