<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Blogs on Dragotins Blog</title>
    <link>https://dragotin.codeberg.page/posts/</link>
    <description>Recent content in Blogs on Dragotins Blog</description>
    <image>
      <title>Dragotins Blog</title>
      <url>https://dragotin.codeberg.page/%3Clink%20or%20path%20of%20image%20for%20opengraph,%20twitter-cards%3E</url>
      <link>https://dragotin.codeberg.page/%3Clink%20or%20path%20of%20image%20for%20opengraph,%20twitter-cards%3E</link>
    </image>
    <generator>Hugo -- 0.152.1</generator>
    <language>en</language>
    <copyright>2022-2026 Klaas Freitag - Content is licensed under the Creative Commons Attribution 4.0 International License</copyright>
    <lastBuildDate>Tue, 06 Jan 2026 11:14:09 +0100</lastBuildDate>
    <atom:link href="https://dragotin.codeberg.page/posts/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Kraft 2.0 Announcement</title>
      <link>https://dragotin.codeberg.page/posts/kraft-2.0/</link>
      <pubDate>Tue, 06 Jan 2026 11:14:09 +0100</pubDate>
      <guid>https://dragotin.codeberg.page/posts/kraft-2.0/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;Kraft 2.0 logo interpretation&#34; loading=&#34;lazy&#34; src=&#34;https://dragotin.codeberg.page/posts/kraft-2.0/images/kraft20_gem_arm_trans.png#floatleft&#34;&gt;With the start of the new year, I am very happy to announce the release of version &lt;a href=&#34;https://volle-kraft-voraus.de/en/kraft20/&#34;&gt;Kraft 2.0.0&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://volle-kraft-voraus.de/en/&#34;&gt;Kraft&lt;/a&gt; provides effective invoicing and document management for small businesses on Linux. Check the &lt;a href=&#34;https://volle-kraft-voraus.de/en/features/&#34;&gt;feature list&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This new version is a big step ahead for the project. It does not only deliver the outstanding
ports to &lt;a href=&#34;https://https://www.qt.io/development/desktop-app-development&#34;&gt;Qt6&lt;/a&gt; and &lt;a href=&#34;https://develop.kde.org/products/frameworks/&#34;&gt;KDE Frameworks 6&lt;/a&gt; and tons of modernizations and cleanups, but for the first time, it also does some significant changes in the underlying architecture and drops outdated technology.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><img alt="Kraft 2.0 logo interpretation" loading="lazy" src="/posts/kraft-2.0/images/kraft20_gem_arm_trans.png#floatleft">With the start of the new year, I am very happy to announce the release of version <a href="https://volle-kraft-voraus.de/en/kraft20/">Kraft 2.0.0</a>.</p>
<p><a href="https://volle-kraft-voraus.de/en/">Kraft</a> provides effective invoicing and document management for small businesses on Linux. Check the <a href="https://volle-kraft-voraus.de/en/features/">feature list</a>.</p>
<p>This new version is a big step ahead for the project. It does not only deliver the outstanding
ports to <a href="https://https://www.qt.io/development/desktop-app-development">Qt6</a> and <a href="https://develop.kde.org/products/frameworks/">KDE Frameworks 6</a> and tons of modernizations and cleanups, but for the first time, it also does some significant changes in the underlying architecture and drops outdated technology.</p>
<p>Kraft now stores documents not longer in a relational database, but as XML documents in the filesystem.
While separate files are more natural for documents anyway, this is paving the way to let Kraft integrate
with private cloud infrastructures like <a href="https://opencloud.eu">OpenCloud</a> or Nextcloud via sync. That is not only for backup- and web-app-purposes, but also for synced data that enables to run Kraft as distributed system. An example is if office staff works from different home offices. Expect this and related usecases to be supported in the near future of Kraft.</p>
<p>But there are more features: For example, the document lifecycle was changed to be more compliant: Documents remain in a draft status now until they get finalized, when they get their final document number. From that point on, they can not longer be altered.</p>
<p>There is too much on the long <a href="https://raw.githubusercontent.com/dragotin/kraft/refs/heads/master/Changes.txt">Changes-List</a> to mention here.</p>
<p>However, what is important is that after more than 20 years of developing and maintaining this app, I continue to be motivated to work on this bit. It is not a big project, but I think it is important that we have this kind of &ldquo;productivity&rdquo;-applications available for Linux to make it attractive for people to switch to Linux.</p>
<p>Around Kraft, a small but beautiful community has built up. I like to thank everybody who contributed in any way to Kraft over the years. It is big fun to work with you all!</p>
<p>If you are interested, please get in <a href="https://volle-kraft-voraus.de/en/contact/">touch</a>.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Kraft Version 1.2.2</title>
      <link>https://dragotin.codeberg.page/posts/kraft_122/kraft_122/</link>
      <pubDate>Tue, 01 Oct 2024 21:35:04 +0200</pubDate>
      <guid>https://dragotin.codeberg.page/posts/kraft_122/kraft_122/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://volle-kraft-voraus.de&#34;&gt;Kraft&lt;/a&gt; (&lt;a href=&#34;https://github.com/dragotin/kraft&#34;&gt;Github&lt;/a&gt;)
is the desktop app making it easy to create offers and invoices
quickly and beautifully in small companies. It is targetted to the free desktop and runs on Linux.&lt;/p&gt;
&lt;p&gt;This is the release announcement of the new Kraft &lt;a href=&#34;https://volle-kraft-voraus.de/Main/Releases&#34;&gt;version 1.2.2&lt;/a&gt;. This is a small service release
that fixes a few bugs and CI issues.&lt;/p&gt;
&lt;p&gt;Right after this release, the branch with significant changes for Kraft 2.0 will be merged to master.
These changes will make Kraft ready for sharing documents across private file clouds and with that enable use cases for distributed use via internet, along with other significant feature updates.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><a href="https://volle-kraft-voraus.de">Kraft</a> (<a href="https://github.com/dragotin/kraft">Github</a>)
is the desktop app making it easy to create offers and invoices
quickly and beautifully in small companies. It is targetted to the free desktop and runs on Linux.</p>
<p>This is the release announcement of the new Kraft <a href="https://volle-kraft-voraus.de/Main/Releases">version 1.2.2</a>. This is a small service release
that fixes a few bugs and CI issues.</p>
<p>Right after this release, the branch with significant changes for Kraft 2.0 will be merged to master.
These changes will make Kraft ready for sharing documents across private file clouds and with that enable use cases for distributed use via internet, along with other significant feature updates.</p>
<p>Details about the next big release with version number 2.0 can be read on the <a href="https://github.com/dragotin/kraft/discussions/197">Github Discussion</a> page.</p>
<p>Any feedback and <a href="https://volle-kraft-voraus.de/Main/Contribution">contribution</a> is highly appreciated.</p>
]]></content:encoded>
    </item>
    <item>
      <title>XRechnung Viewer Release 1.0</title>
      <link>https://dragotin.codeberg.page/posts/xrv-release-1-0/</link>
      <pubDate>Sun, 26 May 2024 15:48:12 +0100</pubDate>
      <guid>https://dragotin.codeberg.page/posts/xrv-release-1-0/</guid>
      <description>A Viewer for e-invoice documents in the XRechnung format</description>
      <content:encoded><![CDATA[<p>Some time  ago I quickly wrote a little utility to render XRechnung documents on the free desktop, called XRView. This is the initial <a href="https://dragotin.codeberg.page/posts/xrview/">Bogpost</a>. It was a very fundamental Qt Widget app that shows e-invoice docs that come in the XRechnung XML format, in a human readable view.</p>
<p>It was never properly released, so recently I decided to wrap it up and finally cut a first release which people can find <a href="https://codeberg.org/openKMU/xrechnung/releases/tag/v1.0">on the release page on Codeberg</a>.</p>
<p>Technically it uses the <a href="https://projekte.kosit.org/xrechnung/xrechnung-visualization/">XSLT stylesheets</a> provided by <a href="https://www.xoev.de/">Kosit</a> and calls an external java process on the local machine to run that through a specific <a href="https://github.com/Saxonica/Saxon-HE">Saxon</a> processor. For that, XRView requires a java runtime installed.</p>
<p>Since the setup of these dependencies is a bit cumbersome, the new release 1.0 does that for users. It downloads the stylesheets and also the saxon processor runtime from their upstream repositories and stores them on the local machine for future use. Of course it is strongly recommended to double check the downloaded resources for their validity and integrity and <em>not to run</em> software that some other code downloaded.</p>
<p>More new features in this first release are:</p>
<ul>
<li>internationalization, first available language is German</li>
<li>a rudimentary application menu with about dialog and such</li>
<li>the setup routine as described above</li>
</ul>
<p>Note that this is the first release of the software. Yet, I think it is useful, and a interesting starting point for further activities in this area. As XRechnung will become a mandatory standard for all companies in Germany (at least) I think it is very important to have a free software alternative. There are already many commercial offerings.</p>
<p>However, I am not feeling to develop and maintain this as an &ldquo;one man show&rdquo; forever. Being kind of frustrated about the way how free software is often consumed nowadays, I will happily continue to contribute to it if there is more interest than &ldquo;gimme for free&rdquo; by other people or organizations.</p>
<p>Let&rsquo;s see if this is heading somewhere :-)</p>
]]></content:encoded>
    </item>
    <item>
      <title>Setup ownCloud Infinite Scale Real Quick</title>
      <link>https://dragotin.codeberg.page/posts/quickocis/</link>
      <pubDate>Wed, 27 Dec 2023 21:06:12 +0100</pubDate>
      <guid>https://dragotin.codeberg.page/posts/quickocis/</guid>
      <description>Test Infinite Scale on x86-Linux, Raspberry and Mac in no time.</description>
      <content:encoded><![CDATA[<p>The <a href="https://owncloud.com">ownCloud</a> product <a href="https://owncloud.com/infinite-scale-4-0">Infinite Scale</a> is going to be released in version five soon. The latest stable version is <a href="https://github.com/owncloud/ocis/releases/tag/v4.0.5">4.0.5</a> and I am sure everybody checked it out already and is blown away by it&rsquo;s performance, elegance and ease of use.</p>
<p>No, not yet?</p>
<p>Ok, well, in that case, here comes rescue: With the little script described here, it becomes really easy to start Infinite Scale to check it out on your computer. It makes it really easy and quick for you, without Linux super admin powers whatsoever.</p>
<p>To use it, you just need to open a terminal on your machine and cd into a directory somewhere in your home where you can afford to host some bytes.</p>
<p>Without further preparation, you type the following command line (NOT as user root please):</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">curl -L https://owncloud.com/runocis.sh <span class="p">|</span> /bin/bash
</span></span></code></pre></div><p>What it does is that it automatically pulls the latest stable version of Infinite Scale from the <a href="https://download.owncloud.com/">official download server</a> of ownCloud onto your computer. For that, it creates a configuration and a start script, and starts the server. The script detects the platform on which your&rsquo;re running to download the right binary version. It also looks up the hostname and configures the installation for that name.</p>
<p>Once the server was started Infinite Scale&rsquo;s web client can be accessed by pointing a browser to the URL <code>https://your-hostname:9200/</code>. Since this is an installation for testing purposes, it does not have a proper certificate configured. That is why your browser is complaining about the cert, and you have to calm it. And indeed, that is one of the reasons why you&rsquo;re not supposed to use this sneak peak in production or even exposed to the internet.</p>
<p>For the nerds, the script does not really do magic, but just curls the golang single binary of Infinite Scale down to the machine into a sandbox directory, chmod it to be executable and create a working config and a data dir. All happens with the priviledges of the logged in user, no sudo or root involved. You&rsquo;re encouraged to double check the install script using for example the command <code>curl -L https://owncloud.com/runocis.sh | less</code> - of course you never should trust anybody running scripts from the internet on your machine.</p>
<p>If the server is stopped by pressing Ctrl-C, it later can be started again by the script <code>runocis.sh</code> that was kindly left behind in the sandbox as well.</p>
<p>The installer was tested on these three platforms: 64 bit AMD/Intel CPU based Linux machines, 64 bit Raspberry Pi with Raspbian OS and MacOSX. The flavour of Linux should not make a difference.</p>
<p>If you encounter a problem with the script or if you have suggestions to improve, please find it in my <a href="https://github.com/dragotin/thisnthat/tree/master/scripts">this&rsquo;n that</a> section on Github. I am happy to receive issue reports or pull requests.</p>
<p>For further information and setups suitable for production please refer to <a href="https://doc.owncloud.com/ocis/next/">the Infinite Scale documentation</a>.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Open VFS Framework for the free Desktop</title>
      <link>https://dragotin.codeberg.page/posts/openvfs/</link>
      <pubDate>Fri, 29 Sep 2023 12:46:57 +0200</pubDate>
      <guid>https://dragotin.codeberg.page/posts/openvfs/</guid>
      <description>&lt;p&gt;A few days ago Volker Krause posted &lt;a href=&#34;https://www.volkerkrause.eu/2023/09/23/nextcloud-conference-2023.html&#34;&gt;this blog&lt;/a&gt; about the &lt;a href=&#34;https://nextcloud.com/&#34;&gt;Nextcloud&lt;/a&gt; conference - a very interesting read.&lt;/p&gt;
&lt;p&gt;One of the topics is the VFS (Virtual Filesystem-) API for the Linux desktop. Indeed that is a topic for us at &lt;a href=&#34;https://www.owncloud.com&#34;&gt;ownCloud&lt;/a&gt; as well, and I like to share our perspective on it, discussing it in the scope of the free desktop.&lt;/p&gt;
&lt;p&gt;The topic is very important, as “syncing” of data from and to cloud storages has changed over time. From having all files mirrored from client to server and vice versa, it has now shifted to keep all files in the cloud, and have them as so called placeholders on the desktop. That means that most files on the client appear with size zero to save space, but the complete filesystem structure is available.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>A few days ago Volker Krause posted <a href="https://www.volkerkrause.eu/2023/09/23/nextcloud-conference-2023.html">this blog</a> about the <a href="https://nextcloud.com/">Nextcloud</a> conference - a very interesting read.</p>
<p>One of the topics is the VFS (Virtual Filesystem-) API for the Linux desktop. Indeed that is a topic for us at <a href="https://www.owncloud.com">ownCloud</a> as well, and I like to share our perspective on it, discussing it in the scope of the free desktop.</p>
<p>The topic is very important, as “syncing” of data from and to cloud storages has changed over time. From having all files mirrored from client to server and vice versa, it has now shifted to keep all files in the cloud, and have them as so called placeholders on the desktop. That means that most files on the client appear with size zero to save space, but the complete filesystem structure is available.</p>
<p>If a user starts to interact with such a dehydrated file, the content is of the file is downloaded transparently utilizing the cloud system client, for example ownClouds desktop client. The same happens when an application accesses such a file. As a result, the placeholders look and behave like the normal filesystem we are used to.</p>
<p>On Windows and on MacOSX, the problem is kind of solved. Both have added APIs to their OS that can be used to implement the access of data on the cloud.</p>
<p>On Linux, we do not have this kind of API yet. That means that it is close to impossible to implement this user experience. Volker already said that desktop environment specific solutions probably do not scale, which I agree with.</p>
<p>At ownCloud we have looked into the implementation of a specific <a href="https://en.wikipedia.org/wiki/Filesystem_in_Userspace">FUSE file system</a>. That should certainly be possible, and is probably a part of the solution, but is considerable effort because of the asynchronous nature of the topic. Given that the market share of Linux desktop systems is pretty small it is not attractive for companies to invest a lot into a Linux only system. Here the power of community could make a difference again.</p>
<p>It would be best if we as open source community would come up with a shared solution as a free desktop standard, that might be oriented on one of the existing APIs, maybe the MacOSX File Provider API: A library and little framework that the linux desktop environments can work with abstracting the VFS.</p>
<p>While collaborating on that, all data clouds could implement the bindings to their storage. With that, the extra implementation efforts for the Linux solution hopefully wouldnt be dramatic any more.</p>
<p>Let’s call this system openVFS as a work title. How can we evolve it? I’d like to invite all interested parties to discuss in <a href="https://github.com/dragotin/openvfs">this temporary Github repo</a> to collect ideas and opinions. There is also a little <strong>experimental</strong> code.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Kraft Version 1.1</title>
      <link>https://dragotin.codeberg.page/posts/kraft1.1/</link>
      <pubDate>Sat, 16 Sep 2023 22:48:43 +0200</pubDate>
      <guid>https://dragotin.codeberg.page/posts/kraft1.1/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://volle-kraft-voraus.de&#34;&gt;Kraft&lt;/a&gt; (&lt;a href=&#34;https://github.com/dragotin/kraft&#34;&gt;Github&lt;/a&gt;)
is a desktop utility making it easy to create offers and invoices
quickly and beautifully in small companies.&lt;/p&gt;
&lt;p&gt;Today we are releasing Kraft &lt;a href=&#34;https://volle-kraft-voraus.de/Main/Releases&#34;&gt;Version 1.1&lt;/a&gt;
with significant improvements for users and the Krafts integration with latest
software such as cmake and KDE.&lt;/p&gt;
&lt;p&gt;It received updated dutch translations in UI and also for the manual.
The application icon was fixed, and some cmake related fixes were done
that make Kraft working with different versions of Akonadi that are
available on different distributions.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><a href="https://volle-kraft-voraus.de">Kraft</a> (<a href="https://github.com/dragotin/kraft">Github</a>)
is a desktop utility making it easy to create offers and invoices
quickly and beautifully in small companies.</p>
<p>Today we are releasing Kraft <a href="https://volle-kraft-voraus.de/Main/Releases">Version 1.1</a>
with significant improvements for users and the Krafts integration with latest
software such as cmake and KDE.</p>
<p>It received updated dutch translations in UI and also for the manual.
The application icon was fixed, and some cmake related fixes were done
that make Kraft working with different versions of Akonadi that are
available on different distributions.</p>
<h2 id="macros">Macros</h2>
<p>For users, two significant improvements are included: The header- and
footer texts of the documents now may contain macros that support automatic
computing of values such as dates that depend on the document date. With
that, it is for example easy to have for example a payment date printed
out on the document, that is ten days later than the document date.</p>
<p>There are even more interesting macros, stay tuned for a separate post
about this feature.</p>
<h2 id="insert-templates-button">Insert Templates Button</h2>
<p>The second new feature is a new button that allows to insert templates
for the header- or footer text at the cursor position. Before it was
only possible to replace the entire text with a template. This will
give users way more flexibility how to structure template texts.</p>
<p>In parallel to these improvements, work is also going on in a branch
for Kraft 2.0 which will enable more collaborative functions for Kraft.</p>
]]></content:encoded>
    </item>
    <item>
      <title>XRechnung Viewer</title>
      <link>https://dragotin.codeberg.page/posts/xrview/</link>
      <pubDate>Sun, 29 Jan 2023 21:20:30 +0100</pubDate>
      <guid>https://dragotin.codeberg.page/posts/xrview/</guid>
      <description>&lt;p&gt;The XRechnung format is a E-Government standard for electronic invoicing. At some point it will be mandatory for every company dealing with German governmental partners to send the invoices in this XML format.&lt;/p&gt;
&lt;p&gt;Many commercial vendors have already caught up and provide ways to generate XRechnung formatted documents with their software. However, to my knowledge, the availability of open source end user software is very limited. Since the standard itself is at least very open and transparently documented, so I think it is worthwhile to also support it with free software on the desktop.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>The XRechnung format is a E-Government standard for electronic invoicing. At some point it will be mandatory for every company dealing with German governmental partners to send the invoices in this XML format.</p>
<p>Many commercial vendors have already caught up and provide ways to generate XRechnung formatted documents with their software. However, to my knowledge, the availability of open source end user software is very limited. Since the standard itself is at least very open and transparently documented, so I think it is worthwhile to also support it with free software on the desktop.</p>
<p><a href="https://volle-kraft-voraus.de">Kraft</a>, the desktop software for invoicing and efficient office work in the small enterprise, supports export of XRechnung documents since a while.</p>
<p>Over the weekend I created a <a href="https://github.com/dragotin/xrechnung">new little project</a> that adds a <strong>viewer for XRechnung documents</strong> called <code>xrview</code>.</p>
<p><img alt="XRechnung Invoices Viewer" loading="lazy" src="/posts/xrview/images/screenshot1.png"></p>
<p>A german city was looking for something to evaluate processes in a Linux- and KDE based productivity work environment.</p>
<p>Technically it is not very sophisticated: It renders the provided XML file using XSL styles officially provided by the <a href="https://www.xoev.de/">Koordinierungsstelle für IT-Standards</a> in a two step process to HTML, which is displayed in a web view. Some values of interest are extracted from the XML and displayed in a detail pane on the left side.</p>
<p>This is just a POC and has to be continued, but the time was good to kickstart <a href="https://github.com/dragotin/xrechnung">this project</a>.</p>
<p>Maybe anybody is interested to <a href="https://github.com/dragotin/xrechnung/pulls">create a PR</a> to help to improve digitalization in Germany?</p>
]]></content:encoded>
    </item>
    <item>
      <title>Kraft on Windows</title>
      <link>https://dragotin.codeberg.page/posts/kraftwsl/</link>
      <pubDate>Mon, 02 Jan 2023 10:13:19 +0100</pubDate>
      <guid>https://dragotin.codeberg.page/posts/kraftwsl/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://volle-kraft-voraus.de&#34;&gt;Kraft&lt;/a&gt;, which was released as &lt;a href=&#34;https://dragotin.codeberg.page/posts/kraft1.0/&#34;&gt;version 1.0&lt;/a&gt; after long time of active development, is targetted to the Linux desktop. My firm conviction is that the Linux desktop is very suitable for the target group of Kraft: In the small office of craftsmen for example, a Linux desktop is a great work horse which is stable, very well adoptable and has a great amount of applications that are stable and maintained.&lt;/p&gt;
&lt;p&gt;These are only the most obvious points why Kraft is so far only available for Linux.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><a href="https://volle-kraft-voraus.de">Kraft</a>, which was released as <a href="https://dragotin.codeberg.page/posts/kraft1.0/">version 1.0</a> after long time of active development, is targetted to the Linux desktop. My firm conviction is that the Linux desktop is very suitable for the target group of Kraft: In the small office of craftsmen for example, a Linux desktop is a great work horse which is stable, very well adoptable and has a great amount of applications that are stable and maintained.</p>
<p>These are only the most obvious points why Kraft is so far only available for Linux.</p>
<p>But often enough switching to Linux is another hurdle that users have to go, coming from a more mainstream world. So it is great to learn that Kraft, as many UI applications, can be run unter the Windows Subsystem for Linux (WSL) on Windows systems quite flawlessly.</p>
<p><img alt="Kraft running on Windows Desktop" loading="lazy" src="/posts/kraftwsl/images/win_wsl.png">It was tried with Windows 11 Home and the Kraft AppImage of 1.0.</p>
<p>The steps to run Kraft in WSL:</p>
<ul>
<li>Make WSL running on the Windows installation</li>
<li>Install a X-server on the Windows machine</li>
<li>Create a Debian or Ubuntu Linux subsystem</li>
<li>Install a few extra packages into the Linux installation</li>
<li>Download and run the <a href="https://github.com/dragotin/kraft/releases/download/v1.0/Kraft-v1.0-x86_64.AppImage">Kraft AppImage 1.0</a></li>
</ul>
<p>A more detailed howto and discussion can be found in the <a href="https://easyct.de/forum/viewthread.php?thread_id=4201&amp;pid=14571#post_14571">easy cash &amp; tax forum</a>. Thanks Thomas for bringing up the topic and providing the Howto!</p>
]]></content:encoded>
    </item>
    <item>
      <title>Kraft Version 1.0</title>
      <link>https://dragotin.codeberg.page/posts/kraft1.0/</link>
      <pubDate>Tue, 27 Dec 2022 21:07:23 +0100</pubDate>
      <guid>https://dragotin.codeberg.page/posts/kraft1.0/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;Kraft 1.0&#34; loading=&#34;lazy&#34; src=&#34;https://dragotin.codeberg.page/posts/kraft1.0/images/kraft_1.0.png#floatright&#34;&gt;It is a pleasure to announce that &lt;strong&gt;&lt;a href=&#34;https://volle-kraft-voraus.de/Main/Kraft&#34;&gt;Kraft&lt;/a&gt; Version 1.0&lt;/strong&gt; was released last week.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;What is Kraft?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/dragotin/kraft&#34;&gt;Kraft&lt;/a&gt; is free software to create office documents like offers and invoices in an efficient way. It runs on the Linux desktop and suits small businesses of all kinds.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;After countless releases with version numbers 0.x, Kraft finally goes with version number 1.0 with this release. It is in production at several companies since many years, and with this release it got many more improvements that make it a really mature product.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><img alt="Kraft 1.0" loading="lazy" src="/posts/kraft1.0/images/kraft_1.0.png#floatright">It is a pleasure to announce that <strong><a href="https://volle-kraft-voraus.de/Main/Kraft">Kraft</a> Version 1.0</strong> was released last week.</p>
<blockquote>
<p><strong>What is Kraft?</strong></p>
<p><a href="https://github.com/dragotin/kraft">Kraft</a> is free software to create office documents like offers and invoices in an efficient way. It runs on the Linux desktop and suits small businesses of all kinds.</p>
</blockquote>
<p>After countless releases with version numbers 0.x, Kraft finally goes with version number 1.0 with this release. It is in production at several companies since many years, and with this release it got many more improvements that make it a really mature product.</p>
<h2 id="highlights">Highlights</h2>
<p>Lets take a look on the highlights of of <a href="https://volle-kraft-voraus.de/Main/Releases">version 1.0</a>.</p>
<h3 id="appimage-support">AppImage Support</h3>
<p>Installing software properly is still a challenge for many users. <a href="https://appimage.org/">AppImage</a> comes to the rescue there: Single file, easy to download and start with all dependencies included makes it easy for users. For the creator, it is just one-fits-all, which makes it easy to maintain.</p>
<p>The new Kraft AppImage was carefully reworked and has now really all dependencies included, has a complete own icon set and was tested thoroughly. It is ready for production now.</p>
<h3 id="giro-code">Giro Code</h3>
<p>Kraft now can print the <a href="https://en.wikipedia.org/wiki/EPC_QR_code">EPC QR Code</a> on invoices easily. Users just have to configure the bank account data to use, and Kraft creates the QR code automatically to be included in the documentation template.</p>
<h3 id="user-manual">User Manual</h3>
<p>The <a href="https://dragotin.github.io/krafthandbook/">Kraft user manual</a> got great improvements again. It comes with even more and improved text, with much more screenshots and improved translations.</p>
<p>This is a community contributions that is so important for Kraft.</p>
<h3 id="many-other-improvements">Many other Improvements</h3>
<p>There were many other improvements: New functionality such as the new day counter for the number cycle templates (allows to have a counter in the document number that resets to 1 every day) or new modes for the <a href="https://dragotin.github.io/krafthandbook/manuals/kraft-en.html#_first_use_and_basic_configuration">watermark functionality</a> to complete the generated PDF documents plus much more details (See <a href="https://volle-kraft-voraus.de/Main/Releases">Changelog</a>).</p>
<h3 id="how-it-continues">How it continues</h3>
<p>Kraft is up and running - and maintained. The plan is to keep the 1.0 as a kind of LTS in a stable branch, that only gets urgent fixes for stability.</p>
<p>For master, I am planning to do a couple of more intrusive changes that will take a bit longer.</p>
<p>See the <a href="https://github.com/dragotin/kraft/discussions/197">roadmap discussion here</a>.</p>
<h3 id="curious">Curious?</h3>
<p>I hope you got a bit curious now about Kraft. Feel free to check it out using the <a href="https://volle-kraft-voraus.de/Main/AppImage">AppImage</a>.</p>
<p>If you find it an useful addition to the Linux application ecosystem that enables more users for Linux we&rsquo;d very much appreciate your <a href="https://volle-kraft-voraus.de/Main/Contribution">contribution</a>!</p>
]]></content:encoded>
    </item>
    <item>
      <title>My New Blog</title>
      <link>https://dragotin.codeberg.page/posts/mynewblog/</link>
      <pubDate>Sun, 13 Nov 2022 21:14:58 +0100</pubDate>
      <guid>https://dragotin.codeberg.page/posts/mynewblog/</guid>
      <description>&lt;p&gt;Welcome to my new blog.&lt;/p&gt;
&lt;p&gt;This is the successor of my previous blog on &lt;a href=&#34;https://dragotin.wordpress.com&#34;&gt;https://dragotin.wordpress.com&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;After paying wordpress quite some money to get an advertise free blog I decided to get rid of that and have my own hosted blog where I do not have to pay for &lt;em&gt;not&lt;/em&gt; having battle ships or girls underneath my articles. Yes, that is true: Readers sent me screenshots with this kind of images.&lt;/p&gt;
&lt;p&gt;So I am starting this journey here with Hugo. Let&amp;rsquo;s see how that turns out :-)&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Welcome to my new blog.</p>
<p>This is the successor of my previous blog on <a href="https://dragotin.wordpress.com">https://dragotin.wordpress.com</a>.</p>
<p>After paying wordpress quite some money to get an advertise free blog I decided to get rid of that and have my own hosted blog where I do not have to pay for <em>not</em> having battle ships or girls underneath my articles. Yes, that is true: Readers sent me screenshots with this kind of images.</p>
<p>So I am starting this journey here with Hugo. Let&rsquo;s see how that turns out :-)</p>
]]></content:encoded>
    </item>
    <item>
      <title>Kraft Version 0.98</title>
      <link>https://dragotin.codeberg.page/posts/kraft-version-0-98/</link>
      <pubDate>Mon, 23 May 2022 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/kraft-version-0-98/</guid>
      <description>&lt;p&gt;We are happy to announce the new &lt;a href=&#34;https://volle-kraft-voraus.de&#34;&gt;Kraft&lt;/a&gt; &lt;a href=&#34;https://volle-kraft-voraus.de/Main/Releases&#34;&gt;version 0.98&lt;/a&gt; that is available for &lt;a href=&#34;https://volle-kraft-voraus.de/Main/Download&#34;&gt;download&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Kraft is software for the Linux desktop to handle quotes and invoices in the small business.&lt;/p&gt;
&lt;p&gt;This is a version packed with bugfixes and also new features. The most important fixes were in the area of the catalog handling: Based on bug reports from the community the catalog window was completely reworked. Drag and drop of items in the catalog, the sorting and reordering of items are now working properly and as planned.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>We are happy to announce the new <a href="https://volle-kraft-voraus.de">Kraft</a> <a href="https://volle-kraft-voraus.de/Main/Releases">version 0.98</a> that is available for <a href="https://volle-kraft-voraus.de/Main/Download">download</a>.</p>
<p>Kraft is software for the Linux desktop to handle quotes and invoices in the small business.</p>
<p>This is a version packed with bugfixes and also new features. The most important fixes were in the area of the catalog handling: Based on bug reports from the community the catalog window was completely reworked. Drag and drop of items in the catalog, the sorting and reordering of items are now working properly and as planned.</p>
<p>Another big addition is the support of <img loading="lazy" src="/posts/kraft-version-0-98/images/xrechnung.png">. XRechnung is an E-invoicing format more and more mandatory in the governmental area in Germany. We are very proud that Kraft is the first open source office tool that supports that standard in a user friendly way. All invoices can now also exported in the XRechnung-XML format.</p>
<p>Beside these two big improvements, there are lots of others. For example, the user manual was further improved and is available also in Dutch. A lot of other smaller but non the less important improvements and fixes make version 0.98 a valueable release.</p>
<p>We wish a lot of fun with this new improved version of Kraft!</p>
]]></content:encoded>
    </item>
    <item>
      <title>PDF Quirk Version Update</title>
      <link>https://dragotin.codeberg.page/posts/pdf-quirk-version-update/</link>
      <pubDate>Thu, 30 Dec 2021 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/pdf-quirk-version-update/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://dragotin.files.wordpress.com/2020/05/logo2_200x200.png&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dragotin.files.wordpress.com/2020/05/logo2_200x200.png?w=163&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The good thing about this quiet holidays is that there is time to work on projects. I had a few nice changes of &lt;a href=&#34;https://github.com/dragotin/pdfquirk&#34;&gt;PDF Quirk&lt;/a&gt; laying around, and now finalized them to a new version. Please welcome PDF Quirk version 0.95!&lt;/p&gt;
&lt;h2 id=&#34;what-is-pdf-quirk&#34;&gt;What is PDF Quirk?&lt;/h2&gt;
&lt;p&gt;PDF Quirk is a little desktop utility to create PDF files from images, targeted to non nerdy desktop users.&lt;/p&gt;
&lt;p&gt;Sending PDFs is (still) often a requirement in offices where people are asked to transfer PDF files via email, or better by pushing them through their private &lt;a href=&#34;https://www.owncloud.com&#34;&gt;ownCloud&lt;/a&gt;.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><a href="https://dragotin.files.wordpress.com/2020/05/logo2_200x200.png"><img loading="lazy" src="https://dragotin.files.wordpress.com/2020/05/logo2_200x200.png?w=163"></a></p>
<p>The good thing about this quiet holidays is that there is time to work on projects. I had a few nice changes of <a href="https://github.com/dragotin/pdfquirk">PDF Quirk</a> laying around, and now finalized them to a new version. Please welcome PDF Quirk version 0.95!</p>
<h2 id="what-is-pdf-quirk">What is PDF Quirk?</h2>
<p>PDF Quirk is a little desktop utility to create PDF files from images, targeted to non nerdy desktop users.</p>
<p>Sending PDFs is (still) often a requirement in offices where people are asked to transfer PDF files via email, or better by pushing them through their private <a href="https://www.owncloud.com">ownCloud</a>.</p>
<p>The source images can either be loaded from file, or directly scanned with an hardware scanner. For that, PDF Quirk utilizes the tool <code>scanimage</code> from the <a href="http://www.sane-project.org/">SANE Projekt</a>, to avoid reinventing the wheel. Configured once, that works like a charm.</p>
<p>Having scanned or picked the source images, they can be deskewed, turned and rearranged, and finally converted to a good quality PDF file with reasonable file size.</p>
<h2 id="new-version-095">New Version 0.95</h2>
<p>The new version brings a few features and some fixes:</p>
<ul>
<li>Images can deskewed now</li>
<li>Basic PDF options like margin, paper size and orientation can be set</li>
<li>The UI got a little cleanup</li>
<li>Translations were added, first new language is German</li>
<li>Dependencies were reduced, new Qt based PDF generator was implemented</li>
<li>Builds with Qt5 and Qt6</li>
</ul>
<h2 id="interested">Interested?</h2>
<p>Check out <a href="https://dragotin.github.io/quirksite/">PDF Quirks Website</a> for more information.</p>
<p>PDF Quirk is free software. Please contribute through the <a href="https://github.com/dragotin/pdfquirk">Github repository</a>.</p>
]]></content:encoded>
    </item>
    <item>
      <title>ownClouds Virtual Files on the Linux Desktop</title>
      <link>https://dragotin.codeberg.page/posts/ownclouds-virtual-files-on-the-linux-desktop/</link>
      <pubDate>Mon, 28 Dec 2020 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/ownclouds-virtual-files-on-the-linux-desktop/</guid>
      <description>&lt;p&gt;it could already be read somewhere that 2021 will be the year of Linux on the desktop :-D&lt;/p&gt;
&lt;p&gt;Fine with me. Just to support that, I did a little hackery over XMas to improve the support for ownClouds virtual file system on the Linux Desktop.&lt;/p&gt;
&lt;h3 id=&#34;what-are-virtual-files&#34;&gt;What are Virtual Files?&lt;/h3&gt;
&lt;p&gt;In professional usecases, users often have a huge amount of data stored in &lt;a href=&#34;https://owncloud.com&#34;&gt;ownCloud&lt;/a&gt;. Syncing these completely to the desktop computer or laptop would be too much and costly in bandwidth and harddisk space. That is why most mature file sync solutions came up with the concept of virtual files. That means that users have the full structure with directories and files mirrored to their local machines, but have placeholder of the real files in the local file manager.&lt;br&gt;
The files, however, are not on the disk. They get downloaded on demand.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>it could already be read somewhere that 2021 will be the year of Linux on the desktop :-D</p>
<p>Fine with me. Just to support that, I did a little hackery over XMas to improve the support for ownClouds virtual file system on the Linux Desktop.</p>
<h3 id="what-are-virtual-files">What are Virtual Files?</h3>
<p>In professional usecases, users often have a huge amount of data stored in <a href="https://owncloud.com">ownCloud</a>. Syncing these completely to the desktop computer or laptop would be too much and costly in bandwidth and harddisk space. That is why most mature file sync solutions came up with the concept of virtual files. That means that users have the full structure with directories and files mirrored to their local machines, but have placeholder of the real files in the local file manager.<br>
The files, however, are not on the disk. They get downloaded on demand.</p>
<p>That way, users see the full set of data virtually, but save time and space of files they never will need on the local system.</p>
<h3 id="the-owncloud-experience">The ownCloud Experience</h3>
<p><a href="https://owncloud.com/virtual-file-system/?gclid=EAIaIQobChMIh4vEoqfw7QIVnAUGAB0zHwkTEAAYASAAEgKJYvD_BwE">ownCloud has innovated</a> on that topic a while ago, and meanwhile support virtual files mainly on Windows, because there is an elaborated system API to work with placeholder files. As we do not have this kind of API on Linux desktops yet, ownCloud desktop developers implemented the following solution for Linux: The virtual files are 1 byte sized files with the name of the original file, plus a suffix &ldquo;.owncloud&rdquo; to indicate that they are virtual.</p>
<p>That works, yet has one downside: Most file managers do not display these placeholder files nicely, because they loose the MIME type information. Also, downloading and also freeing up the space of downloaded files is not integrated. To summarize, there is a building block missing to make that useful on Linux.</p>
<h3 id="elokab-files-manager-with-owncloud">Elokab-files-manager with ownCloud</h3>
<p>I was wondering if it wasn&rsquo;t possible to change an existing file manager to support the idea of virtual files. To start trying I found the <a href="https://github.com/zakariakov/elokab-files-manager">Elokab-files-manager</a> which is a very compact, yet feature rich file manager built on Qt. It is built with very few other dependencies. Perfect to start playing around with.</p>
<p>In <a href="https://github.com/zakariakov/elokab-files-manager/compare/master%E2%80%A6dragotin:master">my Github fork</a> you can see the patches I came up with to make Elokab-fm understand ownCloud virtual files.</p>
<h3 id="new-functionality">New Functionality</h3>
<p>The screenshot shows the changes in the icon view of Elokab-fm.</p>
<p><a href="https://dragotin.files.wordpress.com/2020/12/ksnip_20201228-090721.png"><img alt="Screenshot Elokab-fm" loading="lazy" src="https://dragotin.files.wordpress.com/2020/12/ksnip_20201228-090721.png?w=872"></a></p>
<p>Screenshot of patched Elokab-files-manager to support ownCloud Virtual Files.</p>
<p>To make that possible, Elokab-fm now pulls some information from the ownCloud Sync Client config file and connects to the sync client via local socket to share some information. That means, that the sync client needs to run to make that work.</p>
<p>Directories that are synced with ownCloud now show an cloud overlay in the center (1).</p>
<p>The placeholder files (2) which are not present on the local hard drive indicate that by showing a little cloud icon bottom right. However, other than before, they are displayed with their correct name and mime-type, which makes this already much more useful.</p>
<p>Files, which are on the local disk as the image (3) show their thumbnail as usual.</p>
<p>In the side panel (4) there are a few details added: The blue box on the bottom indicates that the file manager is connected to the sync client. For the selected virtual file (2), it shows an button that downloads the file if clicked which would turn it into a non virtual, local file. There is also an entry in the context menu to achieve that.</p>
<h3 id="status">Status</h3>
<p>This is just a proof of concept and a little XMas fun project. There are bugs, and the implementation is not complete. And maybe <a href="https://github.com/jnweiger">Jürgen</a>&rsquo;s idea of a <a href="https://github.com/jnweiger/OCFFS">FUSE layer</a> to improve that is the better approach, but anyway. It just shows what is possible with virtual files also on Linux.</p>
<p>If you like that idea, please let us know or send a little PR if you like. We do not wanna fail providing our share on the year of the Linux Desktop, right? ;-)</p>
<p>Building it from <a href="https://github.com/dragotin/elokab-files-manager">my Github branch</a> should be fairly easy, as it only depends on Qt.</p>
<p>For openSUSE users, I will provide some test packages in <a href="https://build.opensuse.org/package/show/home:kfreitag/elokab-files-manager">my home project</a> on <a href="https://build.opensuse.org/">Open Build Service</a>.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Screensharing with MS Teams and KDE: Black Screen</title>
      <link>https://dragotin.codeberg.page/posts/screensharing-with-ms-teams-and-kde-black-screen/</link>
      <pubDate>Mon, 07 Sep 2020 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/screensharing-with-ms-teams-and-kde-black-screen/</guid>
      <description>&lt;p&gt;In the day job we use Microsoft Teams. The good news is that it is &lt;a href=&#34;https://www.techrepublic.com/article/how-to-install-microsoft-teams-on-linux/&#34;&gt;running on the Linux Desktop&lt;/a&gt;, and specifically &lt;a href=&#34;https://www.kde.org&#34;&gt;KDE&lt;/a&gt;. So far, so good, however, there was a problem with screensharing for me.&lt;/p&gt;
&lt;p&gt;Whenever I tried to share my KDE screen, the screen became black, surrounded with a red rectangle as indicator for the shared area. The people who I shared with also just saw the black area, and also the mouse pointer as me.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>In the day job we use Microsoft Teams. The good news is that it is <a href="https://www.techrepublic.com/article/how-to-install-microsoft-teams-on-linux/">running on the Linux Desktop</a>, and specifically <a href="https://www.kde.org">KDE</a>. So far, so good, however, there was a problem with screensharing for me.</p>
<p>Whenever I tried to share my KDE screen, the screen became black, surrounded with a red rectangle as indicator for the shared area. The people who I shared with also just saw the black area, and also the mouse pointer as me.</p>
<p>The problem is described <a href="https://docs.microsoft.com/en-us/answers/questions/42095/sharing-screen-not-working-anymore-bug.html?page=1&amp;pageSize=10&amp;sort=oldest">in a bugreport</a> and there are two ways of solving it:</p>
<ol>
<li>Enable compositing: The red indicator rectangle requires that the window manager supports compositing. KWin can of course <a href="https://userbase.kde.org/KWin">do that</a>, and with that enabled, sharing works fine including the red rectangle.</li>
<li>If compositing can or should not be used there is another workaround: As the <a href="https://docs.microsoft.com/en-us/answers/questions/42095/sharing-screen-not-working-anymore-bug.html?page=1&amp;pageSize=10&amp;sort=oldest">bug report</a> shows, renaming the file <code>/usr/share/teams/resources/app.asar.unpacked/node_modules/slimcore/bin/rect-overlay</code> so that it is not used by teams fixes it as well. Obviously you wont have the red rectangle with this solution.</li>
</ol>
<p>That said, it is of course preferable to use an open source alternative to Teams to help these evolve.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Kraft Version 0.95</title>
      <link>https://dragotin.codeberg.page/posts/kraft-version-0-95/</link>
      <pubDate>Fri, 28 Aug 2020 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/kraft-version-0-95/</guid>
      <description>&lt;p&gt;The authors are happy to announce the new release &lt;a href=&#34;https://volle-kraft-voraus.de/Main/Releases&#34;&gt;0.95&lt;/a&gt; of Kraft. &lt;a href=&#34;https://www.volle-kraft-voraus.de&#34;&gt;Kraft&lt;/a&gt; is free desktop software for managing office documents like quotes and invoices in the small enterprise for the Linux desktop.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;Kraft Logo&#34; loading=&#34;lazy&#34; src=&#34;https://dragotin.files.wordpress.com/2018/02/kraft-e1517665987954.png?w=200&#34;&gt;&lt;/p&gt;
&lt;p&gt;Kraft Version 0.95&lt;/p&gt;
&lt;p&gt;With version 0.95 we do a big step forward in the way of generating documents: Until now (more than fifteen years!) Kraft uses the ReportLab python library to create high quality PDF documents.&lt;/p&gt;
&lt;p&gt;While this has served us well, it has always been cumbersome to adopt the template for users needs. ReportLab uses a XML format as the template which has a bit of a steep learning curve and is not really easy with syntax.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>The authors are happy to announce the new release <a href="https://volle-kraft-voraus.de/Main/Releases">0.95</a> of Kraft. <a href="https://www.volle-kraft-voraus.de">Kraft</a> is free desktop software for managing office documents like quotes and invoices in the small enterprise for the Linux desktop.</p>
<p><img alt="Kraft Logo" loading="lazy" src="https://dragotin.files.wordpress.com/2018/02/kraft-e1517665987954.png?w=200"></p>
<p>Kraft Version 0.95</p>
<p>With version 0.95 we do a big step forward in the way of generating documents: Until now (more than fifteen years!) Kraft uses the ReportLab python library to create high quality PDF documents.</p>
<p>While this has served us well, it has always been cumbersome to adopt the template for users needs. ReportLab uses a XML format as the template which has a bit of a steep learning curve and is not really easy with syntax.</p>
<p>This changes now: From version 0.95, Kraft supports the cool project <a href="https://weasyprint.org">WeasyPrint</a>. The principle remains the same: The document is built of a text based template which defines the look of the output document. That gets filled with the document data and gets converted to a PDF document. But unlike ReportLab, Weasyprint is HTML based. Many people know a bit of HTML and thus will have an way easier time to adopt the template to personal needs.</p>
<p>Apart from the ease of use, it is much more simple to do modern report design with <a href="https://weasyprint.org">Weasyprint</a>, as it supports the wide range of CSS styling.</p>
<p>That is a great improvement, as adopting Krafts output to personal needs is much more intuitive now. For now, Kraft supports both rendering engines, but ReportLab based reports are deprecated now and support will end in future releases of Kraft.</p>
<p>Along with integration of Weasyprint the text templating library <a href="https://github.com/steveire/grantlee">Grantlee</a> was added, as it is the standard in the <a href="https://www.kde.org">KDE</a>/Qt world, well maintained and widely available. The ctemplate library which was used for that so far will also be deprecated.</p>
<p>The other great improvement in this release is that Kraft now has a user manual embedded which will give new users a guiding help. It will open in the browser once the user clicks on the menu entry in the help menu, also without internet connection. It was started by a community member and it will grow and improve over time.</p>
<p>As usual this new version also ships an amount of bug fixes and small improvements which can be found in the <a href="https://volle-kraft-voraus.de/Main/Changelog095">Changelog</a>.</p>
<p>We wish all users big fun with this remarkable new version of Kraft.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Open Search Foundation</title>
      <link>https://dragotin.codeberg.page/posts/open-search-foundation/</link>
      <pubDate>Sun, 14 Jun 2020 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/open-search-foundation/</guid>
      <description>&lt;p&gt;recently I learned about the &lt;a href=&#34;https://opensearchfoundation.org/en/open-search-foundation-home/&#34;&gt;Open Search Foundation&lt;/a&gt; in the public broadcast radio (&lt;a href=&#34;https://www.br.de/nachrichten/netzwelt/europaeische-wissenschaftler-wollen-google-monopol-brechen,S0NxeCL&#34;&gt;Bayern 2 Radio Article&lt;/a&gt;). That surprised me: I had not heard about OSF before, even though I am active in the field of free software and culture. But this new foundation made it into the mainstream broadcast already. Reason enough to take a closer look.&lt;/p&gt;
&lt;p&gt;It is a very good sign to have the topic of internet search in the news. It is a fact that one company has a gigantic market share in searching which is indeed a threat to the freedom of internet users. The key to be found in the web is the key to success with whatever message or service a web site might come up with, and all that is controlled by one enterprise driven by commercial interests. That should be realized by a broad audience.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>recently I learned about the <a href="https://opensearchfoundation.org/en/open-search-foundation-home/">Open Search Foundation</a> in the public broadcast radio (<a href="https://www.br.de/nachrichten/netzwelt/europaeische-wissenschaftler-wollen-google-monopol-brechen,S0NxeCL">Bayern 2 Radio Article</a>). That surprised me: I had not heard about OSF before, even though I am active in the field of free software and culture. But this new foundation made it into the mainstream broadcast already. Reason enough to take a closer look.</p>
<p>It is a very good sign to have the topic of internet search in the news. It is a fact that one company has a gigantic market share in searching which is indeed a threat to the freedom of internet users. The key to be found in the web is the key to success with whatever message or service a web site might come up with, and all that is controlled by one enterprise driven by commercial interests. That should be realized by a broad audience.</p>
<p>The Open Search Foundation has the clear vision to build up an publicly owned search index as an alternative for Europe.</p>
<h3 id="geographical-and-political-focus">Geographical and Political Focus</h3>
<p>The whitepaper talks about working on the search machine specifically for Europe. It mentions that there are search indexes in the US, China and Russia, but none rooted in Europe. While this is a geographical statement in the first place, it is of course also a political, because some of the existing services are probably politically controlled.</p>
<p>It is good to start with a focus on Europe, but the idea of a free and publicly controlled project should not be limited to Europes borders. In fact, it will not stop there if it is attractive because it might offer a way to escape from potentially controlled systems.</p>
<p>On the other hand, Europe (in opposite to any single European country alone) seems like a good base to start with this huge effort as it is able to come up with the needed resources.</p>
<h3 id="organization">Organization</h3>
<p>The founding members of the Open Search Foundation are not very well known members of the wider open source community. That is good, as it shows that the topics around the free internet do not only concern nerds in the typical communities, but also people who work for an open and future proof society in other areas like academia, research and medicine.</p>
<p>On the other hand, an organization like for example the <a href="https://wikimediafoundation.org/">Wikimedia e.V.</a> might have been a more obvious candidate to address this topic. Neither on the web site nor in the whitepaper I found mentions of any of the &ldquo;usual suspects&rdquo; or other organizations and companies who have already tried to set up alternative indices. I wonder if there have been discussions, cooperations or plans to work together?</p>
<p>I am very curious to see how the collaboration between the more &ldquo;traditional&rdquo; open data/open source community and the Open Search Foundation will be, as I think it is a crucial part to combine all players in this area without falling into the &ldquo;endless discussion trap&rdquo; while not achieving countable results. It is the question of building an efficient community.</p>
<h3 id="pillars-of-success">Pillars of Success</h3>
<p>Does the idea of the OSF have a realistic chance to succeed? The following four pillars might play an important role for the success of the idea to build the free search index of the internet:</p>
<h4 id="1-licenses-and-governance">1. Licenses and Governance</h4>
<p>The legal framework has to be well defined and thought through, so that it will be resilient longer term. As we talk about a huge commercial potential to control this index, parties might wanna try to get into control of it.</p>
<p>Only a strong governance and legal framework can ensure that the idea lasts.</p>
<p>The OSF mentions in the whitepaper that it is one of the first steps to set this up.</p>
<h4 id="2-ressources">2. Ressources</h4>
<p>A search index requires big amounts of computing power in the wider sense, including storage, networking, redundancy and so on. Additionally there need to be people who take care on that. For that, there needs to be financial support for staffing, marketing, legal support and all that.</p>
<p>The whitepaper mentions ideas to collect the computing power from academia or from company donations.</p>
<p>For the financial backing the OSF will have to find sources like EC money, from governments and academia, and maybe private fund raising. Organizations like Wikimedia would already have experience with that.</p>
<p>If that will not be enough, the idea of selling better search results for money or offering SEO help for development will quickly come up. This will be interesting discussions that require the strong governance.</p>
<h4 id="3-technical-excellence">3. Technical Excellence</h4>
<p>Who will use a search index that does not come up with reasonable search results?<br>
To be able to compete with the existing solutions that even made it into our daily communication habits already, the service needs to be just great in terms of search results and user experience.</p>
<p>Many already existing approaches that use the Google index as a backend have already show that even with that it is not easy to provide a comparable result.</p>
<p>It is a fact that users of the commercial competition trade their personal data against optimal search results, even if they dont do that consciously. It is more difficult for a privacy oriented service, so this is another handicap.</p>
<p>The whitepaper mentions ideas on how to work on this huge task and also accepts that it will be challenging. But that is no reason to not try it. We all know plenty of examples where these kind of tasks were successful even though nobody believed that in the beginning.</p>
<h4 id="4-community">4. Community</h4>
<p>To achieve all the points a strong community is key factor.</p>
<p>There need to be people who do technical work like administering the data centers, developers who code, technical writers for documentation, translators and much more. But that is only the technical part.</p>
<p>For the financial-, marketing- and legal support there are other people needed, not speaking about political lobby and such.</p>
<p>All these parts have to be built up, managed and kept intact long term.</p>
<p>The Linux kernel, which was mentioned as a model in the whitepaper, is different. Not even the technical work is comparable between the free search index and the Linux kernel.</p>
<p>The long term stable development of the Linux kernel is based on people who work full time on the kernel while being employed by certain companies who are actually competitors. But on the kernel, they collaborate.</p>
<p>This way, the companies share cost for inevitable base development work. There differentiators in the market are not depending on there work on the kernel, but in the levels above the kernel.</p>
<p>How is that for OSF? I am failing to see how enough sustainable business can be based on an open, privacy respecting search index so that companies will be happy to fund engineers working on it.</p>
<p>Apart from that, the kernel has the benefit that it had strong companies like RedHat, SUSE and IBM who pushed Linux in the early times, so no special marketing budgets etc. were needed for the kernel specifically. Also that is different for OSF, as quite some marketing- and community management money will be required to start.</p>
<h3 id="conclusion">Conclusion</h3>
<p>Building a lasting, productive and well established community will be the vital question for the whole project in my opinion. Offering a great idea, which this initiative is without question, will not be enough to motivate people to participate long term.</p>
<p>There has to be an interesting offer for potential contributors at all levels, starting from individuals and companies for contributions, to universities for donating hardware or the governments and the European Community for money. There needs to be some kind of benefit they will gain for their engagement on the project. It is interesting if the OSF can come up with a model that will get that kickstarted.</p>
<p>I very much hope that this gets traction as it would be an important step towards a more free internet again. And I also hope that there will be collaboration on this topic with the traditional free culture communities and the foundations there.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Welcome PDF Quirk</title>
      <link>https://dragotin.codeberg.page/posts/welcome-pdf-quirk/</link>
      <pubDate>Thu, 21 May 2020 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/welcome-pdf-quirk/</guid>
      <description>&lt;p&gt;How often have you scanned a letter, a certificate or whatever and looked for the right way to call $UTILITY to convert it to a PDF that can be shared via internet?&lt;/p&gt;
&lt;p&gt;For this very common use case I could not find a tool to make that really easy for the Linux desktop. Given my mission to help making the Linux desktop more common in the small business world (do you know &lt;a href=&#34;https://volle-kraft-voraus.de&#34;&gt;Kraft&lt;/a&gt;?) I spent some time starting this little project.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>How often have you scanned a letter, a certificate or whatever and looked for the right way to call $UTILITY to convert it to a PDF that can be shared via internet?</p>
<p>For this very common use case I could not find a tool to make that really easy for the Linux desktop. Given my mission to help making the Linux desktop more common in the small business world (do you know <a href="https://volle-kraft-voraus.de">Kraft</a>?) I spent some time starting this little project.</p>
<p>Please welcome <a href="https://dragotin.github.io/quirksite/">PDF Quirk,</a> the desktop app to easily create PDFs out of images from storage or directly from the scanner!</p>
<p><img loading="lazy" src="/posts/welcome-pdf-quirk/images/screenshot1.png"></p>
<p>It is just what this screenshot shows: A one page app to pick images from either the harddisk or from a scanner if configured, and save it right away to a multi page PDF file. The only option is to have either monochrome or color scan. No further scan chi-chi, just nice PDFs within seconds.</p>
<p>Of course I did not want to spend too much time and reinvent the wheel. PDF Quirk uses <a href="https://imagemagick.org/">ImageMagicks</a> <em>convert</em> utility and the command line scan client <em>scanimage</em> of the <a href="http://www.sane-project.org/">SANE Project</a> in the background. Both are welknown standard commands on Linux, and serve well for this purpose.</p>
<p>Maybe you find PDF Quirk useful and wanna try it. You find it <a href="https://github.com/dragotin/pdfquirk/">on Github,</a> or packages on the <a href="https://software.opensuse.org/package/pdfquirk">openSUSE Buildservice</a>.</p>
<p>Contributions and comments are very welcome. It is a fun little project!</p>
]]></content:encoded>
    </item>
    <item>
      <title>Kraft Version 0.90</title>
      <link>https://dragotin.codeberg.page/posts/kraft-version-0-90/</link>
      <pubDate>Tue, 31 Dec 2019 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/kraft-version-0-90/</guid>
      <description>&lt;p&gt;This blog is to inform that &lt;a href=&#34;http://volle-kraft-voraus.de&#34;&gt;Kraft&lt;/a&gt;, the &lt;a href=&#34;https://www.qt.io/&#34;&gt;Qt&lt;/a&gt; and &lt;a href=&#34;https://www.kde.org&#34;&gt;KDE&lt;/a&gt; based desktop software to manage documents like invoices and quotes in your small company was released in &lt;a href=&#34;http://volle-kraft-voraus.de/Main/Releases&#34;&gt;version 0.90&lt;/a&gt; recently.&lt;/p&gt;
&lt;h2 id=&#34;followup-documents&#34;&gt;Followup Documents&lt;/h2&gt;
&lt;p&gt;A great new feature is the completely reworked handling of so called follow-up documents. Kraft has this feature to help dealing with docs that follow on a certain kind of predecessor doc in the business flow, such as an invoice follows on an offer once the work has been finished.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>This blog is to inform that <a href="http://volle-kraft-voraus.de">Kraft</a>, the <a href="https://www.qt.io/">Qt</a> and <a href="https://www.kde.org">KDE</a> based desktop software to manage documents like invoices and quotes in your small company was released in <a href="http://volle-kraft-voraus.de/Main/Releases">version 0.90</a> recently.</p>
<h2 id="followup-documents">Followup Documents</h2>
<p>A great new feature is the completely reworked handling of so called follow-up documents. Kraft has this feature to help dealing with docs that follow on a certain kind of predecessor doc in the business flow, such as an invoice follows on an offer once the work has been finished.</p>
<p><img alt="Document flow example" loading="lazy" src="/posts/kraft-version-0-90/images/doc-flow.png">To achieve that and to have all the items of the offer again referenced in the invoice, the Kraft user justs clicks on the menu item &ldquo;Create Followup Document&rdquo; on the selected offer, and the new doc is created with all the items of the offer prepared. It is ready to be adjusted to the final invoice details.</p>
<p>Now with version 0.90 this has even improved. Often, the flow is a bit different because a partial invoice is sent while the job is still in progress, for example to cover cost for material. A partial invoice usually has only one item, which is the progress payment the customer should pay.</p>
<p>Kraft users can handle that now very easy: The new UI does not only allow to choose from which predecessor document the final invoice should copy the items (which usually is the offer in the beginning) but it also realises that a partial invoice was sent before, so this amount of payment has to be substracted from the final invoice. Kraft adds an item to the final doc automatically here.</p>
<p>This helps to create high quality documents for your customers even faster, which is exactly the mission of Kraft.</p>
<h2 id="other-improvements">Other Improvements</h2>
<p>In addition to that, as usual a lot of other visible and invisible changes have gone into this release. For example, the UI has been simplified again by a clean up of the menu for example. The <em>About Kraft</em> dialog was removed and integrated into the Kraft information page.</p>
<p>Under the hood, we finally added unit tests, which is just a start so far, and ntroduced a new, XML based system to manage the available document types which makes igrations way easier. Last but not least the python based pdf conversion script was ported to python 3 to be ready for the end of python 2.</p>
<h2 id="community">Community</h2>
<p>Last but not least, Kraft got new contributions from the community: A new document type was initiated by a community member, which is a offer like document without showing the price information. Also, the complete app was translated to Dutch by a volunteer, and the translation is now shipped with Kraft by default. Also, other smaller bugfixes went in.</p>
<p>Thank you all for your help to improve <a href="http://volle-kraft-voraus.de">Kraft</a>.</p>
]]></content:encoded>
    </item>
    <item>
      <title>ownCloud and CryFS</title>
      <link>https://dragotin.codeberg.page/posts/owncloud-and-cryfs/</link>
      <pubDate>Sat, 17 Aug 2019 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/owncloud-and-cryfs/</guid>
      <description>&lt;p&gt;It is a great idea to encrypt files on client side before uploading them to an ownCloud server if that one is not running in controlled environment, or if one just wants to act defensive and minimize risk.&lt;/p&gt;
&lt;p&gt;Some people think it is a great idea to include the functionality in the sync client.&lt;/p&gt;
&lt;p&gt;I don&amp;rsquo;t agree because it combines two very complex topics into one code base and makes the code difficult to maintain. The risk is high to end up with a kind of code base which nobody is able to maintain properly any more. So let&amp;rsquo;s better avoid that for ownCloud and look for alternatives.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>It is a great idea to encrypt files on client side before uploading them to an ownCloud server if that one is not running in controlled environment, or if one just wants to act defensive and minimize risk.</p>
<p>Some people think it is a great idea to include the functionality in the sync client.</p>
<p>I don&rsquo;t agree because it combines two very complex topics into one code base and makes the code difficult to maintain. The risk is high to end up with a kind of code base which nobody is able to maintain properly any more. So let&rsquo;s better avoid that for ownCloud and look for alternatives.</p>
<p>A good way is to use a so called encrypted overlay filesystem and let ownCloud sync the encrypted files. The downside is that you can not use the encrypted files in the web interface because it can not decrypt the files easily. To me, that is not overly important because I want to sync files between different clients, which probably is the most common usecase.</p>
<p>Encrypted overlay filesystems put the encrypted data in one directory called the cipher directory. A decrypted representation of the data is mounted to a different directory, in which the user works.</p>
<p>That is easy to setup and use, and also in principle good to use with file sync software like ownCloud because it does not store the files in one huge container file that needs to be synced if one bit changes as other solutions do.</p>
<p>To use it, the cypher directory must be configured as local sync dir of the client. If a file is changed in the mounted dir, the overlay file system changes the crypto files in the cypher dir. These are synced by the ownCloud client.</p>
<p>One of the solutions I tried is <a href="https://www.cryfs.org/">CryFS</a>. It works nicely in general, but is unfortunately very slow together with ownCloud sync.</p>
<p>The reason for that is that CryFS is chunking all files in the cypher dir into 16 kB blocks, which are spread over a set of directories. It is very beneficial because file names and sizes are not reconstructable in the cypher dir, but it hits on one of the weak sides of the ownCloud sync. ownCloud is traditionally a bit slow with many small files spread over many directories. That shows dramatically in a test with CryFS: Adding eleven new files with a overall size of around 45 MB to a CryFS filesystem directory makes the ownCloud client upload for 6:30 minutes.</p>
<p>Adding another four files with a total size of a bit over 1MB results in an upload of 130 files and directories, with an overall size of 1.1 MB.</p>
<p>A typical change use case like changing an existing office text document locally is not that bad. CryFS splits a 8,2 kB big LibreOffice text doc into three 16 kB files in three directories here. When one word gets inserted, CryFS needs to create three new dirs in the cypher dir and uploads four new 16 kB blocks.</p>
<p>My personal conclusion: CryFS is an interesting project. It has a nice integration in the KDE desktop with <a href="https://www.youtube.com/watch?v=5vxlIXnuVuM">Plasma Vault</a>. Splitting files into equal sized blocks is good because it does not allow to guess data based on names and sizes. However, for syncing with ownCloud, it is not the best partner.</p>
<p>If there is a way how to improve the situation, I would be eager to learn. Maybe the size of the blocks can be expanded, or the number of directories limited? Also the upcoming ownCloud sync client <a href="https://central.owncloud.org/t/desktop-client-2-6-0-alpha1-released/19694">version 2.6.0</a> again has optimizations in the discovery and propagation of changes, I am sure that improves the situation.</p>
<p>Let&rsquo;s see what other alternatives can be found.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Noisy Workshop</title>
      <link>https://dragotin.codeberg.page/posts/noisy-workshop/</link>
      <pubDate>Sun, 28 Apr 2019 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/noisy-workshop/</guid>
      <description>&lt;p&gt;Usually, in my workshop I am listening to the great radio station &lt;a href=&#34;https://www.br.de/radio/bayern2/index.html&#34;&gt;Bayern 2&lt;/a&gt; (Yeah for public law media). But sometimes you just need to listen to nice classic english punk music, speed folk or &lt;a href=&#34;https://en.wikipedia.org/wiki/Lemmy&#34;&gt;(the one and only) Lemmy&lt;/a&gt; and friends.&lt;/p&gt;
&lt;p&gt;For that I was looking for a so called boom box to stream to from my mobile, simple, dirty and loud. Good that I was a proud awardee at the &lt;a href=&#34;https://www.hifiberry.com/maker-contest/&#34;&gt;HiFiBerry Maker Contest 2017&lt;/a&gt; with &lt;a href=&#34;https://dragotin.wordpress.com/2017/08/05/another-diy-net-player/&#34;&gt;my TeakEar build&lt;/a&gt;, where I won a nice set of a RaspberryPi Zero with a little &lt;a href=&#34;https://www.hifiberry.com/shop/boards/miniamp/&#34;&gt;HiFiBerry MiniAmp&lt;/a&gt;, coming with all what is needed to make that working. &lt;img alt=&#34;inlet&#34; loading=&#34;lazy&#34; src=&#34;https://dragotin.files.wordpress.com/2019/04/inlet.jpg?w=1024&#34;&gt;That should be enough to get proper punk sound in the workshop - and escape the boring normal commercial boom boxes all around.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Usually, in my workshop I am listening to the great radio station <a href="https://www.br.de/radio/bayern2/index.html">Bayern 2</a> (Yeah for public law media). But sometimes you just need to listen to nice classic english punk music, speed folk or <a href="https://en.wikipedia.org/wiki/Lemmy">(the one and only) Lemmy</a> and friends.</p>
<p>For that I was looking for a so called boom box to stream to from my mobile, simple, dirty and loud. Good that I was a proud awardee at the <a href="https://www.hifiberry.com/maker-contest/">HiFiBerry Maker Contest 2017</a> with <a href="https://dragotin.wordpress.com/2017/08/05/another-diy-net-player/">my TeakEar build</a>, where I won a nice set of a RaspberryPi Zero with a little <a href="https://www.hifiberry.com/shop/boards/miniamp/">HiFiBerry MiniAmp</a>, coming with all what is needed to make that working. <img alt="inlet" loading="lazy" src="https://dragotin.files.wordpress.com/2019/04/inlet.jpg?w=1024">That should be enough to get proper punk sound in the workshop - and escape the boring normal commercial boom boxes all around.</p>
<p>At a flee market I found a great case for that - exactly one of these that were in the classrooms of my school giving the unbanning gong at the end of each lesson. Nicely with the original non-color textile hiding the speaker and nicely done bended and veneered wood for the elegance.</p>
<p><img alt="case" loading="lazy" src="/posts/noisy-workshop/images/case.jpg"></p>
<p>A great fit for my usecase.</p>
<p>Two 3.3 inch Visaton fullrange speaker are mounted in simple closed chassis. The Raspi with the Amp is mounted between them. All is mounted on a back plate that fits the school speaker chassis. Boombox ready.</p>
<p>From a software perspective, it is there is just a Raspbian running that is configured to act as a bluetooth audio device for my mobile.</p>
<p>I think it is a nice addition to my workshop, with a great ease of use since it auto-connects to my mobile. Does it sound great? Oh no, not ..really. Is it loud? Well, yes, loud enough to not get in trouble with the neighbors. Given it&rsquo;s size, it is actually impresse.</p>
<p>Surely Lemmy would be fine to play Rock&rsquo;n Roll through it :)</p>
<p>The only downsize of the whole thing is that it disturbs the radio reception quite a bit, so it is really either or. Any hints how to reduce that?</p>
]]></content:encoded>
    </item>
    <item>
      <title>Eighty Percent ownCloud</title>
      <link>https://dragotin.codeberg.page/posts/eighty-percent-owncloud/</link>
      <pubDate>Sun, 23 Dec 2018 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/eighty-percent-owncloud/</guid>
      <description>&lt;p&gt;Recently the German computer magazin &lt;a href=&#34;https://www.heise.de/ct/&#34;&gt;C&amp;rsquo;t&lt;/a&gt; posted an article about file sync solutions (&lt;a href=&#34;https://www.heise.de/select/ct/2018/23/1541731692932357&#34;&gt;&amp;ldquo;Unter eigener Regie&amp;rdquo;&lt;/a&gt;, C&amp;rsquo;t 23, 2018) with native sync clients. The article was pretty positive about the FOSS solution of&amp;hellip; &lt;a href=&#34;https://nextcloud.com/install/#install-clients&#34;&gt;Nextcloud&lt;/a&gt;! I was wondering why they had not choosen &lt;a href=&#34;https://owncloud.org/&#34;&gt;ownCloud&amp;rsquo;s&lt;/a&gt; &lt;a href=&#34;https://owncloud.org/download/#owncloud-desktop-client&#34;&gt;client&lt;/a&gt; as my feeling is that ownCloud is way more busy and innovative developing the desktop client for file synchronization together with community.&lt;/p&gt;
&lt;p&gt;[caption id=&amp;ldquo;attachment_943&amp;rdquo; align=&amp;ldquo;alignright&amp;rdquo; width=&amp;ldquo;338&amp;rdquo;]&lt;img alt=&#34;lines_changed&#34; loading=&#34;lazy&#34; src=&#34;https://dragotin.codeberg.page/posts/eighty-percent-owncloud/images/lines_changed-e1545567922486.png&#34;&gt; Code lines changed as of Nov. 10, 2018[/caption]&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Recently the German computer magazin <a href="https://www.heise.de/ct/">C&rsquo;t</a> posted an article about file sync solutions (<a href="https://www.heise.de/select/ct/2018/23/1541731692932357">&ldquo;Unter eigener Regie&rdquo;</a>, C&rsquo;t 23, 2018) with native sync clients. The article was pretty positive about the FOSS solution of&hellip; <a href="https://nextcloud.com/install/#install-clients">Nextcloud</a>! I was wondering why they had not choosen <a href="https://owncloud.org/">ownCloud&rsquo;s</a> <a href="https://owncloud.org/download/#owncloud-desktop-client">client</a> as my feeling is that ownCloud is way more busy and innovative developing the desktop client for file synchronization together with community.</p>
<p>[caption id=&ldquo;attachment_943&rdquo; align=&ldquo;alignright&rdquo; width=&ldquo;338&rdquo;]<img alt="lines_changed" loading="lazy" src="/posts/eighty-percent-owncloud/images/lines_changed-e1545567922486.png"> Code lines changed as of Nov. 10, 2018[/caption]</p>
<p>That motivated me to do some investigation what the Nextcloud client actually consists of (at due date Nov. 10, 2018). I was looking into the NC desktop client <a href="https://github.com/nextcloud/desktop">git repoository</a> grouped the numbers of commits of people that can be associated clearly to either the ownCloud- or Nextcloud project, or to &ldquo;other communities&rdquo; or machine commits. Since the number of commits could be misleading (maybe some commits are huge?) I did the same exercise with numbers of changed lines of code.</p>
<p>When looking on the changed lines, the first top six contributors to the Nextcloud desktop client are only active in the ownCloud project. Number seven is an &ldquo;other community&rdquo; contributor whos project the client was based on in the beginning. Number eight to eleven go to Nextcloud, with a low percentage figure.</p>
<p>[caption id=&ldquo;attachment_944&rdquo; align=&ldquo;alignnone&rdquo; width=&ldquo;666&rdquo;]<img alt="commits" loading="lazy" src="/posts/eighty-percent-owncloud/images/commits.png"> # of commits to the Nextcloud Desktop repository as of Nov. 10, 2018[/caption]</p>
<p>As a result, far more than 80% of the changed lines of the Nextcloud client is actually work that ownClouders did (not considering the machine commits). In the past, and also today. The number would be even higher if it considered all the commits that go into the NC repo with an NC author, but are actually ownCloud patches where the original author got lost on the way by merging them through a NC branch. It looks like the Nextcloud developers were actually adding less commits to their client than all &ldquo;other community&rdquo; developers so far.</p>
<p>No wonder, it is a fork, you might think, and that is of course true. However, to my taste these numbers are not reflecting a &ldquo;constructive&rdquo; fork driving things forward when we talk about sync technology.</p>
<p>That is all fine, and I am proud that the work we do in ownCloud is actually stimulating two projects, with different focus areas nowadays. On the other hand, I would appreciate if the users of the technology would take a closer look to understand who really innovates, drives things forward and also fixes the <em>nasty</em> bugs in the stack. As a matter of fairness, that should be acknowledged. That is the motivation that keeps free software contributors busy and communities proud.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Change in Professional Life</title>
      <link>https://dragotin.codeberg.page/posts/change-in-professional-live/</link>
      <pubDate>Fri, 23 Nov 2018 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/change-in-professional-live/</guid>
      <description>&lt;p&gt;This November was very exciting for me so far, as I was starting a new job at a company called &lt;a href=&#34;https://heidolph-instruments.com/en/start&#34;&gt;Heidolph&lt;/a&gt;. I left &lt;a href=&#34;https://www.suse.com&#34;&gt;SUSE&lt;/a&gt; after working there for another two years. My role there that was pretty far away from interesting technical work, which I missed more and more, so I decided to grab the opportunity to join in a new adventure.&lt;/p&gt;
&lt;p&gt;Heidolph is a mature German engineering company building premium laboratory equipment. It is based in Schwabach, Germany. For me it is the first time that I am working in company that doesn&amp;rsquo;t do only software. At Heidolph, software is just one building block besides mechanical and electronic parts and tons of special know how. That is a very different situation and a lot to learn for me, but in a small, co-located team of great engineers, I am able to catch up fast in this interesting area.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>This November was very exciting for me so far, as I was starting a new job at a company called <a href="https://heidolph-instruments.com/en/start">Heidolph</a>. I left <a href="https://www.suse.com">SUSE</a> after working there for another two years. My role there that was pretty far away from interesting technical work, which I missed more and more, so I decided to grab the opportunity to join in a new adventure.</p>
<p>Heidolph is a mature German engineering company building premium laboratory equipment. It is based in Schwabach, Germany. For me it is the first time that I am working in company that doesn&rsquo;t do only software. At Heidolph, software is just one building block besides mechanical and electronic parts and tons of special know how. That is a very different situation and a lot to learn for me, but in a small, co-located team of great engineers, I am able to catch up fast in this interesting area.</p>
<p>We build software for the next generation Heidolph devices based on Linux and C++/Qt. Both technologies are in the center of my interest, over the years it has become more than clear for me that I want to continue with that and deepen my knowledge even more.</p>
<p>Since the meaning of open source has changed a lot since I started to contribute to free software and KDE in particular, it was a noticeable but not difficult step for me to take and move away from a self-proclaimed open source company towards a company that is using open source technologies as one part of their tooling and is interested in learning about the processes we do in open source to build great products. An exciting move for me where I will learn a lot but also benefit from my experience. This of course that does not mean that I will stop to contribute to open source projects.</p>
<p>We are still building up the team and look for a <a href="https://heidolphinstrumentsgmbhcokg.softgarden.io/job/2526659?l=de">Software Quality Engineer</a>. If you are interested in working with us in an exciting environment, you might wanna get in touch.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Kraft Version 0.82</title>
      <link>https://dragotin.codeberg.page/posts/kraft-version-0-82/</link>
      <pubDate>Fri, 19 Oct 2018 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/kraft-version-0-82/</guid>
      <description>&lt;p&gt;A new release of &lt;a href=&#34;http://volle-kraft-voraus.de&#34;&gt;Kraft&lt;/a&gt;, the Qt- and KDE based software to help to organize business docs in small companies, has arrived.&lt;/p&gt;
&lt;p&gt;A couple of days ago &lt;a href=&#34;http://volle-kraft-voraus.de/Main/Releases&#34;&gt;version 0.82&lt;/a&gt; was released. It mainly is a bugfix release, but it also comes with a few new features. Users were asking for some new functions that they needed to switch to Kraft with their business communication, and I am always trying to make that a priority.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>A new release of <a href="http://volle-kraft-voraus.de">Kraft</a>, the Qt- and KDE based software to help to organize business docs in small companies, has arrived.</p>
<p>A couple of days ago <a href="http://volle-kraft-voraus.de/Main/Releases">version 0.82</a> was released. It mainly is a bugfix release, but it also comes with a few new features. Users were asking for some new functions that they needed to switch to Kraft with their business communication, and I am always trying to make that a priority.</p>
<p>The most visible feature is a light rework of the calculation dialog that allows users to do price calculations for templates. It was cleared up, superflous elements were finally removed and the remaining ones now work as expected. The distinction between manual price and calculated price should be even more clear now. Time calculations can now not only done in the granularity of minutes, as this was to coarse for certain usecases. The unit for a time slice can now be either seconds, minutes or hours.</p>
<p>[caption id=&ldquo;attachment_936&rdquo; width=&ldquo;516&rdquo;]<img alt="Kraft 0.82" loading="lazy" src="/posts/kraft-version-0-82/images/newcalcdia.png"> New calculation dialog in 0.82[/caption]</p>
<p>Apart from that, for example sending documents per email was fixed, and in addition to doing it through thunderbird, Kraft can now also utilize the xdg-email tool to work with the desktop standard mail client, such as KMail.</p>
<p>Quite a few more bugfixes make this a nice release. Check the full <a href="http://volle-kraft-voraus.de/Main/Releases">Changelog</a>! Update is recommended.</p>
<p>Thanks for your <a href="http://volle-kraft-voraus.de/Main/Contribution">comments or suggestions</a> about Kraft!</p>
]]></content:encoded>
    </item>
    <item>
      <title>Kraft Version 0.81 Released</title>
      <link>https://dragotin.codeberg.page/posts/kraft-version-0-81-released/</link>
      <pubDate>Sun, 17 Jun 2018 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/kraft-version-0-81-released/</guid>
      <description>&lt;p&gt;I am happy to announce the release of &lt;a href=&#34;http://volle-kraft-voraus.de/Main/Releases&#34;&gt;Kraft version 0.81&lt;/a&gt;. Kraft is a Qt based desktop application that &lt;a href=&#34;http://volle-kraft-voraus.de/Main/Details&#34;&gt;helps you to handle documents&lt;/a&gt; like quotes and invoices in your small business.&lt;/p&gt;
&lt;p&gt;Version 0.81 is a bugfix release for the previous version 0.80, which was &lt;a href=&#34;https://dragotin.wordpress.com/2018/04/03/kraft-version-0-80-released/&#34;&gt;the first stable release&lt;/a&gt; based on Qt5 and KDE Frameworks5. Even though it came with way more new features than just the port, it&amp;rsquo;s first release has proven it&amp;rsquo;s stability in day-to-day business now for a few month.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>I am happy to announce the release of <a href="http://volle-kraft-voraus.de/Main/Releases">Kraft version 0.81</a>. Kraft is a Qt based desktop application that <a href="http://volle-kraft-voraus.de/Main/Details">helps you to handle documents</a> like quotes and invoices in your small business.</p>
<p>Version 0.81 is a bugfix release for the previous version 0.80, which was <a href="https://dragotin.wordpress.com/2018/04/03/kraft-version-0-80-released/">the first stable release</a> based on Qt5 and KDE Frameworks5. Even though it came with way more new features than just the port, it&rsquo;s first release has proven it&rsquo;s stability in day-to-day business now for a few month.</p>
<p>Kraft 0.81 mainly fixes building with Qt 5.11, and a few other installation- and AppStream metadata glitches. The only user visible fix is that documents do not show the block about individual taxes on the PDF documents any more if the document only uses one tax rate.</p>
<p>Thanks for your <a href="http://volle-kraft-voraus.de/Main/Contribution">suggestions and opinions</a> that you might have about <a href="http://volle-kraft-voraus.de">Kraft</a>!</p>
]]></content:encoded>
    </item>
    <item>
      <title>Kraft Version 0.80 Released</title>
      <link>https://dragotin.codeberg.page/posts/kraft-version-0-80-released/</link>
      <pubDate>Tue, 03 Apr 2018 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/kraft-version-0-80-released/</guid>
      <description>&lt;p&gt;I am happy to announce the release of the stable &lt;a href=&#34;http://volle-kraft-voraus.de&#34;&gt;Kraft&lt;/a&gt; version 0.80 (&lt;a href=&#34;http://volle-kraft-voraus.de/Main/Changelog080&#34;&gt;Changelog&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Kraft is desktop software to manage documents like quotes and invoices in the small business. It &lt;a href=&#34;http://volle-kraft-voraus.de/Main/Details&#34;&gt;focuses&lt;/a&gt; on ease of use through an intuitive GUI, a well choosen feature set and ensures privacy by keeping data local.&lt;/p&gt;
&lt;p&gt;After more than a dozen years of life time, Kraft is now reaching a new level: It is now completely ported to Qt5 / KDE Frameworks 5 and with that, it is compatible with all modern Linux distributions again.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>I am happy to announce the release of the stable <a href="http://volle-kraft-voraus.de">Kraft</a> version 0.80 (<a href="http://volle-kraft-voraus.de/Main/Changelog080">Changelog</a>).</p>
<p>Kraft is desktop software to manage documents like quotes and invoices in the small business. It <a href="http://volle-kraft-voraus.de/Main/Details">focuses</a> on ease of use through an intuitive GUI, a well choosen feature set and ensures privacy by keeping data local.</p>
<p>After more than a dozen years of life time, Kraft is now reaching a new level: It is now completely ported to Qt5 / KDE Frameworks 5 and with that, it is compatible with all modern Linux distributions again.</p>
<p><a href="https://www.kde.org/">KDE</a> Frameworks 5 and <a href="https://www.qt.io/">Qt5</a> are the best base for modern desktop software and Kraft integrates seamlessly into all Linux desktops. Kraft makes use of the great KDE PIM infrastructure with KAddressbook and Akonadi.</p>
<p>In addition to the port that lasted unexpectedly over 12 months, Kraft v. 0.80 got a whole bunch of improvements, just to name some examples:</p>
<h4 id="more-flexible-addressbook-integration">More Flexible Addressbook Integration</h4>
<p>As Akonadi is optional now, Kraft can be built without it. Even if it was built with, but Akonadi for whatever reason is not working properly, Kraft still runs smoothly. In that case it only lacks the convenience of address book integration.</p>
<p>The Address book access was also nicely abstracted so that other Addressbook backends can be implemented more easily.</p>
<h4 id="gui-improvements">GUI Improvements</h4>
<p>Even though the functionality and GUI of Kraft was not changed dramatically compared to the last stable KDE 4 version, there were a few interesting changes in the user interface.</p>
<ul>
<li>A new, bigger side bar simplifies navigation.</li>
<li>In the timeline view, a click on years and month in the treeview show summaries of the selected time span, ie. the number of documents with financial summaries per month or year.</li>
<li>A filter allows to limit the view on the current week or month.</li>
</ul>
<h4 id="reduction-of-dependencies">Reduction of dependencies</h4>
<p>Kraft makes broad use of the core Qt5 libraries. The required KDE dependencies were reduced to a bare minimum. Akonadi libraries, which enable KDE PIM integration are now optional. The former dependency on heavyweight web browser components were completely removed and replaced by the far more simple richtext component of Qt.</p>
<p>These changes make it not only easier and more transparent to build Kraft but allow make a port to other platforms like MacOSX more easy in the future.</p>
<h4 id="under-the-hood">Under the Hood</h4>
<p>A countless number of bugfixes and small improvements went in. Also updates to the newer C++ concepts where applicable make the rather mature code base more modern and better maintainable.</p>
<p>The <a href="https://www.reportlab.com/opensource/">Reportlab</a> based PDF document creation script was updated and merged with a later version for example.</p>
<h4 id="deployment">Deployment</h4>
<p>Installing Kraft is still a bit complicated for unexperienced users, and distributions sometimes haven&rsquo;t made a good job in the past to provide the latest version of Kraft.</p>
<p>To make it easier to test, there is an <a href="https://download.opensuse.org/repositories/home:/kfreitag:/KraftAppI/AppImage/kraft-latest-x86_64.AppImage">AppImage</a> of Kraft 0.80 available that should be runable on most modern distributions. Just download a single file that can be started right away after having added the executable permissions.</p>
<p>Linux packages are already built for <a href="https://software.opensuse.org/package/kraft">openSUSE (various versions)</a> or <a href="https://packages.gentoo.org/packages/app-office/kraft">Gentoo</a>.</p>
<p>Kraft&rsquo;s <a href="http://volle-kraft-voraus.de">website</a> will contain a lot more information.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Kraft out of KDE</title>
      <link>https://dragotin.codeberg.page/posts/kraft-out-of-kde/</link>
      <pubDate>Thu, 22 Mar 2018 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/kraft-out-of-kde/</guid>
      <description>&lt;p&gt;Following my last blog about &lt;a href=&#34;http://volle-kraft-voraus.de&#34;&gt;Kraft&lt;/a&gt;s &lt;a href=&#34;https://dragotin.wordpress.com/2018/02/03/kraft-moving-to-kde-frameworks-beta-release/&#34;&gt;upcoming release 0.80&lt;/a&gt; I got a lot of positive reactions.&lt;/p&gt;
&lt;p&gt;There was one reaction however, that puzzles me a bit and I want to share my thoughts here. It is about a comment about my announcement that I prefer to continue to &lt;a href=&#34;https://github.com/dragotin/kraft/&#34;&gt;develop Kraft&lt;/a&gt; on &lt;a href=&#34;https://github.com&#34;&gt;Github&lt;/a&gt;. The commenter reminded my friendly that there is still Kraft code on &lt;a href=&#34;http://kde.org&#34;&gt;KDE&lt;/a&gt; infrastructure, and that switching to a different repository might waste peoples time when they work with the KDE repo.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Following my last blog about <a href="http://volle-kraft-voraus.de">Kraft</a>s <a href="https://dragotin.wordpress.com/2018/02/03/kraft-moving-to-kde-frameworks-beta-release/">upcoming release 0.80</a> I got a lot of positive reactions.</p>
<p>There was one reaction however, that puzzles me a bit and I want to share my thoughts here. It is about a comment about my announcement that I prefer to continue to <a href="https://github.com/dragotin/kraft/">develop Kraft</a> on <a href="https://github.com">Github</a>. The commenter reminded my friendly that there is still Kraft code on <a href="http://kde.org">KDE</a> infrastructure, and that switching to a different repository might waste peoples time when they work with the KDE repo.</p>
<p>That is a fair statement, of course I don&rsquo;t want to waste peoples time. What sounds a bit strange to me is the second paragraph, that says that if I decide to stay with Github, I should let KDE people know that I <em>wish Kraft to not be a KDE project anymore</em>.</p>
<p>But &hellip; I never felt that Kraft should not be a KDE project any more.</p>
<h2 id="a-little-history">A little History</h2>
<p>Kraft has come a long way together with KDE. I started Kraft in (probably) 2004, gave a talk about Kraft at the Akademy Dublin 2006, maintained it with the best effort I could contribute until today. There is a small but loyal community around Kraft.</p>
<p>During all the time I got little substancial contribution to the code directly, with the exception of one cool developer who got interested for some time and made some very interesting contributions.</p>
<p>When I asked a for the subdomain <a href="http://kraft.kde.org">http://kraft.kde.org</a> long time ago I got the reply that it is not in the interest of KDE to give every little project a subdomain. As a result I reserved <a href="http://volle-kraft-voraus.de">http://volle-kraft-voraus.de</a> and run it since then, happily showing a &ldquo;Part of the KDE family&rdquo; logo on it.</p>
<p>Beside the indirect contributions to libraries that Kraft uses, I shipped Kraft with the translations made by the <a href="https://l10n.kde.org/">KDE i18n team</a>, for which I always was very grateful. Otherwise I got no other services from KDE.</p>
<h2 id="why-github">Why Github?</h2>
<p>Githubs workflow serves me well in my day job, and since I have only little time for Kraft, I like to use the tools that I know best and give me the most efficiency.</p>
<p>I know that Github is not free software and I am sceptical about that. But Github also does not lock in, as we still are on git. We all know the arguments that usually come on the table at this point, so I am not elaborating here. One thing I want to mention though is that since I moved to Github publically I already got two little pull requests with code contributions. That is a lot compared to what came in the last twelfe years when living on KDE infrastructure only.</p>
<h2 id="summary">Summary</h2>
<p>Kraft is a small project, driven by me alone. My development turnaround is good with Github as I am used to it. Even if no KDE developer would ever look at Github (which I know is not true) I have to say with heavy heart that Kraft would not take big harm by leaving KDEs infra, based on the experience of the last 12 years.</p>
<p>If the KDE translation teams do not want to work with Github, I am fine to accept that, and wonder if there could be a solution rather than switching to <a href="https://www.transifex.com/">Transifex</a>.</p>
<p>One point however I like to make very clear: I did not wish to leave KDE, nor aimed to move Kraft out. I still have friends in the KDE community, I am still very interested in free software on desktop and elsewhere, and my opinion is still that KDE is the best around.</p>
<p>If the KDE community feels that Kraft must not be a KDE project any longer because it is on Github, ok. I <a href="https://phabricator.kde.org/T8238">asked KDE Sysadmins</a> to remove Kraft from the KDE git, and it is already done.</p>
<p>Kraft now lifes on on <a href="https://github.com/dragotin/kraft/">Github</a>.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Kraft Moving to KDE Frameworks: Beta Release!</title>
      <link>https://dragotin.codeberg.page/posts/kraft-moving-to-kde-frameworks-beta-release/</link>
      <pubDate>Sat, 03 Feb 2018 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/kraft-moving-to-kde-frameworks-beta-release/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;Kraft Logo&#34; loading=&#34;lazy&#34; src=&#34;https://dragotin.codeberg.page/posts/kraft-moving-to-kde-frameworks-beta-release/images/kraft-e1517665987954.png&#34;&gt;&lt;a href=&#34;http://volle-kraft-voraus.de&#34;&gt;Kraft&lt;/a&gt; is KDE/Qt based desktop software to manage documents like quotes and invoices in the small business. It focuses on ease of use through an intuitive GUI, a well chosen feature set and ensures privacy by keeping data local.&lt;/p&gt;
&lt;p&gt;Kraft is around for more than twelve years, but it has been a little quiet recently. However, Kraft is alive and kicking!&lt;/p&gt;
&lt;p&gt;I am very happy to announce the first public beta version of &lt;a href=&#34;https://github.com/dragotin/kraft/releases&#34;&gt;Kraft V. 0.80&lt;/a&gt;, the first Kraft version that is based on KDE Frameworks 5 and Qt 5.x.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><img alt="Kraft Logo" loading="lazy" src="/posts/kraft-moving-to-kde-frameworks-beta-release/images/kraft-e1517665987954.png"><a href="http://volle-kraft-voraus.de">Kraft</a> is KDE/Qt based desktop software to manage documents like quotes and invoices in the small business. It focuses on ease of use through an intuitive GUI, a well chosen feature set and ensures privacy by keeping data local.</p>
<p>Kraft is around for more than twelve years, but it has been a little quiet recently. However, Kraft is alive and kicking!</p>
<p>I am very happy to announce the first public beta version of <a href="https://github.com/dragotin/kraft/releases">Kraft V. 0.80</a>, the first Kraft version that is based on KDE Frameworks 5 and Qt 5.x.</p>
<p>It did not only go through the process of being ported to Qt5/KF5, but I also took the opportunity to refactor and tackle a lot of issues that Kraft was suffering from in the past.</p>
<p>Here are a few examples, a full changelog will follow:</p>
<ul>
<li>
<p>Akonadi dependency: Earlier Kraft versions had a hard dependency on Akonadi, because it uses the KDE Addressbook to manage customer addresses. Without having Akonadi up and running, Kraft was not functional. People who were testing Kraft without having Akonadi up were walking away with a bad impression of Kraft.</p>
<p>Because Akonadi and the KDE contacts integration is perfect for this use case, it still the way to go for Kraft, and I am delighted to build on such strong shoulders. But Kraft now also works without Akonadi. Users get a warning, that the full address book integration is not available, but can enter addresses manually and continue to create documents with Kraft. It remains fully functional.</p>
<p>Also, a better abstraction of the Akonadi-based functionality in Kraft eases porting to platforms where other system address books are available, such as MacOSX.</p>
</li>
<li>
<p>AppImage: The new Kraft is available as <a href="https://download.opensuse.org/repositories/home:/kfreitag:/KraftAppI/AppImage/kraft-latest-x86_64.AppImage">AppImage</a>.</p>
<p>There was a lot of feedback that people could not test Kraft, because it was hard to set up or compile, and dependency are missing. The major Linux distributions seem to be unable to keep up with current versions of leaf packages like Kraft, and I can not do that for the huge variety of distros. So AppImage as container format for GUI applications seems to be a perfect fit here.</p>
</li>
<li>
<p>A lot more was done. Kraft got simplifications in both the code base and the functionality, careful gui changes, and a decreased dependency stack. You should check it out!</p>
</li>
</ul>
<p>Today (on FOSDEM weekend, which could be a better date?) the <a href="https://github.com/dragotin/kraft/releases/tag/0.80beta10">pre version 0.80 beta10</a> is announced to the public.</p>
<p>I would appreciate if people test and report bugs at <a href="https://github.com/dragotin/kraft">Github</a>: That is where the development is currently happening.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Another DIY Net Player</title>
      <link>https://dragotin.codeberg.page/posts/another-diy-net-player/</link>
      <pubDate>Sat, 05 Aug 2017 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/another-diy-net-player/</guid>
      <description>&lt;p&gt;Following up on my first &lt;a href=&#34;https://dragotin.wordpress.com/2015/07/12/diy-net-player/&#34;&gt;DIY Net Player Post&lt;/a&gt; on this blog, I like to present another player that I recently built.&lt;/p&gt;
&lt;p&gt;[caption id=&amp;ldquo;teakear1&amp;rdquo; align=&amp;ldquo;alignnone&amp;rdquo; width=&amp;ldquo;800&amp;rdquo;]&lt;img alt=&#34;teakear_sunf1&#34; loading=&#34;lazy&#34; src=&#34;https://dragotin.codeberg.page/posts/another-diy-net-player/images/teakear_sunf1.png&#34;&gt; TeakEar media player[/caption]&lt;/p&gt;
&lt;p&gt;This is a Raspberry Pi based audiophile net player that decodes my mp3 collection and net radio to my Linn amplifier. It is called &lt;strong&gt;TeakEar&lt;/strong&gt;, because it&amp;rsquo;s main corpus is made from teak wood. Obviously I do not want to waste rain forest trees just because of my funny ideas, the teak wood used here has been a table from the 1970ies, back when nobody cared about rainforests. I had the chance to safe parts of the table when it was sorted out, and now use it&amp;rsquo;s valuable wood for special things.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Following up on my first <a href="https://dragotin.wordpress.com/2015/07/12/diy-net-player/">DIY Net Player Post</a> on this blog, I like to present another player that I recently built.</p>
<p>[caption id=&ldquo;teakear1&rdquo; align=&ldquo;alignnone&rdquo; width=&ldquo;800&rdquo;]<img alt="teakear_sunf1" loading="lazy" src="/posts/another-diy-net-player/images/teakear_sunf1.png"> TeakEar media player[/caption]</p>
<p>This is a Raspberry Pi based audiophile net player that decodes my mp3 collection and net radio to my Linn amplifier. It is called <strong>TeakEar</strong>, because it&rsquo;s main corpus is made from teak wood. Obviously I do not want to waste rain forest trees just because of my funny ideas, the teak wood used here has been a table from the 1970ies, back when nobody cared about rainforests. I had the chance to safe parts of the table when it was sorted out, and now use it&rsquo;s valuable wood for special things.</p>
<p>Upcycling is the idea here, and the central iron part has been a drawbar part from an old hay cart. The black central stone piece is schist, which I found outside in the fields, probably a roofer material.</p>
<p>[caption id=&ldquo;attachment_902&rdquo; align=&ldquo;alignright&rdquo; width=&ldquo;220&rdquo;]<img alt="teak_ear_back1" loading="lazy" src="/posts/another-diy-net-player/images/teak_ear_back11.jpg"> Backside view[/caption]</p>
<p>I wanted to combine these interesting and unique materials to something that stands for it&rsquo;s own. And even though it covers a high tech sound device, I decided against any displays, lights or switches to not taint the warm and natural vibes of the heavy, dark and structured exotic wood, the rusty iron part, which obviously is the hand work of a blacksmith many years ago, and the black stone. Placed on my old school Linn Classic amplifier, it is an interesting object in my living room.</p>
<p>On it&rsquo;s backside it has a steel sheet fitted into the wood body, held in place by two magnets to allow it to be quickly detached. On that, a Raspberry Pi 2 with a <a href="https://hifiberry.com">Hifiberry</a> DAC is mounted. The Hifiberry DAC has a chinch output which is connected to the AUX input of the Linn Classic Amplifier. The energy supply is an ordinary external plug in power supply, something that could be improved.</p>
<p>On the software side, I use <a href="http://volumio.org">Volumio</a>, <em>the open audiophile music player</em>. The Volumio project could not amaze me more. After a big redesign and -implementation last year, it is back with higher quality than before but still the same clear focus on music playing. It does nothing else, but with all features and extension points that are useful and needed.</p>
<p>[gallery ids=&ldquo;921,920,922,923,924&rdquo; type=&ldquo;rectangular&rdquo;]</p>
<p>I enjoy the hours in my workshop building these kind of devices, and I am sure this wont be the last one. Maybe next time with a bit more visible tech stuff.</p>
]]></content:encoded>
    </item>
    <item>
      <title>SMB on openSUSE Conference</title>
      <link>https://dragotin.codeberg.page/posts/smb-on-opensuse-conference/</link>
      <pubDate>Sun, 21 May 2017 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/smb-on-opensuse-conference/</guid>
      <description>&lt;p&gt;The annual openSUSE Conference 2017 is upcoming! &lt;img alt=&#34;osc17final&#34; loading=&#34;lazy&#34; src=&#34;https://dragotin.codeberg.page/posts/smb-on-opensuse-conference/images/osc17final.png&#34;&gt;Next weekend it will be again in the Z-Bau in Nuremberg, Germany.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&#34;https://events.opensuse.org/conference/oSC17/schedule&#34;&gt;conference program&lt;/a&gt; is impressive and if you can make it, you should consider stopping by.&lt;/p&gt;
&lt;p&gt;Stefan Schäfer from the &lt;a href=&#34;https://www.invis-server.org/&#34;&gt;Invis server project&lt;/a&gt; and me will organize a workshop about &lt;a href=&#34;https://events.opensuse.org/conference/oSC17/program/proposal/1450&#34;&gt;openSUSE for Small and Medium Business (SMB)&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;SMB is a long running concern of the heart of the two of us: Both Stefan, who even does it for living, and me have both used openSUSE in the area of SMB for long and we know how well it serves there. Stefan has even initiated the Invis Server Project, which is completely free software and builds on top of the openSUSE distributions. The Invis Server adds a whole bunch of extra functionality to openSUSE that is extremely useful in the special SMB usecase. It came a long way starting as Stefans own project long years ago, evolving as proper maintained &lt;a href=&#34;https://build.opensuse.org/project/show/spins:invis&#34;&gt;openSUSE Spin&lt;/a&gt; in OBS with a small, but active community.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>The annual openSUSE Conference 2017 is upcoming! <img alt="osc17final" loading="lazy" src="/posts/smb-on-opensuse-conference/images/osc17final.png">Next weekend it will be again in the Z-Bau in Nuremberg, Germany.</p>
<p>The <a href="https://events.opensuse.org/conference/oSC17/schedule">conference program</a> is impressive and if you can make it, you should consider stopping by.</p>
<p>Stefan Schäfer from the <a href="https://www.invis-server.org/">Invis server project</a> and me will organize a workshop about <a href="https://events.opensuse.org/conference/oSC17/program/proposal/1450">openSUSE for Small and Medium Business (SMB)</a>.</p>
<p>SMB is a long running concern of the heart of the two of us: Both Stefan, who even does it for living, and me have both used openSUSE in the area of SMB for long and we know how well it serves there. Stefan has even initiated the Invis Server Project, which is completely free software and builds on top of the openSUSE distributions. The Invis Server adds a whole bunch of extra functionality to openSUSE that is extremely useful in the special SMB usecase. It came a long way starting as Stefans own project long years ago, evolving as proper maintained <a href="https://build.opensuse.org/project/show/spins:invis">openSUSE Spin</a> in OBS with a small, but active community.</p>
<p>The interesting question is how openSUSE, Invis Server and other smaller projects like for example <a href="http://volle-kraft-voraus.de">Kraft</a> can unite and offer a reliable maintained and comprehensive solution for this huge group of potential users, that is now locked in to proprietary technologies mainly while FOSS can really make a difference here.</p>
<p>In the workshop we first will introduce the existing projects briefly, maybe discuss some technical questions like integration of new packages in the openSUSE distributions and such, and also touch organizational question like how we want to setup and market openSUSE SMB.</p>
<p>Participants in the workshop should not expect too much presentation. We rather hope for a lively discussion with many people bringing in their projects that might fit, their experiences and ideas. Don&rsquo;t be shy :-)</p>
]]></content:encoded>
    </item>
    <item>
      <title>Raspberry based Private Cloud?</title>
      <link>https://dragotin.codeberg.page/posts/raspberry-based-private-cloud/</link>
      <pubDate>Sun, 11 Dec 2016 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/raspberry-based-private-cloud/</guid>
      <description>&lt;p&gt;Here is something that might be a little outdated already, but I hope it still adds some interesting thoughts. The rainy Sunday afternoon today finally gives the opportunity to write this little blog.&lt;/p&gt;
&lt;p&gt;Recently an &lt;a href=&#34;http://www.owncloud.org&#34;&gt;ownCloud&lt;/a&gt; fork was coming up with a little shiny box with one harddisk, that can be complemented with a Rapsberry Pi and their software, promoting that as &lt;em&gt;your private cloud&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;While I like the idea of building a private cloud for everybody (I started to work on ownCloud because of that idea back in the days), I do not think that this example of gear is a good solution for private cloud.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Here is something that might be a little outdated already, but I hope it still adds some interesting thoughts. The rainy Sunday afternoon today finally gives the opportunity to write this little blog.</p>
<p>Recently an <a href="http://www.owncloud.org">ownCloud</a> fork was coming up with a little shiny box with one harddisk, that can be complemented with a Rapsberry Pi and their software, promoting that as <em>your private cloud</em>.</p>
<p>While I like the idea of building a private cloud for everybody (I started to work on ownCloud because of that idea back in the days), I do not think that this example of gear is a good solution for private cloud.</p>
<p>In fact I believe that throwing this kind of implementations on the table is especially unfortunate because if we come up with too many not optimal proposals, we waste the  willingness of users to try it. This idea should not target geeks who might be willing to try ideas on and on. The idea of the private cloud needs to target at every computer user who wants to store data safely, but does not want to care about longer than ever necessary. And with them I fear we only have very little chances, if one at all, to introduce them to a private cloud solution before they go back to something <em>that simply works</em>.</p>
<p>Here are some points why I think solutions like the proposed one are not good enough:</p>
<h4 id="hardware">Hardware</h4>
<p>That is nothing new: The hardware of the Raspberry Pi was not designed for this kind of usecases. It is simply too weak to drive ownCloud, which is an PHP app plus database server that has some requirements on the servers power. Even with PHP7, which is faster, and the latest revisions of the mini computer, it might look ok in the beginning, but after all the neccessary bells and whistles were added to the installation and data run in, it will turn out that the CPU power is simply not enough. Similar weaknesses are also true for the networking capabilities for example.</p>
<p>A user that finds that out after a couple of weeks after she worked with the system will remain angry and probably go (back) to solutions that we do not fancy.</p>
<h4 id="one-disk-setup">One Disk Setup</h4>
<p>The solution comes as one disk setup: How secure can data be that is on one single hardisk? A seriously engineered solution should at least recommend a way to store the data more securely and/or backup, like on an at homes NAS for example. That can be done, but requires manual work and might require more network capabilities and CPU power.</p>
<h4 id="advanced-networking">Advanced Networking</h4>
<p>Last, but for me the most important point: Having such a box in the private network requires to drill a whole in the firewall, to allow port forwarding. I know, that is nothing unusual for experienced people, and in theory little problem.</p>
<p>But for people who are not so interested, that means they need to click in the interface of their router on a button that they do not understand what it does, and maybe even insert data by following an documentation that they have to believe. (That is not very much different from downloading a script from somewhere letting it do the changes which I would not recommend as well). Doing mistakes here could potentially have a huge impact for the network behind the router, without that the person who did it even has an understanding for.</p>
<p>Also DynDNS is needed: That is also not a big problem in theory and for geeks, but in practice it is nothing easily done.</p>
<p>With a good solution for private cloud, it should not be necessary to ask for that kind of setups.</p>
<h4 id="where-to-go-from-here">Where to go from here?</h4>
<p>There should be better ways to solve this problems with ownCloud, and I am sure ownCloud is the right tool to solve that problem. I will share some thought experiments that we were doing some time back to foster discussion on how we can use the Raspberry Pi with ownCloud (because it is a very attractive piece of hardware) and solve the problems.</p>
<p>This will be subject of an upcoming blog here, please stay tuned.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Recent ownCloud Releases</title>
      <link>https://dragotin.codeberg.page/posts/recent-owncloud-releases/</link>
      <pubDate>Tue, 04 Oct 2016 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/recent-owncloud-releases/</guid>
      <description>&lt;p&gt;Even though we just had the nice and successful &lt;a href=&#34;https://owncloud.org/blog/you-rocked-the-owncloud-conference-2016/&#34;&gt;ownCloud Contributor Conference&lt;/a&gt; there have quite some &lt;a href=&#34;http://www.owncloud.org&#34;&gt;ownCloud&lt;/a&gt; releases happened recently. I like to draw your attention to this for a moment, because some people seem to fail to see how active the ownCloud community actually is at the moment.&lt;/p&gt;
&lt;p&gt;There has been the big &lt;a href=&#34;https://owncloud.com/owncloud-9-1-enterprise-edition-now-available/&#34;&gt;enterprise release 9.1&lt;/a&gt; on September 20th, but that of course came along with community releases which are in the focus here.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Even though we just had the nice and successful <a href="https://owncloud.org/blog/you-rocked-the-owncloud-conference-2016/">ownCloud Contributor Conference</a> there have quite some <a href="http://www.owncloud.org">ownCloud</a> releases happened recently. I like to draw your attention to this for a moment, because some people seem to fail to see how active the ownCloud community actually is at the moment.</p>
<p>There has been the big <a href="https://owncloud.com/owncloud-9-1-enterprise-edition-now-available/">enterprise release 9.1</a> on September 20th, but that of course came along with community releases which are in the focus here.</p>
<p>We had <a href="http://download.owncloud.org/community/owncloud-8.0.15.tar.bz2">server release 8.0.15</a>, <a href="http://download.owncloud.org/community/owncloud-8.1.10.tar.bz2">server release 8.1.10</a>, <a href="http://download.owncloud.org/community/owncloud-8.2.8.tar.bz2">server release 8.2.8</a> and <a href="http://download.owncloud.org/community/owncloud-9.0.5.tar.bz2">release 9.0.5</a>. There are maintenance releases for the older major versions, needed to fix bugs on installations that still run on these older versions. We deliver them following <a href="https://github.com/owncloud/core/wiki/Maintenance-and-Release-Schedule">this plan</a>.</p>
<p>The latest and greatest server release is <a href="http://download.owncloud.org/community/owncloud-9.1.1.tar.bz2">release 9.1.1</a> that has all the hardening that also went into the enterprise releases.</p>
<p>Aside a ton of bugfixes that you find listed in the <a href="https://owncloud.org/changelog/#latest9.1">changelog</a> there have also been interesting changes which drive innovation. To pick just one example: <a href="https://github.com/owncloud/core/issues/25482">The data fingerprint property</a>. It enables the clients to detect if the server got a backup restored, and saves changes on the clients to conflict files if needed. This is a nice example of solutions which are based on feedback from enterprise customers community running ownCloud, who help with reporting problems and proposing solutions.</p>
<p>Talking about professional usage of ownCloud: Of course also all the server release are available as <a href="https://owncloud.org/install/#tab-packages">linux packages</a> for various distributions, for example the ownCloud server 9.1.1 packages. We think that our users should not be forced to deploy from tarballs, which is error prone and not native to Linux, but have the choice to use linux packages through the distributions package management.</p>
<p>There also have been client releases recently: The Android client versions <a href="https://github.com/owncloud/android/blob/master/CHANGELOG.md">2.1.1 and 2.1.2</a> were released with important changes for Android 7 and much more fixes, as well as iOS client versions <a href="https://github.com/owncloud/ios/blob/master/Changelog.md">3.5.0 and 3.5.1</a>. The <a href="https://owncloud.org/changelog/desktop/">desktop client 2.2.4</a> also got a regular bug fix update (<a href="https://owncloud.org/changelog/desktop">Changelog</a>).</p>
<p>I guess you agree that is a lot of activity shown in the ownCloud project, making sure to get the best ownCloud experience out there for the users, driven by passion for the project and professional usage in focus.</p>
<p>If you are interested and want to join in and make ownCloud better, jump in on <a href="https://central.owncloud.org/">ownCloud Central</a> or <a href="https://github.com/owncloud">Github</a>. It&rsquo;s fun!</p>
]]></content:encoded>
    </item>
    <item>
      <title>More Hiring: Qt Hacker!</title>
      <link>https://dragotin.codeberg.page/posts/more-hiring-qt-hacker/</link>
      <pubDate>Fri, 16 Sep 2016 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/more-hiring-qt-hacker/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://owncloud.com&#34;&gt;ownCloud&lt;/a&gt; is even more hiring. In my &lt;a href=&#34;https://dragotin.wordpress.com/2016/08/03/owncloud-is-hiring/&#34;&gt;last post&lt;/a&gt; I wrote that we need PHP developers, a security engineer and a system administrator. For all positions we got interesting inquiries already. That&amp;rsquo;s great, but should not hinder you from sending your CV in case you are still interested. We have &lt;em&gt;multiple&lt;/em&gt; positions!&lt;/p&gt;
&lt;p&gt;But there is even more opportunity: Additionally we are looking for an ownCloud Desktop Client developer. That would be somebody fluid in C++ and Qt who likes to pick up responsibility for our desktop client together with the other guys on the team. Shifted responsibilities have created this space, and it is your chance to jump into the desktop sync topic which makes ownCloud really unique.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><a href="http://owncloud.com">ownCloud</a> is even more hiring. In my <a href="https://dragotin.wordpress.com/2016/08/03/owncloud-is-hiring/">last post</a> I wrote that we need PHP developers, a security engineer and a system administrator. For all positions we got interesting inquiries already. That&rsquo;s great, but should not hinder you from sending your CV in case you are still interested. We have <em>multiple</em> positions!</p>
<p>But there is even more opportunity: Additionally we are looking for an ownCloud Desktop Client developer. That would be somebody fluid in C++ and Qt who likes to pick up responsibility for our desktop client together with the other guys on the team. Shifted responsibilities have created this space, and it is your chance to jump into the desktop sync topic which makes ownCloud really unique.</p>
<p>The role includes working with the team to plan and roll out releases, coordinate with the server- and mobile client colleagues, nail out future developments, engage with community hackers and help with difficult support cases. And last but not least there is hacking fun on remarkable nice <a href="http://www.qt-project.org">Qt</a> based C++ code of our desktop client, together with high profile C++ hackers to learn from.</p>
<p>It is an ideal opportunity for a carer type of personality, to whom it is not enough to sit in the basement and only hack, but also to talk to people, organize, and become visible. Having a Qt- and/or <a href="http://www.kde.org">KDE</a> background is a great benefit. You would work from where you feel comfortable with as ownCloud is a distributed company.</p>
<p>The <a href="https://owncloud.org/install/#install-clients">ownCloud Client</a> is a very successful part of the ownCloud platform, it has millions of installations out there, and is released under GPL.</p>
<p>If you want to do something that matters, here you are! Send your CV today and do not forget to mention your github account :-)</p>
]]></content:encoded>
    </item>
    <item>
      <title>ownCloud is hiring!</title>
      <link>https://dragotin.codeberg.page/posts/owncloud-is-hiring/</link>
      <pubDate>Wed, 03 Aug 2016 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/owncloud-is-hiring/</guid>
      <description>&lt;p&gt;[caption id=&amp;ldquo;attachment_10199&amp;rdquo; align=&amp;ldquo;alignright&amp;rdquo; width=&amp;ldquo;300&amp;rdquo;]&lt;a href=&#34;http://owncloud.com/jobs&#34;&gt;&lt;img alt=&#34;Come join us!&#34; loading=&#34;lazy&#34; src=&#34;https://dragotin.codeberg.page/posts/owncloud-is-hiring/images/startup-photos-300x199.jpg&#34;&gt;&lt;/a&gt; Come join us![/caption]After the &lt;a href=&#34;https://owncloud.com/owncloud-secures-financing-expands-management-team/&#34;&gt;recent news&lt;/a&gt;, we are now back on stage and with this blog we want to point you to our open positions. Yes, we are hiring people to work on &lt;a href=&#34;http://owncloud.org&#34;&gt;ownCloud&lt;/a&gt;. ownCloud is an open source project, yes, but &lt;a href=&#34;https://www.owncloud.com&#34;&gt;ownCloud GmbH&lt;/a&gt;, the company behind the project, provides significant &lt;a href=&#34;https://owncloud.com/team&#34;&gt;people&amp;rsquo;s power&lt;/a&gt; to expand the project to serve the needs for both the community and ownCloud GmbH&amp;rsquo;s customers. So if you ever dreamed of getting paid for work on open source, read on.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>[caption id=&ldquo;attachment_10199&rdquo; align=&ldquo;alignright&rdquo; width=&ldquo;300&rdquo;]<a href="http://owncloud.com/jobs"><img alt="Come join us!" loading="lazy" src="/posts/owncloud-is-hiring/images/startup-photos-300x199.jpg"></a> Come join us![/caption]After the <a href="https://owncloud.com/owncloud-secures-financing-expands-management-team/">recent news</a>, we are now back on stage and with this blog we want to point you to our open positions. Yes, we are hiring people to work on <a href="http://owncloud.org">ownCloud</a>. ownCloud is an open source project, yes, but <a href="https://www.owncloud.com">ownCloud GmbH</a>, the company behind the project, provides significant <a href="https://owncloud.com/team">people&rsquo;s power</a> to expand the project to serve the needs for both the community and ownCloud GmbH&rsquo;s customers. So if you ever dreamed of getting paid for work on open source, read on.</p>
<h2 id="what-we-do---what-you-will-work-on">What we do - what you will work on</h2>
<p>The call is for people who understand the vision of bringing the idea ownCloud to an enterprise ready level: ownCloud is not only running on individual open source enthusiasts hardware, but also on sites with huge amounts of data like CERN or the Sciebo project, and at large companies who want to work with their data in a secure way.</p>
<p>To provide the best solution for all of them we are looking for:</p>
<h3 id="a-system-administrator">A <a href="https://owncloud.com/jobs#systemsadministrator">System Administrator</a></h3>
<p>In this role, you make sure that the infrastructure that we use in ownCloud is up and running. That involves troubleshooting and streamlining existing infrastructure, but also designing new services. If you love virtualization of all kinds and have an eye for security, this position is for you. Of course all this does not only happen behind closed doors, but you will be in contact with the open source community around ownCloud.</p>
<h3 id="the-application-security-engineer">The <a href="https://owncloud.com/jobs#applicationsecurityengineer">Application Security Engineer</a></h3>
<p>For security professionals who would like to take on a high profile open source project. As security is one of the core values of ownCloud, we are looking for somebody who constantly monitors the code flowing in for security problems, is able to find glitches in existing code and handle the bug bounty program. That and more is the task of this high profile position.</p>
<h3 id="a-software-engineer-php">A <a href="https://owncloud.com/jobs#softwareengineerphp">Software Engineer PHP</a></h3>
<p>For engineers with a passion for good software design and a love for writing code without being code monkeys: In this role you iron the server part of our platform, build new features, work on fixing bugs with the support colleagues and bother the architect with new ideas how to make the thing even better. For this you need to urge to get down and dirty with code, feel yourself comfortable in a team of high profile developers who can teach you things and learn from you.</p>
<h3 id="php-or-what">PHP or what?</h3>
<p>Yes, ownCloud is written in PHP, and PHP is the most important, but by far not the only language that we use for the ownCloud platform.</p>
<p>Before you turn your back because of PHP, please think twice. There are a lot of good reasons why we are going with PHP, some of them are named in <a href="https://owncloud.org/blog/owncloud-and-php/">this blog</a>, but there is more: For example PHP7: With PHP 7 (which <a href="https://owncloud.org/blog/php-7-is-here-and-owncloud-is-ready/">can be used</a> with ownCloud) the language has caught up with many criticism it faced before and has done a big leap.</p>
<p>And anyway, the language of a system is not the only thing that is important in a developers life. It is rather how many people use, love and recommend the project and the development processes the team lives. And in all that points, ownCloud is already awesome, and will become even more with your help.</p>
<p>Send your resume in to <a href="mailto:work@owncloud.com">work@owncloud.com</a> so we can get talking!</p>
]]></content:encoded>
    </item>
    <item>
      <title>ownCloud Client 2.2.x</title>
      <link>https://dragotin.codeberg.page/posts/owncloud-client-2-2-x/</link>
      <pubDate>Fri, 24 Jun 2016 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/owncloud-client-2-2-x/</guid>
      <description>&lt;p&gt;A couple of weeks ago we released another significant milestone of the ownCloud Client, called version 2.2.0, followed by two small maintenance releases. (&lt;a href=&#34;https://owncloud.org/install/#install-clients&#34;&gt;download&lt;/a&gt;). I&amp;rsquo;d like to highlight some of the new features and the &lt;a href=&#34;https://owncloud.org/changelog/desktop&#34;&gt;changes&lt;/a&gt; that we have made to improve the user experience:&lt;/p&gt;
&lt;h2 id=&#34;overlay-icons&#34;&gt;Overlay Icons&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://doc.owncloud.org/desktop/2.2/navigating.html#file-manager-overlay-icons&#34;&gt;Overlay icons&lt;/a&gt; for the various file managers on our three platforms already exist for quite some time, but it has turned out that the performance was not up to the mark for big sync folders. The reason was mainly that too much communication between the file manager plugin and the client was happening. Once asked about the sync state of a single file, the client had to jump through quite some hoops in order to retrieve the required information. That involved not only database access to the sqlite-based sync journal, but also file system interaction to gather file information. Not a big deal if it&amp;rsquo;s only a few, but if the user syncs huge amounts, these efforts do sum up.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>A couple of weeks ago we released another significant milestone of the ownCloud Client, called version 2.2.0, followed by two small maintenance releases. (<a href="https://owncloud.org/install/#install-clients">download</a>). I&rsquo;d like to highlight some of the new features and the <a href="https://owncloud.org/changelog/desktop">changes</a> that we have made to improve the user experience:</p>
<h2 id="overlay-icons">Overlay Icons</h2>
<p><a href="https://doc.owncloud.org/desktop/2.2/navigating.html#file-manager-overlay-icons">Overlay icons</a> for the various file managers on our three platforms already exist for quite some time, but it has turned out that the performance was not up to the mark for big sync folders. The reason was mainly that too much communication between the file manager plugin and the client was happening. Once asked about the sync state of a single file, the client had to jump through quite some hoops in order to retrieve the required information. That involved not only database access to the sqlite-based sync journal, but also file system interaction to gather file information. Not a big deal if it&rsquo;s only a few, but if the user syncs huge amounts, these efforts do sum up.</p>
<p>This becomes especially tricky for the propagation of changes upwards the file tree. Imagine there is a sync error happening in the foo/bar/baz/myfile. What should happen is that a warning icon appears on the icon for foo in the file manager, telling that within this directory, a problem exists. The complexity of the existing implementation was already high and adding this extra functionality would have reduced the reliability of the code lower than it already was.</p>
<p>Jocelyn was keen enough to do a refactoring of the underlying code which we call the SocketApi. Starting from the basic assumption that all files are in sync, and the code has just to care for these files that are new or changed, erroneous or ignored or similar, the amount of data to keep is very much reduced, which makes processing way faster.</p>
<h2 id="server-notifications">Server Notifications</h2>
<p>On the ownCloud server, there are situation where notifications are created which make the user aware of things that happened.</p>
<p>An example are <a href="https://doc.owncloud.com/server/9.0/user_manual/files/federated_cloud_sharing.html">federated shares</a>:</p>
<p>If somebody shares a folder with you, you previously had to acknowledge it through the web interface. This explicit step is a safety net to avoid people sharing tons of Gigabytes of content, filling up your disk.</p>
<p><img alt="notifications" loading="lazy" src="/posts/owncloud-client-2-2-x/images/notifications.png"></p>
<p>With 2.2.x, you can acknowledge the share right from the client, saving you the round trip to the web interface to check for new shares.</p>
<h2 id="keeping-an-eye-on-word--friends">Keeping an Eye on Word &amp; Friends</h2>
<p>Microsoft Word and other office tools are rather hard to deal with in syncing, because they do very strict file locking of the files that are worked on. So strict that the subsequent sync app is not even allowed to open the file, not even for reading. That would be required to be able to sync the file.</p>
<p>As a result the sync client needs to wait until word unlocks the file, and then continue syncing.</p>
<p>For previous version of the client, this was hard to detect and worked only if other changes happened in the same directory where the file in question resides.</p>
<p>With 2.2.0 we added a special watcher that keeps an eye on the office docs Word and friends are blocking. And once the files are unlocked, the watcher starts a sync run to get the files to the server, or down from the server.</p>
<h2 id="advances-on-desktop-sharing">Advances on Desktop Sharing</h2>
<p>The sharing has been further integrated and received several UX- and bugfixes. There is more feedback when performing actions so you know when your client is waiting for a response from the server. The client now also respect more data returned from the server if you have apps enabled on the server that for example limit the expiration date.</p>
<p>Further more we better respect the share permissions granted. This means that if somebody shared a folder without create permissions with you and you want to reshare this folder in the client you won&rsquo;t get the option to share with delete permissions. This avoids errors when sharing and is more in line with how the whole ownCloud platform handles re-sharing. We also adjusted the behavior for federated reshares with the server.</p>
<p>Please note to take full advantage of all improvements you will need to run at least server version 9.0.</p>
<p>Have fun!</p>
]]></content:encoded>
    </item>
    <item>
      <title>Volumio2 Release Candidate</title>
      <link>https://dragotin.codeberg.page/posts/volumio2-release-candidate/</link>
      <pubDate>Fri, 15 Apr 2016 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/volumio2-release-candidate/</guid>
      <description>&lt;p&gt;Last night I found time to finally install the first release candidate of &lt;a href=&#34;https://github.com/volumio/Volumio2&#34;&gt;Volumio 2&lt;/a&gt;, my preferred audio player software. This is more exciting than it sounds, because when I read &lt;a href=&#34;https://volumio.org/introducing-volumio-2/&#34;&gt;the blogpost&lt;/a&gt; last summer that &lt;a href=&#34;http://volumio.org&#34;&gt;Volumio&lt;/a&gt; is going to be completely rewritten, with replacing the base technologies, I was a bit afraid that this will be one of the last bits that we heard from this project. Too many cool projects died after famous last announcements like that.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Last night I found time to finally install the first release candidate of <a href="https://github.com/volumio/Volumio2">Volumio 2</a>, my preferred audio player software. This is more exciting than it sounds, because when I read <a href="https://volumio.org/introducing-volumio-2/">the blogpost</a> last summer that <a href="http://volumio.org">Volumio</a> is going to be completely rewritten, with replacing the base technologies, I was a bit afraid that this will be one of the last bits that we heard from this project. Too many cool projects died after famous last announcements like that.</p>
<p>But not <a href="http://volumio.org">Volumio</a>.</p>
<p><img alt="volumio2" loading="lazy" src="/posts/volumio2-release-candidate/images/volumio2.png"></p>
<p>After quite some development time the project released <a href="http://updates.volumio.org/pi/volumio/0.861/volumio-0.861-2016-03-25-pi.img.zip">RC1</a>. While there were a few small bugs in a beta, my feelings about the <a href="http://updates.volumio.org/pi/volumio/0.861/volumio-0.861-2016-03-25-pi.img.zip">RC1</a> are really positive. Volumio2 has a very nice and stylish GUI, a great improvement over Volumio1. Album-art is now nicely integrated in the playback pane and and everything is more shiny, even if the general concept is the same as in Volumio1.</p>
<p>I like it because it is <em>only</em> a music player. Very reduced on that, but also very thought through and focussed to fulfill that job perfectly. I just want to find and play music from my collection, quickly and comfortable and with good sound quality. No movies, series, images. Just sound.</p>
<p>About speed: While the scanning of my not too big music collection on a NAS was a bit of a time consuming task in the past, this feels now much faster (maybe thats only because of a faster network between the Raspberry and the NAS?). Searching, browsing and everything works quite fluid on an Raspberry2. And with the Hifiberry DAC for output, the sound quality is more than ok.</p>
<p>This is an release candidate of the first release of the rewritten project, and the quality is already very good. Nevertheless I found a few things that did not work for me or could be improved. That the volume control is not working is probably because of the Hifiberry DAC driver, I remember there was something, but haven&rsquo;t investigated yet.</p>
<p>There are some things in the GUI that could be looked at again: For example on the Browse page, there is the very well working search field. After entering the search term and Enter, the search result is displayed as a list of songs to select from. I wished that the songs were additionally grouped by albums, which should also be selectable to be pushed to the play queue.</p>
<p>Also it would be great if the Queue would somehow indicate which entry is currently played. I could not spot that.</p>
<p>But these are only minor findings which can easily be addressed later after enhancement requests were posted :-)</p>
<p>I think Volumio2 is already a great success, even before it was released! You should not hesitate to try it if you love to listen to music!</p>
<p>Thanks for the hard work Volumio-Team!</p>
]]></content:encoded>
    </item>
    <item>
      <title>ownCloud Chunking NG Part 3: Incremental Syncing</title>
      <link>https://dragotin.codeberg.page/posts/owncloud-chunking-ng-part-3-incremental-syncing/</link>
      <pubDate>Fri, 13 Nov 2015 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/owncloud-chunking-ng-part-3-incremental-syncing/</guid>
      <description>&lt;p&gt;This is the third and final part of a little blog series about a new chunking algorithm that we discussed in &lt;a href=&#34;http://www.owncloud.org&#34;&gt;ownCloud&lt;/a&gt;. You might be interested to read the first two parts &lt;a href=&#34;https://dragotin.wordpress.com/2015/06/22/owncloud-chunking-ng/&#34;&gt;ownCloud Chunking NG&lt;/a&gt; and &lt;a href=&#34;https://dragotin.wordpress.com/2015/07/10/owncloud-chunking-ng-part-2-announcing-an-upload/&#34;&gt;Announcing an Upload&lt;/a&gt; as well.&lt;/p&gt;
&lt;p&gt;This part makes a couple of ideas how the new chunking could be useful with a future feature of incremental sync (also called &lt;em&gt;delta sync&lt;/em&gt;) in ownCloud.&lt;/p&gt;
&lt;p&gt;In preparartion of delta sync the server could provide another new WebDAV route: remote.php/dav/blocks.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>This is the third and final part of a little blog series about a new chunking algorithm that we discussed in <a href="http://www.owncloud.org">ownCloud</a>. You might be interested to read the first two parts <a href="https://dragotin.wordpress.com/2015/06/22/owncloud-chunking-ng/">ownCloud Chunking NG</a> and <a href="https://dragotin.wordpress.com/2015/07/10/owncloud-chunking-ng-part-2-announcing-an-upload/">Announcing an Upload</a> as well.</p>
<p>This part makes a couple of ideas how the new chunking could be useful with a future feature of incremental sync (also called <em>delta sync</em>) in ownCloud.</p>
<p>In preparartion of delta sync the server could provide another new WebDAV route: remote.php/dav/blocks.</p>
<p>For each file, remote.php/dav/blocks/file-id exists as long as the server has valid checksums for blocks of the file which is identified by its unique file id.</p>
<p>A successful reply to remote.php/dav/blocks/file-id returns an JSON formatted data block with byte ranges and the respective checksums (and the checksum type) over the data blocks for the file. The client can use that information to calculate the blocks of data that has changed and thus needs to be uploaded.</p>
<p>If a file was changed on the server and as a result the checksums are not longer valid, access to remote.php/blocks/file-id is returning the 404 &ldquo;not found&rdquo; return code. The client needs to be able to handle missing checksum information at any time.</p>
<p>The server gets the checksums of file blocks along the upload of the chunks from the client. There is no obligation of the server to calculate the checksums of data blocks that came in other than through the clients, yet it can if there is capacity.</p>
<p>To implement incremental sync, the following high level processing could be implemented:</p>
<ol>
<li>The client downloads the blocklist of the file: GET remote.php/dav/blocks/file-id</li>
<li>If GET succeeded: Client computes the local blocklist and computes changes</li>
<li>If GET failed: All blocks of the file have to be uploaded.</li>
<li>Client sends request MKCOL /uploads/transfer-id as described in an earlier part of the blog.</li>
<li>For blocks that have changed: PUT data to /uploads/transfer-id/part-no</li>
<li>For blocks that have NOT changed: COPY /blocks/file-id/block-no /uploads/transfer-id/part-no</li>
<li>If all blocks are handled by either being uploaded or copied: Client sends MOVE /uploads/transfer-id /path/to/target-file to finalize the upload.</li>
</ol>
<p>This would be an extension to the previously described upload of complete files. The PROPFIND semantic on /uploads/transfer-id remains valid.</p>
<p>Depending on the amount of not changed blocks, this could be a dramatic cut for the data that have to be uploaded. More information has to be collected to find out how much that is.</p>
<p>Note that this is still in the idea- and to-be-discussed state, and not yet an agreed specification for a new chunking algorithm.</p>
<p>Please, as usual, share your feedback with us!</p>
]]></content:encoded>
    </item>
    <item>
      <title>DIY Net Player</title>
      <link>https://dragotin.codeberg.page/posts/diy-net-player/</link>
      <pubDate>Sun, 12 Jul 2015 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/diy-net-player/</guid>
      <description>&lt;p&gt;Something I wanted to share is a device I recently built. It is a complete net player for music files, served by a NAS. It&amp;rsquo;s now finished and &amp;ldquo;in production&amp;rdquo; now, so here is my report. [caption id=&amp;ldquo;attachment_616&amp;rdquo; align=&amp;ldquo;alignleft&amp;rdquo; width=&amp;ldquo;595&amp;rdquo;]&lt;a href=&#34;https://dragotin.files.wordpress.com/2015/07/cherear2a.png&#34;&gt;&lt;img alt=&#34;The cherry ear net player, based on raspberry pi and HifiBerry Amp+.&#34; loading=&#34;lazy&#34; src=&#34;https://dragotin.codeberg.page/posts/diy-net-player/images/cherear2a.png&#34;&gt;&lt;/a&gt; The cherry ear net player, based on raspberry pi and HifiBerry Amp+.[/caption]&lt;/p&gt;
&lt;h2 id=&#34;hardware&#34;&gt;Hardware&lt;/h2&gt;
&lt;p&gt;The device is based on a &lt;a href=&#34;https://www.raspberrypi.org/&#34;&gt;Raspberry&lt;/a&gt; &lt;a href=&#34;https://www.raspberrypi.org/products/model-b-plus/&#34;&gt;Model B+&lt;/a&gt; with a &lt;a href=&#34;https://www.hifiberry.com/&#34;&gt;HifiBerry&lt;/a&gt; &lt;a href=&#34;https://www.hifiberry.com/ampplus/&#34;&gt;Amp+&lt;/a&gt;. [caption id=&amp;ldquo;attachment_618&amp;rdquo; align=&amp;ldquo;alignleft&amp;rdquo; width=&amp;ldquo;446&amp;rdquo;]&lt;a href=&#34;https://dragotin.files.wordpress.com/2015/07/cherear1a.png&#34;&gt;&lt;img alt=&#34;Cherry Ear backside with connectors and power supply&#34; loading=&#34;lazy&#34; src=&#34;https://dragotin.codeberg.page/posts/diy-net-player/images/cherear1a.png&#34;&gt;&lt;/a&gt; Cherry Ear backside with connectors and power supply[/caption]The &lt;a href=&#34;https://www.hifiberry.com/ampplus/&#34;&gt;Amp+&lt;/a&gt; is a high-quality power amplifier that is mounted on the Raspberry mini computer, shortcutting the sub optimal audio system of the raspy. Only loudspeakers need to be connected, and this little combination is a very capable stereo audio system.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Something I wanted to share is a device I recently built. It is a complete net player for music files, served by a NAS. It&rsquo;s now finished and &ldquo;in production&rdquo; now, so here is my report. [caption id=&ldquo;attachment_616&rdquo; align=&ldquo;alignleft&rdquo; width=&ldquo;595&rdquo;]<a href="https://dragotin.files.wordpress.com/2015/07/cherear2a.png"><img alt="The cherry ear net player, based on raspberry pi and HifiBerry Amp+." loading="lazy" src="/posts/diy-net-player/images/cherear2a.png"></a> The cherry ear net player, based on raspberry pi and HifiBerry Amp+.[/caption]</p>
<h2 id="hardware">Hardware</h2>
<p>The device is based on a <a href="https://www.raspberrypi.org/">Raspberry</a> <a href="https://www.raspberrypi.org/products/model-b-plus/">Model B+</a> with a <a href="https://www.hifiberry.com/">HifiBerry</a> <a href="https://www.hifiberry.com/ampplus/">Amp+</a>. [caption id=&ldquo;attachment_618&rdquo; align=&ldquo;alignleft&rdquo; width=&ldquo;446&rdquo;]<a href="https://dragotin.files.wordpress.com/2015/07/cherear1a.png"><img alt="Cherry Ear backside with connectors and power supply" loading="lazy" src="/posts/diy-net-player/images/cherear1a.png"></a> Cherry Ear backside with connectors and power supply[/caption]The <a href="https://www.hifiberry.com/ampplus/">Amp+</a> is a high-quality power amplifier that is mounted on the Raspberry mini computer, shortcutting the sub optimal audio system of the raspy. Only loudspeakers need to be connected, and this little combination is a very capable stereo audio system.</p>
<h2 id="software-volumio">Software: Volumio</h2>
<p>On the Raspberry runs a specialised linux distribution with a web based audio player for audio files and web radio. The name of this project is <a href="http://volumio.org">Volumio</a> and it is one of my most favorite projects currently. What I like with it is that it is <em>only</em> a music player, and not a project that tries to manage all kind of media. Volumios user interface is accessible via web browser, and it is very user friendly, modern, pretty and clean.</p>
<p>It works on all size factors (from mobile phone to desktop) and is very easy to handle. Its a web interface to <a href="http://www.musicpd.org/">mpd</a> which runs on the raspi for the actual music indexing and playing.</p>
<p>[caption id=&ldquo;attachment_619&rdquo; align=&ldquo;alignleft&rdquo; width=&ldquo;400&rdquo;]<a href="https://dragotin.files.wordpress.com/2015/07/volumio.png"><img alt="Volumio User Interface Example" loading="lazy" src="/posts/diy-net-player/images/volumio.png"></a> Volumio User Interface[/caption]The distribution all is running on is an optimized raspbian, with a variety of kernel drivers for audio output devices. Everything is pre configured. Once the volumio image is written to SD-Card, the Raspberry boots up and the device starts to play nicely basically after network and media source was configured through the web interface.</p>
<p>It is impressive how the Volumio project aims for absolute simplicity in use, but also allows to play around with a whole lot of interesting settings. A lot can be, but very little has to be configured.</p>
<p>Bottomline: <a href="http://volumio.org">Volumio</a> is really a interesting project which you wanna try if you&rsquo;re interested in these things.</p>
<h2 id="the-housing">The Housing</h2>
<p>I built the housing out of cherry tree from the region here. I got it from friends growing cherries, and they gave a few very nice shelfs. It was sliced and planed to 10mm thickness. The dark inlay is teak which I got from 70&rsquo;s furniture that was found on bulky waste years ago.</p>
<p>After having everything cut, the cherry wood was glued together, with some internal help construction from plywood. After the sanding and polishing, the box was done.</p>
<p>[caption id=&ldquo;attachment_621&rdquo; align=&ldquo;alignright&rdquo; width=&ldquo;300&rdquo;]<a href="https://dragotin.files.wordpress.com/2015/07/sizes.png"><img alt="Sizes" loading="lazy" src="/posts/diy-net-player/images/sizes.png"></a> Sizes [cm][/caption]The Raspberry and Hifiberry are mounted on a little construction attached to the metal back cover, together with the speaker connector. The metal cover is tightend with one screw, and the whole electronics can be taken off the wood box by unscrewing it.</p>
<p>At the bottom of the device there is a switching power supply that provides the energy for the player.</p>
<h2 id="how-to-operate">How to Operate?</h2>
<p>The player is comletely operated from the web interface. The make all additional knobs and stuff superflous, the user even uses the tablet or notebook to adjust the volume. And since the device is never switched off, it does not even have a power button.</p>
<p>I combined it with Denon SC-M39 speakers. The music files come from a consumer NAS in the home network. The Raspberry is very well powerful enough for the software, and the Hifiberry device is surprisingly powerful and clean. The sound is very nice. Clear and fresh in the mid and heights, but still enough base, which never is annoying blurry or drones.</p>
<p>I am very happy about the result of this little project. Hope you like it :-)</p>
]]></content:encoded>
    </item>
    <item>
      <title>ownCloud Chunking NG Part 2: Announcing an Upload</title>
      <link>https://dragotin.codeberg.page/posts/owncloud-chunking-ng-part-2-announcing-an-upload/</link>
      <pubDate>Fri, 10 Jul 2015 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/owncloud-chunking-ng-part-2-announcing-an-upload/</guid>
      <description>&lt;p&gt;The &lt;a href=&#34;https://dragotin.wordpress.com/2015/06/22/owncloud-chunking-ng/&#34;&gt;first part&lt;/a&gt; of this little blog series explained the basic operations of chunk file upload as we set it up for discussion. This part goes a bit beyond and talks about an addition to that, called &lt;strong&gt;announcing the upload&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;With the processing described in the first part of the blog, the upload is done savely and with a clean approach, but it also has some drawbacks.&lt;/p&gt;
&lt;p&gt;Most notably the server does not know the target filename of the uploaded file upfront. Also it does not know the final size or mimetype of the target file. That is not a problem in general, but imagine the following situation: A big file should be uploaded, which would exceed the users quota. That would only become an error for the user once all uploads happened, and the final upload directory is going to be moved on the final file name.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>The <a href="https://dragotin.wordpress.com/2015/06/22/owncloud-chunking-ng/">first part</a> of this little blog series explained the basic operations of chunk file upload as we set it up for discussion. This part goes a bit beyond and talks about an addition to that, called <strong>announcing the upload</strong>.</p>
<p>With the processing described in the first part of the blog, the upload is done savely and with a clean approach, but it also has some drawbacks.</p>
<p>Most notably the server does not know the target filename of the uploaded file upfront. Also it does not know the final size or mimetype of the target file. That is not a problem in general, but imagine the following situation: A big file should be uploaded, which would exceed the users quota. That would only become an error for the user once all uploads happened, and the final upload directory is going to be moved on the final file name.</p>
<p>To avoid useless file transfers like that or to implement features like a file firewall, it would be good if the server would know these data at start of the upload and stop the upload in case it can not be accepted.</p>
<p>To achieve that, the client creates a file called _meta in /uploads/ before the upload of the chunks starts. The file contains information such as overall size, target file name and other meta information.</p>
<p>The server&rsquo;s reply to the PUT of the _meta file can be a fail result code and error description to indicate that the upload will not be accepted due to certain server conditions. The client should check the result codes in order to avoid not necessary upload of data volume of which the final MOVE would fail anyway.</p>
<p>This is just a collection of ideas for an improved big file chunking protocol, nothing is decided yet. But now is the time to discuss. We&rsquo;re looking forward to hearing your input.</p>
<p>The third and last part will describe how this plays into delta sync, which is especially interesting for big files, which are usually chunked.</p>
]]></content:encoded>
    </item>
    <item>
      <title>ownCloud Chunking NG</title>
      <link>https://dragotin.codeberg.page/posts/owncloud-chunking-ng/</link>
      <pubDate>Mon, 22 Jun 2015 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/owncloud-chunking-ng/</guid>
      <description>&lt;p&gt;Recently Thomas and me met in person and thought about an alternative approach to bring our big file chunking to the next level. &amp;ldquo;Big file chunking&amp;rdquo; is ownClouds algorithm to upload huge files to ownCloud with clients.&lt;/p&gt;
&lt;p&gt;This is the first of three little blog posts in which we want to present the idea and get your feedback. This is for open discussion, nothing is set in stone so far.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Recently Thomas and me met in person and thought about an alternative approach to bring our big file chunking to the next level. &ldquo;Big file chunking&rdquo; is ownClouds algorithm to upload huge files to ownCloud with clients.</p>
<p>This is the first of three little blog posts in which we want to present the idea and get your feedback. This is for open discussion, nothing is set in stone so far.</p>
<p>What is the downside of the current approach? Well, the current algorithm needs a lot of distributed knowledge between server and client to work: The naming scheme of the part files, semi secret headers, implicit knowledge. In addition to that, due to the character of the algorithm the server code is too much spread over the whole code base which makes maintaining difficult.</p>
<p>This situation could be improved with the following approach.</p>
<p>To handle chunked uploads, there will be a new WebDAV route, called remote.php/uploads. All uploads of files larger than the chunk size will go through this route.</p>
<p>In a nutshell, an upload of a big file will happen as parts to a directory under that new route. The client creates it through the new route. This initiates a new upload. If the directory could be created successfully, the client starts to upload chunks of the original file into that directory. The sequence of the chunks is set by the names of the chunk files created in the directory. Once all chunks are uploaded, the client submits a MOVE request the renames the chunk upload directory to the target file.</p>
<p>Here is a pseudo code description of the sequence:</p>
<p>1. Client creates an upload directory with a self choosen name (ideally a numeric upload id):</p>
<p>MKCOL remote.php/uploads/upload-id</p>
<p>2. Client sends a chunk:</p>
<p>PUT remote.php/uploads/upload-id/chunk-id</p>
<p>3. Client repeats 2. until all chunks have successfully been uploaded 4. Client finalizes the upload:</p>
<p>MOVE remote.php/uploads/upload-id /path/to/target-file</p>
<p>5. The MOVE sends the ETag that is supposed to be overwritten in the request header to server. Server returns new ETag and FileID as reply headers of the MOVE.</p>
<p>During the upload, client can retrieve the current state of the upload by a PROPFIND request on the upload directory. The result will be a listing of all chunks that are already available on the server with metadata such as mtime, checksum and size.</p>
<p>If the server decides to remove an upload, ie. because it hasn&rsquo;t been active for a time, it is free to remove the entire upload directory and return status 404 if a client tries to upload to. Also, a client is allowed to remove the entire upload directory to cancel an upload.</p>
<p>An upload is finalized by the MOVE request. Note that it&rsquo;s a MOVE of a directory on a single file. This operation is not supported in normal file systems, but we think in this case, it has a nice well descriptive meaning. A MOVE is known as an atomic and fast operation, and that way it should be implemented by the server.</p>
<p>Also note that only with the final MOVE the upload operation is associated with the final destination file. We think that this approach already is a great improvement, because there is always a clear state of the upload with no secret knowledge hidden in the process.</p>
<p>In the next blog I will discuss an extension to this that adds more features to the process.</p>
<p>What do you think so far? Your feedback is appreciated, best on the <a href="https://mailman.owncloud.org/mailman/listinfo/devel">ownCloud devel mailinglist</a>!</p>
]]></content:encoded>
    </item>
    <item>
      <title>ownCloud Client 1.8.0 Released</title>
      <link>https://dragotin.codeberg.page/posts/owncloud-client-1-8-0-released/</link>
      <pubDate>Tue, 17 Mar 2015 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/owncloud-client-1-8-0-released/</guid>
      <description>&lt;p&gt;Today, we&amp;rsquo;re happy to release the best ownCloud Desktop Client ever to our community and users! It is &lt;a href=&#34;https://owncloud.org/changelog/desktop/&#34;&gt;ownCloud Client 1.8.0&lt;/a&gt; and it will push syncing with ownCloud to a new level of performance, stability and convenience.&lt;/p&gt;
&lt;p&gt;[caption id=&amp;ldquo;attachment_586&amp;rdquo; align=&amp;ldquo;alignleft&amp;rdquo; width=&amp;ldquo;300&amp;rdquo;]&lt;a href=&#34;https://dragotin.files.wordpress.com/2015/03/sharedialog1.png&#34;&gt;&lt;img alt=&#34;The Share Dialog&#34; loading=&#34;lazy&#34; src=&#34;https://dragotin.files.wordpress.com/2015/03/sharedialog1.png?w=300&#34;&gt;&lt;/a&gt; The Share Dialog[/caption]This release brings a new integration into the operating system file manager. With 1.8.0, there is a new context menu that opens a dialog to allow the user to create a public link on a synced file. This link can be forwarded to other users who get access to the file via ownCloud.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Today, we&rsquo;re happy to release the best ownCloud Desktop Client ever to our community and users! It is <a href="https://owncloud.org/changelog/desktop/">ownCloud Client 1.8.0</a> and it will push syncing with ownCloud to a new level of performance, stability and convenience.</p>
<p>[caption id=&ldquo;attachment_586&rdquo; align=&ldquo;alignleft&rdquo; width=&ldquo;300&rdquo;]<a href="https://dragotin.files.wordpress.com/2015/03/sharedialog1.png"><img alt="The Share Dialog" loading="lazy" src="https://dragotin.files.wordpress.com/2015/03/sharedialog1.png?w=300"></a> The Share Dialog[/caption]This release brings a new integration into the operating system file manager. With 1.8.0, there is a new context menu that opens a dialog to allow the user to create a public link on a synced file. This link can be forwarded to other users who get access to the file via ownCloud.</p>
<p>Also the clients behavior when syncing files that are opened by other applications on Windows has greatly been improved. The problems with file locking some users saw for example with MS office apps were fixed.</p>
<p>Another area of improvements is again performance. With latest ownCloud servers, the client uses even more parallized requests, now for all kind of operations. Depending on the synced data structure, this can make a huge difference.</p>
<p>All the other changes, improvements and bug-fixes are too hard to count. Finally, this release received around 700 git <a href="https://github.com/owncloud/client/commits/1.8">commits</a> compared to the previous release.</p>
<p>All this is only possible with the powerful and awesome community of ownClouders. We received a lot of very good contributions through the GitHub tracker, which helped us to nail down a lot of issues and improved the client tremendously.</p>
<p>But this time we&rsquo;d like to specifically point out the code contributions of Alfie &ldquo;Azelphur&rdquo; Day and Roeland Jago Douma who contributed significant code bits to the sharing dialog on the client and also some server code.</p>
<p>A great thanks goes out to all of you who helped with this release. It was a great experience again and it is big fun working with you!</p>
<p>We hope you enjoy 1.8.0! Get it from <a href="https://owncloud.org/install/#desktop">https://owncloud.org/install/#desktop</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>ownCloud ETags and FileIDs</title>
      <link>https://dragotin.codeberg.page/posts/owncloud-etags-and-fileids/</link>
      <pubDate>Fri, 13 Mar 2015 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/owncloud-etags-and-fileids/</guid>
      <description>&lt;p&gt;Often questions come up about the meaning of FileIDs and ETags. Both values are metadata that the ownCloud Server stores for each of the files and directories in the server database. These values are fundamentally important for the integrity of data in the overall system. Here are some thoughts about what they are why these are so important.This is mainly from a clients point of view, but there are other use cases as well.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Often questions come up about the meaning of FileIDs and ETags. Both values are metadata that the ownCloud Server stores for each of the files and directories in the server database. These values are fundamentally important for the integrity of data in the overall system. Here are some thoughts about what they are why these are so important.This is mainly from a clients point of view, but there are other use cases as well.</p>
<h2 id="etags">ETags</h2>
<p>ETags are strings that describe exactly one specific version of a file (example: 71a89a94b0846d53c17905a940b1581e).</p>
<p><img alt="data2" loading="lazy" src="/posts/owncloud-etags-and-fileids/images/data2.jpg">Whenever the file changes, the ownCloud server will make sure that the ETag of the specific file changes as well. It is not important in which way the ETag changes, it also does not have to be strictly unique, it&rsquo;s just important that it changes reliably if the file changes for whatever reason. However, ETags should not change if the file was not changed, otherwise the client will download that file again.</p>
<p>In addition to that, The ETags of the parent directories of the file have to change as well, up to the root directory. That way client systems can detect changes that happen somewhere in the file tree. This is in contrast to normal computer file systems where only the modification time of the direct parent of a file is changing.</p>
<h2 id="file-ids">File IDs</h2>
<p>FileIDs are also strings that are created once at the creation time of the file (example: 00003867ocobzus5kn6s).</p>
<p><img alt="data3" loading="lazy" src="/posts/owncloud-etags-and-fileids/images/data3.jpg">But contrary to the ETags, the file IDs should never ever change over the files lifetime. Not on an edit of the file, and also not if the file is renamed or moved. One of the important usages of the FileID is to detect renames and moves of a file on the server.</p>
<p>The FileID is used as an unique key to identify a file. FileIDs need to be unique within one ownCloud, and in inter-owncloud connections, they must be compared together with the ownCloud server instance id.</p>
<p>Also, the FileIDs must never be recycled or reused.</p>
<h2 id="checksums">Checksums?</h2>
<p>Often ETags and FileIDs are confused with checksums such as MD5 or SHA1 sums over the file content.</p>
<p>Neither ETags nor FileIDs are, even if there are similarities: Especially the ETag can be seen as a checksum over the file content. However, file checksums are way more costly to compute than just a value that only needs to change somehow.</p>
<h2 id="what-happens-if">What happens if&hellip;?</h2>
<p>Let&rsquo;s make a thought experiment and consider what it would mean especially for sync clients if either fileID or ETag gets lost from the servers database.</p>
<p>If ETags are lost, clients loose the ability to decide if files have changed since the last time that was checked by the clients. So what happens is that the client will download the files again, byte-wise compare them to the local file and use the server file if the files differ. A conflict file will be created. Because the ETag was lost, the server will create new ETags on download. This could be improved by the server creating more predictable ETags based on the storage backends capabilities.</p>
<p>If the ETags are changed without reason, for example because a backup was played back on the server, the clients will consider the ones with changed ETags as changed and redownload them. Conflict handling will happen as described if there was a local change as well.</p>
<p>For the user, this means a lot of unnecessary downloads as well as potential conflicts. However, there will not be data loss.</p>
<p>If FileIDs got lost or changed, the problem is that renames or moves on server side can no longer be detected. That would result in a new download of files in the good case. If a fileID however changes to something that was used before, that can result in a rename that overwrites an unrelated file. That is because clients might still have the FileID associated with another file.</p>
<p>Hopefully this little post explains the importance of the additional metadata that we maintain in ownCloud.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Incremental Sync in ownCloud</title>
      <link>https://dragotin.codeberg.page/posts/incremental-sync-in-owncloud/</link>
      <pubDate>Mon, 09 Feb 2015 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/incremental-sync-in-owncloud/</guid>
      <description>&lt;p&gt;[caption id=&amp;ldquo;attachment_548&amp;rdquo; align=&amp;ldquo;alignright&amp;rdquo; width=&amp;ldquo;240&amp;rdquo;]&lt;a href=&#34;https://dragotin.files.wordpress.com/2015/02/incremental.jpg&#34;&gt;&lt;img alt=&#34;KLAAS&#34; loading=&#34;lazy&#34; src=&#34;https://dragotin.codeberg.page/posts/incremental-sync-in-owncloud/images/incremental.jpg&#34;&gt;&lt;/a&gt;Nautilus Shell, &lt;a href=&#34;https://www.flickr.com/photos/davidbygott/5241519842/&#34;&gt;David Bygott&lt;/a&gt;[/caption] Incremental Sync is probably the feature that most people ask, or even sometimes cry for. Recently there was another wave of discussion about ownCloud is doing incremental sync or not. I will try again (as &lt;a href=&#34;https://github.com/owncloud/client/issues/179#issuecomment-60766282&#34;&gt;in this issue&lt;/a&gt;) to explain why we decided to slowing that feature. Slowing means that it will be done later, not never, as it was stated. It is just that we think that other things benefit the whole idea of ownCloud more. That has plain technical reasons. Let&amp;rsquo;s dive a bit into.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>[caption id=&ldquo;attachment_548&rdquo; align=&ldquo;alignright&rdquo; width=&ldquo;240&rdquo;]<a href="https://dragotin.files.wordpress.com/2015/02/incremental.jpg"><img alt="KLAAS" loading="lazy" src="/posts/incremental-sync-in-owncloud/images/incremental.jpg"></a>Nautilus Shell, <a href="https://www.flickr.com/photos/davidbygott/5241519842/">David Bygott</a>[/caption] Incremental Sync is probably the feature that most people ask, or even sometimes cry for. Recently there was another wave of discussion about ownCloud is doing incremental sync or not. I will try again (as <a href="https://github.com/owncloud/client/issues/179#issuecomment-60766282">in this issue</a>) to explain why we decided to slowing that feature. Slowing means that it will be done later, not never, as it was stated. It is just that we think that other things benefit the whole idea of ownCloud more. That has plain technical reasons. Let&rsquo;s dive a bit into.</p>
<h2 id="rsync-is-great">RSync is great</h2>
<p>Nobody will object here. In a nutshell, this is how <a href="https://rsync.samba.org/">rsync</a> works: There is a file on the client and on the server. The idea is to not transfer the entire file from one side to the other if either side changes, but only the parts that have changed.</p>
<p>The original rsync does that by chopping the file to blocks of a given size and calculating a checksum of each of the blocks. The list of checksums is sent to the server and - here&rsquo;s the trick - the server looks at its version of the file and for each of the checksum in the list, it seeks if it finds the same block in the file. That will often not be at the same position in the file, but maybe somewhere else. That is done for each block, and finally the server will work out the information of which parts of the file are existing and which are not and have to be sent by the client.</p>
<p>By way of this clever algorithm, we will just have to transmit a very small fraction of the changed file, because most content did not change. And that is what we want! Yeah!</p>
<p>Mission accomplished? No, not really. While there is basically nothing wrong with the idea in general, there is a severe architectural downside. The rsync algorithm depends on a strong server component which, for each file, searches around and calculates checksums. In an environment where we potentially have a lot of clients connecting to one server that would create a huge load on it which we need to avoid. So what if instead of putting the burden on the server&rsquo;s shoulder, we could make the clients take the responsibility?</p>
<p>And guess what, there has been somebody thinking about that before and he says:</p>
<h2 id="use-zsync-for-this">Use ZSync for this!</h2>
<p><a href="http://zsync.moria.org.uk">ZSync</a> basically turns the idea of rsync upside down and shifts the calculation of checksums away from the server and onto the clients. That means that with zsync, the server can keep a static list of checksums for every block specific to a version of a file. The list can for example be computed along the upload of the file to the server. From that point it does not change, as long as the file does not change. That means less computation work for the server, and maybe this job can also put into the client.</p>
<p>So far that sounds cool (even though some questions remain) and sounds like something that can help us.</p>
<p>Unfortunately, the approach does not work very well for compressed files. The reason is that if a file gets compressed, even if only a couple of bytes in the original file change, the compression algorithm usually changes a lot all over the entire file. As a result, the zsync algorithm can only compute a comparably large diff. Given the cost of computation that can turn inefficient quickly.</p>
<p><em>&ldquo;But who uses compressed files?&rdquo;</em> you might argue. The problem is that almost each and every of the files in everyday life are stored compressed. This is for example true for Microsoft Office files and the Open Document files produced by LibreOffice and Apache OpenOffice. They are really renamed ZIP containers, that hold the documents with all its embedded files, etc.</p>
<p>Now of course you will reply that zsync has an improved algorithm for compressed files. Yes, true, that is a great thing. However, it involves that the compressed file gets uncompressed to be worked on by zsync. Afterwards it is compressed again. And that is the problem: As common compressors do not leave a hint behind _how_ the file was compressed, it is not possible to reliably recreate a file that is equivalent to the original one. How will apps react on a file that has changed its compression scheme?</p>
<h2 id="results">Results</h2>
<p>As said above, yes, we will at one point of time implement something along the zsync algorithm. The explanations above should show however, that at the current state of ownCloud, other features will improve ownClouds performance, stability and convenience more. And that is the important thing for us, more than pleasing the loudest barking dogs. Here is a rough outline of how I would move on on this, open for your suggestions and critique: The zsync algorithm is designed to improve downloads. We need it for both up- and downloads, and it needs to be thought through if that is also possible. For the server side functionality, there are a couple of open questions which carefully have to be investigated. Preferably an app can be written that provides the handling of the zsync checksum lists. That has to be clarified and discussed, and that will take a while. But as outlined above, this idea is only clever for a limited amount of file types. So what I would suggest first is that we get an idea of the file types users usually store in their ownCloud, so that we can do a validated estimate on how this feature helps. I will follow up on this first step.</p>
<p>Thanks for reading this long blog post. Thanks <a href="https://daniel.molkentin.net/">Danimo</a> for lectorate.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Dolphin Overlay Icons for  ownCloud Sync Client</title>
      <link>https://dragotin.codeberg.page/posts/overlay-icons-for-dolphin-in-owncloud-client/</link>
      <pubDate>Mon, 08 Dec 2014 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/overlay-icons-for-dolphin-in-owncloud-client/</guid>
      <description>&lt;p&gt;Our recent &lt;a href=&#34;https://dragotin.wordpress.com/2014/11/08/owncloud-client-1-7-0-released/&#34;&gt;ownCloud Client 1.7.0 release&lt;/a&gt; contains the new feature of overlay icons in GNOME nautilus, MacOSX and Windows. That is nice, but that makes us as old &lt;a href=&#34;http://www.kde.org&#34;&gt;KDE&lt;/a&gt; guys sad as &lt;a href=&#34;https://userbase.kde.org/Dolphin&#34;&gt;Dolphin&lt;/a&gt; was missing on the list. [caption id=&amp;ldquo;attachment_536&amp;rdquo; align=&amp;ldquo;alignnone&amp;rdquo; width=&amp;ldquo;554&amp;rdquo;]&lt;img alt=&#34;KDE&amp;rsquo;s Dolphin with overlay icons for ownCloud&#34; loading=&#34;lazy&#34; src=&#34;https://dragotin.codeberg.page/posts/overlay-icons-for-dolphin-in-owncloud-client/images/dolphin1.png&#34;&gt; KDE&amp;rsquo;s Dolphin with overlay icons for ownCloud&amp;rsquo;s file sync[/caption] That needs to change, and here we go: &lt;a href=&#34;http://woboq.com&#34;&gt;Olivier Goffart&lt;/a&gt; wrote a patch to do overlay icons also in Dolphin, which was not straightforward, because in addition to an dolphin plugin, also a patch for libkonq was required.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Our recent <a href="https://dragotin.wordpress.com/2014/11/08/owncloud-client-1-7-0-released/">ownCloud Client 1.7.0 release</a> contains the new feature of overlay icons in GNOME nautilus, MacOSX and Windows. That is nice, but that makes us as old <a href="http://www.kde.org">KDE</a> guys sad as <a href="https://userbase.kde.org/Dolphin">Dolphin</a> was missing on the list. [caption id=&ldquo;attachment_536&rdquo; align=&ldquo;alignnone&rdquo; width=&ldquo;554&rdquo;]<img alt="KDE&rsquo;s Dolphin with overlay icons for ownCloud" loading="lazy" src="/posts/overlay-icons-for-dolphin-in-owncloud-client/images/dolphin1.png"> KDE&rsquo;s Dolphin with overlay icons for ownCloud&rsquo;s file sync[/caption] That needs to change, and here we go: <a href="http://woboq.com">Olivier Goffart</a> wrote a patch to do overlay icons also in Dolphin, which was not straightforward, because in addition to an dolphin plugin, also a patch for libkonq was required.</p>
<p>We prepared some test packages in our development repository <a href="https://build.opensuse.org/project/show/isv:ownCloud:devel">isv:ownCloud:devel</a> for those who wanna try and know their way around. Current it only builds for a couple of <a href="http://www.opensuse.org">openSUSE Distros</a>. You need to install <em>kdebase4</em> and <em>dolphin-plugins</em> and after installation, it&rsquo;s easiest to restart KDE to make it registered. But be <strong>warned</strong>: The two packages replace packages from the previous installation, only do it if you really know what you&rsquo;re doing!</p>
<p>It would be great if at least the libkonq patch could make it to upstream, and I would appreciate if somebody who is a bit more fluent with recent KDE libs development could give me a hand on that. Otherwise, if distros wanna pick up the patches to make the overlays work, of course the patches are here: <a href="https://build.opensuse.org/package/view_file/isv:ownCloud:devel/kdebase4/0001-KOverlayIconPlugin.patch?expand=1">patch for libkonq</a> and the <a href="https://build.opensuse.org/source/isv:ownCloud:devel/dolphin-plugins/owncloud.tar.gz?rev=0b052eb57f17ed05110338ddd57bd3b5">ownCloud Dolphin plugin</a>. The plugin will work with the released version 1.7.0 of ownCloud Client.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Workshop at CERN</title>
      <link>https://dragotin.codeberg.page/posts/workshop-at-cern/</link>
      <pubDate>Thu, 27 Nov 2014 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/workshop-at-cern/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://home.web.cern.ch/about&#34;&gt;&lt;img alt=&#34;cern_logo&#34; loading=&#34;lazy&#34; src=&#34;https://dragotin.codeberg.page/posts/workshop-at-cern/images/cern_logo1.png&#34;&gt;&lt;/a&gt;Last week, Thomas, Christian and myself were attending a workshop in &lt;a href=&#34;http://home.web.cern.ch/&#34;&gt;CERN&lt;/a&gt;, the European Organization for Nuclear Research in Geneve, Switzerland.&lt;/p&gt;
&lt;p&gt;CERN is a very inspiring place, attracting intelligent people from all over the world to get behind the secrets of our being. I felt honored to be at the place where for example the world wide web was invented.&lt;/p&gt;
&lt;p&gt;The event was called &lt;a href=&#34;https://indico.cern.ch/event/336753/&#34;&gt;Workshop on Cloud Services for File Synchronisation and Sharing&lt;/a&gt; and was hosted by CERN IT department. There have been around 100 attendees.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><a href="http://home.web.cern.ch/about"><img alt="cern_logo" loading="lazy" src="/posts/workshop-at-cern/images/cern_logo1.png"></a>Last week, Thomas, Christian and myself were attending a workshop in <a href="http://home.web.cern.ch/">CERN</a>, the European Organization for Nuclear Research in Geneve, Switzerland.</p>
<p>CERN is a very inspiring place, attracting intelligent people from all over the world to get behind the secrets of our being. I felt honored to be at the place where for example the world wide web was invented.</p>
<p>The event was called <a href="https://indico.cern.ch/event/336753/">Workshop on Cloud Services for File Synchronisation and Sharing</a> and was hosted by CERN IT department. There have been around 100 attendees.</p>
<p>I was giving a talk called <a href="https://indico.cern.ch/event/336753/session/5/contribution/14">The File Sync Algorithm of the ownCloud Desktop Clients</a>, which was very well received. If you happen to be interested in the sync algorithm we&rsquo;re using, the <a href="https://indico.cern.ch/event/336753/session/5/contribution/14/material/slides/0.pdf">slides</a> are a nice starting point.</p>
<p>What amazed me most was the great atmosphere and the very positive attitude towards ownCloud. Many representatives of edu organizations that use ownCloud to which I talked were very happy with the product (even though there are problems here and there) from the technical POV. A lot of interesting setups and environments were explained and also showcased ownCloud&rsquo;s flexibility to integrate into existing structures.</p>
<p>What also was pointed out by the attendees of the workshop was the importance of the fact that ownCloud is open source. Non free software does not have a chance at all in that market. That was the very clear statement in the final discussion session of the workshop.</p>
<p>The <a href="https://indico.cern.ch/event/336753/session/1/contribution/28">keynote</a> was given by <a href="http://www.cis.upenn.edu/~bcpierce/">Prof. Benjamin Pierce</a> from Pennsylvania with the title <em>Principles of Synchronization</em>. He is the lead author of the project Unison which is another opensource sync project. It&rsquo;s sync engine marks very high quality, but is not &ldquo;up-to-date software&rdquo; any more as he said. I had the pleasure to spend quite some time with him to discuss syncing in general and our sync algorithms in particular, amongst other interesting things.</p>
<p>[caption id=&ldquo;attachment_525&rdquo; align=&ldquo;alignleft&rdquo; width=&ldquo;254&rdquo;]<img alt="Atlas Detectors" loading="lazy" src="/posts/workshop-at-cern/images/detector1.jpg"> Atlas Detectors[/caption]As part of his work, he works with a tool called <a href="http://www.quviq.com/products/erlang-quickcheck/">QuickCheck</a> to do very enhanced testing. One night we were sitting in the cantina there hacking to adopt the testing to ownCloud client and server. The first results were very promising, for example we revealed a &ldquo;problem&rdquo; in our sync core that I knew of, which formally is a sync error, yet very very unlikely to happen and thus accepted for the sake of an easier algorithm. It was impressive how fast the testing method was identifying that problem. I like to follow up with the testing method.</p>
<p>Furthermore we met with a whole variety of other interesting people, backend developers, operators of the huge datasets (100 Peta-Byte), the director of CERN IT, a maintainer of the <a href="https://www.scientificlinux.org">Scientific Linux</a> and others.</p>
<p>Also we had the chance to visit the Atlas experiment, it is 100 meter underneath the surface and huge. That is where the particles are accelerated, and it was great to have the chance to visit that.</p>
<p>The trip was a great experience and very motivating for me, and I think it should be for all of us all doing <a href="http://www.owncloud.org">ownCloud</a>. Frank was really hitting a nerv when he was seeding the idea, and we all were doing a nice product of it so far.</p>
<p>Lets do more of this cool stuff!</p>
]]></content:encoded>
    </item>
    <item>
      <title>ownCloud Client 1.7.0 Released</title>
      <link>https://dragotin.codeberg.page/posts/owncloud-client-1-7-0-released/</link>
      <pubDate>Sat, 08 Nov 2014 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/owncloud-client-1-7-0-released/</guid>
      <description>&lt;p&gt;Yesterday we released ownCloud Client 1.7.0. It is available via &lt;a href=&#34;http://owncloud.org/install/#desktop&#34;&gt;ownCloud&amp;rsquo;s website&lt;/a&gt;. This client release marks the next big step in open source file synchronization technology and I am very happy that it is out now.&lt;/p&gt;
&lt;p&gt;The new release brings two lighthouse features which I&amp;rsquo;ll briefly describe here.&lt;/p&gt;
&lt;h2 id=&#34;overlay-icons&#34;&gt;Overlay icons&lt;/h2&gt;
&lt;p&gt;For the first time, this release has a feature that lives kind of outside the ownCloud desktop client program. That nicely shows that syncing is not only a functionality living in one single app, but a deeply integrated system add-on that affects various levels of desktop computing.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Yesterday we released ownCloud Client 1.7.0. It is available via <a href="http://owncloud.org/install/#desktop">ownCloud&rsquo;s website</a>. This client release marks the next big step in open source file synchronization technology and I am very happy that it is out now.</p>
<p>The new release brings two lighthouse features which I&rsquo;ll briefly describe here.</p>
<h2 id="overlay-icons">Overlay icons</h2>
<p>For the first time, this release has a feature that lives kind of outside the ownCloud desktop client program. That nicely shows that syncing is not only a functionality living in one single app, but a deeply integrated system add-on that affects various levels of desktop computing.</p>
<p><img alt="Overlay Icons on Mac" loading="lazy" src="/posts/owncloud-client-1-7-0-released/images/overlays1.png">Here we&rsquo;re talking about overlay icons which are displayed in the popular file managers on the supported desktop platforms. The overlay icons are little additional icons that stick on top of the normal file icons in the file manager, like the little green circles with the checkmark on the screenshot.</p>
<p>The overlays visualize the sync state of each file or directory: The most usual case that a file is in sync between server and client is shown as a green checkmark, all good, that is what you expect. Files in the process of syncing are marked with a blue spinning icon. Files which are excluded from syncing show a yellow exclamation mark icon. And errors are marked by a red sign.</p>
<p>What comes along simple and informative for the user requires quite some magic behind the curtain. I promise to write more about that in another blog post soon.</p>
<h2 id="selective-sync">Selective Sync</h2>
<p>Another new thing in 1.7.0 is the selective sync.</p>
<p>In ownCloud client it was always possible to have more than one sync connection. Using that, users do not have to sync their entire server data to one local directory as with many other sync solutions. A more fine granular approach is possible here with ownCloud.</p>
<p><a href="https://dragotin.files.wordpress.com/2014/11/selectivesync1.jpg"><img alt="Selective Sync" loading="lazy" src="/posts/owncloud-client-1-7-0-released/images/selectivesync1.jpg"></a>For example, mp3&rsquo;s from the Music dir on the ownCloud go to the media directory locally. Digital images which are downloaded from the camera to the &ldquo;photos&rdquo; dir on the laptop are synced through a second sync connection to the server photo directory. All the other stuff that appears to be on the server is not automatically synced to the laptop which keeps it organized and the laptop harddisk relaxed.</p>
<p>While this is of course still possible we added another level of organization to the syncing. Within existing sync connections now certain directories can be excluded and their data is not synced to the client device. This way big amounts of data can be easier organized depending on the demands of the target device.</p>
<p>To set this up, check out for the button <em>Choose what to Sync</em> on the Account page. It opens the little dialog to deselect directories from the server tree. Note that if you deselect a directory, it is removed locally, but not on the server.</p>
<h2 id="what-else">What else?</h2>
<p>There is way more we put into this release: A huge amount of bug fixes and detail improvements went in. Fixes for all parts of the application: Performance (such as database access improvements), GUI (such as detail improvements for the progress display), around the overall processing (like how network timeouts are handled) and the distribution of the applications (MacOSX installer and icons), just to name a few examples. Also a lot of effort went into the sync core where many nifty edge cases were analyzed and better handled.</p>
<p>Between version 1.6.2 and the 1.7.0 release more than 850 commits from 15 different authors were pushed into the git repository (1.6.3 and 1.6.4 were continued in the 1.6 branch which commits are also in the 1.7 branch). A big part of these are bug fixes.</p>
<h2 id="who-is-it">Who is it?</h2>
<p>Who does all this? Well, there are a couple of brave coders funded by the <a href="http://www.owncloud.com">ownCloud company</a> working on the client. And we do our share, but not everything. Also coding is only one thing. If you for example take some time and read around in <a href="https://github.com/owncloud/mirall/">the client github repo</a> it becomes clear that there are so many people around who contribute: Reporting bugs, testing again and again, answering silly looking questions, proposing and discussing improvements and all that (yes, and finally coding too). That is really a huge block, honestly.</p>
<p>Even if it sometimes becomes a bit heated, because we can not do everything fast enough, that still is motivating. Because what does that mean? People care! For the idea, for the project, for the stuff we do. How cool is that? Thank you!</p>
<p>Have fun with 1.7.0!</p>
]]></content:encoded>
    </item>
    <item>
      <title>Monitor the QObject Tree of a Qt App</title>
      <link>https://dragotin.codeberg.page/posts/monitor-the-qobject-tree-of-a-qt-app/</link>
      <pubDate>Thu, 14 Aug 2014 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/monitor-the-qobject-tree-of-a-qt-app/</guid>
      <description>&lt;p&gt;Because it is still reported that the &lt;a href=&#34;http://owncloud.org/sync-clients&#34;&gt;ownCloud Client&lt;/a&gt; has an increasing memory footprint when running for long time I am trying to monitor the QObject tree of the client. Valgrind does not report any memory problems with it so my suspicion was that somewhere QObjects are created with valid parent pointers referencing a long living object. These objects might accumulate unexpectedly over time and waste memory.&lt;/p&gt;
&lt;p&gt;So I tried to investigate the app with &lt;a href=&#34;http://kdemonkey.blogspot.de/2011/07/qt-inspector.html&#34;&gt;Qt Inspector&lt;/a&gt; of &lt;em&gt;Robert Knight&lt;/em&gt;. That&amp;rsquo;s a great tool, but it does not yet completely do what I need because it only shows QWidget based objects. But Robert was kind enough to put me on the right track, thanks a lot for that!&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Because it is still reported that the <a href="http://owncloud.org/sync-clients">ownCloud Client</a> has an increasing memory footprint when running for long time I am trying to monitor the QObject tree of the client. Valgrind does not report any memory problems with it so my suspicion was that somewhere QObjects are created with valid parent pointers referencing a long living object. These objects might accumulate unexpectedly over time and waste memory.</p>
<p>So I tried to investigate the app with <a href="http://kdemonkey.blogspot.de/2011/07/qt-inspector.html">Qt Inspector</a> of <em>Robert Knight</em>. That&rsquo;s a great tool, but it does not yet completely do what I need because it only shows QWidget based objects. But Robert was kind enough to put me on the right track, thanks a lot for that!</p>
<p>I tried this naive approach:</p>
<p>In the clients <a href="https://github.com/owncloud/mirall/blob/qobject_monitor/src/main.cpp">main.cpp</a>, I implemented these both callback functions:</p>
<p>[code language=&ldquo;cpp&rdquo;] QSet&lt;QObject*&gt; mObjects;</p>
<p>extern &ldquo;C&rdquo; Q_DECL_EXPORT void qt_addObject(QObject *obj) { mObjects.insert(obj); }</p>
<p>extern &ldquo;C&rdquo; Q_DECL_EXPORT void qt_removeObject(QObject *obj) { mObjects.remove(obj); } [/code]</p>
<p>Qt calls these callbacks whenever a QObject is created or deleted respectively. When the object is created I add it&rsquo;s pointer to the QSet mObjects, and if it is deleted, it is removed from the QSet. My idea was that after the QApp::exec() call returns, I would have to see which QObjects are still in the mObjects QSet. After a longer run of the client, I hoped to see an artificial amount of objects being left over.</p>
<p>Well, what should I say&hellip; No success so far: After first tests, it seems that the amount of left-over objects is pretty constant. Also, I don&rsquo;t see any objects that I would not kind of expect.</p>
<p>So this little experiment left more questions than answer: Is the suspicion correct that QObjects with a valid parent pointer can cause the memory growth? Is my test code as I did it so far able to detect that at all? Is it correct to do the analysis after the app.exec() call returned?</p>
<p>If you have any hints for me, please let me know! How would you tackle the problem?</p>
<p>Thanks!</p>
<p>This is the link to my modified main.cpp: <a href="https://github.com/owncloud/mirall/blob/qobject">https://github.com/owncloud/mirall/blob/qobject</a>_monitor/src/main.cpp</p>
]]></content:encoded>
    </item>
    <item>
      <title>Let&#39;s party!</title>
      <link>https://dragotin.codeberg.page/posts/lets-party/</link>
      <pubDate>Thu, 24 Jul 2014 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/lets-party/</guid>
      <description>&lt;p&gt;Yesterday, we &lt;a href=&#34;http://karlitschek.de/2014/07/owncloud-7-is-out/&#34;&gt;released ownCloud 7&lt;/a&gt;. You might have read that somewhere on the internet - it was widely announced and broadly picked up. If you do not have ownCloud yet, you really should try it now, and if you are one of the people happily using ownCloud for a while, update soon!&lt;/p&gt;
&lt;p&gt;In my opinion, ownCloud 7 is a real step ahead. So much work went into it from the brave server guys, and the result is simply impressive: It is fast, beautiful and fully focused on what it is supposed to be and do: File sync and share, even though you still have of course all the other useful stuff like calendaring and such.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Yesterday, we <a href="http://karlitschek.de/2014/07/owncloud-7-is-out/">released ownCloud 7</a>. You might have read that somewhere on the internet - it was widely announced and broadly picked up. If you do not have ownCloud yet, you really should try it now, and if you are one of the people happily using ownCloud for a while, update soon!</p>
<p>In my opinion, ownCloud 7 is a real step ahead. So much work went into it from the brave server guys, and the result is simply impressive: It is fast, beautiful and fully focused on what it is supposed to be and do: File sync and share, even though you still have of course all the other useful stuff like calendaring and such.</p>
<p>Apart from the <a href="http://owncloud.org/features">wellknown features</a> ownCloud 7 also brings some things that you do not see on the first look. Some of these things relate to syncing and as a guy working mainly on the sync client I am especially happy about that: Already with the current released clients you will see a performance win in syncing, because ownCloud 7 handles parallel HTTP requests way better. Moreover, ownCloud 7 sends some interesting information about it&rsquo;s files, and the next generation of sync clients will for example <em>know</em> which files are shared and their permissions. We are currently working on some exciting stuff on the client side, stay tuned.</p>
<p><img alt="Release Party ownCloud 7" loading="lazy" src="/posts/lets-party/images/relparty7.jpg"></p>
<p>That all should be reason enough to <strong>celebrate</strong> together, because ownCloud is done by all of us in the community.</p>
<p>On <strong>Tuesday, august 5th</strong>, we will do a Release Party in <strong>Nuremberg, Germany</strong>. As last time, the <a href="http://www.coworking-nuernberg.de/">Coworkingspace Nürnberg</a> is hosting us. We will start at 18:00.</p>
<p>Everybody who is interested in ownCloud for whatever reason is very welcome to show up. We will probably have a short informal demonstration or two, but of course plenty room for questions, discussions, meet and greet with all kind of FOSS people, some core ownCloud people, nice beer and big fun.</p>
<p><strong>You</strong> really should come! And don&rsquo;t forget to tell your friends, thanks!</p>
]]></content:encoded>
    </item>
    <item>
      <title>ownCloud Client 1.6.1</title>
      <link>https://dragotin.codeberg.page/posts/owncloud-client-1-6-1/</link>
      <pubDate>Mon, 30 Jun 2014 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/owncloud-client-1-6-1/</guid>
      <description>&lt;p&gt;End of last week, we have released &lt;a href=&#34;http://owncloud.org/changelog/desktop/&#34;&gt;version 1.6.1&lt;/a&gt; of the ownCloud Client, the desktop tool that does file syncing with your &lt;a href=&#34;http://owncloud.org&#34;&gt;ownCloud&lt;/a&gt;. Read on the &lt;a href=&#34;http://owncloud.org/install/#desktop&#34;&gt;Desktop Client page&lt;/a&gt; how to get and install it.&lt;/p&gt;
&lt;p&gt;The recommendation is to update your installation to this version. The previous &lt;a href=&#34;https://daniel.molkentin.net/2014/04/09/owncloud-client-1-6-the-tour/&#34;&gt;version 1.6.0&lt;/a&gt; had great new features, first and foremost the parallel up- and download of files and a way more performant handling of the local sync journal. That required a lot of code changes. Unfortunately that also brought in some bugs which are now fixed with the 1.6.1 release.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>End of last week, we have released <a href="http://owncloud.org/changelog/desktop/">version 1.6.1</a> of the ownCloud Client, the desktop tool that does file syncing with your <a href="http://owncloud.org">ownCloud</a>. Read on the <a href="http://owncloud.org/install/#desktop">Desktop Client page</a> how to get and install it.</p>
<p>The recommendation is to update your installation to this version. The previous <a href="https://daniel.molkentin.net/2014/04/09/owncloud-client-1-6-the-tour/">version 1.6.0</a> had great new features, first and foremost the parallel up- and download of files and a way more performant handling of the local sync journal. That required a lot of code changes. Unfortunately that also brought in some bugs which are now fixed with the 1.6.1 release.</p>
<p>On the windows platforms, we experienced a memory leak that over time let the memory consumption of the client grow. Also, a problem in the Qt5 library that we ship for windows caused the problem that under some circumstances the wrong encryption lib was loaded, so that some people saw SSL problems on Windows.</p>
<p>And there were crashes. Users kept on reporting that the client was crashing after some time on windows, without a special reason. None of the developers was able to reproduce that or ever saw that. We asked for backtraces, which also can be produced on windows. Even though the backtraces looked similar, we did not find an obvious reason for the crashes. Finally, by reading through all involved code levels again and again, Olivier was able to spot some code in libneon that, again under special circumstances, could cause crashes on win.</p>
<p>It was a one line fix, we quickly built test packages, people tested, and finally the crashes were gone (the patch to libneon is on its way to upstream of course).</p>
<p>All that is now fixed in 1.6.1.</p>
<p>What does that show? There not very much little &ldquo;easy&rdquo; bug findings any more. That is similar to the soccer world championship, where the coaches keep telling that there are no &ldquo;easy opponents&rdquo; any more nowadays, which is also true. These tricky problems we face in the client are hard to find, require time, often special setups if they are reproduceable at all, and advanced debugging skills. Very challenging, very much fun. But that also requires very much patience from the people who suffer from that bugs. We keep on asking questions, ask to test new daily builds and need time to investigate stuff, and more time to release once we have the fix.</p>
<p>Thank you all for helping in this situation, not giving up, for again testing another daily build, reporting back, trying again. That is really <strong>big</strong>.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Kraft Release 0.55</title>
      <link>https://dragotin.codeberg.page/posts/kraft-release-0-55/</link>
      <pubDate>Thu, 29 May 2014 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/kraft-release-0-55/</guid>
      <description>&lt;p&gt;Herewith I announce the availability of the new Kraft &lt;a href=&#34;http://volle-kraft-voraus.de/Main/Releases&#34;&gt;release 0.55&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It was finished today and fixes two issues that came up after the release of the previous version: A compile fix for compiling Kraft against the latest version of &lt;a href=&#34;https://code.google.com/p/ctemplate/&#34;&gt;ctemplate&lt;/a&gt;, which did not work out of the box with Kraft 0.54. The other fix is a fail in generating PDF documents which is a pretty severe problem for Kraft. Both is now working well with the new version 0.55 which can be &lt;a href=&#34;http://volle-kraft-voraus.de/Main/Download&#34;&gt;downloaded here&lt;/a&gt;.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Herewith I announce the availability of the new Kraft <a href="http://volle-kraft-voraus.de/Main/Releases">release 0.55</a>.</p>
<p>It was finished today and fixes two issues that came up after the release of the previous version: A compile fix for compiling Kraft against the latest version of <a href="https://code.google.com/p/ctemplate/">ctemplate</a>, which did not work out of the box with Kraft 0.54. The other fix is a fail in generating PDF documents which is a pretty severe problem for Kraft. Both is now working well with the new version 0.55 which can be <a href="http://volle-kraft-voraus.de/Main/Download">downloaded here</a>.</p>
<p>Thanks a lot to the Kraft community for testing!</p>
<p>If you find other problems, want to give feedback or seek help, please <a href="http://volle-kraft-voraus.de/Main/Contribution">see here</a> how to proceed. Thanks!</p>
]]></content:encoded>
    </item>
    <item>
      <title>New Kraft Release 0.54</title>
      <link>https://dragotin.codeberg.page/posts/new-kraft-release-0-54/</link>
      <pubDate>Tue, 13 May 2014 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/new-kraft-release-0-54/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;bloghead&#34; loading=&#34;lazy&#34; src=&#34;https://dragotin.codeberg.page/posts/new-kraft-release-0-54/images/bloghead.png&#34;&gt;I am happy to tell about the new release 0.54 of &lt;a href=&#34;http://volle-kraft-voraus.de&#34;&gt;Kraft&lt;/a&gt; which was released a couple of days ago.&lt;/p&gt;
&lt;p&gt;It is not only a maintenance release but also comes with a couple of new features, the most outstandig is the ability to handle a new document type, the &lt;em&gt;delivery note&lt;/em&gt; which prints no prices. That closes a gap for interesting use cases. &lt;a href=&#34;http://volle-kraft-voraus.de/Main/Releases&#34;&gt;Here&lt;/a&gt; is a more detailed log of what was added to this release.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><img alt="bloghead" loading="lazy" src="/posts/new-kraft-release-0-54/images/bloghead.png">I am happy to tell about the new release 0.54 of <a href="http://volle-kraft-voraus.de">Kraft</a> which was released a couple of days ago.</p>
<p>It is not only a maintenance release but also comes with a couple of new features, the most outstandig is the ability to handle a new document type, the <em>delivery note</em> which prints no prices. That closes a gap for interesting use cases. <a href="http://volle-kraft-voraus.de/Main/Releases">Here</a> is a more detailed log of what was added to this release.</p>
<p>Kraft is KDE software to help people driving a small business. Emphasis is on <em>small</em> and <em>business</em>. We are not talking CMS, ERP or any other monster. Kraft is about a handy alternative for people who wrote their first 25 invoices using Libre Office and now start to think of how they could could be more efficient in doing that: Using structured templates, being able to create an invoice based on a quote that was done before, no need to fiddle around with slipping paragraphs, a proper address book, such stuff. <img alt="zollstock" loading="lazy" src="/posts/new-kraft-release-0-54/images/zollstock.png">Software for people who have other things to do than sit in front of their computer. Hard to understand for geeks like us who enjoy this technology, but yes, there are a lot of people who do not, who just use computers because they must, because they have a business.</p>
<p>I started to work on Kraft in 2006, and worked on similar software before, well, we all have our dark <a href="http://youtu.be/R6O41A5yOHw">history</a>. I always enjoyed doing software for people who would prefer to <em>not</em> use the computer. And the more I got involved into <a href="http://www.kde.org">KDE</a> the more obvious it became to me how perfectly KDE is able to help with that. High level classes, components to reuse, other projects aiming the same direction, and a community of helpful, friendly and open minded people. Also I think software like Kraft is a good addition to the KDE family as it has potential to bring more and different users to KDE.</p>
<p>However, if measured by the number of known users of Kraft, this idea failed completely. Compared to other KDE software, Kraft has disappointing little (known) users. Also contributors: Apart from very few brave developers who spent some time on Kraft, I am the only contributor. The reasons for that can be discussed in another thread.</p>
<p>What still keeps me motivated to work on Kraft is that the few users often tell how happy they are with it. And that Kraft really helps them to drive their business and save time. Also that they found with Linux and KDE a computer &ldquo;environment&rdquo; that really helps them reliably instead of facing them with scary stuff. That is really cool, and the best is that this recently happened more often than the years before.</p>
<p>That is what keeps me around with Kraft.</p>
<p>For the future, there are enough ideas: &ldquo;Combined Kraft&rdquo; which means using one instance of Kraft from distributed home offices, with <a href="http://www.owncloud.org">ownCloud</a> as sync hub, or an easy to use project management and of course a port to KDE Frameworks 5 to be able to ship for Mac and and and&hellip;</p>
<p>Well, it&rsquo;s a pet project, and my day unfortunately does not leave very much energy behind for that currently, so don&rsquo;t expect big movement, but be sure that there will be small steps.</p>
]]></content:encoded>
    </item>
    <item>
      <title>ownCloud @ Chemnitzer Linuxtage 2014</title>
      <link>https://dragotin.codeberg.page/posts/owncloud-chemnitzer-linuxtage-2014/</link>
      <pubDate>Wed, 19 Mar 2014 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/owncloud-chemnitzer-linuxtage-2014/</guid>
      <description>&lt;p&gt;Last weekend Daniel, Arthur, Morris and me were in Chemnitz where the &lt;a href=&#34;http://chemnitzer.linux-tage.de/2014/de/info/&#34;&gt;Chemnitzer Linuxtage 2014&lt;/a&gt; took place. We drove a booth during the two days, the CLT host around 60 boothes of companies and FOSS projects. I like to go to the CLT because it is perfectly organized with great enthusiasm of everybody involved from the organisation team. Food, schedules, the venue, everything is perfect.&lt;/p&gt;
&lt;p&gt;Even on saturday morning, short after opening of the event, somebody from the orga team was showing up on the booth with chocolate for the volunteers, saying hello and asking if everything is in place for a successful weekend. A small detail, which shows how much effort is put into organization of the event.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Last weekend Daniel, Arthur, Morris and me were in Chemnitz where the <a href="http://chemnitzer.linux-tage.de/2014/de/info/">Chemnitzer Linuxtage 2014</a> took place. We drove a booth during the two days, the CLT host around 60 boothes of companies and FOSS projects. I like to go to the CLT because it is perfectly organized with great enthusiasm of everybody involved from the organisation team. Food, schedules, the venue, everything is perfect.</p>
<p>Even on saturday morning, short after opening of the event, somebody from the orga team was showing up on the booth with chocolate for the volunteers, saying hello and asking if everything is in place for a successful weekend. A small detail, which shows how much effort is put into organization of the event.</p>
<p>As a result, visitors come to visit the event. It&rsquo;s mostly a community centric event: Exhibitors are mostly representing FOSS projects such as <a href="openstreetmap.org">openstreetmap.org</a>, distributions like <a href="http://fedoraproject.org">Fedora</a> or <a href="http://opensuse.org">openSUSE</a> or companies from the free software market. [caption id=&ldquo;attachment_428&rdquo; align=&ldquo;alignright&rdquo; width=&ldquo;595&rdquo;]<a href="http://dragotin.files.wordpress.com/2014/03/clt14_morris.jpg"><img alt="Morris in action on the booth" loading="lazy" src="/posts/owncloud-chemnitzer-linuxtage-2014/images/clt14_morris.jpg"></a> Morris in action on the booth[/caption]The majority of visitors are mostly interested in private use of the software. But, no rule without exception, we also had a remarkable number of people from companies, either executives or people working in the IT departments, who were interested in ownCloud.</p>
<p>Speaking about <a href="http://owncloud.org">ownCloud</a>, I want to say that it&rsquo;s amazing to represent our project. People know it, people like it, people use it. In private, but also in professional space people work with ownCloud already or are planing to start with ownCloud. ownCloud already is <em>the</em> accepted solution for the problems that became so practical with the NSA scandal last year.</p>
<p>My talk with title <em><a href="http://chemnitzer.linux-tage.de/2014/de/vortraege/detail/279">A private Cloud with ownCloud</a></em> on Saturday morning was very well received and went smooth. The room was too small, lots of people had to stand or sit on the stairs. It was a very positive atmosphere.</p>
<p>Something that changed compared to last year and the year before: Most discussions were around how ownCloud can be installed, integrated and used and not any more about which features are still missing or maybe also bugs.</p>
<p>So it were two very exhausting days, but big fun! Thanks to Daniel, Arthur and Morris for the work and fun we had on the booth, and thanks to the CLT team for CLT.</p>
]]></content:encoded>
    </item>
    <item>
      <title>ownCloud 6 Releaseparty in Nuremberg</title>
      <link>https://dragotin.codeberg.page/posts/owncloud-6-releaseparty-in-nuremberg/</link>
      <pubDate>Fri, 13 Dec 2013 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/owncloud-6-releaseparty-in-nuremberg/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://dragotin.files.wordpress.com/2013/12/oc6_releaseparty.png&#34;&gt;&lt;img alt=&#34;oc6_releaseparty&#34; loading=&#34;lazy&#34; src=&#34;https://dragotin.codeberg.page/posts/owncloud-6-releaseparty-in-nuremberg/images/oc6_releaseparty.png&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The ownCloud community released &lt;a href=&#34;http://owncloud.org/six/&#34;&gt;ownCloud 6&lt;/a&gt; a couple of days ago. That was another big release and we want to &lt;em&gt;celebrate&lt;/em&gt;!&lt;/p&gt;
&lt;p&gt;Please, everybody who is interested in ownCloud, like to learn more, give feedback or just want to meet other people from the community, you are invited to show up at &lt;a href=&#34;http://www.coworking-nuernberg.de/&#34;&gt;Coworking Space&lt;/a&gt; in &lt;strong&gt;Nuremberg&lt;/strong&gt;, Josephsplatz 8, on &lt;strong&gt;december 18th, 6pm&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;We will have a relaxed evening with a little discussion, maybe short demos, cakes and stuff, and fun. No heavy talks and serious faces!&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><a href="http://dragotin.files.wordpress.com/2013/12/oc6_releaseparty.png"><img alt="oc6_releaseparty" loading="lazy" src="/posts/owncloud-6-releaseparty-in-nuremberg/images/oc6_releaseparty.png"></a></p>
<p>The ownCloud community released <a href="http://owncloud.org/six/">ownCloud 6</a> a couple of days ago. That was another big release and we want to <em>celebrate</em>!</p>
<p>Please, everybody who is interested in ownCloud, like to learn more, give feedback or just want to meet other people from the community, you are invited to show up at <a href="http://www.coworking-nuernberg.de/">Coworking Space</a> in <strong>Nuremberg</strong>, Josephsplatz 8, on <strong>december 18th, 6pm</strong>.</p>
<p>We will have a relaxed evening with a little discussion, maybe short demos, cakes and stuff, and fun. No heavy talks and serious faces!</p>
<p>We are looking forward to meeting <strong>you</strong>.</p>
]]></content:encoded>
    </item>
    <item>
      <title>openSUSE to Develop</title>
      <link>https://dragotin.codeberg.page/posts/opensuse-to-develop/</link>
      <pubDate>Fri, 06 Dec 2013 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/opensuse-to-develop/</guid>
      <description>&lt;p&gt;Have you ever wondered why openSUSE is &lt;strong&gt;the platform&lt;/strong&gt; for development? Because it offers all that is needed for professional development, also if development goes beyond the basics.&lt;/p&gt;
&lt;p&gt;A nice proof that openSUSE has more than others was &lt;a href=&#34;http://deepdiver1975.wordpress.com/2013/12/05/building-the-owncloud-client-for-windows-on-opensuse-12-3-using-a-vagrant-box/&#34;&gt;posted here&lt;/a&gt; by our friend Thomas, a convinced &lt;a href=&#34;http://www.debian.org&#34;&gt;Debian&lt;/a&gt; user. He writes about setting up &lt;a href=&#34;http://www.opensuse.org&#34;&gt;openSUSE&lt;/a&gt; in &lt;a href=&#34;http://www.vagrantup.com/&#34;&gt;vagrant&lt;/a&gt; to be &lt;em&gt;easily&lt;/em&gt; able to &lt;a href=&#34;http://doc.owncloud.org/desktop/1.4/building.html&#34;&gt;build&lt;/a&gt; (&lt;a href=&#34;http://doc.owncloud.org/desktop/1.5/building.html&#34;&gt;master build&lt;/a&gt;) the &lt;a href=&#34;http://www.owncloud.org&#34;&gt;ownCloud&lt;/a&gt; Client for Win32 in it. Very easy and cool stuff. But that can be even easier without vagrant through &lt;a href=&#34;http://software.opensuse.org&#34;&gt;this link&lt;/a&gt; ;-).&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Have you ever wondered why openSUSE is <strong>the platform</strong> for development? Because it offers all that is needed for professional development, also if development goes beyond the basics.</p>
<p>A nice proof that openSUSE has more than others was <a href="http://deepdiver1975.wordpress.com/2013/12/05/building-the-owncloud-client-for-windows-on-opensuse-12-3-using-a-vagrant-box/">posted here</a> by our friend Thomas, a convinced <a href="http://www.debian.org">Debian</a> user. He writes about setting up <a href="http://www.opensuse.org">openSUSE</a> in <a href="http://www.vagrantup.com/">vagrant</a> to be <em>easily</em> able to <a href="http://doc.owncloud.org/desktop/1.4/building.html">build</a> (<a href="http://doc.owncloud.org/desktop/1.5/building.html">master build</a>) the <a href="http://www.owncloud.org">ownCloud</a> Client for Win32 in it. Very easy and cool stuff. But that can be even easier without vagrant through <a href="http://software.opensuse.org">this link</a> ;-).</p>
<p>Btw, there is an appliance in <a href="https://susestudio.com/a/NJ5jgP/osuse-vagrant">SUSE Studio</a> to ease experiments with vagrant with openSUSE as base. I haven&rsquo;t tested yet, experiences?</p>
]]></content:encoded>
    </item>
    <item>
      <title>openSUSE on RaspberryPi with ownCloud</title>
      <link>https://dragotin.codeberg.page/posts/opensuse-on-raspberrypi-with-owncloud/</link>
      <pubDate>Tue, 19 Nov 2013 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/opensuse-on-raspberrypi-with-owncloud/</guid>
      <description>&lt;p&gt;This morning during a cup of coffee I wanted to do something adventurous. I put the raspberry which I bought recently (without having very much played with it because of my light apt-* allergy) on the table and thought I will try to install the openSUSE distribution.&lt;/p&gt;
&lt;p&gt;I remembered &lt;a href=&#34;http://en.opensuse.org/User:Bmwiedemann&#34;&gt;awesome Bernhard&lt;/a&gt; was &lt;a href=&#34;http://lizards.opensuse.org/2013/09/07/new-raspberry-pi-image/&#34;&gt;blogging&lt;/a&gt; about that topic recently. On that page one can find &lt;a href=&#34;http://www.zq1.de/~bernhard/linux/opensuse/&#34;&gt;this link&lt;/a&gt; where raspberrypi images can be found. Oh, surprise, there is even a &lt;a href=&#34;http://www.zq1.de/~bernhard/linux/opensuse/raspberrypi-opensuse-20131110x.img.xz&#34;&gt;file&lt;/a&gt; from november 10th, so I downloaded that. People always recommend the latest stuff.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>This morning during a cup of coffee I wanted to do something adventurous. I put the raspberry which I bought recently (without having very much played with it because of my light apt-* allergy) on the table and thought I will try to install the openSUSE distribution.</p>
<p>I remembered <a href="http://en.opensuse.org/User:Bmwiedemann">awesome Bernhard</a> was <a href="http://lizards.opensuse.org/2013/09/07/new-raspberry-pi-image/">blogging</a> about that topic recently. On that page one can find <a href="http://www.zq1.de/~bernhard/linux/opensuse/">this link</a> where raspberrypi images can be found. Oh, surprise, there is even a <a href="http://www.zq1.de/~bernhard/linux/opensuse/raspberrypi-opensuse-20131110x.img.xz">file</a> from november 10th, so I downloaded that. People always recommend the latest stuff.</p>
<p>Following this <a href="http://en.opensuse.org/HCL:Raspberry_Pi">Howto</a> I quickly had the RaspberryPi running in my home network, surprisingly enough identifying itself as powered by <a href="http://en.opensuse.org/Portal:13.1">openSUSE 13.1</a> :-)</p>
<p>Well, that was easy and far away from adventure which I was looking for. So I remembered that the cool kids on the block have an <a href="http://owncloud.org">ownCloud server</a> running on the RaspberryPi. Would that be as easy? There are no <em>official</em> packages for the Pi yet, so what could I do?</p>
<p>Well, ownCloud is noarch, because it is plain PHP. So I downloaded the two ownCloud server packages owncloud and owncloud-3rdparty from our <a href="http://software.opensuse.org/download/package?project=isv:ownCloud:community:nightly&amp;package=owncloud">ownCloud nightly build repository</a> on OBS and installed them with</p>
<p><code>zypper in owncloud owncloud-3rdparty</code></p>
<p>I was (adventure!) ignoring all the warnings and stuff, what you should never do! Just for a test, before the coffee is cold.</p>
<p>After having started apache, what should I say? It <strong>simply worked</strong>. No need for antihistamine, all nice green around, and ownCloud running after having finished it&rsquo;s setup page.</p>
<p>That really pushed me for the day! It was such a smart experience having that running within a couple of minutes, with absolutely no fiddling around. This is cool stuff! Thanks to Bernhard and all the other openSUSE guys for doing that!</p>
<p>My congrats for the 13.1 release! I really hope that people will understand (again) how awesome the openSUSE distribution and the project is, especially for the more nerdy folks! Really, you wanna run the Geeko these days.</p>
<p>Enough praise, now, maybe there is somebody who will help me in OBS to provide proper ownCloud packages for ARM? I am sure there is not much missing.</p>
<p>And if you want to run ownCloud on your &ldquo;normal&rdquo; PC, this is the <a href="http://software.opensuse.org/download/package?project=isv:ownCloud:community&amp;package=owncloud">repository</a> of the latest stable version which we actively maintain&hellip;</p>
]]></content:encoded>
    </item>
    <item>
      <title>Kraft Release 0.53</title>
      <link>https://dragotin.codeberg.page/posts/kraft-release-0-53/</link>
      <pubDate>Sat, 12 Oct 2013 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/kraft-release-0-53/</guid>
      <description>&lt;p&gt;Only short time after &lt;a href=&#34;http://volle-kraft-voraus.de&#34;&gt;Kraft&amp;rsquo;s&lt;/a&gt; release 0.51 I am announcing &lt;a href=&#34;http://volle-kraft-voraus.de/Releases&#34;&gt;version 0.53&lt;/a&gt; today. Kraft is the &lt;a href=&#34;http://www.kde.org&#34;&gt;KDE&lt;/a&gt; software that helps you to handle your daily quotes and invoices in your small business.&lt;/p&gt;
&lt;p&gt;The new release fixes a problem with the tarball of 0.51 which contained a wrong source revision. That did not cause any harm, but also did not bring the announced fixes. That was brought up by community friends, thanks for that.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Only short time after <a href="http://volle-kraft-voraus.de">Kraft&rsquo;s</a> release 0.51 I am announcing <a href="http://volle-kraft-voraus.de/Releases">version 0.53</a> today. Kraft is the <a href="http://www.kde.org">KDE</a> software that helps you to handle your daily quotes and invoices in your small business.</p>
<p>The new release fixes a problem with the tarball of 0.51 which contained a wrong source revision. That did not cause any harm, but also did not bring the announced fixes. That was brought up by community friends, thanks for that.</p>
<p>Additionally another, actually the last known bug of Kraft&rsquo;s catalog management was fixed. That was the problem that it did not work to drag sub chapters onto the top level of the catalog. That is working now.</p>
<p>Please update to the new version and help us with your <a href="http://volle-kraft-voraus.de/Main/Contribution">feedback</a>.</p>
]]></content:encoded>
    </item>
    <item>
      <title>DAV Torture</title>
      <link>https://dragotin.codeberg.page/posts/dav-torture/</link>
      <pubDate>Fri, 27 Sep 2013 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/dav-torture/</guid>
      <description>&lt;p&gt;Currently we speak a lot about performance of the ownCloud WebDAV server. Speaking with a computer programmer about performance is like speaking with a doctor about pain. It needs to be qualified, the pain, and also the performance concerns.&lt;/p&gt;
&lt;p&gt;To do a step into that direction, here is a little script collection for you to play with if you like: the DAV torture collection. We started it quite some time ago but never really introduced it. It is still very rough.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Currently we speak a lot about performance of the ownCloud WebDAV server. Speaking with a computer programmer about performance is like speaking with a doctor about pain. It needs to be qualified, the pain, and also the performance concerns.</p>
<p>To do a step into that direction, here is a little script collection for you to play with if you like: the DAV torture collection. We started it quite some time ago but never really introduced it. It is still very rough.</p>
<h2 id="what-it-does">What it does</h2>
<p>The first idea is that we need a reproducable set of files to test the server with. We don&rsquo;t want to send around huge tarballs with files, so Danimo invented two perl scripts called <code>torture_gen_layout.pl</code> and <code>torture_create_files.pl</code>. With <code>torture_gen_layout.pl</code> one can create a file that contains the layout of the test file tree, a so called layout( or .lay)-file. The .lay-file describes the test file tree completely, with names, structure and size.</p>
<p><code>torture_gen_layout.pl</code> takes the .lay-file and really creates the file tree on a machine. The cool thing about is that we can commit on a .lay-file as our standard test tree and just pass a file around with a couple of kbytes size that describes the tree.</p>
<p>Now that there is a standard file tree to test with, I wrote a little script called <code>dav_torture.pl</code>. It copies the whole tree described by a .lay file and created on the local file system to an ownCloud WebDAV server using PUT requests. Along with that, it produces performance relevant output.</p>
<h2 id="try-it">Try it</h2>
<p>Download the <a href="http://download.owncloud.org/download/testing/davtorture.tgz">tarball</a> and unpack it, or clone it from <a href="https://github.com/owncloud/administration">github</a>.</p>
<p>After having installed a couple of perl deps (probably only modules Data::Random::WordList, HTTP::DAV, HTTP::Request::Common are not in perl&rsquo;s core) you should be able to run the scripts from within the directory.</p>
<p>First, you need to create a config file. For that, copy t1.cfg.in to t1.cfg (don&rsquo;t ask about the name) and edit it. For this example, we only need user, passwd and url to access ownCloud. Be careful with the syntax, it gets sourced into a perl script.</p>
<p>Now, create the local reference tree with a .lay-file which I put into the tarball: <code>./torture_create_files.pl small.lay tree</code> This command will build the file tree described by small.lay into the directory called <em>tree</em>.</p>
<p>Now, you can already treat your server: Call <code>./dav_torture.pl small.lay tree</code> This will perform PUT commands to the WebDAV server and output some useful information. It also appends to two files <em>results.dat</em> and <em>puts.tsv</em>. results.dat just logs the results of subseqent call. The tsv file is the data file for the html file <code>index.html</code> in the same directory. That opened in a browser gives a curve over the average transmission rate of all subsequent runs of <code>dav_torture.pl</code> (You have run <code>dav_torture.pl</code> a couple of times to make that visible). The <code>dav_torture.pl</code> script can now be hooked into our Jenkins CI and performed after every server checkin. The resulting curve must never raise :-)</p>
<p>To create your own .lay-file, open <code>torture_gen_layout.pl</code> and play with the variables on top of the script. Simply call the script and redirect into a file to create a .lay-file.</p>
<p>All this is pretty experimental, but I thought it will help us to get to a more objective discussion about performance. I wanted to open this up in a pretty early stage because I am hoping that this might be interesting for somebody of you: Treat your own server, create interesting .lay files or improve the script set (testing plain PUTs is rather boring) or the result html presentation.</p>
<p>What do you think?</p>
]]></content:encoded>
    </item>
    <item>
      <title>ownCloud Client Release 1.4.1</title>
      <link>https://dragotin.codeberg.page/posts/owncloud-client-release-1-4-1/</link>
      <pubDate>Thu, 26 Sep 2013 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/owncloud-client-release-1-4-1/</guid>
      <description>&lt;p&gt;I am happy to announce that we today were able to release version 1.4.1 of the &lt;a href=&#34;http://owncloud.org&#34;&gt;ownCloud&lt;/a&gt; Desktop Client on the three platforms Linux, MacOS and Windows.&lt;/p&gt;
&lt;p&gt;You find suitable download links as usual at: &lt;a href=&#34;http://owncloud.org/sync-clients/&#34;&gt;http://owncloud.org/sync-clients/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Version 1.4.1 is a bugfix release for the 1.4.0 version released a few of weeks ago which brought a lot of &lt;a href=&#34;https://daniel.molkentin.net/2013/08/08/owncloud-client-1-4-a-visual-guide/&#34;&gt;new features&lt;/a&gt;. This one solves a couple of problems that were coming up during the last few weeks. For example, the &lt;a href=&#34;https://github.com/owncloud/mirall/issues/945&#34;&gt;problem&lt;/a&gt; that the client lost its configuration (at least) on the Win32 platform when the machine was shut down is fixed. Also a lot of redundant uploads wont happen any more. And there are even more fixes, as the detailed &lt;a href=&#34;http://owncloud.org/sync-clients/releases&#34;&gt;Changelog&lt;/a&gt; rules out.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>I am happy to announce that we today were able to release version 1.4.1 of the <a href="http://owncloud.org">ownCloud</a> Desktop Client on the three platforms Linux, MacOS and Windows.</p>
<p>You find suitable download links as usual at: <a href="http://owncloud.org/sync-clients/">http://owncloud.org/sync-clients/</a></p>
<p>Version 1.4.1 is a bugfix release for the 1.4.0 version released a few of weeks ago which brought a lot of <a href="https://daniel.molkentin.net/2013/08/08/owncloud-client-1-4-a-visual-guide/">new features</a>. This one solves a couple of problems that were coming up during the last few weeks. For example, the <a href="https://github.com/owncloud/mirall/issues/945">problem</a> that the client lost its configuration (at least) on the Win32 platform when the machine was shut down is fixed. Also a lot of redundant uploads wont happen any more. And there are even more fixes, as the detailed <a href="http://owncloud.org/sync-clients/releases">Changelog</a> rules out.</p>
<p>We thank you for your ongoing support and the good work on bugs that came up. As usual we are looking forward to your feedback. Please work with us in the <a href="https://github.com/owncloud/mirall/issues">Github bugtracker</a> if you experience issues.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Kraft Release 0.51</title>
      <link>https://dragotin.codeberg.page/posts/kraft-release-0-51/</link>
      <pubDate>Sun, 22 Sep 2013 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/kraft-release-0-51/</guid>
      <description>&lt;p&gt;I am happy to release &lt;a href=&#34;http://volle-kraft-voraus.de/Main/Releases&#34;&gt;Kraft 0.51&lt;/a&gt; today. &lt;a href=&#34;http://volle-kraft-voraus.de&#34;&gt;Kraft&lt;/a&gt; is the &lt;a href=&#34;http://www.kde.org&#34;&gt;KDE&lt;/a&gt; solution to handle daily business documents like quotes and invoices in your small business.&lt;/p&gt;
&lt;p&gt;This is a bugfix release which brings a handful of useful fixes against bugs which were reported by Kraft users since the last release.&lt;/p&gt;
&lt;p&gt;In the catalog view, now drag and drop is working to sort templates. Removing of sub chapters is also working now. A bug in the unit handling was fixed that picked wrong units in some cases. The path to document templates is not utf8 save.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>I am happy to release <a href="http://volle-kraft-voraus.de/Main/Releases">Kraft 0.51</a> today. <a href="http://volle-kraft-voraus.de">Kraft</a> is the <a href="http://www.kde.org">KDE</a> solution to handle daily business documents like quotes and invoices in your small business.</p>
<p>This is a bugfix release which brings a handful of useful fixes against bugs which were reported by Kraft users since the last release.</p>
<p>In the catalog view, now drag and drop is working to sort templates. Removing of sub chapters is also working now. A bug in the unit handling was fixed that picked wrong units in some cases. The path to document templates is not utf8 save.</p>
<p>As a new feature the address of the own company now can be picked from Kraft&rsquo;s settings dialog also after first setup routine.</p>
<p>A source tarball can be <a href="http://sourceforge.net/projects/kraft/files/kraft/0.51/kraft-0.51.tar.bz2/download">downloaded</a> from the <a href="https://sourceforge.net/projects/kraft/">Sourceforge Project</a>, binary packages are on the way. Please also <a href="https://sourceforge.net/p/kraft/bugs/?source=navbar">report bugs</a> on SF.</p>
<p>Thanks for your interest and contribution to Kraft. If you want to support <a href="http://volle-kraft-voraus.de">Kraft</a>, please give <a href="http://volle-kraft-voraus.de/Main/Contribution">feedback</a>, spread the word or buy <a href="http://volle-kraft-voraus.spreadshirt.de/">cool stuff</a>.</p>
]]></content:encoded>
    </item>
    <item>
      <title>After the 1.4.0 ownCloud Client Release</title>
      <link>https://dragotin.codeberg.page/posts/after-the-1-4-0-owncloud-client-release/</link>
      <pubDate>Wed, 11 Sep 2013 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/after-the-1-4-0-owncloud-client-release/</guid>
      <description>&lt;p&gt;You might have heard, ownCloud Client 1.4.0 was released last week. It is available from &lt;a href=&#34;http://www.owncloud.org/sync-clients&#34;&gt;our sync clients page&lt;/a&gt; for all major desktop platforms, investigate the &lt;a href=&#34;http://owncloud.org/sync-clients/releases/&#34;&gt;Changelog&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://daniel.molkentin.net/&#34;&gt;Danimos&lt;/a&gt; &lt;a href=&#34;https://daniel.molkentin.net/2013/08/08/owncloud-client-1-4-a-visual-guide/&#34;&gt;Visual Guide&lt;/a&gt; has outlined the new stuff in the release already, so no need to repeat it here. You should install and try it, that seems to be the opinion of many people who tried it.&lt;/p&gt;
&lt;p&gt;Also people who shared their critical view on the client very publically in the past are much more pleased now with 1.4.0. One example is a recent &lt;a href=&#34;http://www.bitblokes.de/2013/09/tolle-verbesserungen-owncloud-synchronisations-client-1-4-seit-einigen-wochen-im-einsatz/&#34;&gt;blog post&lt;/a&gt; on &lt;a href=&#34;http://www.bitblokes.de/&#34;&gt;BITBlokes&lt;/a&gt;. It is a blog about all kind of topics around FOSS. I regularly read it and often share its opinions. He concludes very positively about the 1.4.0 client.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>You might have heard, ownCloud Client 1.4.0 was released last week. It is available from <a href="http://www.owncloud.org/sync-clients">our sync clients page</a> for all major desktop platforms, investigate the <a href="http://owncloud.org/sync-clients/releases/">Changelog</a>.</p>
<p><a href="https://daniel.molkentin.net/">Danimos</a> <a href="https://daniel.molkentin.net/2013/08/08/owncloud-client-1-4-a-visual-guide/">Visual Guide</a> has outlined the new stuff in the release already, so no need to repeat it here. You should install and try it, that seems to be the opinion of many people who tried it.</p>
<p>Also people who shared their critical view on the client very publically in the past are much more pleased now with 1.4.0. One example is a recent <a href="http://www.bitblokes.de/2013/09/tolle-verbesserungen-owncloud-synchronisations-client-1-4-seit-einigen-wochen-im-einsatz/">blog post</a> on <a href="http://www.bitblokes.de/">BITBlokes</a>. It is a blog about all kind of topics around FOSS. I regularly read it and often share its opinions. He concludes very positively about the 1.4.0 client.</p>
<p>It is good to see the positive feedback overall. That shows a couple of things from my engineering point of view: The concentrated work we continously do on all parts of ownCloud pays off. That is obvious of course, but still nice to see. And our (also obvious) actions to improve code quality such as the consequent use of continous integration, code reviews and such helps to improve quality.</p>
<p><em>&ldquo;People are always excited if releases come with GUI changes!&rdquo;</em> I heard people saying. Well, maybe, but that&rsquo;s not the whole truth. It also proves for me again is how important UI design and UX is. Me as a knee-deep-developer have an interesting relationship to all UX topics: I always have an opinion. Often a strong opinion. But the results coming out of that have not always been the, well, the most optimal. Very fortunate on the client we work together with our UX guy Jan and the positive feedback also shows how good that is for the software.</p>
<p>But enough of release pride. There is more work to do: The bug tracker is still not empty, the list of feature ideas is long. We will continue to focus on correctness, stability and robustness of syncing, performance and useful features and work on a version 1.5 for you.</p>
<p>These are a couple of concrete points we&rsquo;re focussing on for 1.5:</p>
<ol>
<li>we already merged the client code on the new upstream sync version in git.</li>
<li>performace improvements through further reduction of the number of requests and more efficiency in database operations on the client.</li>
<li>we are working on a new propagator component that allows us to do the changes mentioned in 2 more easily.</li>
<li>File manager integration, which means havingn icons in Explorer, Dolphin and friends.</li>
</ol>
<p>A more detailed list can be found at <a href="https://github.com/owncloud/mirall/issues?milestone=7&amp;page=1&amp;state=open">github</a>.</p>
<p>Thank you for all your help and support. It&rsquo;s big fun!</p>
]]></content:encoded>
    </item>
    <item>
      <title>ownCloud Client 1.4.0 beta 2</title>
      <link>https://dragotin.codeberg.page/posts/owncloud-client-1-4-0-beta-2/</link>
      <pubDate>Sat, 17 Aug 2013 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/owncloud-client-1-4-0-beta-2/</guid>
      <description>&lt;p&gt;We released a ownCloud Client 1.4.0 beta 2. Sources and binaries are availabe at &lt;a href=&#34;http://owncloud.org/sync-clients/#testing&#34;&gt;the client download page&lt;/a&gt; for you. We kindly ask for more testing.&lt;/p&gt;
&lt;p&gt;First and foremost, beta 2 fixes a severe bug on the windows platform which was the root cause for a lot of other bug you might have experienced, such as infinite sync loops and similar. Please urgently prefer the beta2 over beta1 for testing.&lt;/p&gt;
&lt;p&gt;Other fixes went into polishing of the new progress display, the sync protocol window which is not sync-folder centric any more and many other places.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>We released a ownCloud Client 1.4.0 beta 2. Sources and binaries are availabe at <a href="http://owncloud.org/sync-clients/#testing">the client download page</a> for you. We kindly ask for more testing.</p>
<p>First and foremost, beta 2 fixes a severe bug on the windows platform which was the root cause for a lot of other bug you might have experienced, such as infinite sync loops and similar. Please urgently prefer the beta2 over beta1 for testing.</p>
<p>Other fixes went into polishing of the new progress display, the sync protocol window which is not sync-folder centric any more and many other places.</p>
<p>We encourage thorough testing of this version, especially the new features. In addition, we would like to ask you to check the open issues in <a href="https://github.com/owncloud/mirall/issues">https://github.com/owncloud/mirall/issues</a> and tag them with the &ldquo;1.4&rdquo; tag if they are still reproducible.</p>
<p>Thanks a lot for your enthusiasm. That helps us to improve ownCloud.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Csync Upstream Release 0.50.0</title>
      <link>https://dragotin.codeberg.page/posts/csync-upstream-release-0-50-0/</link>
      <pubDate>Mon, 05 Aug 2013 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/csync-upstream-release-0-50-0/</guid>
      <description>&lt;p&gt;Last week &lt;a href=&#34;http://www.cryptomilk.org/&#34;&gt;Andreas&lt;/a&gt; did an &lt;a href=&#34;http://www.csync.org/2013/08/01/csync-version-0-50-0/&#34;&gt;upstream release&lt;/a&gt; of the &lt;a href=&#34;http://www.csync.org&#34;&gt;file synchronization software&lt;/a&gt; &lt;a href=&#34;http://www.csync.org&#34;&gt;csync&lt;/a&gt;. Frequent readers know that csync is the sync engine that is used in the &lt;a href=&#34;http://www.owncloud.org/sync-clients&#34;&gt;ownCloud client&lt;/a&gt;, so this is a very important and special release for us.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://dragotin.files.wordpress.com/2013/08/sunflowers1.jpg&#34;&gt;&lt;img alt=&#34;Yeah for upstream!&#34; loading=&#34;lazy&#34; src=&#34;https://dragotin.codeberg.page/posts/csync-upstream-release-0-50-0/images/sunflowers1.jpg&#34;&gt;&lt;/a&gt; The new release contains a lot of features and changes me and my collegues worked on during the last 18 month: First we added the ownCloud module to &lt;a href=&#34;http://git.csync.org/projects/csync.git/log/&#34;&gt;csync upstream&lt;/a&gt;, so that csync now is able to sync local directories to an ownCloud server. The ownCloud client works on platforms Linux and MacOSX and Windows. That required a lot of (tricky) &lt;a href=&#34;https://dragotin.wordpress.com/2012/05/10/cross-platform-again/&#34;&gt;changes&lt;/a&gt; to the csync platform which we carefully backported to csync upstream.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Last week <a href="http://www.cryptomilk.org/">Andreas</a> did an <a href="http://www.csync.org/2013/08/01/csync-version-0-50-0/">upstream release</a> of the <a href="http://www.csync.org">file synchronization software</a> <a href="http://www.csync.org">csync</a>. Frequent readers know that csync is the sync engine that is used in the <a href="http://www.owncloud.org/sync-clients">ownCloud client</a>, so this is a very important and special release for us.</p>
<p><a href="http://dragotin.files.wordpress.com/2013/08/sunflowers1.jpg"><img alt="Yeah for upstream!" loading="lazy" src="/posts/csync-upstream-release-0-50-0/images/sunflowers1.jpg"></a> The new release contains a lot of features and changes me and my collegues worked on during the last 18 month: First we added the ownCloud module to <a href="http://git.csync.org/projects/csync.git/log/">csync upstream</a>, so that csync now is able to sync local directories to an ownCloud server. The ownCloud client works on platforms Linux and MacOSX and Windows. That required a lot of (tricky) <a href="https://dragotin.wordpress.com/2012/05/10/cross-platform-again/">changes</a> to the csync platform which we carefully backported to csync upstream.</p>
<p>There are much more changes, such as: More compilers supported, a new logging framework, a new base lib to do unit testing, removal of not so common dependencies and other infrastructure changes. But also on the feature side there are more improvements, mainly to focus on a more easy and broader use of the csync library that allows to embed the sync functionality to various backends into other applications.</p>
<p>I am very happy that we kept our promise to contribute a lot of our changes back to upstream. Primarily that is the way to go in the open source world, you will say. But it was distressing to see how quickly people were whispering stuff like <em>&ldquo;Well, wouldn&rsquo;t it be easier if you do a fork? Remember, you have to come to good results quickly for the company, why bother with an upstream project?&rdquo;</em></p>
<p>For me, that wouldn&rsquo;t be like companies in FOSS world should behave, and I know that on the long run, it would not be beneficial for the company either. So very good that the relevant people supported the idea of going <em>with</em> upstream from the beginning.</p>
<p>Does that mean that csync 0.50.0 and ocsync as shipped with ownCloud are the same now? No, unfortunately not. We did more changes on the <a href="http://git.csync.org/users/freitag/csync.git/log/?h=dav">ownCloud branch</a> which need to be reviewed and probably won&rsquo;t fit to csync the way they are now. More work to be done, but we&rsquo;re on the way!</p>
]]></content:encoded>
    </item>
    <item>
      <title>Sync Progress Display</title>
      <link>https://dragotin.codeberg.page/posts/sync-progress-display/</link>
      <pubDate>Tue, 23 Jul 2013 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/sync-progress-display/</guid>
      <description>&lt;p&gt;here is something new and eye candy in the &lt;a href=&#34;http://www.owncloud.org&#34;&gt;ownCloud&lt;/a&gt; &lt;a href=&#34;http://owncloud.org/sync-clients/&#34;&gt;Client&lt;/a&gt;, so let me show a bit of what we have worked on recently.&lt;/p&gt;
&lt;p&gt;Many users of the ownCloud Client were asking for sync progress information, in fact there was none at all until today which is a bit boring. The reason why we hadn&amp;rsquo;t it was simply that &lt;a href=&#34;http://csync.org&#34;&gt;csync&lt;/a&gt;, which is the &lt;a href=&#34;http://csync.org&#34;&gt;file synchronizer&lt;/a&gt; engine we use, did not have an API to hand over progress information of an actual up- or download to higher levels of the application.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>here is something new and eye candy in the <a href="http://www.owncloud.org">ownCloud</a> <a href="http://owncloud.org/sync-clients/">Client</a>, so let me show a bit of what we have worked on recently.</p>
<p>Many users of the ownCloud Client were asking for sync progress information, in fact there was none at all until today which is a bit boring. The reason why we hadn&rsquo;t it was simply that <a href="http://csync.org">csync</a>, which is the <a href="http://csync.org">file synchronizer</a> engine we use, did not have an API to hand over progress information of an actual up- or download to higher levels of the application.</p>
<p>We implemented two callbacks in csync: One that informs about start, end and progress of an up- or download of an individual file. Another one processes the overall progress of the currently running sync run, indicating for example that eight files have to be processed, current is file number four, and <em>x</em> of the overall sum <em>y</em> bytes have been processed already.</p>
<p>That information is passed into a singleton class called ProgressDispatcher in the client code, where other classes can connect to a signal providing that information. That comes handy as we need the information at different places in the client GUI. [caption id=&ldquo;attachment_299&rdquo; align=&ldquo;alignright&rdquo; width=&ldquo;399&rdquo;]<a href="http://dragotin.files.wordpress.com/2013/07/sync_progress5.png"><img alt="Sync Progress Display" loading="lazy" src="/posts/sync-progress-display/images/sync_progress5.png"></a> Sync Progress Display[/caption] The screenshot shows the first and probably most detailed implementation of the progress display in the sync accounts details which are part of a new settings- and status dialog.</p>
<p>The visual appearance was worked out by our interaction designer Jan. We always have to argue a bit because obviously <strong>I</strong> am the greatest interaction designer around ;-) but well, finally we do like Jan says and the result is great IMO. It&rsquo;s great that we have him for ownCloud as that guarantees that our project is not drifting too much onto the geeky techy side which (I heard) is scaring off some users&hellip;</p>
<p>Hope you like it! You can get a preview in the current nightly builds (<a href="http://download.owncloud.com/download/nightly/">win, mac</a>, <a href="http://download.opensuse.org/repositories/isv:/ownCloud:/community:/nightly/">Linux</a>) of the client! Please <a href="https://github.com/owncloud/mirall/blob/master/CONTRIBUTING.md">report bugs</a> as you find them, thanks.</p>
]]></content:encoded>
    </item>
    <item>
      <title>ownCloud Client May Hackfest</title>
      <link>https://dragotin.codeberg.page/posts/owncloud-client-may-hackfest/</link>
      <pubDate>Fri, 03 May 2013 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/owncloud-client-may-hackfest/</guid>
      <description>&lt;p&gt;Again we&amp;rsquo;re meeting in Berlin at &lt;a href=&#34;http://www.woboq.com&#34;&gt;Woboq&lt;/a&gt; Intl. Headquarters to work on the ownCloud Sync Client again. One of our topics is the still not completely fixed problem with conflict files. There has been lots of troubles about false conflict files the client is generating in that situations were the ETag database is wasted.&lt;/p&gt;
&lt;p&gt;We revisited this problem and will come up with a better solution.&lt;/p&gt;
&lt;p&gt;The key changes will probably be&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Again we&rsquo;re meeting in Berlin at <a href="http://www.woboq.com">Woboq</a> Intl. Headquarters to work on the ownCloud Sync Client again. One of our topics is the still not completely fixed problem with conflict files. There has been lots of troubles about false conflict files the client is generating in that situations were the ETag database is wasted.</p>
<p>We revisited this problem and will come up with a better solution.</p>
<p>The key changes will probably be</p>
<ul>
<li>Conflict files will never again be generated on the server. Even if we are in a conflict situation, we will download the file and keep the conflicting version only on the client. This enables us to detect false conflicts.</li>
<li>The current way we handle a system time difference has to be changed. We wont adjust the file mtimes of files in the file system any more with the time difference between the client and server. That way we do not suffer from floating time differences any more. For the decision of which version is more recent, we will still consider the time difference.</li>
<li>We will use a very quick request like OPTION to get the servers time setting to the client. That will allow to calculate the time difference between server and client more accurately. It&rsquo;s needed to decide which file is more recent.</li>
</ul>
<p><a href="http://dragotin.files.wordpress.com/2013/05/aktoc.png"><img alt="aktoc" loading="lazy" src="/posts/owncloud-client-may-hackfest/images/aktoc.png"></a> Read this as a note to self, yet we feel very well fitting into Berlin round may 1st ;-)</p>
<p>Photo credit: <a href="http://www.flickr.com/photos/96dpi/521855009/">96dpi</a> / <a href="http://creativecommons.org/licenses/by-nc/2.0/">CC BY-NC</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>What&#39;s on in Nightly?</title>
      <link>https://dragotin.codeberg.page/posts/whats-on-in-nightly/</link>
      <pubDate>Mon, 29 Apr 2013 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/whats-on-in-nightly/</guid>
      <description>&lt;p&gt;We ownCloud Client devs were quite busy doing bug investigations and two releases the last couple of weeks. But that does not mean that nothing went into feature branches. It did, and now we can start to think of a release 1.3.0 with a couple of new features for the client.&lt;/p&gt;
&lt;p&gt;Here is a small overview of what went into ocsync master (actually the &lt;a href=&#34;http://git.csync.org/users/freitag/csync.git/log/?h=dav&#34;&gt;dav branch&lt;/a&gt;) and into &lt;a href=&#34;http://github.com/owncloud/mirall&#34;&gt;mirall master&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Note that this is alpha state software, but it&amp;rsquo;s already available for testing from our &lt;a href=&#34;https://dragotin.wordpress.com/2013/04/23/owncloud-nightly-builds/&#34;&gt;nightly builds&lt;/a&gt; at the &lt;a href=&#34;http://download.opensuse.org/repositories/isv:/ownCloud:/community:/nightly/&#34;&gt;ownCloud nightly repository&lt;/a&gt;.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>We ownCloud Client devs were quite busy doing bug investigations and two releases the last couple of weeks. But that does not mean that nothing went into feature branches. It did, and now we can start to think of a release 1.3.0 with a couple of new features for the client.</p>
<p>Here is a small overview of what went into ocsync master (actually the <a href="http://git.csync.org/users/freitag/csync.git/log/?h=dav">dav branch</a>) and into <a href="http://github.com/owncloud/mirall">mirall master</a>.</p>
<p>Note that this is alpha state software, but it&rsquo;s already available for testing from our <a href="https://dragotin.wordpress.com/2013/04/23/owncloud-nightly-builds/">nightly builds</a> at the <a href="http://download.opensuse.org/repositories/isv:/ownCloud:/community:/nightly/">ownCloud nightly repository</a>.</p>
<p>If you enable the nightly package repository on your system, please be sure to use the machine for testing purposes only. Windows and Mac nightly builds can be found <a href="http://download.owncloud.com/download/nightly">here to download</a>.</p>
<h3 id="csync-big-file-chunking">csync: Big File Chunking</h3>
<p>Handling big files over HTTP is difficult, if files grew bigger than a gigabyte, we faced multiple problems. To deal with that, <a href="https://github.com/owncloud/core/wiki/spec:-big-file-chunking">we thought</a> of splitting up big files and transmit the parts to let the server finally assemble the file again once all parts are there.</p>
<p>We wrote a little library to implement that, called <a href="http://git.csync.org/users/freitag/csync.git/tree/src/httpbf?h=dav">httpbf</a>. It is now integrated in the current development branch. You will see files big files split up into parts for transmission to the server. With that there should not be a filesize limit to work with any more, except the limits we have from the operating system etc.</p>
<h3 id="up--and-download-resume">Up- and Download Resume</h3>
<p>With big file chunking, we also introduce up- and download resume. If a file transmission was interrupted and is started over again later, only the missing parts are going to be pushed again. However, we&rsquo;re not yet transmitting only changed chunks for existing files yet, just to answer that question here before it comes up. That will be subject of more enhancements.</p>
<h3 id="source-file-verification">Source File Verification</h3>
<p>Another problem with big files is that if one gets copied into the synced dir on the local machine, the copy is not finished before the sync acutally starts. That can result in useless transmissions because inconsistent data is synced.</p>
<p>We added code to the httpbf library that checks for the integrity of the source file. When the first chunk is transmitted, it is checked if the file has still the size and mod time from the beginning. If not, the library waits for two seconds and starts over with a check again. That way, it waits until the source file has stabilized. A final check if the source file hasn&rsquo;t changed during upload is done for every file when the upload is finished.</p>
<h3 id="csync-context-reuse">CSync Context Reuse</h3>
<p>There is the very unpleasant problem on some distros (namely Ubuntu and Fedora) that the ownCloud Client wastes file descriptors. We figured that this is because the system libraries on that platforms fail to unload the csync ownCloud module properly.</p>
<p>Version 1.2.5 contains a quick fix for that, but the real fix is to reuse the csync context within mirall and not build it up and down for every sync run as we did until now. So we developed the function csync_commit which commits the results of the sync run to the database and leaves the csync context intact for the next run. That way we just load and unload the ownCloud module on time and not every 30 seconds. The csync patch already went upstream.</p>
<h3 id="mirall-new-setup-dialog">Mirall: New Setup Dialog</h3>
<p><a href="http://dragotin.files.wordpress.com/2013/04/newsetup_s.png"><img alt="newsetup_s" loading="lazy" src="/posts/whats-on-in-nightly/images/newsetup_s.png"></a>There is also the new setup dialog in the nightly builds: It is much more simplified compared to the old one, user only needs to add the url and user credentials and thats it. Also, it syncs the whole ownCloud to a local folder, just like other boxes do. That is one of the most often heard enhancement requests, and here we go.</p>
<p>That all I think would qualify for a good 1.3.0 release, but we need more time to fine tune,polish, test and bugfix. But we would appreciate if people could help test. Please report bugs in the <a href="http://github.com/owncloud/mirall/issues/">client&rsquo;s bugtracker</a>. We need to find bugs prior the release, and that happens with your help!</p>
<p>Have fun &amp; Thanks a lot for testing!</p>
]]></content:encoded>
    </item>
    <item>
      <title>ownCloud Client Release 1.2.5</title>
      <link>https://dragotin.codeberg.page/posts/owncloud-client-release-1-2-5/</link>
      <pubDate>Tue, 23 Apr 2013 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/owncloud-client-release-1-2-5/</guid>
      <description>&lt;p&gt;Today is release day!&lt;/p&gt;
&lt;p&gt;We just release ownCloud Client 1.2.5, hurrah! It&amp;rsquo;s a small bug fix release, but it will make more people happy users! It fixes three ugly crashes we found with the help of encouraged bug hunters. One of them was an race between our thread which runs csync and the Qt SSL stack we&amp;rsquo;re obviously using. That caused a crash which happened after quite some run time, or also never&amp;hellip; Hard to reproduce and debug, but finally Danimo and his mighty friends were able to nail that.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Today is release day!</p>
<p>We just release ownCloud Client 1.2.5, hurrah! It&rsquo;s a small bug fix release, but it will make more people happy users! It fixes three ugly crashes we found with the help of encouraged bug hunters. One of them was an race between our thread which runs csync and the Qt SSL stack we&rsquo;re obviously using. That caused a crash which happened after quite some run time, or also never&hellip; Hard to reproduce and debug, but finally Danimo and his mighty friends were able to nail that.</p>
<p>The new client can be found through it&rsquo;s <a href="http://owncloud.org/sync-clients">download page</a>, here is the <a href="http://owncloud.org/sync-clients/releases">Changelog</a>.</p>
<p>If you find issues, please help us to improve ownCloud by commenting or reporting the bugs on our <a href="http://github.com/owncloud/mirall/issues/">bugtracker</a>. Thanks!</p>
]]></content:encoded>
    </item>
    <item>
      <title>ownCloud Nightly Builds</title>
      <link>https://dragotin.codeberg.page/posts/owncloud-nightly-builds/</link>
      <pubDate>Tue, 23 Apr 2013 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/owncloud-nightly-builds/</guid>
      <description>&lt;p&gt;as you might have heard, we&amp;rsquo;re providing nightly builds of the parts of &lt;a href=&#34;http://owncloud.org&#34;&gt;ownCloud&lt;/a&gt;, which is ownCloud community server as well as the ownCloud client on its supported platforms Linux, Windows and Mac.&lt;/p&gt;
&lt;p&gt;The nightly builds of the client for Windows and Mac and the source balls can be downloaded from &lt;a href=&#34;http://download.owncloud.com/download/nightly/&#34;&gt;the nightly directory&lt;/a&gt; on our download server. They are named after the last release, followed by a date time stamp, which is simply a concatentation of the year, month and day the nightly was built on. For linux we maintain a so called &lt;a href=&#34;http://software.opensuse.org/download/package?project=isv:ownCloud:community:nightly&amp;amp;package=owncloud-client&#34;&gt;nightly repository&lt;/a&gt; in the openSUSE Buildservice which builds for various distributions. That can be added to the linux package management system and that way every morning, an update is there for you. The ownCloud server is built only in the nightly repository from &lt;a href=&#34;http://download.owncloud.com/community/owncloud-daily-stable5.tar.bz2&#34;&gt;this daily source&lt;/a&gt;.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>as you might have heard, we&rsquo;re providing nightly builds of the parts of <a href="http://owncloud.org">ownCloud</a>, which is ownCloud community server as well as the ownCloud client on its supported platforms Linux, Windows and Mac.</p>
<p>The nightly builds of the client for Windows and Mac and the source balls can be downloaded from <a href="http://download.owncloud.com/download/nightly/">the nightly directory</a> on our download server. They are named after the last release, followed by a date time stamp, which is simply a concatentation of the year, month and day the nightly was built on. For linux we maintain a so called <a href="http://software.opensuse.org/download/package?project=isv:ownCloud:community:nightly&amp;package=owncloud-client">nightly repository</a> in the openSUSE Buildservice which builds for various distributions. That can be added to the linux package management system and that way every morning, an update is there for you. The ownCloud server is built only in the nightly repository from <a href="http://download.owncloud.com/community/owncloud-daily-stable5.tar.bz2">this daily source</a>.</p>
<h3 id="what-are-nightlies-for">What are nightlies for?</h3>
<p>To test ownCloud is a very difficult task. ownCloud is a complex system consisting of variuos parts (anybody thought ownCloud is just a &ldquo;LAMP web app&rdquo;?) which supports a huge variety of environments. That multiplies to a huge variety that needs to be tested. We had issues with that in the past and as a result, providing easy access to ready-to-run testing versions is one important action we are taking to improve quality as that enables more people to participate on tests.</p>
<p>Of course nightly builds are not released software, nor got they extensive testing. Nightly builds must never be used on production installations, please, really <strong>don&rsquo;t do</strong>.</p>
<p>But maybe you have a test server or virtual machine somewhere in spare. So it would be great if you could install a nightly version on that, combine it with a nightly built client, and see if everything runs as <strong>you</strong> would expect it.</p>
<p>Another great purpose of the nightly builds is to use it for bug verification. In client development we often comment on bugs with sentences like <em>this is fixed now, please verify with the current nightly build</em>. That way bug reporter get a very quick way to verify the fix of their issue and developers can be sure that their fix really is sufficient.</p>
<h3 id="how-are-nightlies-built">How are nightlies built?</h3>
<p>We are doing the nightly builds through an instance of <a href="http://jenkins-ci.org/">Jenkins</a>, a continous integration server. With a little script we wrote Jenkins feeds the OBS every night, so this is completely automatted. But more on that in a subsequent blog.</p>
]]></content:encoded>
    </item>
    <item>
      <title>ownCloud Meetup in Nürnberg</title>
      <link>https://dragotin.codeberg.page/posts/owncloud-meetup-in-nurnberg/</link>
      <pubDate>Wed, 20 Feb 2013 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/owncloud-meetup-in-nurnberg/</guid>
      <description>&lt;p&gt;Next week a part of the ownCloud team will meet in Nürnberg for a creative time and we thought a little meetup would be cool. Join us for a relaxed evening where we will give short talks about current state of ownCloud, new features and the near future.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s meet &lt;strong&gt;Wednesday, February 27th, 6:00 PM&lt;/strong&gt; at &lt;a href=&#34;http://www.coworking-nuernberg.de&#34;&gt;the Nuremberg Coworking Space&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Talks (short, don&amp;rsquo;t be afraid!):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;ownCloud overview&lt;/em&gt; by Holger Dyroff&lt;/li&gt;
&lt;li&gt;&lt;em&gt;The updated ownCloud 5 User Interface&lt;/em&gt; by Jan-Christoph Borchardt&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Next steps for the ownCloud Desktop Clients&lt;/em&gt; by Daniel Molkentin&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The evening closes with a get-together, your chance to meet the team and discuss in a relaxed atmosphere.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Next week a part of the ownCloud team will meet in Nürnberg for a creative time and we thought a little meetup would be cool. Join us for a relaxed evening where we will give short talks about current state of ownCloud, new features and the near future.</p>
<p>Let&rsquo;s meet <strong>Wednesday, February 27th, 6:00 PM</strong> at <a href="http://www.coworking-nuernberg.de">the Nuremberg Coworking Space</a>.</p>
<p>Talks (short, don&rsquo;t be afraid!):</p>
<ul>
<li><em>ownCloud overview</em> by Holger Dyroff</li>
<li><em>The updated ownCloud 5 User Interface</em> by Jan-Christoph Borchardt</li>
<li><em>Next steps for the ownCloud Desktop Clients</em> by Daniel Molkentin</li>
</ul>
<p>The evening closes with a get-together, your chance to meet the team and discuss in a relaxed atmosphere.</p>
<p>Everybody is welcome!</p>
]]></content:encoded>
    </item>
    <item>
      <title>ownCloud Sync Client 1.2.0 final</title>
      <link>https://dragotin.codeberg.page/posts/owncloud-sync-client-1-2-0-final/</link>
      <pubDate>Fri, 25 Jan 2013 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/owncloud-sync-client-1-2-0-final/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;1.2.0_final&#34; loading=&#34;lazy&#34; src=&#34;https://dragotin.codeberg.page/posts/owncloud-sync-client-1-2-0-final/images/1-2-0_final.png&#34;&gt; Yesterday, &lt;a href=&#34;http://owncloud.org/sync-clients/releases&#34;&gt;ownCloud Client 1.2.0&lt;/a&gt; was released. You can get it from &lt;a href=&#34;http://owncloud.org/sync-clients&#34;&gt;here&lt;/a&gt;. We worked on this since end of november last year, you might have seen my other blogs about the beta versions we had for this release.&lt;/p&gt;
&lt;p&gt;What is interesting about the release from a more technical point of view? Here are a couple of examples.&lt;/p&gt;
&lt;p&gt;One of the things which often was complained about was the performance of the client. &lt;em&gt;Performance&lt;/em&gt; is a very broad term, so we have to examine the details: Many people felt like its a performance problem that former clients polled the local file system for changes on the MacOSX and Windows platform. That was recommended from other projects which have experience with going through large file collections. &lt;a href=&#34;http://doc.qt.digia.com/qt/qfilesystemwatcher.html&#34; title=&#34;QFileSystemWatcher&#34;&gt;QFileSystemWatcher&lt;/a&gt; seemed not to be designed for this usecase.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><img alt="1.2.0_final" loading="lazy" src="/posts/owncloud-sync-client-1-2-0-final/images/1-2-0_final.png"> Yesterday, <a href="http://owncloud.org/sync-clients/releases">ownCloud Client 1.2.0</a> was released. You can get it from <a href="http://owncloud.org/sync-clients">here</a>. We worked on this since end of november last year, you might have seen my other blogs about the beta versions we had for this release.</p>
<p>What is interesting about the release from a more technical point of view? Here are a couple of examples.</p>
<p>One of the things which often was complained about was the performance of the client. <em>Performance</em> is a very broad term, so we have to examine the details: Many people felt like its a performance problem that former clients polled the local file system for changes on the MacOSX and Windows platform. That was recommended from other projects which have experience with going through large file collections. <a href="http://doc.qt.digia.com/qt/qfilesystemwatcher.html" title="QFileSystemWatcher">QFileSystemWatcher</a> seemed not to be designed for this usecase.</p>
<p>Polling was ok for desktop computers with up-to-date hardware, but on devices running from batteries this was a energy drain. Good that we could fix that with 1.2.0 using native implementation of change detectors on Windows and MacOSX. They detect changes within a file system tree. If a change is detected, a sync run is started. But note, this is only for local file systems. Detection of changes on the server is a different story which has to be told as well.</p>
<p>Another performance problem was within the file upload which is done by a HTTP PUT request. Month ago (pretty after my start at ownCloud) I implemented it using a tmp file in between. That means, the source file was copied to a tmp file, and from that it was processed to the request body. Improvement was needed and we changed the code to directly read from the file descriptor of the opened source file.</p>
<p>Another thing that was improved with 1.2.0 is the error reporting to the user. Former versions of the client sometimes provided error messages which were not really accurately describing the problem. The reason for that was that csync uses errnos (yes, the ones from errno.h) to name errors as csync maps everything to a POSIX file interface. That surely works as long as you&rsquo;re on a kind of file system. But it&rsquo;s hard to map HTTP communication problems onto that. So we decided to add our own &ldquo;custom&rdquo; errnos and enhance the whole idea to use these to describe problems. That works more accurate now.</p>
<p>The next things on the list are for example a more convenient setup dialog for the client. Also we will get away from the kind of hard coded target file name on the cloud. A better network recognition will also be next as well as better handling of big files. And more&hellip;</p>
<p>Thanks a lot to all who helped to get 1.2.0 finished! It is big fun to work in such a great community :-)</p>
]]></content:encoded>
    </item>
    <item>
      <title>ownCloud Client 1.2.0 beta2</title>
      <link>https://dragotin.codeberg.page/posts/owncloud-client-1-2-0-beta2/</link>
      <pubDate>Sat, 19 Jan 2013 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/owncloud-client-1-2-0-beta2/</guid>
      <description>&lt;p&gt;Yesterday the ownCloud Client team released the ownCloud Client 1.2.0 beta 2. It includes a couple of improvements compared to &lt;a href=&#34;https://dragotin.wordpress.com/2012/12/21/owncloud-client-1-2-0-beta1/&#34;&gt;beta 1&lt;/a&gt; which was released before Christmas.&lt;/p&gt;
&lt;p&gt;The release of version 1.2.0 is planned for the next week if things go smooth.&lt;/p&gt;
&lt;p&gt;[caption id=&amp;ldquo;attachment_219&amp;rdquo; align=&amp;ldquo;alignright&amp;rdquo; width=&amp;ldquo;595&amp;rdquo;]&lt;img alt=&#34;New Sync Protocol Dialog&#34; loading=&#34;lazy&#34; src=&#34;https://dragotin.codeberg.page/posts/owncloud-client-1-2-0-beta2/images/statusdialog_detail.png&#34;&gt; New Sync Protocol Dialog[/caption]&lt;/p&gt;
&lt;p&gt;In particular, the the following improvements were added:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Proxy authentication fixed (Basic auth, NTLM will not yet work)&lt;/li&gt;
&lt;li&gt;The status dialog now provides statistics on the last sync run (via the info button). It will tell in detail which files have been synced, added or deleted.&lt;/li&gt;
&lt;li&gt;Client will go offline while the server in in maintenance mode (feature available with ownCoud master only)&lt;/li&gt;
&lt;li&gt;Improved SSL Certificate acceptance&lt;/li&gt;
&lt;li&gt;All sizes of the new icons are available.&lt;/li&gt;
&lt;li&gt;Support files &amp;gt; 2 GB on all platforms for uploading.&lt;/li&gt;
&lt;li&gt;Fixed some minor memory leaks and again saved some server requests through optimizations.&lt;/li&gt;
&lt;li&gt;Improved error reporting to the user.&lt;/li&gt;
&lt;li&gt;Remove legacy theming support.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We would appreciate if you give this release a test ride. Note that because it is beta you should make extra sure to have have backups of your data.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Yesterday the ownCloud Client team released the ownCloud Client 1.2.0 beta 2. It includes a couple of improvements compared to <a href="https://dragotin.wordpress.com/2012/12/21/owncloud-client-1-2-0-beta1/">beta 1</a> which was released before Christmas.</p>
<p>The release of version 1.2.0 is planned for the next week if things go smooth.</p>
<p>[caption id=&ldquo;attachment_219&rdquo; align=&ldquo;alignright&rdquo; width=&ldquo;595&rdquo;]<img alt="New Sync Protocol Dialog" loading="lazy" src="/posts/owncloud-client-1-2-0-beta2/images/statusdialog_detail.png"> New Sync Protocol Dialog[/caption]</p>
<p>In particular, the the following improvements were added:</p>
<ul>
<li>Proxy authentication fixed (Basic auth, NTLM will not yet work)</li>
<li>The status dialog now provides statistics on the last sync run (via the info button). It will tell in detail which files have been synced, added or deleted.</li>
<li>Client will go offline while the server in in maintenance mode (feature available with ownCoud master only)</li>
<li>Improved SSL Certificate acceptance</li>
<li>All sizes of the new icons are available.</li>
<li>Support files &gt; 2 GB on all platforms for uploading.</li>
<li>Fixed some minor memory leaks and again saved some server requests through optimizations.</li>
<li>Improved error reporting to the user.</li>
<li>Remove legacy theming support.</li>
</ul>
<p>We would appreciate if you give this release a test ride. Note that because it is beta you should make extra sure to have have backups of your data.</p>
<p>If you want to give feedback, please use <a href="https://mail.kde.org/mailman/listinfo/owncloud">our mailing list</a> for general discussion and the <a href="https://github.com/owncloud/mirall/issues">issue tracker</a> for bug reports. Please read our <a href="https://github.com/owncloud/mirall/blob/master/CONTRIBUTING.md">new guidelines</a> on bug reporting before!</p>
<p>Download Links:</p>
<ul>
<li>Windows, 32/64 Bit: <a href="http://download.owncloud.com/download/testing/owncloud-1.2.0beta2-setup.exe">http://download.owncloud.com/download/testing/owncloud-1.2.0beta2-setup.exe</a></li>
<li>Mac OS X ( &gt;= 10.6, 64 bit): <a href="http://download.owncloud.com/download/testing/ownCloud-1.2.0beta2.dmg">http://download.owncloud.com/download/testing/ownCloud-1.2.0beta2.dmg</a></li>
<li>Linux: <a href="http://software.opensuse.org/download/package?project=isv:ownCloud:testing&amp;package=owncloud-client">http://software.opensuse.org/download/package?project=isv:ownCloud:testing&amp;package=owncloud-client</a></li>
</ul>
<p>Sources:</p>
<ul>
<li>Mirall: <a href="http://download.owncloud.com/download/testing/mirall-1.2.0beta2.tar.bz2">http://download.owncloud.com/download/testing/mirall-1.2.0beta2.tar.bz2</a></li>
<li>OCSync: <a href="http://download.owncloud.com/download/testing/ocsync-0.70.1.tar.bz2">http://download.owncloud.com/download/testing/ocsync-0.70.1.tar.bz2</a></li>
</ul>
<p>Have fun!</p>
]]></content:encoded>
    </item>
    <item>
      <title>ownCloud Client 1.2.0 beta1</title>
      <link>https://dragotin.codeberg.page/posts/owncloud-client-1-2-0-beta1/</link>
      <pubDate>Fri, 21 Dec 2012 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/owncloud-client-1-2-0-beta1/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;xmas_bulb&#34; loading=&#34;lazy&#34; src=&#34;https://dragotin.codeberg.page/posts/owncloud-client-1-2-0-beta1/images/xmas_bulb.png&#34;&gt;2012 is slowly coming to an end and we all are looking forward to a few silent days around Christmas. But we did not want to leave to holidays without adding another thing to your vacation experience: I am happy to announce the first beta of the upcoming ownCloud Client release 1.2.0, ready now for you to test and enjoy under the tree.&lt;/p&gt;
&lt;p&gt;This is the first build with the new things we &lt;a href=&#34;http://dragotin.wordpress.com/2012/12/09/a-week-for-csync/&#34;&gt;did in Berlin&lt;/a&gt; a couple of weeks ago, you will&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><img alt="xmas_bulb" loading="lazy" src="/posts/owncloud-client-1-2-0-beta1/images/xmas_bulb.png">2012 is slowly coming to an end and we all are looking forward to a few silent days around Christmas. But we did not want to leave to holidays without adding another thing to your vacation experience: I am happy to announce the first beta of the upcoming ownCloud Client release 1.2.0, ready now for you to test and enjoy under the tree.</p>
<p>This is the first build with the new things we <a href="http://dragotin.wordpress.com/2012/12/09/a-week-for-csync/">did in Berlin</a> a couple of weeks ago, you will</p>
<ul>
<li>discover that there is much better error reporting if something goes wrong.</li>
<li>probably feel like it syncs faster, yes <em>faster</em>.</li>
<li>see that there are less HTTP requests to the server for a single sync run.</li>
<li>don&rsquo;t see any issues with MacOSX and funny characters in filenames any more.</li>
<li>recognize a new icon set, which is not finalized yet (actually not all sizes are there, thats why the status dialog looks a bit funny) but we thought its nice to already add it to the beta. It should fit nicely into your operating system environment.</li>
<li>realize that this client comes with a cross platform file system watcher on clientside, so no polling any more.</li>
<li>have your password stored in a secure keychain on all platforms since we added qtkeychain to the client.</li>
</ul>
<p>Maybe there is more, but we thought that&rsquo;s already a nice beta release.</p>
<p>Please find packages for <a href="http://download.owncloud.com/download/testing/ownCloud-1.2.0beta1.dmg">MacOSX</a>, <a href="http://download.owncloud.com/download/testing/owncloud-1.2.0beta1-setup.exe">Windows</a> and <a href="http://software.opensuse.org/download/package?project=isv:ownCloud:testing&amp;package=owncloud-client">Linuxes</a>. Note, not all packages are finished yet. If the one for your distro is missing, please come back later, or even better - speak up at <a href="mailto:packaging@owncloud.org">packaging@owncloud.org</a> and help fixing :)</p>
<p>Of course you also should note that this is an <strong>early beta</strong> and you would not want to use it without a good backup of your data and only on your test account without important data.</p>
<p>We would appreciate if you let us know your experience on the mailinglist. If you find problems, please report it to the client&rsquo;s <a href="http://github.com/owncloud/mirall/issues">bugtracker</a> mentioning client- and server versions and at best with useful logs.</p>
<p>With that we are happily vanishing to spend some time away from the computer, looking back on a very exciting and very busy year, working on an interesting topic with a lot of nice people.</p>
<p>Thanks and best Season&rsquo;s Greetings!</p>
]]></content:encoded>
    </item>
    <item>
      <title>Kraft 0.50 Released</title>
      <link>https://dragotin.codeberg.page/posts/kraft-0-50-released/</link>
      <pubDate>Tue, 18 Dec 2012 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/kraft-0-50-released/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://dragotin.wordpress.com/2012/12/18/kraft-0-50-released/bloghead/&#34;&gt;&lt;img alt=&#34;bloghead&#34; loading=&#34;lazy&#34; src=&#34;https://dragotin.codeberg.page/posts/kraft-0-50-released/images/bloghead.png&#34;&gt;&lt;/a&gt;Short before Christmas here is another present for you: After more than one year without release I am happy to announce the availability of Kraft 0.50, the latest version of the KDE software for easy quote and invoice management.&lt;/p&gt;
&lt;p&gt;The most important change is that now multiple tax rates are supported within one document. That means that within e.g. one invoice items without tax, with reduced and full tax rate are supported. The sum calculation takes that in consideration properly. That enables Kraft for even more usecases.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><a href="http://dragotin.wordpress.com/2012/12/18/kraft-0-50-released/bloghead/"><img alt="bloghead" loading="lazy" src="/posts/kraft-0-50-released/images/bloghead.png"></a>Short before Christmas here is another present for you: After more than one year without release I am happy to announce the availability of Kraft 0.50, the latest version of the KDE software for easy quote and invoice management.</p>
<p>The most important change is that now multiple tax rates are supported within one document. That means that within e.g. one invoice items without tax, with reduced and full tax rate are supported. The sum calculation takes that in consideration properly. That enables Kraft for even more usecases.</p>
<p>Apart from that, a lot of bug fixes and improvements happened, <a href="http://volle-kraft-voraus.de/Main/Releases" title="Kraft Releases">read more details</a> on the <a href="http://volle-kraft-voraus.de">Kraft Homepage</a>.</p>
<p>Sources and binary packages for various Linux distributions are available from the <a href="http://volle-kraft-voraus.de/Main/Download" title="Kraft Download">Download Page</a> or will appear there soon.</p>
<p>This release is nice progress for Kraft and I hope you have fun and success with the new release. Thanks all who contributed to Kraft! I am looking forward to getting your <a href="http://volle-kraft-voraus.de/Main/Contribution">feedback</a>!</p>
]]></content:encoded>
    </item>
    <item>
      <title>A week for csync</title>
      <link>https://dragotin.codeberg.page/posts/a-week-for-csync/</link>
      <pubDate>Sun, 09 Dec 2012 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/a-week-for-csync/</guid>
      <description>&lt;p&gt;On Friday I arrived back from Berlin where I had the pleasure to work with my great colleague Danimo and our friends from &lt;a href=&#34;http://woboq.com/&#34;&gt;Woboq&lt;/a&gt;, Markus and Olivier, in the Woboq Headquarter in Berlin Kreuzberg for a week.&lt;/p&gt;
&lt;p&gt;We thought that it might be fun to work together on &lt;a href=&#34;http://www.csync.org&#34;&gt;csync&lt;/a&gt;, our sync engine under the hood of the ownCloud client. There were some issues that should be fixed and on the way we cleaned and improved quite some code in csync.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>On Friday I arrived back from Berlin where I had the pleasure to work with my great colleague Danimo and our friends from <a href="http://woboq.com/">Woboq</a>, Markus and Olivier, in the Woboq Headquarter in Berlin Kreuzberg for a week.</p>
<p>We thought that it might be fun to work together on <a href="http://www.csync.org">csync</a>, our sync engine under the hood of the ownCloud client. There were some issues that should be fixed and on the way we cleaned and improved quite some code in csync.</p>
<p>Here are some things we worked on:</p>
<ul>
<li>
<p>We added a function that lets the program that uses the csync library pass arbitrary module parameters to the backend module. That way its more easy to steer the behaviour of the ownCloud modules from the calling app.</p>
</li>
<li>
<p>Error handling was improved, ie. if an http error happens, csync works errno based error reporting. We added custom errnos because not all error cases with http can be mapped to system errnos.</p>
</li>
<li>
<p>Formerly the csync ownCloud module was spooling files through an additional temporar file on client side. That step is skipped now which results in performance improvements as well as in more clean code.</p>
</li>
<li>
<p>We were able to reduce the number of HTTP requests that go over the wire even more. For example to check if there are changes on server side, now there is exactly one http propfind required. Also if files have to be synced, we could save some HTTP requests by improving caching of some requests.</p>
</li>
<li>
<p>Andreas recently changed the logging system in csync upstream master branch. We merged that back and now do not longer need the log4c framework. One build dependency less and a nice new logging framework.</p>
</li>
<li>
<p>Other bugs were fixed, such as a potential crash if a folder as deleted during it is synced, SSL handling shortcomings, code streamlining in handling compressed data streams and more.</p>
</li>
<li>
<p>We finalized a patch that uniforms the utf8 representations of characters over all platforms. That will fix problems we saw especially with MacOS and special filenames.</p>
</li>
</ul>
<p>Ah, yes, we also did other things, more related to the ownCloud client. Danimo managed to implement a cross platform filesystem watcher class that is able to fulfill our requirements. That obsoletes polling for changes on the local file system, one of the most popular enhancement requests.</p>
<p>And finally there now is a API in csync thats reports file transmission progress if a callback is installed accordingly. So the client hopefully soon will tell ya what it&rsquo;s doing for you. Also appreciated I guess&hellip;</p>
<p>Last but not least we added code to use <a href="https://github.com/frankosterfeld/qtkeychain">QtKeyChain</a>, a cross platform password storage library that stores password encrypted. For example on Linux QtKeyChain connects to kwallet. QtKeyChain was provided by Frank Osterfeld, thanks a lot for that contribution.</p>
<p>Quite some stuff for a short week, note that stuff that fills a short line in this blog can be quite nifty to investigate, implement and test. Not everything is stable, polished and properly integrated but it was a great and productive week. The next release of ownCloud Client will be a nice one.</p>
<p><a href="http://dragotin.wordpress.com/2012/12/09/a-week-for-csync/woboq_dinner2/"><img alt="woboq_dinner2" loading="lazy" src="http://dragotin.files.wordpress.com/2012/12/woboq_dinner2.png?w=300"></a> And sice you can not <em>always</em> work, we had a nice dinner at a very cool italian restaurant. We met with other ownCloud employees located in Berlin, Arthur and Georg. Fun :) And Berlin, yes, a great place to be, but finally I appreciated to arrive back to my snow covered home.</p>
<p>Many thanks to Olivier and Markus for hosting us and for the nice week.</p>
]]></content:encoded>
    </item>
    <item>
      <title>openSUSE Conference 2012</title>
      <link>https://dragotin.codeberg.page/posts/opensuse-conference-2012/</link>
      <pubDate>Mon, 22 Oct 2012 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/opensuse-conference-2012/</guid>
      <description>&lt;p&gt;I spent the last weekend in Prague at the &lt;a href=&#34;http://conference.opensuse.org/&#34;&gt;openSUSE conference 2012&lt;/a&gt;. It was a great opportunity to visit the wonderful city of Prague and meet old friends from the openSUSE community and get a bit more involved into openSUSE again.&lt;/p&gt;
&lt;p&gt;I gave a talk about &lt;a href=&#34;http://www.owncloud.org&#34;&gt;ownCloud&lt;/a&gt; on Saturday where I tried to show some technical details. That could have gone even deeper was the feedback some people gave me so I promise to show more of for example app development next time. Apart from that (and apart from the fact that laptops, projectors and Linux still do not play well) the talk went ok and was well received.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>I spent the last weekend in Prague at the <a href="http://conference.opensuse.org/">openSUSE conference 2012</a>. It was a great opportunity to visit the wonderful city of Prague and meet old friends from the openSUSE community and get a bit more involved into openSUSE again.</p>
<p>I gave a talk about <a href="http://www.owncloud.org">ownCloud</a> on Saturday where I tried to show some technical details. That could have gone even deeper was the feedback some people gave me so I promise to show more of for example app development next time. Apart from that (and apart from the fact that laptops, projectors and Linux still do not play well) the talk went ok and was well received.</p>
<p>The conference is a joint conference of actually four conferences: The openSUSE Conference, the Czech Linux Days, the Gentoo Summit and the SUSE Labs Conference. Over the weekend it was hosted at the Czech technical university of prague and that was a great venue. Very inspiring that over the whole foyer of the building intersting art sculptures were shown. Unusual for a technical faculty but a great thing. The building is modern and large enough for all the talks and workshops but as a result of that it was sometimes a bit difficult to keep the overview where happens what. Especially because the start- and end times of the talks were not kept in sync over the tracks.</p>
<p>I found it is a different atmosphere on the event compared to the openSUSE conferences of the last years which might have been more focussed around the openSUSE project. This one felt more like an general FOSS event. That is not bad, just different, and since change is obvious and good I look forward to seeing how this influences the openSUSE project in the near future.</p>
<p>I like to thank all involved on the organizing teams for their successful hard work, <em>have a lot of fun</em> for the next two days, I had a lot during the last two days :)</p>
]]></content:encoded>
    </item>
    <item>
      <title>Csync for ownCloud Client 1.1.0 - A New Sync Engine</title>
      <link>https://dragotin.codeberg.page/posts/csync-for-owncloud-client-1-1-0-a-new-sync-engine/</link>
      <pubDate>Thu, 11 Oct 2012 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/csync-for-owncloud-client-1-1-0-a-new-sync-engine/</guid>
      <description>&lt;p&gt;Along with todays &lt;a href=&#34;https://owncloud.com/blog/owncloud45-community&#34;&gt;ownCloud 4.5&lt;/a&gt; release we released the new &lt;a href=&#34;http://owncloud.org/sync-clients&#34;&gt;ownCloud Client 1.1.0&lt;/a&gt; with a new syncing concept.&lt;/p&gt;
&lt;p&gt;This blog will shed some light on the details. I apologize, it&amp;rsquo;s a long read.&lt;/p&gt;
&lt;h2 id=&#34;time-issues&#34;&gt;Time Issues&lt;/h2&gt;
&lt;p&gt;ownCloud Client versions 1.0.x worked with &lt;a href=&#34;http://csync.org&#34;&gt;csync&lt;/a&gt;s traditional way of using the &lt;a href=&#34;http://en.wikipedia.org/wiki/MAC_times&#34;&gt;file modification times&lt;/a&gt; to detect updates between the two repositories that should be synced to each other. That works fine and conforms to our idea to ideally not use any other metadata in syncing than what the file system has anyway.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Along with todays <a href="https://owncloud.com/blog/owncloud45-community">ownCloud 4.5</a> release we released the new <a href="http://owncloud.org/sync-clients">ownCloud Client 1.1.0</a> with a new syncing concept.</p>
<p>This blog will shed some light on the details. I apologize, it&rsquo;s a long read.</p>
<h2 id="time-issues">Time Issues</h2>
<p>ownCloud Client versions 1.0.x worked with <a href="http://csync.org">csync</a>s traditional way of using the <a href="http://en.wikipedia.org/wiki/MAC_times">file modification times</a> to detect updates between the two repositories that should be synced to each other. That works fine and conforms to our idea to ideally not use any other metadata in syncing than what the file system has anyway.</p>
<p><a href="http://dragotin.files.wordpress.com/2012/10/timeflies.jpg"><img alt="Time flies" loading="lazy" src="/posts/csync-for-owncloud-client-1-1-0-a-new-sync-engine/images/timeflies.jpg" title="Time flies"></a></p>
<p>However, there is one drawback which we all know from daily life: If at least two parties sync on time its important that all clocks are set exactly the same way. Remember good crime movies where a bank robbery always starts with a clock adjustment of all gangsters? We have exactly the same in ownClouds syncing: All involved have to have the same time setting, otherwise modification times of files can not be compared reliably.</p>
<p>There are solutions for computers to set the exact time (like ntp) so in general that works. However, in real life scenarios these are not reliable because either people do not have them started on the system or because the daemon updates the time once in a while and in that time span the clock skews already too much.</p>
<p>Users all the time reported problems with that and other experts continued to advise that we never get around that problems if we don&rsquo;t change something fundamental and go away from pure time based syncing.</p>
<p>Well, we did that with our <a href="http://owncloud.org/sync-clients/releases/">csync version 0.60.0</a> which is the sync engine for ownCloud Client 1.1.0.</p>
<h2 id="an-unique-id">An Unique Id</h2>
<p>Now, every file and directory inside a sync directory has an unique Id associated. The idea is that the Id changes if the file changes. So in the sync process the need for a file update in either direction can be computed by comparing the two Ids of the file. If the id has changed on one repository the file was changed there and needs to be synced to the other side.</p>
<p>The Ids are generated on the ownCloud server and one challenge for the client is to always download the correct Id of a file. The Ids are just random tags for a file version. It is not associated to the file content as MD5 sums would be. Actually it was a frequent advise to use MD5 sums or a similar approach which digests the files content to detect updates. That would have come very handy because that means comparing file contents directly and, more important, it&rsquo;s reproducable on either side. Also the client would have been able to recalculate the MD5-Sum of the local files and would not have depended on a local database with Ids that were pulled from the server before.</p>
<p>But we decided against hashes. Calculating MD5-Sums is costly in terms of CPU and time, especially for large files. The CPU problem is small on clients, but not on servers where a lot of clients connect to. Even though the sums can be calculated during upload, the problems remain for the case where the server does not see the upload stream, think of the &ldquo;mount my Dropbox&rdquo; case.</p>
<p>For files on the ownCloud server, the Id is always updated when the file gets updated. On the client side the last Id of a file is in the client database. It is invalidated in case the files modification time changed meanwhile to detect local changes.</p>
<h2 id="change-propagation">Change Propagation</h2>
<p>Another remarkable change in the 1.1.0 client is that change events in the file tree propagate up to the top directory on the owncloud server, ie. if a file changes in a directory, the id of the directory changes as well as the one of its parent directory etc.</p>
<p>That means that to detect if a file tree has changed, it&rsquo;s enough to check the top most directories Id. If that has changed, ok, than the client needs to dig deeper, but in the not so rare case that nothing has changed, the one call is enough to detect that. That dramatically lowers the server load with clients because instead of digging through the whole directory structure what we did with the 1.0.x series it is a few requests now.</p>
<h2 id="csync-and-owncloud-for-success">CSync and ownCloud for Success</h2>
<p>These are very intrusive changes to csync. For example, we had to add two additional fields to the database, add code that is able to build a representation of the local file tree from the database and make csync query for the file Ids from the server if needed. Deep under the hood the updater, reconciler and propagator code needed changes to work with the Ids. All these changes did not go back to csync upstream yet.</p>
<p>To not conflict with the upstream version of csync we decided to rename our csync version to ocsync. But: This is a temporar solution for the time we need to catch up with upstream again. That will take a while until everything is sorted again but we will work on that.</p>
<p>I am are very excited about the new version of csync. But obviously there are other changes in the ownCloud Client 1.1.0 which will be subject of another blog post.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Hand in Hand</title>
      <link>https://dragotin.codeberg.page/posts/hand-in-hand/</link>
      <pubDate>Thu, 21 Jun 2012 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/hand-in-hand/</guid>
      <description>&lt;p&gt;as you might know, &lt;a href=&#34;http://www.owncloud.org&#34;&gt;ownCloud&lt;/a&gt; uses the &lt;a href=&#34;http://www.open-build-service.org/&#34;&gt;Open Build Service&lt;/a&gt; (short OBS) to produce and distribute the binary packages for the various distributions we want to support.&lt;/p&gt;
&lt;p&gt;The OBS is a great system as it does not only build for various Linuxes but also lets the users download the binary packages utilizing a huge mirroring infrastructure. All for you, all for the good of free software.&lt;/p&gt;
&lt;p&gt;And there is even more: OBS offers a &lt;a href=&#34;http://software.opensuse.org/download/doc&#34;&gt;nice download page&lt;/a&gt; which can either be embedded into a projects webpage or be linked from it. Depending on the settings of the OBS project, for example the number of Linuxes it builds for, the page is adopted automatically. So you never again have to deal with lots of download links to the projects repository downloads. See the &lt;a href=&#34;http://software.opensuse.org/download/package?project=isv:ownCloud:community&amp;amp;package=owncloud-client&#34;&gt;ownCloud Client Package download page&lt;/a&gt; as an living example.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>as you might know, <a href="http://www.owncloud.org">ownCloud</a> uses the <a href="http://www.open-build-service.org/">Open Build Service</a> (short OBS) to produce and distribute the binary packages for the various distributions we want to support.</p>
<p>The OBS is a great system as it does not only build for various Linuxes but also lets the users download the binary packages utilizing a huge mirroring infrastructure. All for you, all for the good of free software.</p>
<p>And there is even more: OBS offers a <a href="http://software.opensuse.org/download/doc">nice download page</a> which can either be embedded into a projects webpage or be linked from it. Depending on the settings of the OBS project, for example the number of Linuxes it builds for, the page is adopted automatically. So you never again have to deal with lots of download links to the projects repository downloads. See the <a href="http://software.opensuse.org/download/package?project=isv:ownCloud:community&amp;package=owncloud-client">ownCloud Client Package download page</a> as an living example.</p>
<p>Now the page had a shortcoming for apt based distributions. I became aware of it as the problem as well as the solution to it was nicely pointed out by <a href="http://natetron.net/b/?p=395">this blog</a>: Apt wants to have the key before it trusts the download source. OBS generates the key but its not obvious how to import.</p>
<p>This morning I told one of the brave OBS developers to the blog post and already now the solution is online. From now on, the download page also shows the exact command line to import the key. Isn&rsquo;t that great how quickly things become better if a couple of people do a little bit work together?</p>
<p>Thanks a lot, guys, really cool&hellip;</p>
]]></content:encoded>
    </item>
    <item>
      <title>ownCloud BOF at Akademy 2012</title>
      <link>https://dragotin.codeberg.page/posts/owncloud-bof-at-akademy-2012/</link>
      <pubDate>Sun, 17 Jun 2012 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/owncloud-bof-at-akademy-2012/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://akademy.kde.org/&#34; title=&#34;KDE Akademy&#34;&gt;Akademy 2012&lt;/a&gt; isn&amp;rsquo;t far any more and I just registered for a &lt;strong&gt;&lt;a href=&#34;http://community.kde.org/Akademy/2012#Workshops_and_BoFs&#34; title=&#34;BOFs webpage&#34;&gt;BOF&lt;/a&gt;&lt;/strong&gt; at this years Akademy in Tallin. It will take place in Room 419 on &lt;strong&gt;&lt;a href=&#34;http://community.kde.org/Akademy/2012/Monday&#34; title=&#34;Monday BOFs&#34;&gt;monday, July 2nd, 2012&lt;/a&gt; at 10:30&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dragotin.codeberg.page/posts/owncloud-bof-at-akademy-2012/images/Ak2012_imgoing2.png&#34; title=&#34;I am going to Akademy&#34;&gt; Subject of the BOF will be the integration between KDE and &lt;a href=&#34;http://owncloud.org&#34; title=&#34;ownCloud&#34;&gt;ownCloud&lt;/a&gt;. As onwCloud originated from the KDE project we should meet and think together again how we can provide useful integration for the users combining the power of both technologies.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><a href="http://akademy.kde.org/" title="KDE Akademy">Akademy 2012</a> isn&rsquo;t far any more and I just registered for a <strong><a href="http://community.kde.org/Akademy/2012#Workshops_and_BoFs" title="BOFs webpage">BOF</a></strong> at this years Akademy in Tallin. It will take place in Room 419 on <strong><a href="http://community.kde.org/Akademy/2012/Monday" title="Monday BOFs">monday, July 2nd, 2012</a> at 10:30</strong>.</p>
<p><img loading="lazy" src="/posts/owncloud-bof-at-akademy-2012/images/Ak2012_imgoing2.png" title="I am going to Akademy"> Subject of the BOF will be the integration between KDE and <a href="http://owncloud.org" title="ownCloud">ownCloud</a>. As onwCloud originated from the KDE project we should meet and think together again how we can provide useful integration for the users combining the power of both technologies.</p>
<p>After a short overview of where the ownCloud project is going and what the recent achievements are (if participants are interested) I think we should concentrate on the technical level.</p>
<p>There are a couple of rough ideas already how we can integrate on a technical level, such as</p>
<ul>
<li>Integration of the ownCloud data storage in the KDE user experience.</li>
<li>KDE features for the ownCloud Desktop Client like KWallet integration or KDE SSL certificate management.</li>
<li>Synchronisation of PIM data like contacts, addresses, bookmarks or RSS feeds</li>
<li>a syncing API for application data to be synced in KDE applications.</li>
<li>Syncing of KDE application configurations.</li>
<li>Plasma integration of ownCloud/syncing client.</li>
</ul>
<p>I am sure there will be more we can come up with. Let me know upfront if you want me to put it on the list or even better show up at the BOF in person.</p>
]]></content:encoded>
    </item>
    <item>
      <title>ownCloud 4 and ownCloud Client 1.0.2 released</title>
      <link>https://dragotin.codeberg.page/posts/owncloud-4-and-owncloud-client-1-0-2-released/</link>
      <pubDate>Tue, 22 May 2012 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/owncloud-4-and-owncloud-client-1-0-2-released/</guid>
      <description>&lt;p&gt;It&amp;rsquo;s release day today: This morning, &lt;a href=&#34;http://owncloud.org/owncloud-4-release-annoucement/&#34;&gt;ownCloud 4&lt;/a&gt; was released! With a very cool set of &lt;a href=&#34;http://owncloud.org/features/&#34;&gt;features&lt;/a&gt; it&amp;rsquo;s even more useful and again more fun to use.&lt;/p&gt;
&lt;p&gt;Along with that I am happy to let you know that we also released the ownCloud Desktop Client in &lt;a href=&#34;http://owncloud.org/sync-clients/releases/&#34;&gt;version 1.0.2&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It is a maintenance release with a couple of important bugfixes, such as the cross platform &lt;a href=&#34;http://dragotin.wordpress.com/2012/05/10/cross-platform-again/&#34;&gt;filename encoding problem&lt;/a&gt; I was already talking about. Apart from that big blocker a couple of smaller, but annoying problems were fixed. Also the GUI was polished, text changes here and there and a new icon set that looks more cool and more like ownCloud.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>It&rsquo;s release day today: This morning, <a href="http://owncloud.org/owncloud-4-release-annoucement/">ownCloud 4</a> was released! With a very cool set of <a href="http://owncloud.org/features/">features</a> it&rsquo;s even more useful and again more fun to use.</p>
<p>Along with that I am happy to let you know that we also released the ownCloud Desktop Client in <a href="http://owncloud.org/sync-clients/releases/">version 1.0.2</a>.</p>
<p>It is a maintenance release with a couple of important bugfixes, such as the cross platform <a href="http://dragotin.wordpress.com/2012/05/10/cross-platform-again/">filename encoding problem</a> I was already talking about. Apart from that big blocker a couple of smaller, but annoying problems were fixed. Also the GUI was polished, text changes here and there and a new icon set that looks more cool and more like ownCloud.</p>
<p>Version 1.0.2 is also the version that is released on all big desktop platforms the first time. Now we also offer a <a href="http://download.owncloud.com/download/ownCloudClientSetup-1.0.2.dmg">dmg for MacOSX</a> as well as a <a href="http://download.owncloud.com/download/owncloud-client-1.0.2-setup.exe">Windows Installer</a> and <a href="http://software.opensuse.org/download/package?project=isv:ownCloud:community&amp;package=owncloud-client">packages</a> for the major Linux distributions. Have fun!</p>
<p>If you want to talk about ownCloud, file synchronization or such, we have a booth on <a href="http://www.linuxtag.org/2012/">Linuxtag in Berlin</a> and I will be there. I am looking forward to meeting you.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Cross platform again</title>
      <link>https://dragotin.codeberg.page/posts/cross-platform-again/</link>
      <pubDate>Thu, 10 May 2012 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/cross-platform-again/</guid>
      <description>&lt;p&gt;Writing cross platform code is easy nowadays. You use &lt;a href=&#34;http://qt-project.org/&#34;&gt;Qt&lt;/a&gt;, implement stuff, and it compiles and runs almost everywhere. I also enjoy that in my work on the ownCloud desktop client. But, as you know, there is the other part in the client called &lt;a href=&#34;http://csync.org&#34;&gt;csync&lt;/a&gt;. Its the syncing engine underneath. And that does not build up on Qt, but is plain C. Adventure starts here.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://bugs.owncloud.org/thebuggenie/owncloud/issues/oc-478&#34; title=&#34;This bug&#34;&gt;This bug&lt;/a&gt; took me on an interesting (well&amp;hellip;) journey into what cross platform really means.It is about a complex thing like filenames containing special characters, my favorite example is the directory &amp;ldquo;Übergröße&amp;rdquo;. Directories and files like this could not successfully be synced with the latest client.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Writing cross platform code is easy nowadays. You use <a href="http://qt-project.org/">Qt</a>, implement stuff, and it compiles and runs almost everywhere. I also enjoy that in my work on the ownCloud desktop client. But, as you know, there is the other part in the client called <a href="http://csync.org">csync</a>. Its the syncing engine underneath. And that does not build up on Qt, but is plain C. Adventure starts here.</p>
<p><a href="http://bugs.owncloud.org/thebuggenie/owncloud/issues/oc-478" title="This bug">This bug</a> took me on an interesting (well&hellip;) journey into what cross platform really means.It is about a complex thing like filenames containing special characters, my favorite example is the directory &ldquo;Übergröße&rdquo;. Directories and files like this could not successfully be synced with the latest client.</p>
<p>Windows does not utf8 by default. As far as I understood it, it does a local encoding by default. If you use normal C functions to access the filesystem, something like readdir or so, you get the names in that encoding. But, because that caused problems in some point, there is another set of functions which often start with _w (for example _wreaddir) and that has an interface to deal with <a href="http://en.wikipedia.org/wiki/Wide_character">wide characters</a>. This is the way to internationalization.</p>
<p>So what needs to be done is to use the wide character implementations everywhere where you deal with filenames (in my case). That, in turn, requires to use wchar_t instead of normal char. But that again requires a lot of #ifdef _WIN32, if its done the naive way at every place it needs to be done. I learned that typedef helps here and a meta type is defined called _TCHAR. And also for all the needed functions, meta functions are defined which are replaced by tricky defines depending on the platform. For example _treaddir becomes readdir on linux and _wreaddir on win32, while _TCHAR becomes wchar_t on Win and char on linux. The code is written using the meta types to not poison it too much with platform ifdefs.</p>
<p>But that is only the first step. Wide character is not utf8! And since utf8 should be used within the software all over, a conversion from wide character to utf8 and back is needed whenever the file system is accessed. Thankfully from csyncs nature, these places are quite nicely concentrated.</p>
<p>All that combines into a <a href="http://git.csync.org/users/freitag/csync.git/commit/?h=dav&amp;id=9ec8d7082272c6b36ef6884bb977a4386c745e8d">larger patch</a>. And now the &ldquo;Übergröße&rdquo; folder can be synced correctly from Windows to Linux and back. Great.</p>
<p>What can we learn from that? Well, easy, and once again: If you have no Qt, you&rsquo;re alone. Better don&rsquo;t let that happen. If you have Qt, be happy and aware of what it does for you :-)</p>
]]></content:encoded>
    </item>
    <item>
      <title>ownCloud Client 1.0.1</title>
      <link>https://dragotin.codeberg.page/posts/owncloud-client-1-0-1/</link>
      <pubDate>Thu, 26 Apr 2012 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/owncloud-client-1-0-1/</guid>
      <description>&lt;p&gt;This week we prepared another &lt;a href=&#34;http://www.owncloud.org&#34;&gt;ownCloud&lt;/a&gt; &lt;a href=&#34;http://owncloud.org/sync-clients&#34;&gt;sync client (oCC)&lt;/a&gt; release for you. oCC is released together with &lt;a href=&#34;//csync.org&#34;&gt;csync&lt;/a&gt; 0.50.5, the underlying library on which shoulders oCC stands. Find packages for &lt;a href=&#34;http://software.opensuse.org/download/package?project=isv:ownCloud:community&amp;amp;package=owncloud-client&#34;&gt;your distribution&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://dragotin.files.wordpress.com/2012/04/icon-128_2.png&#34;&gt;&lt;img alt=&#34;ownCloud Logo&#34; loading=&#34;lazy&#34; src=&#34;https://dragotin.codeberg.page/posts/owncloud-client-1-0-1/images/icon-128_2.png&#34; title=&#34;icon-128_2&#34;&gt;&lt;/a&gt;Only a couple of weeks after the first release we could come up with a quite long &lt;a href=&#34;http://owncloud.org/sync-clients/releases&#34;&gt;changelog&lt;/a&gt;, larger than for a maintainance release.&lt;/p&gt;
&lt;p&gt;First and foremost, oCC now supports SSL connections and does not store passwords any more, well, in clear text in a config file. Still there is no strong encryption for the password in (as that&amp;rsquo;s a non trivial if not impossible thing) but its not clear text any more, so accidents should not longer happen. For those who really care and put security over convenience there now is the option to not store the password at all but provide it at startup. The whole password storage will get more attention soon, I did some work on that already, also using kwallet, more on that in another post.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>This week we prepared another <a href="http://www.owncloud.org">ownCloud</a> <a href="http://owncloud.org/sync-clients">sync client (oCC)</a> release for you. oCC is released together with <a href="//csync.org">csync</a> 0.50.5, the underlying library on which shoulders oCC stands. Find packages for <a href="http://software.opensuse.org/download/package?project=isv:ownCloud:community&amp;package=owncloud-client">your distribution</a>.</p>
<p><a href="http://dragotin.files.wordpress.com/2012/04/icon-128_2.png"><img alt="ownCloud Logo" loading="lazy" src="/posts/owncloud-client-1-0-1/images/icon-128_2.png" title="icon-128_2"></a>Only a couple of weeks after the first release we could come up with a quite long <a href="http://owncloud.org/sync-clients/releases">changelog</a>, larger than for a maintainance release.</p>
<p>First and foremost, oCC now supports SSL connections and does not store passwords any more, well, in clear text in a config file. Still there is no strong encryption for the password in (as that&rsquo;s a non trivial if not impossible thing) but its not clear text any more, so accidents should not longer happen. For those who really care and put security over convenience there now is the option to not store the password at all but provide it at startup. The whole password storage will get more attention soon, I did some work on that already, also using kwallet, more on that in another post.</p>
<p>The whole start process of oCC, which is more complex as it might seem as libcsync expects a nice environment with a verified connection to the ownCloud, was cleaned and matured. I had to learn about <a href="http://qt-project.org/doc/qt-4.8/QNetworkAccessManager.html">QNAM</a> but now we seem to be friends.</p>
<p>Efforts also went into the following areas:</p>
<ul>
<li>Error handling: People got confused about error messages from oCC which were not accurate here and than. I added more fine granular error reporting to libcsync so that oCC now can give even more helpful error messages.</li>
<li>MacOSX: On the sprint weekend in Stuttgart, we made good progress on that platform, will also soon get a release. Domme got the most out of cmake to get dmg image building going, thanks, you rock!</li>
<li>Qt 4.6: As usual one has to learn that current distributions ship not so current Qt versions. Thanks to Thomas, he put quite some effort in porting back to Qt 4.6 - so that Debians friends can also use oCC now.</li>
<li>Packages: Check out the <a href="https://build.opensuse.org/project/packages?project=isv:ownCloud:community">community repo</a> on <a href="http://www.open-build-service.org/">OBS</a>: We now can provide packages for way more platforms including Ubuntu and Debian. Still your help would be appreciated in maintaining.</li>
</ul>
<p>Speaking about the recent <a href="http://blog.karlitschek.de/2012/04/what-weekend.html">sprint in Stuttgart</a>: It was great to be there, ownCloud has an open, friendly and welcoming community in which you really feel the spirit of working on something new and interesting with cool potential. I really enjoy being here,. Thanks guys for all your work and feedback :-)</p>
]]></content:encoded>
    </item>
    <item>
      <title>CSync and Mirall Development Setup</title>
      <link>https://dragotin.codeberg.page/posts/csync-and-mirall-development-setup/</link>
      <pubDate>Thu, 22 Mar 2012 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/csync-and-mirall-development-setup/</guid>
      <description>&lt;p&gt;[caption id=&amp;ldquo;attachment_48&amp;rdquo; align=&amp;ldquo;alignleft&amp;rdquo; width=&amp;ldquo;92&amp;rdquo; caption=&amp;ldquo;Build it!&amp;rdquo;]&lt;a href=&#34;http://dragotin.files.wordpress.com/2012/03/kbagger_part.png&#34;&gt;&lt;img alt=&#34;A KDE bagger&#34; loading=&#34;lazy&#34; src=&#34;http://dragotin.files.wordpress.com/2012/03/kbagger_part.png?w=92&#34; title=&#34;bagger&#34;&gt;&lt;/a&gt;[/caption] people were asking how to set up a development setup for the syncing client we are working on to sync local files to &lt;a href=&#34;http://owncloud.org&#34;&gt;ownCloud&lt;/a&gt; and vice versa currently, work title mirall. While a website about it is not yet finished, I try to summarize it here. There are some hacks here and there but that&amp;rsquo;s how I do it today. It will improve over time. Note that this is about a real development setup, not for a production build.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>[caption id=&ldquo;attachment_48&rdquo; align=&ldquo;alignleft&rdquo; width=&ldquo;92&rdquo; caption=&ldquo;Build it!&rdquo;]<a href="http://dragotin.files.wordpress.com/2012/03/kbagger_part.png"><img alt="A KDE bagger" loading="lazy" src="http://dragotin.files.wordpress.com/2012/03/kbagger_part.png?w=92" title="bagger"></a>[/caption] people were asking how to set up a development setup for the syncing client we are working on to sync local files to <a href="http://owncloud.org">ownCloud</a> and vice versa currently, work title mirall. While a website about it is not yet finished, I try to summarize it here. There are some hacks here and there but that&rsquo;s how I do it today. It will improve over time. Note that this is about a real development setup, not for a production build.</p>
<p>Linux and Windows development should go in parallel as easy as possible.</p>
<p><strong>Edit: Please also refer to the <a href="https://github.com/owncloud/mirall/blob/master/doc/building.rst">official build documentation</a>.</strong></p>
<p><strong>Building CSync</strong></p>
<p>To build mirall, csync must be built first. CSync is hosted in its <a href="http://git.csync.org/projects/csync.git/">upstream git repo</a> and there is also my <a href="http://git.csync.org/users/freitag/csync.git/log/?h=dav">development branch</a> which holds the latest changes.</p>
<p><a href="http://dragotin.files.wordpress.com/2012/03/buildoc_dirs.png"><img alt="Overview of Build Directory setup." loading="lazy" src="/posts/csync-and-mirall-development-setup/images/buildoc_dirs.png" title="Build directories"></a>Clone the csync branch into a directory. In parallel to the cloned <code>csync</code> dir, create a new directory <code>buildcsync</code> as a cmake build dir. Change into <code>buildcsync</code> and call cmake like this:</p>
<p><code>cmake -DCMAKE_BUILD_TYPE=&quot;Debug&quot; ../csync</code></p>
<p>and watch its output. You probably have to fulfill some dependencies, make sure to install all the needed devel packages. You will need log4c, iniparser, sqlite3 and for the modules libssh, libsmbclient and neon for the ownCloud module. Once cmake succeeds, call make to build it. So far relaxed for Linux.</p>
<p>To build csync for Windows, there are a couple of possibilities. The one I chose was to cross compile with mingw under <a href="http://www.opensuse.org">openSUSE</a>. That way I can build for all on one devel machine under my prefered system.</p>
<p>For that, I installed the cross compile and mingw32 packages from the <a href="http://build.opensuse.org">openSUSE Build Service</a>, which really demonstrates power here. I used the <a href="http://download.opensuse.org/repositories/windows:/mingw:/win32/openSUSE_12.1">mingw repository</a>. Kudos at this point to Dominik Schmidt, a <a href="http://www.tomahawk-player.org/splash">Tomahawk developer</a>, who helped me a lot to set all up and to all people who work in OBS to maintain the mingw repo.</p>
<p>Basically the cross compiler and libs (eg. packages <code>mingw32-cross-gcc</code>, <code>mingw32-gcc-c++</code> and <code>mingw32-cross-cpp</code>) and the dependencies for the software to build have to be installed from the mingw repo. An action item is left to dig which in detail.</p>
<p>After installation you should have some mingw32-tools such as <code>mingw32-cmake</code> which should be used to build for win.</p>
<p>Now create a directory win and within that again buildcsync. In there, start <code>cmake</code> with</p>
<p><code>mingw32-cmake -DCMAKE_BUILD_TYPE=&quot;Debug&quot; -DWITH_LOG4C=OFF ../../csync</code></p>
<p>That should do it. I did not find log4c for Win32, so I disabled it in the cmake call. Now build it with <code>mingw32-make</code> and see if it creates a dll in the src subdir and csync.exe in the client dir.</p>
<p><strong>Building mirall</strong></p>
<p>For <a href="http://gitorious.org/owncloud/mirall" title="mirall">mirall</a>, it works similar. Mirall uses Qt and is C++, so again a lot of packages to install. Make again sure to have the mingw32-qt packages, for example <code>mingw32-libqt4-devel</code> and more.</p>
<p>However, there are two caveats with mirall:</p>
<ul>
<li>
<p>the current development state of mirall needs the latest devel version of csync which we just built. I tweaked the CMakefile that way that if the mirall- and csync and build* folders are in the same directory, the csync is found by mirall cmake in the parallel dir. So I do not have to install the devel version of csync in my system.</p>
</li>
<li>
<p>to build mirall for windows, it must be made sure that cmake finds the mingw32 Qt tools like moc. Since there is also the Linux moc in the system, this can confuse. Domme pointed me to a script that sets some variables correct values to prevent mixing: <code>cat ../docmake.sh # %_mingw32_qt4_platform win32-g++-cross  export QT_BINDIR=/usr/bin export BIN_PRE=i686-w64-mingw32  /usr/bin/mingw32-cmake \ -DCMAKE_BUILD_TYPE=&quot;Debug&quot; \ -DQMAKESPEC=win32-g++-cross \ -DQT_MKSPECS_DIR:PATH=/usr/i686-w64-mingw32/sys-root/mingw/share/qt4/mkspecs \ -DQT_QT_INCLUDE_DIR=/usr/i686-w64-mingw32/sys-root/mingw/include \ -DQT_PLUGINS_DIR=/usr/i686-w64-mingw32/sys-root/mingw/lib/qt4/plugins \ -DQT_QMAKE_EXECUTABLE=${QT_BINDIR}/${BIN_PRE}-qmake \ -DQT_MOC_EXECUTABLE=${QT_BINDIR}/${BIN_PRE}-moc \ -DQT_RCC_EXECUTABLE=${QT_BINDIR}/${BIN_PRE}-rcc \ -DQT_UIC_EXECUTABLE=${QT_BINDIR}/${BIN_PRE}-uic \ -DQT_DBUSXML2CPP_EXECUTABLE=${QT_BINDIR}/qdbusxml2cpp \ -DQT_DBUSCPP2XML_EXECUTABLE=${QT_BINDIR}/qdbuscpp2xml ../../mirall</code></p>
</li>
</ul>
<p>With that setup I can build both the Linux and Windows version quite easily. There is still a lot to be solved, such as automatted packaging and such. CMake as usual is a great help.</p>
]]></content:encoded>
    </item>
    <item>
      <title>On the road...</title>
      <link>https://dragotin.codeberg.page/posts/on-the-road/</link>
      <pubDate>Fri, 16 Mar 2012 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/on-the-road/</guid>
      <description>&lt;p&gt;Busy times currently as we&amp;rsquo;re heading to releases of &lt;a href=&#34;http://www.owncloud.org&#34;&gt;ownCloud&lt;/a&gt;. The syncing client I am working on plays a role for that and thus I was doing a lot of work on csync upstream and mirall to get that going. Meanwhile I succeeded to get mirall running under Win32, it was quite an experience for me digging through the mud of various compilers and environments and the different understandings of C standards, especially since csync is plain C and never run on Win32 before.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Busy times currently as we&rsquo;re heading to releases of <a href="http://www.owncloud.org">ownCloud</a>. The syncing client I am working on plays a role for that and thus I was doing a lot of work on csync upstream and mirall to get that going. Meanwhile I succeeded to get mirall running under Win32, it was quite an experience for me digging through the mud of various compilers and environments and the different understandings of C standards, especially since csync is plain C and never run on Win32 before.</p>
<p>Last week I have been on CeBIT for a day, which is a huge and busy event. We had a nice preview running there with syncing between the web client and the desktop clients on Windows and Linux, as well as on an Android device. That already worked quite ok, nevertheless I got quite some bug reports since then. And I still have to work with csync upstream to get patches in there before we&rsquo;re ready for a public beta.</p>
<p>This weekend I will be at the <a href="http://chemnitzer.linux-tage.de/2012/">Chemnitzer Linuxtage</a> together with friends from the <a href="http://www.opensuse.org">openSUSE</a> project. I will show some ownCloud syncing there as well, so if you like show up at the openSUSE booth for a demo and a chat :-)</p>
]]></content:encoded>
    </item>
    <item>
      <title>Status ownCloud Desktop Syncing</title>
      <link>https://dragotin.codeberg.page/posts/status-owncloud-desktop-syncing/</link>
      <pubDate>Fri, 17 Feb 2012 00:00:00 +0000</pubDate>
      <guid>https://dragotin.codeberg.page/posts/status-owncloud-desktop-syncing/</guid>
      <description>&lt;p&gt;It has been a busy week where I was working on the ownCloud Desktop sync client. As described in my &lt;a href=&#34;http://kfreitag.tumblr.com/post/17319346374/desktop-syncing-with-owncloud&#34; title=&#34;last post&#34;&gt;last post&lt;/a&gt; this will be based on a &lt;a href=&#34;http://www.csync.org/&#34; title=&#34;csync homepage&#34;&gt;csync&lt;/a&gt; module to handle &lt;a href=&#34;http://www.owncloud.org&#34; title=&#34;ownCloud homepage&#34;&gt;ownCloud&lt;/a&gt; as well as mirall, a Qt based desktop client to sync.&lt;/p&gt;
&lt;p&gt;That involved basically three things: A csync module, a patch in ownCloud and work on mirall.&lt;/p&gt;
&lt;p&gt;For csync, there needs to be a module that handles the connection to ownCloud, for code see [1]. ownCloud has a WebDAV interface, and its used for this. Csync requires the the implementation of a couple of POSIX functions such as opendir, readdir, closedir, stat and these kind of things. I did that using WebDAV equivalents.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>It has been a busy week where I was working on the ownCloud Desktop sync client. As described in my <a href="http://kfreitag.tumblr.com/post/17319346374/desktop-syncing-with-owncloud" title="last post">last post</a> this will be based on a <a href="http://www.csync.org/" title="csync homepage">csync</a> module to handle <a href="http://www.owncloud.org" title="ownCloud homepage">ownCloud</a> as well as mirall, a Qt based desktop client to sync.</p>
<p>That involved basically three things: A csync module, a patch in ownCloud and work on mirall.</p>
<p>For csync, there needs to be a module that handles the connection to ownCloud, for code see [1]. ownCloud has a WebDAV interface, and its used for this. Csync requires the the implementation of a couple of POSIX functions such as opendir, readdir, closedir, stat and these kind of things. I did that using WebDAV equivalents.</p>
<p>Unfortunately one method is needed for the sync algorithms which has no equivalent in WebDAV, which is utime. utime sets the modification time of a file. csync needs that to fix the time after a file was copied to the other side.  For that, I made a little patch to ownCloud to allow a PROPPATCH method on the modified time of a resource. That makes csync happy and working, but that also means that the module is not a general csync webdav module but a csync owncloud module. Named it accordingly.</p>
<p>The first action I started on mirall this time is a bit cleanup. First, I introduced a class  to move all the code which loads, edits and monitors the folders out of the main application class, which was long overdue. That separates the sync folder management in mirall from the GUI stuff. Furthermore I added a few helper classes such as a config file class for mirall. Ah yes, a theming class was also added to handle the future two faces character of mirall easily, as said before mirall should either appear as traditional mirall client, or as ownCloud client. Duncan and me agreed to build that from one source, the theming class supports that.</p>
<p>Last but not least I polished the wizard in which a user connects to his ownCloud and added a test call that immediately evaluates the url and credentials. For the curious, the code is in my <a href="https://github.com/dragotin/mirall/commits/master" title="Klaas' work repo mirall">work repository</a> but I promise to move it to the ownCloud repo on gitorious soon.</p>
<p>So far for now, if you have suggestions for me I&rsquo;d love to hear them.  Thanks :-)</p>
<p>[1] <a href="http://git.csync.org/users/freitag/csync.git/log/?h=dav" title="Klaas' WIP branch csync">Klaas&rsquo; WIP branch csync</a></p>
]]></content:encoded>
    </item>
  </channel>
</rss>
