For the last 15 days I have been working on Krita. So far, it has been a great experience— I've learnt a lot, and the Krita team has been very helpful in aiding my grokking of everything. Here is a quick summary of what I've done the past two weeks, and what is next to come.
Learning to read a huge code-base
This isn't the first time I have contributed to the project, but it's the first time I have had to do it in a more serious way. I have had to read a lot of code— so, of course, I've had to get over the learning curve of reading such a large code-base, a curve which mainly reared it's head when I had to find something I had only passing knowledge of.
The guidance that I recieved from the Krita team has helped me to understand how I should approach reading such a code-base and navigate through the file-classes and functions so as to find exactly what I need— avoiding all in the way of distractors or unrelated bits (at least, as far as possible).
This has been a dramatic shift in experience for me, because I have never worked on a project as large as Krita before— I didn't come into programming through C++, or even C. Instead, I learned through Lisp and functional programming: both a completely different type of language, and a completely different school of programming. So naturally this transition felt daunting at first. It feels like you need to be some master hacker-type to write good C++, but I'm slowly realizing that this isn't true.
During the community-bonding period, I recieved a lot of feedback from artists and users as to how I should approach my project so that it is useful to them.
The most common thing I heard was was something along the lines of, “I need good documentation; I need to know how to use this stuff.” Because of this, I decided to write documentation on how to use my brush before even starting to write any code. This way, I would only have to make slight changes as necessary, and could pre-emptively recieve any relevant feedback.
I was asked to create a new class derived from kis_brush. This class should be able to parse SVG top-level figures and to feed them one-by-one, so that they can be used as an animated bursh. For this, I also had to create a new type of brush, with the extension .avb (Animated Vector Brush). As of now in my fork, it's possible to load and paint with animated vector brushes. However, I'm still working on figure-parsing and still have to work on how the images will be cached (this will allow the user have high-quality brush-tips without putting to much strain on the CPU).
I feel like I have made good progress. I.E., kis_brush server, adding animated vector brush as an image type, etc. Even if it seems like I'm taking my time, I should be happy with all of the work I'm doing, and should expect good progress in the next two weeks as well.
Copyright 2019 AlbertoEFG.
Last updated 2019-06-25 Tue 13:45. Built with Emacs 26.2 (Org mode 9.2.1).