Krita: Toulouse University Project is a GO

Boudewijn Rempt boud at
Tue Jan 14 19:54:41 UTC 2014

Hi Assyl, Hamdi, Hoda, Mustapha and Victor!

This is totally awesome news! I'm Boudewijn (Baudouin en Francais), the maintainer of Krita. Welcome to the project! This is the first time Krita is part of the Toulouse University project, and I'm very, very happy. Here's a bunch of thoughts on getting started from my side:


Krita is a pretty international project, with contributions from, among others, China, India, Iran, Malta, France, Spain, Italy, Belgium, the Netherlands, the UK, Germany, Denmark, Sweden, USA, Canada, New Zealand... Our main language is English, so all code, all comments to the code and all communication is in English. However, all three of us -- David, Animtim and me understand French (me, I can read it, but not write... I am Dutch), but the rest of the project members do not.

There are three main communication channels with the project:

* irc: #krita on This is where users and developers get together and discuss things related to Krita. Development, artwork, wishes. It's all in English, but few are native speakers, so everyone makes grammar and spelling mistakes. You really have to be around here whenever you are working on Krita. It's the right place to ask any questions about code or design or discuss build problems.
* mailing list: kimageshop at This is for more formal, less frequent discussion. I would like you all to introduce yourself here, so people know who you are!
* forums: This mostlly for users.

Blogging: it would be awesome if you guys could chart your progress in (English-language) blogs, and then it would be good to get those aggregated to

_Building Krita:_

If you haven't done so already, this is the first thing to do. Get Krita from git and build it. I expect you to work in the master branch of git, like everyone else who is working on new features. Note: until the end of January, we are working on releasing the 2.8 version of Krita, so lots of work goes on in that branch as well. Your work in the master branch will be part of the 2.9 release, expected mid-2014. There are two build guides, one with cats, and one without:

_Developing Krita:_

* Krita uses git, and if you are not familiar with git, please check this book: We're using git in a very simple-minded way. Check these rules:

   * make small commits, one conceptual change per commit. Use one line as a summary, one blank line, then a longer description.
   * before pushing, do "git pull --rebase"
   * if you are working on a big change that touches a lot of code, work in branch. If that happens, we will discuss it when necessary

* Check the coding style guidelines: Not all code in Krita adheres to these guidelines! Sometimes, people are too lazy, sometimes to stubborn to follow the coding style. Sometimes the code is too old.

* KDE Identity. You will need a KDE identity. Check Be sure to read the commit policy and the code of conduct. KDE is a big community of, on the whole, very open and warm-hearted people. We work together because we love to work on KDE. Follow the steps outlined and give me as your reference. Getting commit access will not be a problem then!

* IDE. I sometimes get the question, which IDE to use? That's up to you. There are a few popular choices, though. QtCreator is mine; it is fast, nimble and makes code navigation very easy. KDevelop is Lukas'. It's very powerful and its refactoring and code insight abilities are the best in the world. Emacs is what Dmitry uses, and it's the most versatile editor in the world. Kate, Vim, Eclipse with CDT are all fine. Most people start their builds from a terminal prompt, though, no matter the IDE they use! If you want to use Windows to develop on Krita, well, it's possible, but be aware that there are lots and lots of tricky bits to surmount. It will take precious time away from actual development. Currently, using a Mac is not a realistic option. In short, Linux is recommended.

* Prerequisite knowledge. Krita is written in C++ and Qt, and at places quite low-level C++. There's plenty of pointer arithmetic and plenty of multi-threading. At the same time, there are some, sometimes quite insane, deep object hierarchies. That means that we're used to people asking us what's going on -- don't hesitate to ask if something in code you touch seems strange to you. And suggestions for improvement are always welcome. We're still on Qt 4, by the way.

* Development mode. Like Kevin said, iterative development is king. A two-week cycle is perfect. I am travelling this week, but from the start of the project, I propose this scheme:

  * Monday: IRC meeting on #krita where we'll discuss the plans for the next two weeks
  * Every morning, scrum meeting. What was done yesterday, what was achieved, what problems were encountered
  * Second Monday: evaluation of the first week
  * Last Friday: evaluations of the two weeks, and discussion of the plans for the next week.

It would be awesome if Animtim and Deevad can join us for the Friday evaluation. Depending on their professional obligations, we will have to be very flexible with the time of meeting! (Which is always the case with customers.)

_Hot Topics_

These were the ideas I put forward in my first mail to Kevin:

> * Improve the vector tools, in particular the calligraphy tool: see:
> and also:
> The vector tools in Krita are shared with the rest of Calligra, so this
> might make the whole project more interesting. We would need to start with
> a discussion with Timothee Giet about requirements, do a design and then
> implementation
> * Improve the 2D and 3D assistants.
> Assistants in Krita are vector objects that influence the freehand stroke.
> Currently, assistants are projected on top of the canvas, but ideally
> they'd be part of the layer system. There is a pretty good write-up of
> what's needed here by David Revoy, who'd become the customer for the this
> project:
> ve-tool
> Here are some related bugs and ideas:
> ** add some ruler assistant types (parallel lines/curves; concentric
> lines/curves; concentric circles; new perspective ruler:
> ** improve the rulers method
> by moving the rulers to a new dedicated layer type (with layer
> visible=ruler active, layer hidden=ruler inactive) ** Improve the
> perspective ruler: ** Create
> guides from vector shapes:
> * Add scripting support to Krita using Python
> We used to have a scripting module that used kross and was used to make it
> possible to create scripts for painting or filters. The goal of the new
> scripting module is to enable additions to the user interface, automating
> workflow and integrating with other applications, not so much creating
> filters or fidding with brushes.
> * Improve the Artistic Text Tool
> This is also a project that is shared with the rest of Calligra.
> Krita/Calligra currently has two text tools: one to put text on a path, one
> for multiline text. Neither offers precise typographic control and both are
> hard to use. The goal of this project would be to design an artitistic text
> tool that does offer typographic control.

Today on IRC, David Revoy came up with another hot topic:

* Resource Management and Sharing

Resources in the context of Krita are things like brushes, brush presets, gradients, patterns, tasksets, palettes. Currently, it's possible to create new resources, delete them and tag the resources. What is missing is a comprehensive user interface to manage resources. We need to be able to rename, delete, bundle and export, import, erase tags, rename resources, annotate resources. This will need a good discussion with David and Animtim and a good gui design. There is already a design for bundling brush packs: -- which is open to improvement.

_ Conclusion _

I talk too much! In any case -- todo for y'all is to introduce yourself on the kimageshop mailing list, get Krita building and then let's discuss what you all want to work!

More information about the kimageshop mailing list