Jekyll2023-12-08T09:49:19+00:00https://calligra.org/feed.xmlCalligraCalligra: a comprehensive set of applications which satisfies the office, graphics and management needs.
Python 3.8 woes2020-02-05T00:00:00+00:002020-02-05T00:00:00+00:00https://calligra.org/2020/02/05/python_38_woes<p>I’m not as deep into Python these days as I was twenty years ago. Twenty years ago, Python was small language with clear documentation and clear, consistent ways of doing things. One thing was hard, though, and that was packaging your python application so people on different systems could use it.</p>
<p>These days, Python is big, has lots of computer-sciency features that I don’t grok, and packaging Python is still hard. And the documentation is, for the most part, not very useful. I didn’t care a lot about that, though, since we only use Python as Krita’s extension language together with PyQt. And we had a nice and working setup for that.</p>
<p>Well, nice… It’s a bit hacky, especially for Windows. Especially since we need to build Krita with mingw, because msvc has problems compiling the Vc library. And Python has problems getting built with mingw-gcc on Windows.</p>
<p>We have three related parts: python, sip, which creates Python libraries out of special hand-written header-like files, and PyQt, which binds Pyton and Qt.</p>
<p>So, we start with a system-wide install of Python. This is used to configure Qt and build sip and PyQt. Then we download an embeddable Python of exactly the same version as the system-wide install, and install that with Krita’s other dependencies.</p>
<p>But last week the KDE binary factory windows images got updated to Python 3.8.1 (from 3.6.0) so we had to update the references to Python in Krita’s build system. There are a couple of places where the exact version is hard-coded, not just in the build system, but also in the code that setups Python for actual usage when Krita runs.</p>
<p>And at that point, our house of cards fell apart. Python 3.8 has a new, improved, more consistent way of finding dll libraries on Windows. At least, that was the idea. Following <a href="https://bugs.python.org/issue36085">discussion in Python’s bug tracker</a>, a Python developer declared victory:</p>
<blockquote class="twitter-tweet">
<p dir="ltr" lang="en">Python 3.8 on Windows is getting a new fix for DLL Hell. If you bundle precompiled DLLs with your wheels or use ctypes, you should read <a href="https://t.co/tjNwZPII3X">https://t.co/tjNwZPII3X</a> and the os.add_dll_directory() function. <a href="https://t.co/NwesjRgWCN">pic.twitter.com/NwesjRgWCN</a></p>
<p>— Zooba (@zooba) <a href="https://twitter.com/zooba/status/1112204206071373826?ref_src=twsrc%5Etfw">March 31, 2019</a></p></blockquote>
<p><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script></p>
<p>Given that the actual error we had was</p>
<p><tt>c:\dev\krita>python<br />
Python 3.8.1 (tags/v3.8.1:1b293b6, Dec 18 2019, 23:11:46) [MSC v.1916 64<br />
bit (AMD64)] on win32<br />
Type "help", "copyright", "credits" or "license" for more information.<br />
>>> import PyQt5<br />
>>> import PyQt5.Qt<br />
>>> import PyQt5.QtCore<br />
Traceback (most recent call last):<br />
File "", line 1, in<br />
ImportError: DLL load failed while importing QtCore: The specified module<br />
could not be found.<br />
</tt></p>
<p>This seemed related: the PYQt pyd files link to the Qt dll’s. The pyd files are in lib/krita-python-plugins, the Qt dll’s in the bin folder, and it looks like the QtCore pyd, even though dependency walker shows it can find the QtCore.dll, Python cannot find it anymore.</p>
<p>So, on to the changelog. This says:</p>
<blockquote><p>DLL dependencies for extension modules and DLLs loaded with <a class="reference internal" title="ctypes: A foreign function library for Python." href="https://docs.python.org/3/library/ctypes.html#module-ctypes"><code class="xref py py-mod docutils literal notranslate"><span class="pre">ctypes</span></code></a> on Windows are now resolved more securely. Only the system paths, the directory containing the DLL or PYD file, and directories added with <a class="reference internal" title="os.add_dll_directory" href="https://docs.python.org/3/library/os.html#os.add_dll_directory"><code class="xref py py-func docutils literal notranslate"><span class="pre">add_dll_directory()</span></code></a> are searched for load-time dependencies. Specifically, <span id="index-22" class="target"></span><code class="xref std std-envvar docutils literal notranslate"><span class="pre">PATH</span></code> and the current working directory are no longer used, and modifications to these will no longer have any effect on normal DLL resolution. If your application relies on these mechanisms, you should check for <a class="reference internal" title="os.add_dll_directory" href="https://docs.python.org/3/library/os.html#os.add_dll_directory"><code class="xref py py-func docutils literal notranslate"><span class="pre">add_dll_directory()</span></code></a> and if it exists, use it to add your DLLs directory while loading your library. Note that Windows 7 users will need to ensure that Windows Update KB2533623 has been installed (this is also verified by the installer). (Contributed by Steve Dower in <a class="reference external" href="https://bugs.python.org/issue36085">bpo-36085</a>.)</p></blockquote>
<p>Well, that sounds relevant, so let’s check the documentation and see if there are examples of using this add_dll_directory…</p>
<blockquote>
<dl class="function">
<dt id="os.add_dll_directory"><code class="sig-prename descclassname">os.</code><code class="sig-name descname">add_dll_directory</code><span class="sig-paren">(</span><em class="sig-param">path</em><span class="sig-paren">)</span></dt>
<dd>Add a path to the DLL search path.</p>
<p>This search path is used when resolving dependencies for imported extension modules (the module itself is resolved through sys.path), and also by <a class="reference internal" title="ctypes: A foreign function library for Python." href="https://docs.python.org/3/library/ctypes.html#module-ctypes"><code class="xref py py-mod docutils literal notranslate"><span class="pre">ctypes</span></code></a>.</p>
<p>Remove the directory by calling <strong>close()</strong> on the returned object or using it in a <a class="reference internal" href="https://docs.python.org/3/reference/compound_stmts.html#with"><code class="xref std std-keyword docutils literal notranslate"><span class="pre">with</span></code></a> statement.</p>
<p>See the <a class="reference external" href="https://msdn.microsoft.com/44228cf2-6306-466c-8f16-f513cd3ba8b5">Microsoft documentation</a> for more information about how DLLs are loaded.</p>
<p class="availability"><a class="reference internal" href="https://docs.python.org/3/library/intro.html#availability"><span class="std std-ref">Availability</span></a>: Windows.</p>
<div class="versionadded">
<p><span class="versionmodified added">New in version 3.8: </span>Previous versions of CPython would resolve DLLs using the default behavior for the current process. This led to inconsistencies, such as only sometimes searching <code class="xref std std-envvar docutils literal notranslate"><span class="pre">PATH</span></code> or the current working directory, and OS functions such as <code class="docutils literal notranslate"><span class="pre">AddDllDirectory</span></code> having no effect.</p>
<p>In 3.8, the two primary ways DLLs are loaded now explicitly override the process-wide behavior to ensure consistency. See the <a class="reference internal" href="https://docs.python.org/3/whatsnew/3.8.html#bpo-36085-whatsnew"><span class="std std-ref">porting notes</span></a> for information on updating libraries.</p>
</div>
</dd>
</dl>
</blockquote>
<dl class="function">
<dd>
<div class="versionadded">
<p>Well, no… So let’s google for it. That didn’t find a lot of useful links. The most useful was <a href="https://gitlab.kitware.com/vtk/vtk/commit/d651e12bdffd369f18a5fb727aa762ab532878f0">a patch for VTK that uses this method from the C++ wrapper</a> The examples in that tweet would’ve been a good addition to the documentation.</p>
<p>So I started experimenting myself. And failed. Our code that detects whether PyQt5 is available isn’t very complicated, but no matter what I did — even copying the Qt5 dll’s to the PyQt5 folder, using add_dll_directory in various ways, I would always get the same error.</p>
<p>And now I’m stuck. Downgrading to Python 3.6 makes everything work again, another hint that this dll finding change <em>is</em> the problem, but that’s not the way forward, of course.</p>
<p>For now, the beta of Krita 4.2.9 is delayed until we find a solution.</p>
</div>
<div class="versionadded">
<p> </p>
</div>
</dd>
</dl>boudI’m not as deep into Python these days as I was twenty years ago. Twenty years ago, Python was small language with clear documentation and clear, consistent ways of doing things. One thing was hard, though, and that was packaging your python application so people on different systems could use it. These days, Python is big, has lots of computer-sciency features that I don’t grok, and packaging Python is still hard. And the documentation is, for the most part, not very useful. I didn’t care a lot about that, though, since we only use Python as Krita’s extension language together with PyQt. And we had a nice and working setup for that. Well, nice… It’s a bit hacky, especially for Windows. Especially since we need to build Krita with mingw, because msvc has problems compiling the Vc library. And Python has problems getting built with mingw-gcc on Windows. We have three related parts: python, sip, which creates Python libraries out of special hand-written header-like files, and PyQt, which binds Pyton and Qt. So, we start with a system-wide install of Python. This is used to configure Qt and build sip and PyQt. Then we download an embeddable Python of exactly the same version as the system-wide install, and install that with Krita’s other dependencies. But last week the KDE binary factory windows images got updated to Python 3.8.1 (from 3.6.0) so we had to update the references to Python in Krita’s build system. There are a couple of places where the exact version is hard-coded, not just in the build system, but also in the code that setups Python for actual usage when Krita runs. And at that point, our house of cards fell apart. Python 3.8 has a new, improved, more consistent way of finding dll libraries on Windows. At least, that was the idea. Following discussion in Python’s bug tracker, a Python developer declared victory: Python 3.8 on Windows is getting a new fix for DLL Hell. If you bundle precompiled DLLs with your wheels or use ctypes, you should read https://t.co/tjNwZPII3X and the os.add_dll_directory() function. pic.twitter.com/NwesjRgWCN — Zooba (@zooba) March 31, 2019 Given that the actual error we had was c:\dev\krita>python Python 3.8.1 (tags/v3.8.1:1b293b6, Dec 18 2019, 23:11:46) [MSC v.1916 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import PyQt5 >>> import PyQt5.Qt >>> import PyQt5.QtCore Traceback (most recent call last): File "", line 1, in ImportError: DLL load failed while importing QtCore: The specified module could not be found. This seemed related: the PYQt pyd files link to the Qt dll’s. The pyd files are in lib/krita-python-plugins, the Qt dll’s in the bin folder, and it looks like the QtCore pyd, even though dependency walker shows it can find the QtCore.dll, Python cannot find it anymore. So, on to the changelog. This says: DLL dependencies for extension modules and DLLs loaded with ctypes on Windows are now resolved more securely. Only the system paths, the directory containing the DLL or PYD file, and directories added with add_dll_directory() are searched for load-time dependencies. Specifically, PATH and the current working directory are no longer used, and modifications to these will no longer have any effect on normal DLL resolution. If your application relies on these mechanisms, you should check for add_dll_directory() and if it exists, use it to add your DLLs directory while loading your library. Note that Windows 7 users will need to ensure that Windows Update KB2533623 has been installed (this is also verified by the installer). (Contributed by Steve Dower in bpo-36085.) Well, that sounds relevant, so let’s check the documentation and see if there are examples of using this add_dll_directory… os.add_dll_directory(path) Add a path to the DLL search path. This search path is used when resolving dependencies for imported extension modules (the module itself is resolved through sys.path), and also by ctypes. Remove the directory by calling close() on the returned object or using it in a with statement. See the Microsoft documentation for more information about how DLLs are loaded. Availability: Windows. New in version 3.8: Previous versions of CPython would resolve DLLs using the default behavior for the current process. This led to inconsistencies, such as only sometimes searching PATH or the current working directory, and OS functions such as AddDllDirectory having no effect. In 3.8, the two primary ways DLLs are loaded now explicitly override the process-wide behavior to ensure consistency. See the porting notes for information on updating libraries. Well, no… So let’s google for it. That didn’t find a lot of useful links. The most useful was a patch for VTK that uses this method from the C++ wrapper The examples in that tweet would’ve been a good addition to the documentation. So I started experimenting myself. And failed. Our code that detects whether PyQt5 is available isn’t very complicated, but no matter what I did — even copying the Qt5 dll’s to the PyQt5 folder, using add_dll_directory in various ways, I would always get the same error. And now I’m stuck. Downgrading to Python 3.6 makes everything work again, another hint that this dll finding change is the problem, but that’s not the way forward, of course. For now, the beta of Krita 4.2.9 is delayed until we find a solution. About “Qt offering changes 2020”2020-01-28T00:00:00+00:002020-01-28T00:00:00+00:00https://calligra.org/2020/01/28/about_qt_offering_changes_2020<p>When I read “<span id="hs_cos_wrapper_name" class="hs_cos_wrapper hs_cos_wrapper_meta_field hs_cos_wrapper_type_text" data-hs-cos-general-type="meta_field" data-hs-cos-type="text"><a href="https://www.qt.io/blog/qt-offering-changes-2020">Qt offering changes 2020</a>” yesterday, my first reaction was to write a pissy blog post. I’m still writing a blog post with my thoughts about the changes, but I’ll be nice. There are three parts to this post: a short recap of my history with Qt and then my thoughts on what this means for KDE, for Krita and for free software. </span><span id="hs_cos_wrapper_name" class="hs_cos_wrapper hs_cos_wrapper_meta_field hs_cos_wrapper_type_text" data-hs-cos-general-type="meta_field" data-hs-cos-type="text"><br />
</span></p>
<p>I started programming using Qt and PyQt when I read about Qt in Linux Journal, which I was subscribing to back in 1996. That means that I’ve been using Qt for about 25 years. I initially wanted to write an <a href="https://valdyas.org/linguistics/index.html">application for handling linguistic field data</a>, and I evaluated GTK+, wxWidgets, Qt, Tk, fltk, V and a few others that have been forgotten in the mists of time. I choose Qt because it had great documentation, a consistent API, the most logical (to me…) way of doing things like setting up a window with a menu or handling scrollbars and finally because it made C++ as easy as Java.</p>
<p>I’ve stayed with Qt for 25 years because, through all the vicissitudes, it kept those qualities. Mostly. There are now a lot more modules, most of which aren’t necessary for my work, there are people working on Qt who seem to be a bit ashamed that Qt makes C++ as easy as Java and want to make Qt as computer-sciency as C++, there have been the licensing issues with the QPL, the changes to GPL, to LGPL and then again some modules back to GPL there have been the Nokia years, the Digia times.</p>
<p>But I’ve always felt that I could build on Qt. And the reason for that is the <a href="https://kde.org/community/whatiskde/kdefreeqtfoundation.php">KDE Free Qt Foundation</a>. To summarize: this is a legal agreement that keeps Qt free software. If the Qt company won’t release a version of Qt under a free software license within a year of a release, Qt becomes licensed under the BSD license.</p>
<p>With yesterday’s message, the Qt company is searching the utter boundaries of this agreement. To recap:</p>
<ul>
<li>Long Term Support releases remain commercial only (the post doesn’t mention this, but those releases also need to be released under a free software license within a year to adhere to the agreement, at least to my understanding).</li>
<li>Access to pre-built binaries will be restricted: put behind an account wall or be only available to commercial license holders</li>
<li>And there’s a new, cheaper license for small companies that they can use to develop, but not deploy their work to customers.</li>
</ul>
<p>This is a weirdly mixed bag of “changes”. The last one is a bit silly. Even the “commercial” side of Krita is <em>too big</em> to qualify! We’re five people and have a budget of about 125k…</p>
<p>The middle point is worth considering as well. Now there is nothing in any free software license that talks about a duty to make binaries available.</p>
<p>For a very long time, Krita, when part of KOffice, only made source tarballs available. Right now, we, like the Qt company, have binaries for Linux, Windows, macOS and (experimentally) Android. The Windows binaries are for sale in the Windows Store and on Steam, the Linux binaries are for sale on Steam. And all binaries can be downloaded for free from krita.org and other places.</p>
<p>This move by the Qt company would be like the Krita project shutting down the free downloads of our binaries and only make them available in the various stores. It would be legal, but not nice and would cost us hundreds of thousands of users, if not millions. It is hard not to wonder what the cost to the Qt community will be.</p>
<p>The first change, the restriction of the LTS releases to commercial customers has all kinds of unexpected ramifications.</p>
<p>First off, Linux distributions. Disitributions already rarely use LTS releases, and in any case, with Qt 3 and Qt 4 there didn’t use to be any LTS releases. But disitributions do have to keep older versions of Qt around for unported applications for a longer time, so they do need security and bug fixes for those older versions of Qt.</p>
<p>Then there’s the issue of how fixes are going to land in the LTS releases. At the last Qt contributor summit the Qt project decided on a process where all fixes go through “dev” and then are ported to the stable branches/LTS branches. That’s going to break when Qt6 becomes dev: patches won’t apply to Qt 5.</p>
<p><span id="hs_cos_wrapper_name" class="hs_cos_wrapper hs_cos_wrapper_meta_field hs_cos_wrapper_type_text" data-hs-cos-general-type="meta_field" data-hs-cos-type="text">Albert has already <a href="https://tsdgeos.blogspot.com/2020/01/the-qt-company-is-stopping-qt-lts.html">blogged </a>about this change as well, but he only really focused on distributions and KDE Plasma; there is of course much more to KDE than the Plasma desktop and Linux distributions.</span></p>
<p>As for Krita, we’re using Qt 5.12 for our binaries because we carry a lot of patches that would need porting to Qt 5.13 or 5.14 and because Qt 5.13 turned out to be very, very buggy. For Krita, using a stable version of Qt that gets bug fixes is pretty important, and that will be a problem, because we will lose access to those versions.</p>
<p><span id="hs_cos_wrapper_name" class="hs_cos_wrapper hs_cos_wrapper_meta_field hs_cos_wrapper_type_text" data-hs-cos-general-type="meta_field" data-hs-cos-type="text">In my opinion, while we’ve done without stable, LTS releases of Qt for years, it’s inevitable that Qt 5.15 will be forked into a community edition that gets maintained, hopefully not just by KDE people, but by everyone who needs a stable, LGPL licenced release of Qt5 for years to come. </span></p>
<p><span id="hs_cos_wrapper_name" class="hs_cos_wrapper hs_cos_wrapper_meta_field hs_cos_wrapper_type_text" data-hs-cos-general-type="meta_field" data-hs-cos-type="text">Splitting up the Qt community, already responsible for handling a huge amount of code, is not a good idea, but it looks like the Qt company has made it inevitable. </span></p>
<p><span id="hs_cos_wrapper_name" class="hs_cos_wrapper hs_cos_wrapper_meta_field hs_cos_wrapper_type_text" data-hs-cos-general-type="meta_field" data-hs-cos-type="text">And once there’s a community maintained fork of Qt, would I contribute to the unforked Qt? Probably not. It’s already a lot of work to get patches in, and doing that work twice, nah, not interested. If there’s a maintained community version of Qt 5, would I be interested in porting to Qt 6? Probably not, either. It isn’t like the proposed changes for Qt 6 excite me. And I don’t expect to be the only one.<br />
</span></p>
<p>As for the more intangible consequences of these changes: I’m afraid those aren’t so good. Even in our small Krita community, we’ve had people suggest it might be a good idea to see whether we couldn’t port Krita to, say, Blender’s development platform. This would be a sheer impossible task, but that people start throwing out ideas like that is a clear sign that the Qt company has made Qt much less attractive.</p>
<p>If I were to start a new free software project, would I use Qt? Last Sunday the answer would have been “of course!”. Today it’s “hm, let’s first check alternatives”. If I had a big GTK based project that’s being really hampered by how bad, incomplete and hard to use GTK is, would I consider porting to Qt? Same thing. If the KDE Free Qt Foundation hadn’t that agreement with the Qt company, the answer would probably be no, right now, it’s still probably a yes.</p>
<p>Now as for the actual announcement. I think the way the Qt company represents the changes is actually going to help to harm Qt’s reputation. The announcement is full of weasel-wording…</p>
<p><strong>“General Qt Account requirement”</strong> — this means that in order to download Qt binaries, everyone is going to need a Qt account. Apparently this will make open-source users more eager to report bugs, since they will already have an account. And, yay, wonderful, you need an account to access the completely useless Qt marketplace. And it allows, and now we’re getting at the core reason, the Qt company to see which companies are using the open source version of Qt and send salespeople their way. (But only if the people making the accounts are recognizable, of course, not if they make the account with their gmail address.) When I was working for Quby, I was unpleasantly surprised at how expensive Qt is, how little flexibility the Qt company shows when dealing with prospective customers — and how we never downloaded the installer anyway.</p>
<p><strong>“LTS and offline installer to become commercial-only”</strong> — this will break every free software project that uses services like travis to make builds that download Qt in the build process. Of course, one can work around that, but the way the Qt company represents this is “<em><span id="hs_cos_wrapper_post_body" class="hs_cos_wrapper hs_cos_wrapper_meta_field hs_cos_wrapper_type_rich_text" data-hs-cos-general-type="meta_field" data-hs-cos-type="rich_text">We are making this change to encourage open-source users to quickly adopt new versions. This helps maximize the feedback we can get from the community and to emphasize the commercial support available to those with longer product life cycles that rely on a specific Qt version.</span></em>” Which of course means “our regular releases are actually betas which we expect you freeloaders to test for us, to provide bug fixes for us, which we can use to provide the paying customers with stable releases”.</p>
<p>And yes, theoretically, the main development branch will have all bug fixes, too, and so nobody misses out on those bug fixes, and everyone has stability… Right? The problem is that Qt has become, over the years, bigger and buggier, and I doubt whether releases made fresh off the main development branch will be stable enough to provide, say, a stable version of Krita to our millions of users. Because, apart from all the bug fixes, they will also have all the new regressions.</p>
<p><strong>“Summary”. </strong>“<em><span id="hs_cos_wrapper_post_body" class="hs_cos_wrapper hs_cos_wrapper_meta_field hs_cos_wrapper_type_rich_text" data-hs-cos-general-type="meta_field" data-hs-cos-type="rich_text">The Qt Company is committed to the open-source model of providing Qt technology now and in the future and we are investing now more than ever. </span></em>” — though only to the extent that the Qt Company is forced to adhere to the open-source model by the KDE Free Qt Foundation.</p>
<p>“<em><span id="hs_cos_wrapper_post_body" class="hs_cos_wrapper hs_cos_wrapper_meta_field hs_cos_wrapper_type_rich_text" data-hs-cos-general-type="meta_field" data-hs-cos-type="rich_text">We believe that these changes are necessary for our business model and the Qt ecosystem as a whole. </span></em>” — my fear is that the Qt Company will not survive the fracturing of the Qt ecosystem that this decision practically guarantees.</p>boudWhen I read “Qt offering changes 2020” yesterday, my first reaction was to write a pissy blog post. I’m still writing a blog post with my thoughts about the changes, but I’ll be nice. There are three parts to this post: a short recap of my history with Qt and then my thoughts on what this means for KDE, for Krita and for free software. I started programming using Qt and PyQt when I read about Qt in Linux Journal, which I was subscribing to back in 1996. That means that I’ve been using Qt for about 25 years. I initially wanted to write an application for handling linguistic field data, and I evaluated GTK+, wxWidgets, Qt, Tk, fltk, V and a few others that have been forgotten in the mists of time. I choose Qt because it had great documentation, a consistent API, the most logical (to me…) way of doing things like setting up a window with a menu or handling scrollbars and finally because it made C++ as easy as Java. I’ve stayed with Qt for 25 years because, through all the vicissitudes, it kept those qualities. Mostly. There are now a lot more modules, most of which aren’t necessary for my work, there are people working on Qt who seem to be a bit ashamed that Qt makes C++ as easy as Java and want to make Qt as computer-sciency as C++, there have been the licensing issues with the QPL, the changes to GPL, to LGPL and then again some modules back to GPL there have been the Nokia years, the Digia times. But I’ve always felt that I could build on Qt. And the reason for that is the KDE Free Qt Foundation. To summarize: this is a legal agreement that keeps Qt free software. If the Qt company won’t release a version of Qt under a free software license within a year of a release, Qt becomes licensed under the BSD license. With yesterday’s message, the Qt company is searching the utter boundaries of this agreement. To recap: Long Term Support releases remain commercial only (the post doesn’t mention this, but those releases also need to be released under a free software license within a year to adhere to the agreement, at least to my understanding). Access to pre-built binaries will be restricted: put behind an account wall or be only available to commercial license holders And there’s a new, cheaper license for small companies that they can use to develop, but not deploy their work to customers. This is a weirdly mixed bag of “changes”. The last one is a bit silly. Even the “commercial” side of Krita is too big to qualify! We’re five people and have a budget of about 125k… The middle point is worth considering as well. Now there is nothing in any free software license that talks about a duty to make binaries available. For a very long time, Krita, when part of KOffice, only made source tarballs available. Right now, we, like the Qt company, have binaries for Linux, Windows, macOS and (experimentally) Android. The Windows binaries are for sale in the Windows Store and on Steam, the Linux binaries are for sale on Steam. And all binaries can be downloaded for free from krita.org and other places. This move by the Qt company would be like the Krita project shutting down the free downloads of our binaries and only make them available in the various stores. It would be legal, but not nice and would cost us hundreds of thousands of users, if not millions. It is hard not to wonder what the cost to the Qt community will be. The first change, the restriction of the LTS releases to commercial customers has all kinds of unexpected ramifications. First off, Linux distributions. Disitributions already rarely use LTS releases, and in any case, with Qt 3 and Qt 4 there didn’t use to be any LTS releases. But disitributions do have to keep older versions of Qt around for unported applications for a longer time, so they do need security and bug fixes for those older versions of Qt. Then there’s the issue of how fixes are going to land in the LTS releases. At the last Qt contributor summit the Qt project decided on a process where all fixes go through “dev” and then are ported to the stable branches/LTS branches. That’s going to break when Qt6 becomes dev: patches won’t apply to Qt 5. Albert has already blogged about this change as well, but he only really focused on distributions and KDE Plasma; there is of course much more to KDE than the Plasma desktop and Linux distributions. As for Krita, we’re using Qt 5.12 for our binaries because we carry a lot of patches that would need porting to Qt 5.13 or 5.14 and because Qt 5.13 turned out to be very, very buggy. For Krita, using a stable version of Qt that gets bug fixes is pretty important, and that will be a problem, because we will lose access to those versions. In my opinion, while we’ve done without stable, LTS releases of Qt for years, it’s inevitable that Qt 5.15 will be forked into a community edition that gets maintained, hopefully not just by KDE people, but by everyone who needs a stable, LGPL licenced release of Qt5 for years to come. Splitting up the Qt community, already responsible for handling a huge amount of code, is not a good idea, but it looks like the Qt company has made it inevitable. And once there’s a community maintained fork of Qt, would I contribute to the unforked Qt? Probably not. It’s already a lot of work to get patches in, and doing that work twice, nah, not interested. If there’s a maintained community version of Qt 5, would I be interested in porting to Qt 6? Probably not, either. It isn’t like the proposed changes for Qt 6 excite me. And I don’t expect to be the only one. As for the more intangible consequences of these changes: I’m afraid those aren’t so good. Even in our small Krita community, we’ve had people suggest it might be a good idea to see whether we couldn’t port Krita to, say, Blender’s development platform. This would be a sheer impossible task, but that people start throwing out ideas like that is a clear sign that the Qt company has made Qt much less attractive. If I were to start a new free software project, would I use Qt? Last Sunday the answer would have been “of course!”. Today it’s “hm, let’s first check alternatives”. If I had a big GTK based project that’s being really hampered by how bad, incomplete and hard to use GTK is, would I consider porting to Qt? Same thing. If the KDE Free Qt Foundation hadn’t that agreement with the Qt company, the answer would probably be no, right now, it’s still probably a yes. Now as for the actual announcement. I think the way the Qt company represents the changes is actually going to help to harm Qt’s reputation. The announcement is full of weasel-wording… “General Qt Account requirement” — this means that in order to download Qt binaries, everyone is going to need a Qt account. Apparently this will make open-source users more eager to report bugs, since they will already have an account. And, yay, wonderful, you need an account to access the completely useless Qt marketplace. And it allows, and now we’re getting at the core reason, the Qt company to see which companies are using the open source version of Qt and send salespeople their way. (But only if the people making the accounts are recognizable, of course, not if they make the account with their gmail address.) When I was working for Quby, I was unpleasantly surprised at how expensive Qt is, how little flexibility the Qt company shows when dealing with prospective customers — and how we never downloaded the installer anyway. “LTS and offline installer to become commercial-only” — this will break every free software project that uses services like travis to make builds that download Qt in the build process. Of course, one can work around that, but the way the Qt company represents this is “We are making this change to encourage open-source users to quickly adopt new versions. This helps maximize the feedback we can get from the community and to emphasize the commercial support available to those with longer product life cycles that rely on a specific Qt version.” Which of course means “our regular releases are actually betas which we expect you freeloaders to test for us, to provide bug fixes for us, which we can use to provide the paying customers with stable releases”. And yes, theoretically, the main development branch will have all bug fixes, too, and so nobody misses out on those bug fixes, and everyone has stability… Right? The problem is that Qt has become, over the years, bigger and buggier, and I doubt whether releases made fresh off the main development branch will be stable enough to provide, say, a stable version of Krita to our millions of users. Because, apart from all the bug fixes, they will also have all the new regressions. “Summary”. “The Qt Company is committed to the open-source model of providing Qt technology now and in the future and we are investing now more than ever. ” — though only to the extent that the Qt Company is forced to adhere to the open-source model by the KDE Free Qt Foundation. “We believe that these changes are necessary for our business model and the Qt ecosystem as a whole. ” — my fear is that the Qt Company will not survive the fracturing of the Qt ecosystem that this decision practically guarantees.I’m on vacation…2019-12-21T00:00:00+00:002019-12-21T00:00:00+00:00https://calligra.org/2019/12/21/im_on_vacation<p>I started feeling <em>really</em> tired in November, and then I realized I hadn’t taken much time off this year — a couple of days at the sea-side was most of it. So I thought it was time to do something else than bug triaging, bug fixing, writing code, acting like I’m a manager. This summer I’d bought water-soluble oil paints (<a href="https://www.royaltalens.com/en-gb/brands/cobra/">Cobra, from Talens</a>), and I have spent and hour here and an hour there learning the stuff again.</p>
<p><span id="more-2481"></span></p>
<p>Now I had a plan. In our <a href="https://valdyas.org/galsin/">regular role playing campaign</a>, we had a scene where my PC, Khushi, asked a local painter to paint a small portrait to send to a friend. And later on, the friend joined her in, and had her portrait painted for Khushi. So… A small double portrait would be fun to try to recreate.</p>
<p>First, I cleared my desk from keyboard, mouse and monitor, making it much harder to slip back into work-mode:</p>
<figure id="attachment_2503" aria-describedby="caption-attachment-2503" style="width: 1372px" class="wp-caption aligncenter"><img class="size-full wp-image-2503" src="http://valdyas.org/fading/wp-content/uploads/2019/12/desk.jpg" alt="" width="1372" height="1029" srcset="https://valdyas.org/fading/wp-content/uploads/2019/12/desk.jpg 1372w, https://valdyas.org/fading/wp-content/uploads/2019/12/desk-300x225.jpg 300w, https://valdyas.org/fading/wp-content/uploads/2019/12/desk-768x576.jpg 768w, https://valdyas.org/fading/wp-content/uploads/2019/12/desk-1024x768.jpg 1024w, https://valdyas.org/fading/wp-content/uploads/2019/12/desk-1200x900.jpg 1200w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px" /><figcaption id="caption-attachment-2503" class="wp-caption-text">An empty desk</figcaption></figure>
<p>And then I started preparing myself. I read up on painting on panels, and got myself rabbit glue and gesso. We still had MDF panels left over from when we moved into this house and had the bookshelves built — that was 2007. I’m still not sure whether the rabbit glue stage was strictly necessary, but it was kind of of meditative fun. After Irina had cut the panels for me, it was glue time:</p>
<figure id="attachment_2496" aria-describedby="caption-attachment-2496" style="width: 1372px" class="wp-caption aligncenter"><img class="size-full wp-image-2496" src="http://valdyas.org/fading/wp-content/uploads/2019/12/preparing_panels_with_glue.jpg" alt="" width="1372" height="1029" srcset="https://valdyas.org/fading/wp-content/uploads/2019/12/preparing_panels_with_glue.jpg 1372w, https://valdyas.org/fading/wp-content/uploads/2019/12/preparing_panels_with_glue-300x225.jpg 300w, https://valdyas.org/fading/wp-content/uploads/2019/12/preparing_panels_with_glue-768x576.jpg 768w, https://valdyas.org/fading/wp-content/uploads/2019/12/preparing_panels_with_glue-1024x768.jpg 1024w, https://valdyas.org/fading/wp-content/uploads/2019/12/preparing_panels_with_glue-1200x900.jpg 1200w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px" /><figcaption id="caption-attachment-2496" class="wp-caption-text">Preparing the panels with rabbit glue</figcaption></figure>
<p>I put the glue, which comes in granulated form in a jar with water to soak overnight, then heated it au bain marie over a tealight. Because I wanted to paint on both sides of the small panels, I put them on nails. This wasn’t a big success, and one panel kept falling off the nails.</p>
<p>I also prepared some more panels so I would have something to practice on, because, frankly, I’m still not sure I’m going to make a success out of this.</p>
<figure id="attachment_2499" aria-describedby="caption-attachment-2499" style="width: 1372px" class="wp-caption aligncenter"><img class="size-full wp-image-2499" src="http://valdyas.org/fading/wp-content/uploads/2019/12/prepared_panels.jpg" alt="" width="1372" height="1029" srcset="https://valdyas.org/fading/wp-content/uploads/2019/12/prepared_panels.jpg 1372w, https://valdyas.org/fading/wp-content/uploads/2019/12/prepared_panels-300x225.jpg 300w, https://valdyas.org/fading/wp-content/uploads/2019/12/prepared_panels-768x576.jpg 768w, https://valdyas.org/fading/wp-content/uploads/2019/12/prepared_panels-1024x768.jpg 1024w, https://valdyas.org/fading/wp-content/uploads/2019/12/prepared_panels-1200x900.jpg 1200w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px" /><figcaption id="caption-attachment-2499" class="wp-caption-text">Panels prepared with rabbit glue for gessoing</figcaption></figure>
<p>You have to give the panels, which are old and very dry, several layers of glue, and sand them a bit in between.</p>
<p>The same goes for applying gesso, and I got some super-fine sandpaper to make the panels smooth, but they still have some surface structure.</p>
<figure id="attachment_2502" aria-describedby="caption-attachment-2502" style="width: 1372px" class="wp-caption aligncenter"><img class="size-full wp-image-2502" src="http://valdyas.org/fading/wp-content/uploads/2019/12/gessoed_panels.jpg" alt="" width="1372" height="1029" srcset="https://valdyas.org/fading/wp-content/uploads/2019/12/gessoed_panels.jpg 1372w, https://valdyas.org/fading/wp-content/uploads/2019/12/gessoed_panels-300x225.jpg 300w, https://valdyas.org/fading/wp-content/uploads/2019/12/gessoed_panels-768x576.jpg 768w, https://valdyas.org/fading/wp-content/uploads/2019/12/gessoed_panels-1024x768.jpg 1024w, https://valdyas.org/fading/wp-content/uploads/2019/12/gessoed_panels-1200x900.jpg 1200w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px" /><figcaption id="caption-attachment-2502" class="wp-caption-text">The panels with their final coat of gesso</figcaption></figure>
<p>Then (though in reality I started with that) I made the design for the panels: they are 3 by 3 inch (because my old designer’s ruler that I’ve had since I was twelve has inches).</p>
<figure id="attachment_2497" aria-describedby="caption-attachment-2497" style="width: 954px" class="wp-caption aligncenter"><img class="size-full wp-image-2497" src="http://valdyas.org/fading/wp-content/uploads/2019/12/khushi_transfer_print.png" alt="" width="954" height="1066" srcset="https://valdyas.org/fading/wp-content/uploads/2019/12/khushi_transfer_print.png 954w, https://valdyas.org/fading/wp-content/uploads/2019/12/khushi_transfer_print-268x300.png 268w, https://valdyas.org/fading/wp-content/uploads/2019/12/khushi_transfer_print-768x858.png 768w, https://valdyas.org/fading/wp-content/uploads/2019/12/khushi_transfer_print-916x1024.png 916w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px" /><figcaption id="caption-attachment-2497" class="wp-caption-text">The design for Khushi’s panel.</figcaption></figure>
<p>Khushi is a young Sithi woman, which means she’s fairly dark, tall and has a lot of black hair and very strong eyebrows.</p>
<figure id="attachment_2501" aria-describedby="caption-attachment-2501" style="width: 730px" class="wp-caption aligncenter"><img class="size-full wp-image-2501" src="http://valdyas.org/fading/wp-content/uploads/2019/12/moyri_transfer_print.png" alt="" width="730" height="941" srcset="https://valdyas.org/fading/wp-content/uploads/2019/12/moyri_transfer_print.png 730w, https://valdyas.org/fading/wp-content/uploads/2019/12/moyri_transfer_print-233x300.png 233w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px" /><figcaption id="caption-attachment-2501" class="wp-caption-text">Inked design for Moyri: ready to print and use to transfer.</figcaption></figure>
<p>Moyri has grown up in marshland, has reddish-brown hair which she keeps short because she often wears a helmet.</p>
<figure id="attachment_2504" aria-describedby="caption-attachment-2504" style="width: 1372px" class="wp-caption aligncenter"><img class="size-full wp-image-2504" src="http://valdyas.org/fading/wp-content/uploads/2019/12/design_transfered.jpg" alt="" width="1372" height="1029" srcset="https://valdyas.org/fading/wp-content/uploads/2019/12/design_transfered.jpg 1372w, https://valdyas.org/fading/wp-content/uploads/2019/12/design_transfered-300x225.jpg 300w, https://valdyas.org/fading/wp-content/uploads/2019/12/design_transfered-768x576.jpg 768w, https://valdyas.org/fading/wp-content/uploads/2019/12/design_transfered-1024x768.jpg 1024w, https://valdyas.org/fading/wp-content/uploads/2019/12/design_transfered-1200x900.jpg 1200w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px" /><figcaption id="caption-attachment-2504" class="wp-caption-text">The panels with the design transferred using carbon paper</figcaption></figure>
<p>With a piece of carbon paper, I transferred the designs to the panel. I later transferred the designs half a dozen times to other panels, to try my hand at painting and learning the materials before messing up my good panels. But I wanted a luminous blue background for the portraits, and that I could make with glazes of ultramarine oil paints.</p>
<p>I first tried out the various kinds of mediums I had with two types of brushes: an Isabey cat’s tongue brush that’s very soft, and a Da Vinci kolinsky marter brush that offers a bit of control.</p>
<figure id="attachment_2491" aria-describedby="caption-attachment-2491" style="width: 1282px" class="wp-caption aligncenter"><img class="size-full wp-image-2491" src="http://valdyas.org/fading/wp-content/uploads/2019/12/various_mediums.jpg" alt="" width="1282" height="485" srcset="https://valdyas.org/fading/wp-content/uploads/2019/12/various_mediums.jpg 1282w, https://valdyas.org/fading/wp-content/uploads/2019/12/various_mediums-300x113.jpg 300w, https://valdyas.org/fading/wp-content/uploads/2019/12/various_mediums-768x291.jpg 768w, https://valdyas.org/fading/wp-content/uploads/2019/12/various_mediums-1024x387.jpg 1024w, https://valdyas.org/fading/wp-content/uploads/2019/12/various_mediums-1200x454.jpg 1200w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px" /><figcaption id="caption-attachment-2491" class="wp-caption-text">Figuring out which medium does what: Cobra Quick drying, Cobra Glazing, Georgian Quick Drying, Cobra Medium, Water.</figcaption></figure>
<p>Conclusions:</p>
<ul>
<li>There is no difference in handling between the Cobra Quick Drying and the Cobra Glazing medium: they both don’t do much to speed up the drying process (while I’m writing this, I’m waiting for the glazes on my last test-panel to dry)… These two also soak through the paper I made test on really badly.</li>
<li>The Daler & Rowney Georgian Quick Drying medium dries the paint so fast it’s almost as if you’re working with egg tempera. Which is cool, but it’s fast enough that it dries on the palette.</li>
<li>The normal Cobra medium works fine, and doesn’t soak through the paper that much.</li>
<li>Water dries up a bit less blue, but the drying time is fine. (<strong>Note</strong>: lots of posts and blogs out there on the internet claim you shouldn’t mix water-mixable oil paints with water: this is nonsense. <a href="https://www.youtube.com/watch?v=pMz5vuG0FhI&list=PLi86B3jOHkDZ81FSVR60v-qw-_1rmgz4y&index=4">Talens itself suggests water for the first layer, water + medium for the next layers, with the proportion of medium increasing</a>.)</li>
</ul>
<p>Therefore, that’s what I did to add the blue to the background of the panels:</p>
<figure id="attachment_2492" aria-describedby="caption-attachment-2492" style="width: 1372px" class="wp-caption aligncenter"><img class="size-full wp-image-2492" src="http://valdyas.org/fading/wp-content/uploads/2019/12/ultramarine_background.jpg" alt="" width="1372" height="1029" srcset="https://valdyas.org/fading/wp-content/uploads/2019/12/ultramarine_background.jpg 1372w, https://valdyas.org/fading/wp-content/uploads/2019/12/ultramarine_background-300x225.jpg 300w, https://valdyas.org/fading/wp-content/uploads/2019/12/ultramarine_background-768x576.jpg 768w, https://valdyas.org/fading/wp-content/uploads/2019/12/ultramarine_background-1024x768.jpg 1024w, https://valdyas.org/fading/wp-content/uploads/2019/12/ultramarine_background-1200x900.jpg 1200w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px" /><figcaption id="caption-attachment-2492" class="wp-caption-text">The second layer of ultramarine</figcaption></figure>
<p>Now the time came to start painting the faces on my test panels… My first attempt followed the advice above, and started with a water + oil ground in the traditional under-painting color of <em>brown</em>. Actually, burnt sienna + burnt umber to get a bit of fire.</p>
<figure id="attachment_2493" aria-describedby="caption-attachment-2493" style="width: 626px" class="wp-caption aligncenter"><img class="wp-image-2493 size-full" src="http://valdyas.org/fading/wp-content/uploads/2019/12/test_with_oilpaint_underpainting.jpg" alt="" width="626" height="434" srcset="https://valdyas.org/fading/wp-content/uploads/2019/12/test_with_oilpaint_underpainting.jpg 626w, https://valdyas.org/fading/wp-content/uploads/2019/12/test_with_oilpaint_underpainting-300x208.jpg 300w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px" /><figcaption id="caption-attachment-2493" class="wp-caption-text">Attempt 1: under-painting done in oil thinned with water.</figcaption></figure>
<p>The goal is to keep the white shining through, so the paint has to be quite transparent. Which means it’s quite wet, and pretty soon I was just pushing pigment around in a bubble of water that didn’t want to dry. This panel by now has a couple more layers of gesso, so I can re-use it.</p>
<p>This, obviously, did not work. Then I realized I also hadn’t really made a study of the values of my subjects, and I did that, in pencil on another print of the design. I guess I will have painted these faces a dozen times when it’s January!</p>
<p> </p>
<figure id="attachment_2495" aria-describedby="caption-attachment-2495" style="width: 475px" class="wp-caption aligncenter"><img class="size-full wp-image-2495" src="http://valdyas.org/fading/wp-content/uploads/2019/12/study_in_gray_khushi.jpg" alt="" width="475" height="526" srcset="https://valdyas.org/fading/wp-content/uploads/2019/12/study_in_gray_khushi.jpg 475w, https://valdyas.org/fading/wp-content/uploads/2019/12/study_in_gray_khushi-271x300.jpg 271w" sizes="(max-width: 475px) 85vw, 475px" /><figcaption id="caption-attachment-2495" class="wp-caption-text">A study in values for Khushi</figcaption></figure>
<figure id="attachment_2494" aria-describedby="caption-attachment-2494" style="width: 499px" class="wp-caption aligncenter"><img class="size-full wp-image-2494" src="http://valdyas.org/fading/wp-content/uploads/2019/12/study_in_gray_moyri.jpg" alt="" width="499" height="497" srcset="https://valdyas.org/fading/wp-content/uploads/2019/12/study_in_gray_moyri.jpg 499w, https://valdyas.org/fading/wp-content/uploads/2019/12/study_in_gray_moyri-150x150.jpg 150w, https://valdyas.org/fading/wp-content/uploads/2019/12/study_in_gray_moyri-300x300.jpg 300w" sizes="(max-width: 499px) 85vw, 499px" /><figcaption id="caption-attachment-2494" class="wp-caption-text">A study in values for Moyri</figcaption></figure>
<p>This gave me some ideas, though, of course, it’s not perfect. It’s also not easy to get a huge amount of contrast in so small a picture, and besides, when you start looking at portraits on panels, they mostly don’t <em>have</em> a lot of contrast…</p>
<p>Then I got distracted <a href="https://www.youtube.com/watch?v=wwK88_4xjGE&t=96s">watching a series of videos</a> of someone copying Jan van Eyck. I tried to follow that, but with green instead (because I had that on my palette) of brown, and on canvas instead of panel, and a quick, loose sketch, to see whether it would work, a single color under-painting and then adding highlights and shadows with white and red. I only got the red state when the canvas (which is actually paper with a structured covering) started to buckle, and I just dropped the attempt:</p>
<figure id="attachment_2498" aria-describedby="caption-attachment-2498" style="width: 1029px" class="wp-caption aligncenter"><img class="wp-image-2498 size-full" src="http://valdyas.org/fading/wp-content/uploads/2019/12/green_underpainting_in_oils.jpg" alt="" width="1029" height="1372" srcset="https://valdyas.org/fading/wp-content/uploads/2019/12/green_underpainting_in_oils.jpg 1029w, https://valdyas.org/fading/wp-content/uploads/2019/12/green_underpainting_in_oils-225x300.jpg 225w, https://valdyas.org/fading/wp-content/uploads/2019/12/green_underpainting_in_oils-768x1024.jpg 768w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px" /><figcaption id="caption-attachment-2498" class="wp-caption-text">Attempt 2: an under-painting in green oils with quick-drying medium and white highlights.</figcaption></figure>
<p>Apart from the drawing not being right, the painting worked for me. I now felt like making a proper copy of Eve (with a twist, of course) by Jan van Eyck… But I also felt I needed more study.</p>
<p>I found a video that was really well-worth watching:</p>
<p><iframe title="Layer by Layer" width="840" height="473" src="https://www.youtube.com/embed/DDqD-d6Osew?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></p>
<p>Meh, I didn’t have access to all that stuff. Gold leaf, bole, scrapers… But it did show me that just starting with an under-painting in oils and then going on wouldn’t work. I would have to plan.</p>
<p>So I consulted my bookshelves, filled during a previous painting-is-fun-phase in my life. My translation of <a href="https://nl.wikipedia.org/wiki/Schilder-boeck">Karel van Manders “Schilderboek”</a> only has the lives, not the technical parts. <a href="https://en.wikipedia.org/wiki/Max_Doerner_(artist)">Max Doerner’s “The Materials of the Artist”</a> describes the way van Eyck worked, in a mixed tempera/oil paint manner. The weird thing is that pretty much all the books I have on his work actually mentions that, not even the most scholarly tomes. They all seem to assume that the works were set up from beginning to end in pigment ground in oil.</p>
<p>Hm.</p>
<p><a href="https://www.biblio.com/how-to-paint-and-draw-by-jaxtheimer-bodo-w/work/103010">“Gaade’s Teken en Schilderboek” by Bodo Jaxtheimer</a>, which I’ve had since I was fourteen or so, and which is way too moralizing (“As soon as you have to add white highlights to a watercolor painting, it’s spoiled. Destroy it!”) had a chapter on mixed-media techniques. Tempera plus oil paints. This offered a good set of steps, though inadequately described for achieving what I wanted to achieve: something slightly more sophisticated than the Norfolk Triptych, but doable.</p>
<p>So I’ve ordered some tempera paint tubes from Sennelier, even though Bodo, that friendly fellow, warns us sternly that it is impossible to put tempera in a tube because it will spoil. Oh, well, we’ll see about that.</p>
<p>He also hinted that it would be possible to use watercolor for the first under-painting layer, which is what I’m trying now. I put on watercolor yesterday (note: I was once again pushing very little pigment through lots of water, what’s up with that?), and today the green coat onto which the first white highlights need to be added. And it’s not dry yet, so I cannot do that.</p>
<figure id="attachment_2500" aria-describedby="caption-attachment-2500" style="width: 536px" class="wp-caption aligncenter"><img class="size-full wp-image-2500" src="http://valdyas.org/fading/wp-content/uploads/2019/12/moyri_with_aquarel_underpainting.jpg" alt="" width="536" height="742" srcset="https://valdyas.org/fading/wp-content/uploads/2019/12/moyri_with_aquarel_underpainting.jpg 536w, https://valdyas.org/fading/wp-content/uploads/2019/12/moyri_with_aquarel_underpainting-217x300.jpg 217w" sizes="(max-width: 536px) 85vw, 536px" /><figcaption id="caption-attachment-2500" class="wp-caption-text">Attempt 2: an under-painting with watercolor and green wash with oils</figcaption></figure>
<p>I’ve got a second test panel ready to play with when the tempera arrives. I wonder whether I can make the tempera more transparent with the yolk of an egg beaten up with vinegar and emulsified with some linseed oil.</p>
<p>By the way, and for the reference, the steps Bodo wants me to follow are:</p>
<ol>
<li>Saw panel</li>
<li>Prepare panel with rabbit glue: three layers</li>
<li>Prepare panel with gesso: three layers at least, but for the final panel, many more</li>
<li>Prepare design</li>
<li>Transfer design</li>
<li>Prepare under-painting with red ocher, either tempera or watercolor. Needs to cover the entire area, but transparently.</li>
<li>Over-paint with transparent green (I used sap green)</li>
<li>Over-paint with transparent white (tempera: according to Bodo that will fuse with the green to a very hard layer — we’ll see)</li>
<li>Add white highlights and green shadows. The shadows need to be much thinner than the highlights. It is <strong>not </strong>clear whether this is done with tempera or oils, or both, or green oil, white tempera. Though a throw-away remark about working the values into each other suggest oils at this stage, because you cannot do that with tempera.</li>
<li>Add color in more glazing layers, with oil</li>
<li>Add the final highlights with thick paint</li>
</ol>
<p>Well, at least I’m learning something, and I’m having fun!</p>boudI started feeling really tired in November, and then I realized I hadn’t taken much time off this year — a couple of days at the sea-side was most of it. So I thought it was time to do something else than bug triaging, bug fixing, writing code, acting like I’m a manager. This summer I’d bought water-soluble oil paints (Cobra, from Talens), and I have spent and hour here and an hour there learning the stuff again. Now I had a plan. In our regular role playing campaign, we had a scene where my PC, Khushi, asked a local painter to paint a small portrait to send to a friend. And later on, the friend joined her in, and had her portrait painted for Khushi. So… A small double portrait would be fun to try to recreate. First, I cleared my desk from keyboard, mouse and monitor, making it much harder to slip back into work-mode: An empty desk And then I started preparing myself. I read up on painting on panels, and got myself rabbit glue and gesso. We still had MDF panels left over from when we moved into this house and had the bookshelves built — that was 2007. I’m still not sure whether the rabbit glue stage was strictly necessary, but it was kind of of meditative fun. After Irina had cut the panels for me, it was glue time: Preparing the panels with rabbit glue I put the glue, which comes in granulated form in a jar with water to soak overnight, then heated it au bain marie over a tealight. Because I wanted to paint on both sides of the small panels, I put them on nails. This wasn’t a big success, and one panel kept falling off the nails. I also prepared some more panels so I would have something to practice on, because, frankly, I’m still not sure I’m going to make a success out of this. Panels prepared with rabbit glue for gessoing You have to give the panels, which are old and very dry, several layers of glue, and sand them a bit in between. The same goes for applying gesso, and I got some super-fine sandpaper to make the panels smooth, but they still have some surface structure. The panels with their final coat of gesso Then (though in reality I started with that) I made the design for the panels: they are 3 by 3 inch (because my old designer’s ruler that I’ve had since I was twelve has inches). The design for Khushi’s panel. Khushi is a young Sithi woman, which means she’s fairly dark, tall and has a lot of black hair and very strong eyebrows. Inked design for Moyri: ready to print and use to transfer. Moyri has grown up in marshland, has reddish-brown hair which she keeps short because she often wears a helmet. The panels with the design transferred using carbon paper With a piece of carbon paper, I transferred the designs to the panel. I later transferred the designs half a dozen times to other panels, to try my hand at painting and learning the materials before messing up my good panels. But I wanted a luminous blue background for the portraits, and that I could make with glazes of ultramarine oil paints. I first tried out the various kinds of mediums I had with two types of brushes: an Isabey cat’s tongue brush that’s very soft, and a Da Vinci kolinsky marter brush that offers a bit of control. Figuring out which medium does what: Cobra Quick drying, Cobra Glazing, Georgian Quick Drying, Cobra Medium, Water. Conclusions: There is no difference in handling between the Cobra Quick Drying and the Cobra Glazing medium: they both don’t do much to speed up the drying process (while I’m writing this, I’m waiting for the glazes on my last test-panel to dry)… These two also soak through the paper I made test on really badly. The Daler & Rowney Georgian Quick Drying medium dries the paint so fast it’s almost as if you’re working with egg tempera. Which is cool, but it’s fast enough that it dries on the palette. The normal Cobra medium works fine, and doesn’t soak through the paper that much. Water dries up a bit less blue, but the drying time is fine. (Note: lots of posts and blogs out there on the internet claim you shouldn’t mix water-mixable oil paints with water: this is nonsense. Talens itself suggests water for the first layer, water + medium for the next layers, with the proportion of medium increasing.) Therefore, that’s what I did to add the blue to the background of the panels: The second layer of ultramarine Now the time came to start painting the faces on my test panels… My first attempt followed the advice above, and started with a water + oil ground in the traditional under-painting color of brown. Actually, burnt sienna + burnt umber to get a bit of fire. Attempt 1: under-painting done in oil thinned with water. The goal is to keep the white shining through, so the paint has to be quite transparent. Which means it’s quite wet, and pretty soon I was just pushing pigment around in a bubble of water that didn’t want to dry. This panel by now has a couple more layers of gesso, so I can re-use it. This, obviously, did not work. Then I realized I also hadn’t really made a study of the values of my subjects, and I did that, in pencil on another print of the design. I guess I will have painted these faces a dozen times when it’s January! A study in values for Khushi A study in values for Moyri This gave me some ideas, though, of course, it’s not perfect. It’s also not easy to get a huge amount of contrast in so small a picture, and besides, when you start looking at portraits on panels, they mostly don’t have a lot of contrast… Then I got distracted watching a series of videos of someone copying Jan van Eyck. I tried to follow that, but with green instead (because I had that on my palette) of brown, and on canvas instead of panel, and a quick, loose sketch, to see whether it would work, a single color under-painting and then adding highlights and shadows with white and red. I only got the red state when the canvas (which is actually paper with a structured covering) started to buckle, and I just dropped the attempt: Attempt 2: an under-painting in green oils with quick-drying medium and white highlights. Apart from the drawing not being right, the painting worked for me. I now felt like making a proper copy of Eve (with a twist, of course) by Jan van Eyck… But I also felt I needed more study. I found a video that was really well-worth watching: Meh, I didn’t have access to all that stuff. Gold leaf, bole, scrapers… But it did show me that just starting with an under-painting in oils and then going on wouldn’t work. I would have to plan. So I consulted my bookshelves, filled during a previous painting-is-fun-phase in my life. My translation of Karel van Manders “Schilderboek” only has the lives, not the technical parts. Max Doerner’s “The Materials of the Artist” describes the way van Eyck worked, in a mixed tempera/oil paint manner. The weird thing is that pretty much all the books I have on his work actually mentions that, not even the most scholarly tomes. They all seem to assume that the works were set up from beginning to end in pigment ground in oil. Hm. “Gaade’s Teken en Schilderboek” by Bodo Jaxtheimer, which I’ve had since I was fourteen or so, and which is way too moralizing (“As soon as you have to add white highlights to a watercolor painting, it’s spoiled. Destroy it!”) had a chapter on mixed-media techniques. Tempera plus oil paints. This offered a good set of steps, though inadequately described for achieving what I wanted to achieve: something slightly more sophisticated than the Norfolk Triptych, but doable. So I’ve ordered some tempera paint tubes from Sennelier, even though Bodo, that friendly fellow, warns us sternly that it is impossible to put tempera in a tube because it will spoil. Oh, well, we’ll see about that. He also hinted that it would be possible to use watercolor for the first under-painting layer, which is what I’m trying now. I put on watercolor yesterday (note: I was once again pushing very little pigment through lots of water, what’s up with that?), and today the green coat onto which the first white highlights need to be added. And it’s not dry yet, so I cannot do that. Attempt 2: an under-painting with watercolor and green wash with oils I’ve got a second test panel ready to play with when the tempera arrives. I wonder whether I can make the tempera more transparent with the yolk of an egg beaten up with vinegar and emulsified with some linseed oil. By the way, and for the reference, the steps Bodo wants me to follow are: Saw panel Prepare panel with rabbit glue: three layers Prepare panel with gesso: three layers at least, but for the final panel, many more Prepare design Transfer design Prepare under-painting with red ocher, either tempera or watercolor. Needs to cover the entire area, but transparently. Over-paint with transparent green (I used sap green) Over-paint with transparent white (tempera: according to Bodo that will fuse with the green to a very hard layer — we’ll see) Add white highlights and green shadows. The shadows need to be much thinner than the highlights. It is not clear whether this is done with tempera or oils, or both, or green oil, white tempera. Though a throw-away remark about working the values into each other suggest oils at this stage, because you cannot do that with tempera. Add color in more glazing layers, with oil Add the final highlights with thick paint Well, at least I’m learning something, and I’m having fun!Mixing Green2019-11-30T00:00:00+00:002019-11-30T00:00:00+00:00https://calligra.org/2019/11/30/mixing_green<p>For my own reference:</p>
<figure id="attachment_2476" aria-describedby="caption-attachment-2476" style="width: 1024px" class="wp-caption aligncenter"><img class="size-full wp-image-2476" src="http://valdyas.org/fading/wp-content/uploads/2019/11/IMG_20191130_135827_sm.jpg" alt="" width="1024" height="768" srcset="https://valdyas.org/fading/wp-content/uploads/2019/11/IMG_20191130_135827_sm.jpg 1024w, https://valdyas.org/fading/wp-content/uploads/2019/11/IMG_20191130_135827_sm-300x225.jpg 300w, https://valdyas.org/fading/wp-content/uploads/2019/11/IMG_20191130_135827_sm-768x576.jpg 768w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px" /><figcaption id="caption-attachment-2476" class="wp-caption-text">Palette with greens</figcaption></figure>
<p>Counter-clockwise outside:</p>
<ul>
<li>Mix of Titanium and Zinc White</li>
<li>Burnt Sienna (to work as red)</li>
<li>Ultramarine</li>
<li>Phtalo Blue</li>
<li>Permanent Yellow with Phtalo Blue</li>
<li>Cobalt Blue</li>
</ul>
<p>The group of six dots, left to right, each column top to bottom</p>
<ul>
<li>Cadmium Yellow Lemon with Ultramarine</li>
<li>Cadmium Yellow Lemon Phtalo Blue</li>
<li>Cadmium Yellow Lemon with Cobalt Blue</li>
<li>Permanent Yellow Medium with Ultramarine</li>
<li>Permanent Yellow Medium Phtalo Blue</li>
<li>Permanent Yellow Medium with Cobalt Blue</li>
<li>Permanent Lemon Yellow with Ultramarine</li>
<li>Permanent Lemon Yellow Phtalo Blue</li>
<li>Permanent Lemon Yellow with Cobalt Blue</li>
</ul>
<p>Inside two color, three colors in a row, left to right, top to bottom</p>
<ul>
<li>Phtalo Blue with Lemon Yellow</li>
<li>Cobalt Blue with Permanent Yellow Medium</li>
<li>Cobalt Blue with Cadmium Yellow Lemon and Burnt Sienna</li>
<li>Cobalt Blue with Cadmium Yellow Lemon</li>
<li>Cobalt Blue with more Cadmium Yellow Lemon</li>
</ul>boudFor my own reference: Palette with greens Counter-clockwise outside: Mix of Titanium and Zinc White Burnt Sienna (to work as red) Ultramarine Phtalo Blue Permanent Yellow with Phtalo Blue Cobalt Blue The group of six dots, left to right, each column top to bottom Cadmium Yellow Lemon with Ultramarine Cadmium Yellow Lemon Phtalo Blue Cadmium Yellow Lemon with Cobalt Blue Permanent Yellow Medium with Ultramarine Permanent Yellow Medium Phtalo Blue Permanent Yellow Medium with Cobalt Blue Permanent Lemon Yellow with Ultramarine Permanent Lemon Yellow Phtalo Blue Permanent Lemon Yellow with Cobalt Blue Inside two color, three colors in a row, left to right, top to bottom Phtalo Blue with Lemon Yellow Cobalt Blue with Permanent Yellow Medium Cobalt Blue with Cadmium Yellow Lemon and Burnt Sienna Cobalt Blue with Cadmium Yellow Lemon Cobalt Blue with more Cadmium Yellow LemonWhy we shouldn’t blame ourselves for the Linux desktop’s microscopic marketshare2019-11-11T00:00:00+00:002019-11-11T00:00:00+00:00https://calligra.org/2019/11/11/why_we_shouldnt_blame_ourselves_for_the_linux_desktops_microscopic_marketshare<p>Well, that was three interesting articles on the same topic on the same day, namely, billionaires. And read in turn they explain exactly why the Linux Desktop is still at such a marginal market share, and why that’s not because we, who work hard on it, are failures who have been doing the wrong thing all the time. It is in the first place policies, bought with money, that allowed people to build monopolies, taxing individuals and so becoming even more rich and powerful.</p>
<p>(Similarly, it’s not individuals through their choices who are destroying the planet, it is policies bought by the very rich who somehow believe that their Florida resorts won’t sink, that they won’t be affected by burning up the planet so they can get richer. But that’s a digression.)</p>
<p>So, the <a href="https://www.theguardian.com/commentisfree/2019/nov/06/billionaires-super-rich-extreme-wealth-political-influence-inequality-gates-bezos-buffett">the first article, by Arwa Mahdawi</a>, discussed the first part of this problem: with enough money, all policies are yours. It’s just a squib, not the strongest article.</p>
<p>Then, <a href="https://www.theguardian.com/commentisfree/2019/nov/10/billionaires-warren-sanders-wealth-tax-bezos-dimon-cohen">Robert Reich, a former US secretary of labor</a> enumerates the ways people can become so exceedingly rich, and none of that is because they are so hard-working and so successful:</p>
<ul>
<li>Exploit a monopoly: this is illegal under the laws of the United States.
<li>Exploit insider information. This is also illegal.
<li>Buy a tax cut. This seemed uniquely USA’ian until the Dutch prime minister Rutte promised abolition of the dividend tax to Unilever. This would seem to be illegal as well, but IANAL.
<li>Extort people who already have a lot of money. Extortion is illegal.
<li>Inherit the money. This is the only legal way to become a billionaire.
</ul>
<p>Now the article entitled <a href="https://mattstoller.substack.com/p/what-is-a-billionaire">What Is a Billionaire, by Matt Stoller</a> was posted to the Linux reddit today. Not surprisingly, many people completely didn’t get the point, and thought it was irrelevant for a Linux discussion forum, or was about capitalism vs socialism, or outdated Microsoft bashing.</p>
<p>However, what it <i>is</i> about, is the question: why is Bill Gates not in jail for life with all his wealth stripped off? He’s a criminal, and his crime has directly harmed <i>us</i>, the people working on free software, on the Linux Desktop.</p>
<p>So, to make things painfully clear: Bill Gates made it so that his company would tax every computer sold no matter whether it ran Windows or not. If a manufacturer wanted to sell computers running Windows, all the computers it sold were taxed by Microsoft. He would get paid for the work a Linux distribution was doing, and the Linux distribution would not get that money.</p>
<p>That means there’s a gap twice the amount of this illegal tax between Microsoft and the Linux distribution. If a Linux distribution would want to earn what Microsoft earned on a PC sale, it would have to pay the Microsoft tax, and ask for its own fee.</p>
<p>This cannot be done.</p>
<p>And I know, this has been said often before, and discussed often before, and yeah, I guess, poor Bill Gates, if he hadn’t been bothered so badly with the hugely unfair antitrust investigation, he <a href="https://www.neowin.net/news/bill-gates-everyone-would-be-using-windows-mobile-instead-of-android-if-not-for-the-us-antitrust-investigation">would also have been able to monopolize mobile phones</a>, and the world would have been <i>so much sweeter</i>. For him, for certain.</p>
<p>I guess we didn’t do <i>all that badly</i> with the Linux Desktop market share being what it is. This is a fight that cannot be won.</p>
<p>Monopolies must be broken up. It’s the law, after all.</p>boudWell, that was three interesting articles on the same topic on the same day, namely, billionaires. And read in turn they explain exactly why the Linux Desktop is still at such a marginal market share, and why that’s not because we, who work hard on it, are failures who have been doing the wrong thing all the time. It is in the first place policies, bought with money, that allowed people to build monopolies, taxing individuals and so becoming even more rich and powerful. (Similarly, it’s not individuals through their choices who are destroying the planet, it is policies bought by the very rich who somehow believe that their Florida resorts won’t sink, that they won’t be affected by burning up the planet so they can get richer. But that’s a digression.) So, the the first article, by Arwa Mahdawi, discussed the first part of this problem: with enough money, all policies are yours. It’s just a squib, not the strongest article. Then, Robert Reich, a former US secretary of labor enumerates the ways people can become so exceedingly rich, and none of that is because they are so hard-working and so successful: Exploit a monopoly: this is illegal under the laws of the United States. Exploit insider information. This is also illegal. Buy a tax cut. This seemed uniquely USA’ian until the Dutch prime minister Rutte promised abolition of the dividend tax to Unilever. This would seem to be illegal as well, but IANAL. Extort people who already have a lot of money. Extortion is illegal. Inherit the money. This is the only legal way to become a billionaire. Now the article entitled What Is a Billionaire, by Matt Stoller was posted to the Linux reddit today. Not surprisingly, many people completely didn’t get the point, and thought it was irrelevant for a Linux discussion forum, or was about capitalism vs socialism, or outdated Microsoft bashing. However, what it is about, is the question: why is Bill Gates not in jail for life with all his wealth stripped off? He’s a criminal, and his crime has directly harmed us, the people working on free software, on the Linux Desktop. So, to make things painfully clear: Bill Gates made it so that his company would tax every computer sold no matter whether it ran Windows or not. If a manufacturer wanted to sell computers running Windows, all the computers it sold were taxed by Microsoft. He would get paid for the work a Linux distribution was doing, and the Linux distribution would not get that money. That means there’s a gap twice the amount of this illegal tax between Microsoft and the Linux distribution. If a Linux distribution would want to earn what Microsoft earned on a PC sale, it would have to pay the Microsoft tax, and ask for its own fee. This cannot be done. And I know, this has been said often before, and discussed often before, and yeah, I guess, poor Bill Gates, if he hadn’t been bothered so badly with the hugely unfair antitrust investigation, he would also have been able to monopolize mobile phones, and the world would have been so much sweeter. For him, for certain. I guess we didn’t do all that badly with the Linux Desktop market share being what it is. This is a fight that cannot be won. Monopolies must be broken up. It’s the law, after all.Fail! No Linux App Summit for me.2019-11-10T00:00:00+00:002019-11-10T00:00:00+00:00https://calligra.org/2019/11/10/fail_no_linux_app_summit_for_me<p>Fail…</p>
<p>I was going to attend the <a href="https://linuxappsummit.org/">Linux App Summit</a>, and even going to speak, about Krita and what happens to a an open source project when it starts growing a lot. And what that would mean for the Linux desktop ecosystem and so on. But that’s not going to happen.</p>
<p>There was really bad flooding in the south of France, which damaged the TGV track between Montpellier and Barcelona. When we went home after the 2018 Libre Graphics Meeting, we took the train from Barcelona to Paris, and noticed how <i>close</i> the water was.</p>
<p>Well, I guess it was too close. And this is relevant, because I had planned to come to Barcelona by train. It’s a relatively easy one-day trip if everything is well, and gives ten hours of undisturbed coding time, too. Besides, I have kind of promised myself that I’m not going to force myself to take planes anymore. Flying terrifies me. So I didn’t consider flying from Amsterdam for a moment — I was only afraid that other people would try to force me to fly.</p>
<p>Then I learned that there <i>is</i> a connection: I would take the train to Montpellier, and then a bus to Bezieres and then a train again. It would make the whole trip a two-day journey, with, as recommended by the travel agency I bought the tickets from, a stop in Paris. That advice was wrong.</p>
<p>I should have taken my connecting train to Montpellier, got a hotel there, and continued the next day. At this point I was like, okay… I’m just going home. Which I am doing right now. I bet the trip back would be just as difficult, and my Spanish isn’t as good as my French, so I would have an even harder time getting people to tell me what to do exactly, when to travel and where to go.</p>
<p>Sorry, everybody.</p>boudFail… I was going to attend the Linux App Summit, and even going to speak, about Krita and what happens to a an open source project when it starts growing a lot. And what that would mean for the Linux desktop ecosystem and so on. But that’s not going to happen. There was really bad flooding in the south of France, which damaged the TGV track between Montpellier and Barcelona. When we went home after the 2018 Libre Graphics Meeting, we took the train from Barcelona to Paris, and noticed how close the water was. Well, I guess it was too close. And this is relevant, because I had planned to come to Barcelona by train. It’s a relatively easy one-day trip if everything is well, and gives ten hours of undisturbed coding time, too. Besides, I have kind of promised myself that I’m not going to force myself to take planes anymore. Flying terrifies me. So I didn’t consider flying from Amsterdam for a moment — I was only afraid that other people would try to force me to fly. Then I learned that there is a connection: I would take the train to Montpellier, and then a bus to Bezieres and then a train again. It would make the whole trip a two-day journey, with, as recommended by the travel agency I bought the tickets from, a stop in Paris. That advice was wrong. I should have taken my connecting train to Montpellier, got a hotel there, and continued the next day. At this point I was like, okay… I’m just going home. Which I am doing right now. I bet the trip back would be just as difficult, and my Spanish isn’t as good as my French, so I would have an even harder time getting people to tell me what to do exactly, when to travel and where to go. Sorry, everybody.Professional Free Software2019-11-06T00:00:00+00:002019-11-06T00:00:00+00:00https://calligra.org/2019/11/06/professional_free_software<p>At the 2019 Libre Graphics Meeting, <a href="http://liviofania.com/">illustrator Livio Fania</a> presented a heart-felt plea for more professionalism in libre graphics.</p>
<p><iframe title="LGM 2019 – USER PERSPECTIVE in the funding model" width="840" height="473" src="https://www.youtube.com/embed/vIuotJcpeF4?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></p>
<p>And that was the moment I began to think a bit. What is it that makes one project professional, and another not? Where, in this case, I’d take “professional” to mean “someone can depend on it so they can earn their daily bread with no more than the problems you always have with any software, because all software sucks, and hardware even more so”.</p>
<p>As Livio said in his presentation, funding makes a difference. If a project can fund its development, its continuity will be better, it will be better able to implement its vision and deliver what it promises, simply because funding equals time. That’s also what I tried to argue in <a href="https://valdyas.org/fading/hacking/krita-hacking/back-from-the-blender-conference-2019/">my previous blog post</a>.</p>
<p>In practice, it’s very hard to find funding for applications that that people do not earn their income with. Of course, there are very accomplished free and open source video players, editors or file managers. Those tend to be still completely volunteer-driven and very underfunded. And there’s a reasonably successful web-browser, which is actually funded quite well — but it’s funded to avoid Google being broken up as the monopolist that it is, mainly by Google.</p>
<p>And of course, there are applications that people use daily, earn their bread with and that are completely unfunded, even if they have donation buttons and money in the bank: GIMP, Inkscape, Scribus, various RAW photo applications, often by choice. This means that those projects are even more squeezed for time than a project like Krita. Just think how much difference Tavmjong Bah would make if he could be funded to work on Inkscape full-time! Tav gets $107 a month through Patreon… (Which I contribute too.)</p>
<p>But though Livio focused on the need to get funding to accelerate development, and it’s the first step, there’s more to creating a professional application.</p>
<p>The second step is: focus on the user’s needs. That starts with knowing what you want to create. If your goal is to implement a standard specification fully, as is the case with Inkscape, then is that goal sufficiently user-oriented to form the basis for an application designers can earn their daily bread with? It’s possible, but it’s something to always be aware of.</p>
<p>And like I argued recently, is looking inward, discussing the where’s and why’s of Free Software, no matter how enjoyable, not taking away time better spent getting to know your userbase, their needs and… The competition.</p>
<p>I would not be surprised if visiting the Linux Application Summit next would be less useful for Krita and its users than a week long training in Photoshop would be for me, as the Krita maintainer. We’ve all been there: we’ve all claimed we’re not competing with the big, sovereign, proprietary applications that are seen as a standard in the field where our application is the “open source alternative”.</p>
<p>But if you don’t compete, you cannot win. And if you don’t win, then millions of users will not use free and open source software. And I happen to believe that software freedom is important. And I’m slowly gaining the confidence to say: I am competing.</p>
<p>(And we are. Competing. Otherwise Adobe wouldn’t have been adding so many new features for painters and illustrators to their latest Photoshop release, some of them features Krita has had for a decade.)</p>
<p>And when we compete, which makes people trust us, and when our user fund our efforts, then we need to take another step towards professionalism.</p>
<p>That is, committing to continuity. I’ve always said “free software never dies”, but it does. Look at Amarok, which is thoroughly dead. Of course, Krita has been released since 2004, and there’s <a href="https://krita.org/en/about/krita-releases-overview/">quite a bit of continuity already</a>. But this does take commitment, which also needs to be public.</p>
<p>Finally, there’s the point where as a full-time project member, as the project maintainer, can no longer say “We don’t provide binaries. Get the source and build it, or wait for a distribution”. You have to provide your application in a form your users can use directly; it’s their time you’re telling them to use for something they don’t earn money with, if you ask them to build.</p>
<p>And then… We have to stop making excuses. Which is probably the hardest thing, because all software sucks, and all code sucks, and sometimes it’s impossible to fix a bug in Krita, because it’s in the OS, the Window manager or the development platform. Or the tablet driver, oh dear, the tablet drivers. But it’s your customer, your supporter, the person who depends on your work to earn their money who is stopped from doing that. And suddenly workarounds and hacks become necessary.</p>
<p>So, funding a core team of developers is the start, focusing on the field instead of the free software community, a will to compete, providing continuous improvement, making sure your software can be used and finally, not making up excuses if there are problems but fixing them.</p>boudAt the 2019 Libre Graphics Meeting, illustrator Livio Fania presented a heart-felt plea for more professionalism in libre graphics. And that was the moment I began to think a bit. What is it that makes one project professional, and another not? Where, in this case, I’d take “professional” to mean “someone can depend on it so they can earn their daily bread with no more than the problems you always have with any software, because all software sucks, and hardware even more so”. As Livio said in his presentation, funding makes a difference. If a project can fund its development, its continuity will be better, it will be better able to implement its vision and deliver what it promises, simply because funding equals time. That’s also what I tried to argue in my previous blog post. In practice, it’s very hard to find funding for applications that that people do not earn their income with. Of course, there are very accomplished free and open source video players, editors or file managers. Those tend to be still completely volunteer-driven and very underfunded. And there’s a reasonably successful web-browser, which is actually funded quite well — but it’s funded to avoid Google being broken up as the monopolist that it is, mainly by Google. And of course, there are applications that people use daily, earn their bread with and that are completely unfunded, even if they have donation buttons and money in the bank: GIMP, Inkscape, Scribus, various RAW photo applications, often by choice. This means that those projects are even more squeezed for time than a project like Krita. Just think how much difference Tavmjong Bah would make if he could be funded to work on Inkscape full-time! Tav gets $107 a month through Patreon… (Which I contribute too.) But though Livio focused on the need to get funding to accelerate development, and it’s the first step, there’s more to creating a professional application. The second step is: focus on the user’s needs. That starts with knowing what you want to create. If your goal is to implement a standard specification fully, as is the case with Inkscape, then is that goal sufficiently user-oriented to form the basis for an application designers can earn their daily bread with? It’s possible, but it’s something to always be aware of. And like I argued recently, is looking inward, discussing the where’s and why’s of Free Software, no matter how enjoyable, not taking away time better spent getting to know your userbase, their needs and… The competition. I would not be surprised if visiting the Linux Application Summit next would be less useful for Krita and its users than a week long training in Photoshop would be for me, as the Krita maintainer. We’ve all been there: we’ve all claimed we’re not competing with the big, sovereign, proprietary applications that are seen as a standard in the field where our application is the “open source alternative”. But if you don’t compete, you cannot win. And if you don’t win, then millions of users will not use free and open source software. And I happen to believe that software freedom is important. And I’m slowly gaining the confidence to say: I am competing. (And we are. Competing. Otherwise Adobe wouldn’t have been adding so many new features for painters and illustrators to their latest Photoshop release, some of them features Krita has had for a decade.) And when we compete, which makes people trust us, and when our user fund our efforts, then we need to take another step towards professionalism. That is, committing to continuity. I’ve always said “free software never dies”, but it does. Look at Amarok, which is thoroughly dead. Of course, Krita has been released since 2004, and there’s quite a bit of continuity already. But this does take commitment, which also needs to be public. Finally, there’s the point where as a full-time project member, as the project maintainer, can no longer say “We don’t provide binaries. Get the source and build it, or wait for a distribution”. You have to provide your application in a form your users can use directly; it’s their time you’re telling them to use for something they don’t earn money with, if you ask them to build. And then… We have to stop making excuses. Which is probably the hardest thing, because all software sucks, and all code sucks, and sometimes it’s impossible to fix a bug in Krita, because it’s in the OS, the Window manager or the development platform. Or the tablet driver, oh dear, the tablet drivers. But it’s your customer, your supporter, the person who depends on your work to earn their money who is stopped from doing that. And suddenly workarounds and hacks become necessary. So, funding a core team of developers is the start, focusing on the field instead of the free software community, a will to compete, providing continuous improvement, making sure your software can be used and finally, not making up excuses if there are problems but fixing them.Looking in or looking out?2019-10-27T00:00:00+00:002019-10-27T00:00:00+00:00https://calligra.org/2019/10/27/looking_in_or_looking_out<p>In <a href="https://valdyas.org/fading/hacking/krita-hacking/back-from-the-blender-conference-2019/">my previous blog post</a>, I mentioned that being part of the wider Free Software community can be a drag on a project.</p>
<p>In this post, I want to put that in perspective. Elaborate a bit, if you will.</p>
<p>For someone like me who wrote his first GPL’ed application in 1993 (it was a uucp mail and usenet client written in –gasp!– Visual Basic), I’ve spent countless hours pleasantly occupied contemplating the where and which of Free Software. I am part of the KDE community, the Libre Graphics community, the Free Software community. Inside our communities, we’ve got engrossing discussions about licensing, diverting flamewars about business models, scintillating technical developments, awesome foes to smite, forks to be praised or lambasted. There are conferences to be visited, or be perorated at, sprints to organize and organizations to join.</p>
<p>In short, you can develop Free Software within the Free Software community while all the while looking in. This is important for Free Software. That is bad for Free Software. If I make this effort, or take this initiative, or mentor this student, Free Software will improve.</p>
<p>And that’s fun, and gives one the satisfied feeling of making the world a better, freer place. And I care about software freedom, really I do!</p>
<p>It does take a lot of time, though, and that time — is that really spent making the world better for the people who use my software? Is all that caring about the ins and outs of the Free Software community the best use of my time, when I’m working on an end-user application? And does it give me the right kind of insight in what I should be doing?</p>
<p>That’s what I meant when I wrote that I was kind of agreeing with Ton that being part of the Free Software community could be a drag on Krita becoming successful.</p>
<p>If I’m spending my time on GNOME vs KDE, Flatpak vs Snap vs AppImage, deb vs RPM, then I’m only worrying about technical details that don’t mean a thing for someone who wants to paint a comic. That makes it at worst a waste of my time, or at best a hobby that is only tangentially related to Krita and its users.</p>
<p>If I’m looking inside the community, and not out of it, facing the people who will actually be using my software, I probably won’t be making the right kind of software.</p>
<p>If I’m visiting conferences like Akademy, Fosdem or Linux Application Summit, I’m spending time on nourishing the Free Software community, but <i>not</i> on meeting my users, meeting their expectations or even learning what my proprietary competitors are doing.</p>
<p>Like I said on Friday, we need funding to make sure our projects have a stable base of effort. That stable base makes our projects more attractive for other developers interested in helping out. But we also need to look out of the window. And that’s a message for me, personally, too. Because our delicious little Free Software feuds and ruckuses are almost as big a time-sink as Brexit.</p>boudIn my previous blog post, I mentioned that being part of the wider Free Software community can be a drag on a project. In this post, I want to put that in perspective. Elaborate a bit, if you will. For someone like me who wrote his first GPL’ed application in 1993 (it was a uucp mail and usenet client written in –gasp!– Visual Basic), I’ve spent countless hours pleasantly occupied contemplating the where and which of Free Software. I am part of the KDE community, the Libre Graphics community, the Free Software community. Inside our communities, we’ve got engrossing discussions about licensing, diverting flamewars about business models, scintillating technical developments, awesome foes to smite, forks to be praised or lambasted. There are conferences to be visited, or be perorated at, sprints to organize and organizations to join. In short, you can develop Free Software within the Free Software community while all the while looking in. This is important for Free Software. That is bad for Free Software. If I make this effort, or take this initiative, or mentor this student, Free Software will improve. And that’s fun, and gives one the satisfied feeling of making the world a better, freer place. And I care about software freedom, really I do! It does take a lot of time, though, and that time — is that really spent making the world better for the people who use my software? Is all that caring about the ins and outs of the Free Software community the best use of my time, when I’m working on an end-user application? And does it give me the right kind of insight in what I should be doing? That’s what I meant when I wrote that I was kind of agreeing with Ton that being part of the Free Software community could be a drag on Krita becoming successful. If I’m spending my time on GNOME vs KDE, Flatpak vs Snap vs AppImage, deb vs RPM, then I’m only worrying about technical details that don’t mean a thing for someone who wants to paint a comic. That makes it at worst a waste of my time, or at best a hobby that is only tangentially related to Krita and its users. If I’m looking inside the community, and not out of it, facing the people who will actually be using my software, I probably won’t be making the right kind of software. If I’m visiting conferences like Akademy, Fosdem or Linux Application Summit, I’m spending time on nourishing the Free Software community, but not on meeting my users, meeting their expectations or even learning what my proprietary competitors are doing. Like I said on Friday, we need funding to make sure our projects have a stable base of effort. That stable base makes our projects more attractive for other developers interested in helping out. But we also need to look out of the window. And that’s a message for me, personally, too. Because our delicious little Free Software feuds and ruckuses are almost as big a time-sink as Brexit.Back from the Blender Conference 20192019-10-25T00:00:00+00:002019-10-25T00:00:00+00:00https://calligra.org/2019/10/25/back_from_the_blender_conference_2019<p>Yesterday, me, Dmitry, Wolthera and Agata visited <a href="https://conference.blender.org/">BlenderCon 2019</a>. Intel had asked us to come to the conference to help set up the Intel/Acer booth, which was showing off Krita in all its <a href="https://krita.org/en/item/krita-4-2-0-the-first-painting-application-to-bring-hdr-support-to-windows/">HDR glory</a>. After all, it’s pretty cool when a free software project has a real, tangible, technical, artistic <b>first</b>! It was great being there, meeting people who were really pleased to finally meet Krita hackers in the flesh.</p>
<blockquote class="twitter-tweet">
<p dir="ltr" lang="en">Honored to meet <a href="https://twitter.com/boudewijnrempt?ref_src=twsrc%5Etfw">@boudewijnrempt</a>, the Founder of <a href="https://twitter.com/hashtag/Krita?src=hash&ref_src=twsrc%5Etfw">#Krita</a> <a href="https://twitter.com/hashtag/bcon19?src=hash&ref_src=twsrc%5Etfw">#bcon19</a> we were talking about how Grease Pencil is a competition for <a href="https://twitter.com/Krita_Painting?ref_src=twsrc%5Etfw">@Krita_Painting</a> <a href="https://t.co/tRUVwQJm0I">pic.twitter.com/tRUVwQJm0I</a></p>
<p>— Tobias Günther (@elaspix) <a href="https://twitter.com/elaspix/status/1187340843604156416?ref_src=twsrc%5Etfw">October 24, 2019</a></p></blockquote>
<p><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script></p>
<p>(Aside 1: note how crowded that theatre is!)</p>
<p>(Aside 2: we tacked on a small sprint to this event, because the Intel team that works on these projects with us wanted to visit me in Deventer, and I wanted them to meet some other Krita hackers. At the sprint, I had HDR-enabled laptops for Dmitry and Agata, who were in dire need of new hardware. Yoga C940, really nice devices. We also discussed how to progress with the resource system rewrite.)</p>
<p>But, cool as HDR is, and the hardware that eventually arrived at the booth was pretty cool, too, and interested as many people were, that’s not the main thing I took away from the conference. What struck me once again was the disparity between how Blender is looked at from inside the Linux Desktop community, as if it were a largely irrelevant niche hobby project of no big moment in the larger scheme of things, and the reality of Blender as one of the most successful end-user oriented free software projects.</p>
<p>But first watch this:</p>
<p><iframe title="Blender Conference 2019 Keynote - Ton Roosendaal" width="840" height="473" src="https://www.youtube.com/embed/Jcl3--cbULk?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></p>
<h3>Numbers</h3>
<p>Let’s start comparing the numbers for some projects, roughly. Things I’m interested in are installed base, market share, funding levels, developer engagement, community engagement.</p>
<p><a href="https://itsfoss.com/linux-market-share/"><strong>Desktop Linux</strong> has a market share of about 3%, including ChromeOS</a>. Windows 10 runs on about <a href="https://wccftech.com/windows-10-900-million/">1,000,000,000 devices.</a>, and <a href="https://hostingtribunal.com/blog/operating-systems-market-share/">Windows 10 has about 33% marketshare</a>. (You might want to quibble about these numbers, the sources where I pulled them from, but it’s pretty the same everywhere. And exact numbers don’t matter in this discussion.)</p>
<p>That puts the total Linux Desktop installed base at 9<b>0,000,000</b>, of which one third is ChromeOS. All other Linux desktop projects, from Plasma to Gnome, from Mate to XFCE, from Deepin to i3 have to divide that remaining 90,000,000 installations.</p>
<p>Then financial stuff… In 2017, the Gnome project had an income of <strong>246,869</strong> euros, in 2018 of 965,441 euros, but that includes the <a href="https://handshake.org/">Handshake donation</a>, which is one-time. For KDE, the 2017 income was about <strong>150,000</strong> euros, and 2018 was about 600,000 euros, again including the Handshake donation. I can’t be bothered to look for similar statements for Mate and XFCE which are tiny in any case. In a normal year, Desktop Linux seems to have a total budget of about <strong>400,000</strong> euros, excluding commercial investment which is not controlled by the projects themselves. KDE e.V. does not use its budget to pay for development, and the GNOME Foundation supports development financially in a very limited way.</p>
<p>The Free Desktop has <em>three percent</em> of the installed base of Windows/macOS.</p>
<p><a href="https://opensource.com/article/18/9/libreoffice-history"><strong>LibreOffice</strong></a> has been estimated to have 200,000,000 active users. About 10% are Linux users, which means that they count <i>all</i> Linux desktops, probably because LibreOffice is installed by default by all Linux Distributions. In 2018, the Document Foundation’s income was <strong>855,847,78</strong> euros, pretty much all from donations. According to <a href="https://www.openhub.net/p/_compare?project_0=LibreOffice&project_1=Blender+3D&project_2=Krita">OpenHub</a>, LibreOffice had about 200 developers in the past year, and has had 1900 developers over its entire existence, and 64 in the last month. Microsoft Office has five times the market share, at the very least.</p>
<p>LibreOffice’s installed base is <em>one fifth</em> of Microsoft’s.</p>
<p><strong>Krita</strong> has, according to data from Microsoft, which counts every time an exe is started on Windows 10, 1,500,000 active users (that is, distinct systems on which Krita is started at least once a month). A dumb extrapolation of that to 4,500,000 users on all platforms since Windows 10 has 33% market share is probably too coarse, but let it stand. It’s order of magnitude that’s important here.</p>
<p>In <a href="https://www.business.com/articles/photoshop-reigns-supreme-how-the-software-has-maintained-market-dominance/">2010, Photoshop had 10,000,000 users</a>. Of course, Adobe has moved to a subscription service since. In 2017, Adobe Cloud (which also includes subscriptions without Photoshop), <a href="https://www.statista.com/statistics/497176/adobe-creative-cloud-subscriptions/">had 12,000,000 subscribers</a>. Looks like going to a subscriber model is really curtailing their installed base. Also, no wonder that last year’s Photoshop update suddenly included all kinds of fancy features aimed at painters, not photographers.</p>
<p>Krita currently is at 3,000,000 downloads a year from krita.org, which excludes downloads from external download sites or Linux distribution installs.</p>
<p>Our current budget is in a bit of a flux, since it’s rising, mostly because of income from Steam and the Windows store, but it’s about <strong>240,000</strong> euros a year. All of that is used to support development.</p>
<p>Krita has had 52 developers contributing in the past year, and 450 over its entire existence, and 17 in the past month. We currently have five full-time developers.</p>
<p><small>(In case you want <a href="https://www.openhub.net/p/_compare?project_0=GIMP&project_2=Krita&project_1=Inkscape">a comparison with projects similar to Krita</a>, GIMP is 675, 74, 21 and Inkscape 423, 94, 18 — but for those projects, the translations are part of the git repo, for Krita those are external, so the comparison is questionable…) I don’t know download numbers for GIMP or Inkscape, because those projects intentionally don’t track those.</small></p>
<p>Let’s risk a limb: Krita’s installed base is about <em>a quarter</em> of Photoshop’s.</p>
<p>It’s pretty hard to find recent information about downloads or installed base for <strong>Blender</strong>. Of course, Blender works in an industry where <a href="https://www.quora.com/How-many-people-are-using-3D-design-software-worldwide-i-e-Maya-3DS-Max-Cinema-4D-and-etc">the “market leader” AutoDesk has about 100,000 users in total</a>. The same estimate, using information from 2014, claims 4,000,000 downloads for Blender and about 200,000 users. I haven’t found any information that’s more recent, but Blender 2.80 has made a big splash: I wouldn’t be surprised that it’s made an order of magnitude difference. (Besides, if I look from our download numbers to installed base as reported by Microsoft, the calculation in that article doesn’t stand.)</p>
<p>The 2019 Blender Conference, the ostensible topic of this blog, has over 600 <i>paying</i> attendees. But Blender is a tool that makes its users money; nobody makes money just using a desktop. It makes sense for someone making money with Blender to pay to go to a conference this packed with useful information and contacts.</p>
<p>Akademy is free, though Guadec asks for a registration fee. I couldn’t find information about how many people attended Guadec in 2019, but about 160 people attended Akademy; I am sure almost all contributors.</p>
<p>The BlenderCon fee gets you food, drinks, clothing and a bag. The whole conference feels very professional, from the venue to the catering, from the hardware, to the level of excellence of the presentations. More importantly, there is an ecosystem around Blender that actually rents booths to show off their offering, puts leaflets, stickers and brochures in the swag bag. Almost all attendees are seriously committed blenderheads: but that means users. This is not just one developer community looking inside itself once a year.</p>
<p>Blender’s development fund currently brings in about <b>1,200,000 euros</b> a year, which funds 20 full-time developers. That’s not the only source of funding. Blender has about 172 developers in the past year, and 550 over its entire existence, and 64 in the past month, same as LibreOffice. Looking at the last number, it means that there are anyway more volunteer committers in the Blender community than paid developers. Funded development hasn’t eaten the community.</p>
<p><img class="aligncenter size-full wp-image-2442" src="http://valdyas.org/fading/wp-content/uploads/2019/10/blenderfund.png" alt="" width="600" height="880" srcset="https://valdyas.org/fading/wp-content/uploads/2019/10/blenderfund.png 600w, https://valdyas.org/fading/wp-content/uploads/2019/10/blenderfund-205x300.png 205w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px" /></p>
<p>Let’s hazard a guess: Blender has <em>four times</em> the installed base of AutoDesk Maya. This is pretty rough, of course, so ingest with salt.</p>
<h3>Funding Development</h3>
<p>This is important, because one of the things that keeps getting argued in the KDE community is that paying for development destroys the community. So, where does that argument come from, and when might it be true, and when might it not be true? Remember, I’m only talking about projects aimed at end-users, about applications, about the desktop. Programming languages, libraries, web stuff, all that is irrelevant for this discussion. What is relevant is that we often hear people claim that it is impossible to successfully develop this type of software as free software.</p>
<p>Well, my guess is that the people who continue to claim that funding development on free software will destroy the community are either nostalgic for their nineties student days, or tried to build a business around free software that they recognized was going to be valuable, but that was built by others. They would have founded a company, hired the developers, then started working on projects and contracts for customers. Of course that will fail: customers only care about <i>their</i> needs. And once you’re invoicing per-hour, you’re bust. You will never find time to properly maintain the project you wanted to build your company around. You’ve turned into a leech, and will drain your central asset of its lifeblood.</p>
<p>The other way is what happens with Blender, with LibreOffice and with Krita. There is no company that uses the free project to build a business selfishly. Instead, it is the project itself that is funded. There might be businesses that profit from the existence of the successful project (like the cloud renderer companies that were showing off at the BlenderCon), but that’s not central to the funding of the project.</p>
<p>Instead, there is someone central to the project who drives its development and growth with enthusiasm and who cares for the community; the paid developers are not extraneous people uninvolved in the community, but part of it.</p>
<p>I was going to write “in my opinion”, but the facts are pretty clear. Funding the development of free software applications this way is essential to achieve real success.</p>
<h3>Defining Success</h3>
<p>Blender is a success. Blender has, in fact, won, as Ton says. Despite being 25 years old, it’s <em>the</em> tool young 3D creatives reach for automatically, Maya is for old fogies. It has support from <i>all</i> hardware industry players: Intel, AMD, NVidia. It has support from closed source companies like Epic, from companies like Adidas, who simply are users of Blender. It is becoming, if it hasn’t already become, an industry standard.</p>
<p>And if Blender, a free and open source application can become an industry standard, users of Blender will find it easier to accept that Krita, which is also free and open source, can serve their needs just as well. Blender shows that free software can be first class, and that will drag every other willing project with it in its wake.</p>
<p>At Krita, we’ve worked together with Intel, for over 15 years now. If you compare the market numbers for Adobe and Autodesk, then it’s clear there’s a much larger potential community of Krita users than Blender users (unless Blender turns Grease Pencil into a regular painting application…). No reason we cannot have community four times bigger than Photoshop’s installed base! We’ve got plenty of growth still before us.</p>
<p>But I used the word “community” here, instead of something like “market”. Because the second part that defines success is the ability to remain a community. Well, when it comes to that, Blender does show the way forward, too.</p>
<p>Autodesk has such a small user base that it cannot grow a community. It’s too expensive for that. Which means that long-term it has already lost. (Besides, it cannot buy and shutdown Blender, which is what AutoDesk does when faced with competition). The only thing it <em>could</em> do is make Maya cheaper, but unless they hire Mario Draghi, they cannot make Maya cheaper than Blender.</p>
<p>There are more Photoshop users, because Photoshop is cheaper, and Photoshop users have more of a community feeling, but the company is very proficient at alienating that community; people feel attached to the tool, but hate the company behind it.</p>
<p>For Krita, we’re trying to foster our community. We had a big sprint in August where we invited more artists than ever, we’re funding the development of our YouTube channel — but there’s a way to go. I wish we had someone to setup Krita Artists, analogous to Blender Artists…</p>
<h3>What is Niche?</h3>
<p>My argument is that the model by which the Linux Desktop, GIMP or Inkscape are developed make those efforts inevitably niche. Not that everyone agrees about what is niche. At the 2019 KDE Onboarding Sprint, I was told twice that Krita of course serves a niche market. Doing art is something only a very few people are interested in, after all, isn’t it? Not even the actual download numbers could change that impression. The desktop, KDE PIM, that sort of projects are the important ones, providing something everyone needs. It’s fine to disregard anything outside the Linux world because nothing we do could ever succeed there. Nobody uses Qt applications on Windows.We all know they just don’t feel right. (Which would be news to Autodesk, since Maya is written in Qt.)</p>
<p>To me, looking at the numbers I’ve tried to assemble above, the Linux Desktop is a niche, LibreOffice, Blender and Krita are not.</p>
<p>Ton has once told me he doesn’t feel connected in any way to the regular free software/open source crowd. Being Free Software is essential for Blender’s success. The GPL is core. But being part of the GNU/GNOME/KDE etc. world, he warned me, would be a drag on Krita becoming successful.</p>
<p>And you know what? Unless we can turn our own communities around, I’m beginning to think he’s right. To make a real difference, our communities have to cross boundaries and enter the wider world. To flourish, a free software project needs to have a budget to fund its core developers within the project, to implement the vision of the project.</p>boudYesterday, me, Dmitry, Wolthera and Agata visited BlenderCon 2019. Intel had asked us to come to the conference to help set up the Intel/Acer booth, which was showing off Krita in all its HDR glory. After all, it’s pretty cool when a free software project has a real, tangible, technical, artistic first! It was great being there, meeting people who were really pleased to finally meet Krita hackers in the flesh. Honored to meet @boudewijnrempt, the Founder of #Krita #bcon19 we were talking about how Grease Pencil is a competition for @Krita_Painting pic.twitter.com/tRUVwQJm0I — Tobias Günther (@elaspix) October 24, 2019 (Aside 1: note how crowded that theatre is!) (Aside 2: we tacked on a small sprint to this event, because the Intel team that works on these projects with us wanted to visit me in Deventer, and I wanted them to meet some other Krita hackers. At the sprint, I had HDR-enabled laptops for Dmitry and Agata, who were in dire need of new hardware. Yoga C940, really nice devices. We also discussed how to progress with the resource system rewrite.) But, cool as HDR is, and the hardware that eventually arrived at the booth was pretty cool, too, and interested as many people were, that’s not the main thing I took away from the conference. What struck me once again was the disparity between how Blender is looked at from inside the Linux Desktop community, as if it were a largely irrelevant niche hobby project of no big moment in the larger scheme of things, and the reality of Blender as one of the most successful end-user oriented free software projects. But first watch this: Numbers Let’s start comparing the numbers for some projects, roughly. Things I’m interested in are installed base, market share, funding levels, developer engagement, community engagement. Desktop Linux has a market share of about 3%, including ChromeOS. Windows 10 runs on about 1,000,000,000 devices., and Windows 10 has about 33% marketshare. (You might want to quibble about these numbers, the sources where I pulled them from, but it’s pretty the same everywhere. And exact numbers don’t matter in this discussion.) That puts the total Linux Desktop installed base at 90,000,000, of which one third is ChromeOS. All other Linux desktop projects, from Plasma to Gnome, from Mate to XFCE, from Deepin to i3 have to divide that remaining 90,000,000 installations. Then financial stuff… In 2017, the Gnome project had an income of 246,869 euros, in 2018 of 965,441 euros, but that includes the Handshake donation, which is one-time. For KDE, the 2017 income was about 150,000 euros, and 2018 was about 600,000 euros, again including the Handshake donation. I can’t be bothered to look for similar statements for Mate and XFCE which are tiny in any case. In a normal year, Desktop Linux seems to have a total budget of about 400,000 euros, excluding commercial investment which is not controlled by the projects themselves. KDE e.V. does not use its budget to pay for development, and the GNOME Foundation supports development financially in a very limited way. The Free Desktop has three percent of the installed base of Windows/macOS. LibreOffice has been estimated to have 200,000,000 active users. About 10% are Linux users, which means that they count all Linux desktops, probably because LibreOffice is installed by default by all Linux Distributions. In 2018, the Document Foundation’s income was 855,847,78 euros, pretty much all from donations. According to OpenHub, LibreOffice had about 200 developers in the past year, and has had 1900 developers over its entire existence, and 64 in the last month. Microsoft Office has five times the market share, at the very least. LibreOffice’s installed base is one fifth of Microsoft’s. Krita has, according to data from Microsoft, which counts every time an exe is started on Windows 10, 1,500,000 active users (that is, distinct systems on which Krita is started at least once a month). A dumb extrapolation of that to 4,500,000 users on all platforms since Windows 10 has 33% market share is probably too coarse, but let it stand. It’s order of magnitude that’s important here. In 2010, Photoshop had 10,000,000 users. Of course, Adobe has moved to a subscription service since. In 2017, Adobe Cloud (which also includes subscriptions without Photoshop), had 12,000,000 subscribers. Looks like going to a subscriber model is really curtailing their installed base. Also, no wonder that last year’s Photoshop update suddenly included all kinds of fancy features aimed at painters, not photographers. Krita currently is at 3,000,000 downloads a year from krita.org, which excludes downloads from external download sites or Linux distribution installs. Our current budget is in a bit of a flux, since it’s rising, mostly because of income from Steam and the Windows store, but it’s about 240,000 euros a year. All of that is used to support development. Krita has had 52 developers contributing in the past year, and 450 over its entire existence, and 17 in the past month. We currently have five full-time developers. (In case you want a comparison with projects similar to Krita, GIMP is 675, 74, 21 and Inkscape 423, 94, 18 — but for those projects, the translations are part of the git repo, for Krita those are external, so the comparison is questionable…) I don’t know download numbers for GIMP or Inkscape, because those projects intentionally don’t track those. Let’s risk a limb: Krita’s installed base is about a quarter of Photoshop’s. It’s pretty hard to find recent information about downloads or installed base for Blender. Of course, Blender works in an industry where the “market leader” AutoDesk has about 100,000 users in total. The same estimate, using information from 2014, claims 4,000,000 downloads for Blender and about 200,000 users. I haven’t found any information that’s more recent, but Blender 2.80 has made a big splash: I wouldn’t be surprised that it’s made an order of magnitude difference. (Besides, if I look from our download numbers to installed base as reported by Microsoft, the calculation in that article doesn’t stand.) The 2019 Blender Conference, the ostensible topic of this blog, has over 600 paying attendees. But Blender is a tool that makes its users money; nobody makes money just using a desktop. It makes sense for someone making money with Blender to pay to go to a conference this packed with useful information and contacts. Akademy is free, though Guadec asks for a registration fee. I couldn’t find information about how many people attended Guadec in 2019, but about 160 people attended Akademy; I am sure almost all contributors. The BlenderCon fee gets you food, drinks, clothing and a bag. The whole conference feels very professional, from the venue to the catering, from the hardware, to the level of excellence of the presentations. More importantly, there is an ecosystem around Blender that actually rents booths to show off their offering, puts leaflets, stickers and brochures in the swag bag. Almost all attendees are seriously committed blenderheads: but that means users. This is not just one developer community looking inside itself once a year. Blender’s development fund currently brings in about 1,200,000 euros a year, which funds 20 full-time developers. That’s not the only source of funding. Blender has about 172 developers in the past year, and 550 over its entire existence, and 64 in the past month, same as LibreOffice. Looking at the last number, it means that there are anyway more volunteer committers in the Blender community than paid developers. Funded development hasn’t eaten the community. Let’s hazard a guess: Blender has four times the installed base of AutoDesk Maya. This is pretty rough, of course, so ingest with salt. Funding Development This is important, because one of the things that keeps getting argued in the KDE community is that paying for development destroys the community. So, where does that argument come from, and when might it be true, and when might it not be true? Remember, I’m only talking about projects aimed at end-users, about applications, about the desktop. Programming languages, libraries, web stuff, all that is irrelevant for this discussion. What is relevant is that we often hear people claim that it is impossible to successfully develop this type of software as free software. Well, my guess is that the people who continue to claim that funding development on free software will destroy the community are either nostalgic for their nineties student days, or tried to build a business around free software that they recognized was going to be valuable, but that was built by others. They would have founded a company, hired the developers, then started working on projects and contracts for customers. Of course that will fail: customers only care about their needs. And once you’re invoicing per-hour, you’re bust. You will never find time to properly maintain the project you wanted to build your company around. You’ve turned into a leech, and will drain your central asset of its lifeblood. The other way is what happens with Blender, with LibreOffice and with Krita. There is no company that uses the free project to build a business selfishly. Instead, it is the project itself that is funded. There might be businesses that profit from the existence of the successful project (like the cloud renderer companies that were showing off at the BlenderCon), but that’s not central to the funding of the project. Instead, there is someone central to the project who drives its development and growth with enthusiasm and who cares for the community; the paid developers are not extraneous people uninvolved in the community, but part of it. I was going to write “in my opinion”, but the facts are pretty clear. Funding the development of free software applications this way is essential to achieve real success. Defining Success Blender is a success. Blender has, in fact, won, as Ton says. Despite being 25 years old, it’s the tool young 3D creatives reach for automatically, Maya is for old fogies. It has support from all hardware industry players: Intel, AMD, NVidia. It has support from closed source companies like Epic, from companies like Adidas, who simply are users of Blender. It is becoming, if it hasn’t already become, an industry standard. And if Blender, a free and open source application can become an industry standard, users of Blender will find it easier to accept that Krita, which is also free and open source, can serve their needs just as well. Blender shows that free software can be first class, and that will drag every other willing project with it in its wake. At Krita, we’ve worked together with Intel, for over 15 years now. If you compare the market numbers for Adobe and Autodesk, then it’s clear there’s a much larger potential community of Krita users than Blender users (unless Blender turns Grease Pencil into a regular painting application…). No reason we cannot have community four times bigger than Photoshop’s installed base! We’ve got plenty of growth still before us. But I used the word “community” here, instead of something like “market”. Because the second part that defines success is the ability to remain a community. Well, when it comes to that, Blender does show the way forward, too. Autodesk has such a small user base that it cannot grow a community. It’s too expensive for that. Which means that long-term it has already lost. (Besides, it cannot buy and shutdown Blender, which is what AutoDesk does when faced with competition). The only thing it could do is make Maya cheaper, but unless they hire Mario Draghi, they cannot make Maya cheaper than Blender. There are more Photoshop users, because Photoshop is cheaper, and Photoshop users have more of a community feeling, but the company is very proficient at alienating that community; people feel attached to the tool, but hate the company behind it. For Krita, we’re trying to foster our community. We had a big sprint in August where we invited more artists than ever, we’re funding the development of our YouTube channel — but there’s a way to go. I wish we had someone to setup Krita Artists, analogous to Blender Artists… What is Niche? My argument is that the model by which the Linux Desktop, GIMP or Inkscape are developed make those efforts inevitably niche. Not that everyone agrees about what is niche. At the 2019 KDE Onboarding Sprint, I was told twice that Krita of course serves a niche market. Doing art is something only a very few people are interested in, after all, isn’t it? Not even the actual download numbers could change that impression. The desktop, KDE PIM, that sort of projects are the important ones, providing something everyone needs. It’s fine to disregard anything outside the Linux world because nothing we do could ever succeed there. Nobody uses Qt applications on Windows.We all know they just don’t feel right. (Which would be news to Autodesk, since Maya is written in Qt.) To me, looking at the numbers I’ve tried to assemble above, the Linux Desktop is a niche, LibreOffice, Blender and Krita are not. Ton has once told me he doesn’t feel connected in any way to the regular free software/open source crowd. Being Free Software is essential for Blender’s success. The GPL is core. But being part of the GNU/GNOME/KDE etc. world, he warned me, would be a drag on Krita becoming successful. And you know what? Unless we can turn our own communities around, I’m beginning to think he’s right. To make a real difference, our communities have to cross boundaries and enter the wider world. To flourish, a free software project needs to have a budget to fund its core developers within the project, to implement the vision of the project.Milanese Akademics2019-09-25T00:00:00+00:002019-09-25T00:00:00+00:00https://calligra.org/2019/09/25/milanese_akademicsEach year, the KDE community puts on one of the best tech conferences in the world, and people from around the globe congregate in, usually, a university to talk about all the things that happened over the last year (or decade, or indeed sometimes longer, usually referring to a certain David's t-shirts), and to show off the shiny things people have been working on, or take those discussions which fall into the overlap between "too awkward to take over the internet" and "can wait a few months for a resolution".<br /><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-Jr7UyQpK3c8/XYsq5J1m7ZI/AAAAAAAAAXk/RJhYS-He7BkznmZyQN6uLo3LQ12RCQo8gCK4BGAYYCw/s1600/09050001.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="266" src="https://4.bp.blogspot.com/-Jr7UyQpK3c8/XYsq5J1m7ZI/AAAAAAAAAXk/RJhYS-He7BkznmZyQN6uLo3LQ12RCQo8gCK4BGAYYCw/s400/09050001.JPG" width="400" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">We even managed to do a short stop at a cafe near Paris Gare de Lyon for lunch, and for a slightly tired Jonathan to do a quick unboxing of a shiny new piece of kit donated to the cause by Tuxedo Computers</td></tr></tbody></table><br class="Apple-interchange-newline" />Last year, my attendance was cut short due to a stressful situation (entirely of my own making, or rather my builders' making - house renovation work is at least as stressful people tell you it is), but this year i was able to stay for the duration. It started in London, where three of us caught the Eurostar to Paris, and then a TGV from there to Milan. A lovely, relaxed sort of trip, with considerably less hassle than any flight i've taken. Highly recommend it if you have a few more hours available to spend. Oh, and it's way better for the environment than flying, which when the option exists in a reasonable capacity is just a lovely side effect (still no tunnels between the Americas and the Eurasian land mass ;) ).<br /><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-cgGKfpnkSj8/XYstOB8jVpI/AAAAAAAAAXw/USvS0_UsbDY3Ir8ojd_hZlgI3UVMXblVgCK4BGAYYCw/s1600/09060001.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="133" src="https://1.bp.blogspot.com/-cgGKfpnkSj8/XYstOB8jVpI/AAAAAAAAAXw/USvS0_UsbDY3Ir8ojd_hZlgI3UVMXblVgCK4BGAYYCw/s200/09060001.JPG" width="200" /></a><a href="http://3.bp.blogspot.com/-tkfxn3vLSaI/XYstOVnovyI/AAAAAAAAAX4/YBBwibBI7mMjfXNqAZrniIOV1qCWL7rqgCK4BGAYYCw/s1600/09060002.JPG" imageanchor="1"><img border="0" height="133" src="https://3.bp.blogspot.com/-tkfxn3vLSaI/XYstOVnovyI/AAAAAAAAAX4/YBBwibBI7mMjfXNqAZrniIOV1qCWL7rqgCK4BGAYYCw/s320/09060002.JPG" width="200" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Delightful food, and impressively made ales and beers, hosted by Je Suis Jambon.</td></tr></tbody></table><br class="Apple-interchange-newline" />Tradition dictates that the evening before the first day of Akademy is spent at some place somewhere in the host city, where a registration station is available for people to drop by and get their badge, and some refreshments. In this case, it was a delightful place with craft beers on tap, and some absolutely wonderful fingerfoods, in the shape of cheeses, cured meats, and a variety of bread based delights. Also while there, i was reminded that i had quite entirely forgotten to bring my sound recorder, and so the video of Jonathan installing KDE Neon on the new laptop was not particularly useful. Note to self: Bring sound recorder next year.<br /><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-e7MS259xOs4/XYs3QYyeeWI/AAAAAAAAAYU/ud4u4eVIJXsbze89g8H8EtB2FhzJXbshQCK4BGAYYCw/s1600/09070010.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="133" src="https://1.bp.blogspot.com/-e7MS259xOs4/XYs3QYyeeWI/AAAAAAAAAYU/ud4u4eVIJXsbze89g8H8EtB2FhzJXbshQCK4BGAYYCw/s200/09070010.JPG" width="200" /></a><a href="http://1.bp.blogspot.com/-ZsnLPm7Wu40/XYs3lYNSSZI/AAAAAAAAAYg/Gm_EHJGGVrwd0D7NBGtAZ5WlZk4EpwEzwCK4BGAYYCw/s1600/09070012.JPG" imageanchor="1"><img border="0" height="133" src="https://1.bp.blogspot.com/-ZsnLPm7Wu40/XYs3lYNSSZI/AAAAAAAAAYg/Gm_EHJGGVrwd0D7NBGtAZ5WlZk4EpwEzwCK4BGAYYCw/s320/09070012.JPG" width="200" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">A Panel of Goals. One old and shiny, and one new and also shiny.</td></tr></tbody></table><br class="Apple-interchange-newline" />The first day of Akademy was full of all manner of amazing talks, and not just the always-brilliant hallway track. A great keynote by Lars Knoll, talking about shiny things in the pipeline for Qt 6, followed by several talks, all about the goals the community have been focused on furthering the most over the last couple of years, and the announcement of new goals alongside that. As with all such things, that does not mean the old goals have been reached, not by far, and they are continuing to be worked on. It means that there is recognition that there is sufficient progress that we can bring focus onto other parts of our community as well.<br /><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-sUo5DVzw4sk/XYsxByR-xBI/AAAAAAAAAYI/5qcfSkw8Z8Y-WIfhVN8ugics-x7xv1WJACK4BGAYYCw/s1600/09070001.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="133" src="https://3.bp.blogspot.com/-sUo5DVzw4sk/XYsxByR-xBI/AAAAAAAAAYI/5qcfSkw8Z8Y-WIfhVN8ugics-x7xv1WJACK4BGAYYCw/s200/09070001.JPG" width="89" /></a><a href="http://2.bp.blogspot.com/-uSzj1osxANE/XYs4lpISUII/AAAAAAAAAYs/HV9EfNWnRjYI5HnXrEeUoaFOeuLYp9gKwCK4BGAYYCw/s1600/09070015.JPG" imageanchor="1"><img border="0" height="133" src="https://2.bp.blogspot.com/-uSzj1osxANE/XYs4lpISUII/AAAAAAAAAYs/HV9EfNWnRjYI5HnXrEeUoaFOeuLYp9gKwCK4BGAYYCw/s320/09070015.JPG" width="200" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Italians take their coffee breaks seriously</td></tr></tbody></table><br />Sunday was my own sort of "big day", and so i managed to get precisely zero pictures of the goings-on during that day - though of course i did manage to get in the group photo along with most everybody else. What i did instead of taking photos of people being engaged in eating tasty treats and generally being amazing was to do two presentations.<br /><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-1mqoGLypZNM/XYs--M8mWCI/AAAAAAAAAZA/0PDwiOWzBgskELpJPYXwz1ed6-GzMSsAQCK4BGAYYCw/s1600/09080009.JPG" imageanchor="1"><img border="0" height="133" src="https://4.bp.blogspot.com/-1mqoGLypZNM/XYs--M8mWCI/AAAAAAAAAZA/0PDwiOWzBgskELpJPYXwz1ed6-GzMSsAQCK4BGAYYCw/s200/09080009.JPG" width="200" /></a><a href="http://2.bp.blogspot.com/-3cGwQeqP5zM/XYs-02pR43I/AAAAAAAAAY4/HHKW24MH1cACSGWdSKcFrCjcKg8zE79lACK4BGAYYCw/s1600/09080027.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="133" src="https://2.bp.blogspot.com/-3cGwQeqP5zM/XYs-02pR43I/AAAAAAAAAY4/HHKW24MH1cACSGWdSKcFrCjcKg8zE79lACK4BGAYYCw/s320/09080027.JPG" width="200" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">The social event Sunday night had tasty food, enthusiastic and skilled bar staff, and great company. Also a Kirigami-powered tail (sorry, no pictures, i was busy wearing it ;) )</td></tr></tbody></table><br class="Apple-interchange-newline" />The first of these was a panel, where we first presented the various ways in which KDE gets its software to users. The second half was the panel round, in which the panel took questions from a an audience so engaged we entirely ran out of time. Some really great questions, too, and i personally look forward to looking through the video of it when those are released, as i feel like there were definitely things that i have forgotten and which need following up on. Thank you to all who attended, and to the panel participants.<br /><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-WxXL_YVAvK4/XYs_mxgnQUI/AAAAAAAAAZY/VYerCxMud2YhpLYTbXBSw85ycnKmakfcQCK4BGAYYCw/s1600/09080006.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="133" src="https://4.bp.blogspot.com/-WxXL_YVAvK4/XYs_mxgnQUI/AAAAAAAAAZY/VYerCxMud2YhpLYTbXBSw85ycnKmakfcQCK4BGAYYCw/s200/09080006.JPG" width="200" /></a><a href="http://1.bp.blogspot.com/-vZKyrmk8eIg/XYs_j1AwcQI/AAAAAAAAAZQ/JopmqyhR22Euw3__q9vTker-RmmddcoswCK4BGAYYCw/s1600/09080031.JPG" imageanchor="1"><img border="0" height="133" src="https://1.bp.blogspot.com/-vZKyrmk8eIg/XYs_j1AwcQI/AAAAAAAAAZQ/JopmqyhR22Euw3__q9vTker-RmmddcoswCK4BGAYYCw/s320/09080031.JPG" width="200" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">The social event venue was in what i can only describe as an eclectic, and delightful location.</td></tr></tbody></table><br class="Apple-interchange-newline" />The second of these was a much more traditional presentation, in which i went through my work on KNewStuff's Qt Quick components over the last few months. <a href="https://phabricator.kde.org/D21721">The patch is currently still in review</a> (please do take time to give that a once-over, if you've got the time), but feels very much like it wants to get merged. The whole point of the exercise is to make KNewStuff work in a Qt Quick world, and generally make everything look and feel modern. The old widget based components have done their job well, and continue to do so (in fact, i have spent not inconsiderable time to ensure they still work), but everybody wants things that are more touch friendly, and while that could be done with widgets, it would just be shoehorning something in, and that's just not how we roll. The new ones are new and shiny, and all 'round lovely, if one does say so themselves.<br /><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-3UKleheNdTg/XYtQt4fZiaI/AAAAAAAAAZo/UZigBA8maO0aOJpm2kL3Fc4hPTh4UptmACK4BGAYYCw/s1600/09090002.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="133" src="https://2.bp.blogspot.com/-3UKleheNdTg/XYtQt4fZiaI/AAAAAAAAAZo/UZigBA8maO0aOJpm2kL3Fc4hPTh4UptmACK4BGAYYCw/s200/09090002.JPG" width="200" /></a><a href="http://2.bp.blogspot.com/-5ANlQ8ei0ck/XYtRBZ-3kTI/AAAAAAAAAZ0/MlYaUIh-ahUEZI-jiUkLBrkwBCbhFc_JwCK4BGAYYCw/s1600/09100008.JPG" imageanchor="1"><img border="0" height="133" src="https://2.bp.blogspot.com/-5ANlQ8ei0ck/XYtRBZ-3kTI/AAAAAAAAAZ0/MlYaUIh-ahUEZI-jiUkLBrkwBCbhFc_JwCK4BGAYYCw/s320/09100008.JPG" width="200" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">The BoF sessions during the week were sometimes intense, sometimes intimate, and always interesting.</td></tr></tbody></table><br />During the week, alongside the KDE e.V. AGM on Monday, it was time for the other, meatier part of the conference: The BoF sessions. Those things i mentioned earlier, which are awkward or difficult to discuss online for various reasons, that's what the BoF sessions are for. I didn't host any myself this year, but I did attend a great many. A small sample includes the Maui and Kirigami sessions on the Monday morning, which put the two teams in the same room, allowing them to take on those seemingly contentious topics of "why?", giving the team the ability turn that into the more immediately useful "how". Much progress was made there, that i very much look forward to seeing continuing.<br /><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-zZpoz3Pxc3c/XYtRUJiXQdI/AAAAAAAAAaA/iwVytGYwI2wDLL5v9-GMPr9aKAjIFFYXwCK4BGAYYCw/s1600/09100001.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="176" src="https://1.bp.blogspot.com/-zZpoz3Pxc3c/XYtRUJiXQdI/AAAAAAAAAaA/iwVytGYwI2wDLL5v9-GMPr9aKAjIFFYXwCK4BGAYYCw/s320/09100001.JPG" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Plasma is always a big topic, so one room was mostly dedicated to that.</td></tr></tbody></table><br />Tuesday evening, the LGBTQ+ Meal event, hosted by the already busy Kenny D at his apartment near the university. As it turned out, the food was delicious, the wine and beer tasty, and sufficient enough that we all made it to the university the day after, and the chat ended up more or less centered around books, mostly science fiction, with a hint of fantasy mixed in, and just how incredibly powerfully the genre has changed recently. Sorry, no pictures from that, we were too busy being excited about C. J. Cherryh, Iain M. Banks, Ada Palmer, and a bunch of other amazing writers doing the good work. At this point i should perhaps mention that i sometimes make words, which other people think are sufficiently skilfully put together that they are ok to be published. If you'd like to see some of those, <a href="https://www.goodreads.com/author/show/17680213.Dan_Leinir_Turthra_Jensen">my Goodreads profile</a> has links to those books.<br /><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-dPIXcT6hE0U/XYtXb2uj0ZI/AAAAAAAAAaU/zcKzxUD5AnUG04DAxi9J8Ej4QWIksjz5ACK4BGAYYCw/s1600/09110005.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="133" src="https://4.bp.blogspot.com/-dPIXcT6hE0U/XYtXb2uj0ZI/AAAAAAAAAaU/zcKzxUD5AnUG04DAxi9J8Ej4QWIksjz5ACK4BGAYYCw/s200/09110005.JPG" width="200" /></a><a href="http://4.bp.blogspot.com/-p9gA3MWdbO0/XYtXa72TSuI/AAAAAAAAAaM/bqZp_RbngUETU_rrhJolYwzC5pmW1vmewCK4BGAYYCw/s1600/09110010.JPG" imageanchor="1"><img border="0" height="133" src="https://4.bp.blogspot.com/-p9gA3MWdbO0/XYtXa72TSuI/AAAAAAAAAaM/bqZp_RbngUETU_rrhJolYwzC5pmW1vmewCK4BGAYYCw/s320/09110010.JPG" width="200" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Narrow passages, tiny cafes with tiny terraces, and church towers behind flowers</td></tr></tbody></table><br />Along with more BoFs, Wednesday brought us the day trip, which this year was to Lake Como, a place to which the approach by coach is so steep several people very near to panic. We did all make it down intact, however, and we were greeted by the most delightful village of Varenna, with its steep, cliff side built houses, with their narrow passageways and immaculately presented, well, everything.<br /><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-Ms0Hp8d8ODo/XYtYLPUL9sI/AAAAAAAAAas/4ZcctwXcXb0muNoG07oYbCh8ygMe6FrkACK4BGAYYCw/s1600/09110045.JPG" imageanchor="1"><img border="0" height="133" src="https://1.bp.blogspot.com/-Ms0Hp8d8ODo/XYtYLPUL9sI/AAAAAAAAAas/4ZcctwXcXb0muNoG07oYbCh8ygMe6FrkACK4BGAYYCw/s200/09110045.JPG" width="200" /></a><a href="http://2.bp.blogspot.com/-MuVVo0L8P5Q/XYtYJo8yQkI/AAAAAAAAAak/CXJI5TzC0oAie75h-mDchOAVX6qoEjOagCK4BGAYYCw/s1600/09110044.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="133" src="https://2.bp.blogspot.com/-MuVVo0L8P5Q/XYtYJo8yQkI/AAAAAAAAAak/CXJI5TzC0oAie75h-mDchOAVX6qoEjOagCK4BGAYYCw/s320/09110044.JPG" width="200" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Nights are beautiful as well, even when just hanging out in a parking lot waiting for a coach to arrive</td></tr></tbody></table><br />Thursday was the end of BoFs, and in the past this day has sometimes been more lightly dusted with sessions. This year, however, the spread was much more thorough, with many of the sessions from the previous days having had to be cut short, resulting in another sessions being desirable. It was exciting to me for two reasons: Firstly that it meant we understand limits and don't just keep going when someone else wants to start their BoF, which definitely is a positive. Secondly, it means we are getting good at picking things up in a more organised fashion, which might otherwise have just ended up either discarded, or being handled in the hallway track. While that of course is an endlessly useful not-really-track, if things are handled there, it makes those group chats much more difficult to achieve, compared to a room with a topic and (most often) an agenda. In short: We're getting good at this conferency thing. Kudos to everybody on that, this in itself has been nifty to witness.<br /><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-_9lq_17_0LA/XYtaTsI6TbI/AAAAAAAAAa8/N6twRcfZ0U8aAE6hgtRwUyOuCQTfRXubgCK4BGAYYCw/s1600/09110031.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="133" src="https://2.bp.blogspot.com/-_9lq_17_0LA/XYtaTsI6TbI/AAAAAAAAAa8/N6twRcfZ0U8aAE6hgtRwUyOuCQTfRXubgCK4BGAYYCw/s200/09110031.JPG" width="200" /></a><a href="http://2.bp.blogspot.com/-I6D9Zith878/XYtaV8tp0II/AAAAAAAAAbE/Oj7PCGPzUOkH26NAnBAAlMXibOjTylqHgCK4BGAYYCw/s1600/09110022.JPG" imageanchor="1"><img border="0" height="133" src="https://2.bp.blogspot.com/-I6D9Zith878/XYtaV8tp0II/AAAAAAAAAbE/Oj7PCGPzUOkH26NAnBAAlMXibOjTylqHgCK4BGAYYCw/s320/09110022.JPG" width="200" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Gelato? Gelato. Also, just someone's house, half way up a steep cliff face, with a lovely, little outlook space next to it.</td></tr></tbody></table><br />Friday for me was travel day. Similarly no pictures of this, but it started with a nice, leisurely breakfast at the hotel, followed by a train all the way from Milan to London, via Paris (top tip: don't exit Paris Gare du Nord if you aren't keen on very busy streets), and finally a train from London and most of the way home. Bus finished it off, and i was home in time for perfectly normal bedtime. Oh, and i ported most of Calligra Gemini's welcome pages to Kirigami while we were sat on a comfortable and spacious train. Definitely doing that again :D<br /><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-lKxnOrxv3RQ/XYtb4JqofvI/AAAAAAAAAbQ/ziKKS6f9SyozwV15bi2or9Gb28RW_iCwQCK4BGAYYCw/s1600/Screenshot_20190925_132123.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="187" src="https://2.bp.blogspot.com/-lKxnOrxv3RQ/XYtb4JqofvI/AAAAAAAAAbQ/ziKKS6f9SyozwV15bi2or9Gb28RW_iCwQCK4BGAYYCw/s320/Screenshot_20190925_132123.png" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Calligra Gemini's alive?! </BrianBlessed></td></tr></tbody></table><br />Thank you to everybody involved in making Akademy such a huge success every year i've attended, it is never not a great event to attend!<br /><br /><hr />The word of the day is: Umbrella. Because apparently the need for that sometimes occurs in Milan ;) (as well as here in the UK)Kath LenirEach year, the KDE community puts on one of the best tech conferences in the world, and people from around the globe congregate in, usually, a university to talk about all the things that happened over the last year (or decade, or indeed sometimes longer, usually referring to a certain David's t-shirts), and to show off the shiny things people have been working on, or take those discussions which fall into the overlap between "too awkward to take over the internet" and "can wait a few months for a resolution".We even managed to do a short stop at a cafe near Paris Gare de Lyon for lunch, and for a slightly tired Jonathan to do a quick unboxing of a shiny new piece of kit donated to the cause by Tuxedo ComputersLast year, my attendance was cut short due to a stressful situation (entirely of my own making, or rather my builders' making - house renovation work is at least as stressful people tell you it is), but this year i was able to stay for the duration. It started in London, where three of us caught the Eurostar to Paris, and then a TGV from there to Milan. A lovely, relaxed sort of trip, with considerably less hassle than any flight i've taken. Highly recommend it if you have a few more hours available to spend. Oh, and it's way better for the environment than flying, which when the option exists in a reasonable capacity is just a lovely side effect (still no tunnels between the Americas and the Eurasian land mass ;) ).Delightful food, and impressively made ales and beers, hosted by Je Suis Jambon.Tradition dictates that the evening before the first day of Akademy is spent at some place somewhere in the host city, where a registration station is available for people to drop by and get their badge, and some refreshments. In this case, it was a delightful place with craft beers on tap, and some absolutely wonderful fingerfoods, in the shape of cheeses, cured meats, and a variety of bread based delights. Also while there, i was reminded that i had quite entirely forgotten to bring my sound recorder, and so the video of Jonathan installing KDE Neon on the new laptop was not particularly useful. Note to self: Bring sound recorder next year.A Panel of Goals. One old and shiny, and one new and also shiny.The first day of Akademy was full of all manner of amazing talks, and not just the always-brilliant hallway track. A great keynote by Lars Knoll, talking about shiny things in the pipeline for Qt 6, followed by several talks, all about the goals the community have been focused on furthering the most over the last couple of years, and the announcement of new goals alongside that. As with all such things, that does not mean the old goals have been reached, not by far, and they are continuing to be worked on. It means that there is recognition that there is sufficient progress that we can bring focus onto other parts of our community as well.Italians take their coffee breaks seriouslySunday was my own sort of "big day", and so i managed to get precisely zero pictures of the goings-on during that day - though of course i did manage to get in the group photo along with most everybody else. What i did instead of taking photos of people being engaged in eating tasty treats and generally being amazing was to do two presentations.The social event Sunday night had tasty food, enthusiastic and skilled bar staff, and great company. Also a Kirigami-powered tail (sorry, no pictures, i was busy wearing it ;) )The first of these was a panel, where we first presented the various ways in which KDE gets its software to users. The second half was the panel round, in which the panel took questions from a an audience so engaged we entirely ran out of time. Some really great questions, too, and i personally look forward to looking through the video of it when those are released, as i feel like there were definitely things that i have forgotten and which need following up on. Thank you to all who attended, and to the panel participants.The social event venue was in what i can only describe as an eclectic, and delightful location.The second of these was a much more traditional presentation, in which i went through my work on KNewStuff's Qt Quick components over the last few months. The patch is currently still in review (please do take time to give that a once-over, if you've got the time), but feels very much like it wants to get merged. The whole point of the exercise is to make KNewStuff work in a Qt Quick world, and generally make everything look and feel modern. The old widget based components have done their job well, and continue to do so (in fact, i have spent not inconsiderable time to ensure they still work), but everybody wants things that are more touch friendly, and while that could be done with widgets, it would just be shoehorning something in, and that's just not how we roll. The new ones are new and shiny, and all 'round lovely, if one does say so themselves.The BoF sessions during the week were sometimes intense, sometimes intimate, and always interesting.During the week, alongside the KDE e.V. AGM on Monday, it was time for the other, meatier part of the conference: The BoF sessions. Those things i mentioned earlier, which are awkward or difficult to discuss online for various reasons, that's what the BoF sessions are for. I didn't host any myself this year, but I did attend a great many. A small sample includes the Maui and Kirigami sessions on the Monday morning, which put the two teams in the same room, allowing them to take on those seemingly contentious topics of "why?", giving the team the ability turn that into the more immediately useful "how". Much progress was made there, that i very much look forward to seeing continuing.Plasma is always a big topic, so one room was mostly dedicated to that.Tuesday evening, the LGBTQ+ Meal event, hosted by the already busy Kenny D at his apartment near the university. As it turned out, the food was delicious, the wine and beer tasty, and sufficient enough that we all made it to the university the day after, and the chat ended up more or less centered around books, mostly science fiction, with a hint of fantasy mixed in, and just how incredibly powerfully the genre has changed recently. Sorry, no pictures from that, we were too busy being excited about C. J. Cherryh, Iain M. Banks, Ada Palmer, and a bunch of other amazing writers doing the good work. At this point i should perhaps mention that i sometimes make words, which other people think are sufficiently skilfully put together that they are ok to be published. If you'd like to see some of those, my Goodreads profile has links to those books.Narrow passages, tiny cafes with tiny terraces, and church towers behind flowersAlong with more BoFs, Wednesday brought us the day trip, which this year was to Lake Como, a place to which the approach by coach is so steep several people very near to panic. We did all make it down intact, however, and we were greeted by the most delightful village of Varenna, with its steep, cliff side built houses, with their narrow passageways and immaculately presented, well, everything.Nights are beautiful as well, even when just hanging out in a parking lot waiting for a coach to arriveThursday was the end of BoFs, and in the past this day has sometimes been more lightly dusted with sessions. This year, however, the spread was much more thorough, with many of the sessions from the previous days having had to be cut short, resulting in another sessions being desirable. It was exciting to me for two reasons: Firstly that it meant we understand limits and don't just keep going when someone else wants to start their BoF, which definitely is a positive. Secondly, it means we are getting good at picking things up in a more organised fashion, which might otherwise have just ended up either discarded, or being handled in the hallway track. While that of course is an endlessly useful not-really-track, if things are handled there, it makes those group chats much more difficult to achieve, compared to a room with a topic and (most often) an agenda. In short: We're getting good at this conferency thing. Kudos to everybody on that, this in itself has been nifty to witness.Gelato? Gelato. Also, just someone's house, half way up a steep cliff face, with a lovely, little outlook space next to it.Friday for me was travel day. Similarly no pictures of this, but it started with a nice, leisurely breakfast at the hotel, followed by a train all the way from Milan to London, via Paris (top tip: don't exit Paris Gare du Nord if you aren't keen on very busy streets), and finally a train from London and most of the way home. Bus finished it off, and i was home in time for perfectly normal bedtime. Oh, and i ported most of Calligra Gemini's welcome pages to Kirigami while we were sat on a comfortable and spacious train. Definitely doing that again :DCalligra Gemini's alive?! </BrianBlessed>Thank you to everybody involved in making Akademy such a huge success every year i've attended, it is never not a great event to attend!The word of the day is: Umbrella. Because apparently the need for that sometimes occurs in Milan ;) (as well as here in the UK)