The Gorilla and the Gibbon

As a Krita developer, I’m not too happy comparing Krita to Photoshop. In fact, I have been known to scream loudly, start rolling my eyes and in general gibber like a lunatic whenever someone reports a bug with as its sole rationale “Photoshop does it like this, Krita must, too!”.

But when we published the news that a group at University Paris 8 had replaced Photoshop with Krita, that comparison becomes inevitable.

Even though it is just one group that used Photoshop for a specific purpose, one that Krita can fill as well. The news got picked rather widely and even brought the webserver to its knees for a moment. The discussion on Hacker News got interesting when people started claiming that Krita, like Gimp was missing so much stuff, like 16 bit/channel, adjustment layers and so on — even things that we’ve had since 2004 or 2005.

So, where are we, what’s our position? In the first place, with Adobe having about a hundred developers on Photoshop, they can spend thousands of hours a week on developing Photoshop. We’re lucky to get a hundred hours a week on Krita. Of course, we’re awesome, but that’s a huge disparity. We simply cannot duplicate all the features in Photoshop: even if we’d want to, there are not enough developer hours available. And even if there were, there’s the pesky problem of incomplete file format specifications. That means choices have to be made.

We develop Krita for a specific purpose: for people to create artwork. Comics, illustrations, matte paintings, concept-art, textures. Anything that’s not relevant for those purposes isn’t relevant for Krita. No website design, no wedding album editing, no 3D printing, no embedded email client.

But anything that artists need for their work is relevant. And I think we’re doing pretty well in that regard. Krita is an efficient tool that people find fun to use.

If that’s the purpose you use Photoshop for, give Krita a try. If you use Photoshop for something else, don’t bother. Or, well, you can give Krita a try, but don’t be surprised if Krita is missing stuff.

Sometimes, we will do a direct clone of a Photoshop feature: the layer styles dialog Dmitry and I are working on is an example. People want that feature, even if we’ve got filter layers and transformation masks already. It’s going to take about two to three hundred hours just to do all the typing, let alone the actual thinking about how to fit the algorithms into Krita’s image composition code.

But mostly, cloning another application is a bad idea. You are always be running behind, because you cannot clone what hasn’t been released yet, and unless you have more hours per week available than the clonee, you won’t ever have time for introducing unique features that make your project more interesting than the clonee — like Krita’s wrap-around mode. Or the opengl canvas, which we had in 2005, and which Photoshop now also has. (This Nvidia page on how Opengl makes Photoshop more responsive could have been written for Krita. The only thing we miss is embedding a 3D model in your painting, and we’ve already made two Summer of Code students attempt just that.)

So, what’s our roadmap for 2015, if it isn’t “be Photoshop unto all people”?

These are the big issues that we need to spend serious time on:

  • Port to Qt and KDE Frameworks 5. In many respects, a waste of time, since it won’t bring us anything of actual use to our users, but it has to be done.
  • Implement a performance optimization called Levels of Detail. This will make Krita work much faster with bigger images, at the expense of actually doing the pixel mangling several times.
  • Animation. Somsubhra’s animation timeline is a great start, but it’s not ready for end users. We had hoped for a big donation kickstarting this development, but that doesn’t seem likely to materialize.
  • OSX. We’ve got an experimental OSX port, but it’s buggy and broken and missing features. (No HDR painting, OpenGL is broken, the popup palette doesn’t show in OpenGL mode, memory handling is broken — and a thousand smaller issues.
  • Python. Krita has been scriptable in the past. First through KJS, in the 1.x days, then through Kross (which meant javascript, ruby, python). Neither scripting interface exposed all of Krita, or even the right parts. You could create filters in Python, but automating workflow was much harder. There’s a new prototype Python scripting plugin, modelled after Kate’s Python plugin that would make a good start.

To make this possible, we simply have to add hours per week to Krita. Which means starting on the next fund raiser, and publising Krita in more app stores, sell more DVD’s, get more people to join the Development Fund!