<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"><html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;">On Tuesday 15 September 2009, Boudewijn Rempt wrote:<br>
> > So far Krita is development platform for me as I can test many algorithms<br>
> > in it.<br>
><br>
> That is something you and Cyrille have in common at least :-)<br>
Yes, and I want more people to see it that way, I will now dissert on that, and do a bit of commercial advertisement for some of my recent work :)<br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p>On the lack of developers, I will note that the core Gimp development team isn't much bigger than ours, but they do have a more broader range of skilled person (UI designer, documentation writers, etc) that we trully lack. What they have, though, is many developers contributing a single plugin/scriptfu, see their plugin registry [1]. Using the advanced search of the site, it's possible to do some statistics, they have around 371 plugins, 274 of them are scripts, of the 97 remaining plugins, most are plugins written in C but some are collections of scripts or are a binary for a C plugins. But the important thing is that 73% of extensions are not written in C.<br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p>I don't have statistics for Photoshop, but one of its most famous extension is the "Filter factory" [2], introduced in 1994, it allowed to write plugins with only very limited knowledge, for instance for the invert filter you just have to write:<br>
r: 255-r<br />g: 255-g<br />b: 255-b<br />a: a<br>
I have no idea how many filters were created using "Filter factory", but when you google for them you can easily find collections containing hundred of them, and you can even find a gimp plugin to execute those filter [4] (and I have a TODO item to make a FF to Shiva converter).<br>
More recently an other similar plugin was released "Filter forge" [3], you make your filters using a graph interface, if you go to their official website, you can see that more than 3000 filters were made with that tool !<br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p>I think, you understand where I am going to. C/C++ are too difficult for many people, especially for artists, that would most likely want to download a sample somewhere, modify a few lines and then apply it.<br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p>This is what motivated me to create the scripting plugins for Krita 1.5. At that time I had hope it would be fit for every tasks, including writting filters. But because I couldn't make it fast enough, I decided it wasn't fit for the job, and that we would need something else, something specialized in image processing. That's when I got interested by AMPAS CTL, and later by the Hydra language (now called pixels blender [5]). And started OpenGTL.<br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p>So my vision for making Krita easy and fun to extend:<br>
* scripts (ruby/python/js): extends the UI (new dockers), allow to create chains of effects (ie blur, then translate, then change color, or draw a sky of starts)<br>
* macro to create chains automatically or using a GUI<br>
* CTL, to write colorspaces, brushes, composite ops, single pixel operation<br>
* Shiva to write generators and filters (and maybe later composite stack, etc)<br>
* graph based filters (not really started)<br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p>My main mistake in implementing that vision is that I attacked too many of those tasks at the same time, to my defense, the scripting plugin in 1.6 was quiet good, but it didn't survive the port. So in 2.0, we had hybrid CTL/C++, in 2.1, we will get CTL/XML color spaces, shiva filters/generators and macro recording of filters.<br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p>For 2.2, I will keep building on that vision, and adding things as time goes.<br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p>[1] http://registry.gimp.org/<br>
[2] http://www.thepluginsite.com/knowhow/ffpg/ffpg.htm<br>
[3] http://en.wikipedia.org/wiki/Filter_Forge<br>
[4] http://registry.gimp.org/taxonomy/term/363<br>
[5] http://labs.adobe.com/wiki/index.php/Pixel_Bender_Toolkit<br>
-- <br>
Cyrille Berger</p></body></html>