- <div class="title"><a href="http://people.skolelinux.org/pere/blog/Creating__updating_and_checking_debian_copyright_semi_automatically.html">Creating, updating and checking debian/copyright semi-automatically</a></div>
- <div class="date">19th February 2016</div>
- <div class="body"><p>Making packages for Debian requires quite a lot of attention to
-details. And one of the details is the content of the
-debian/copyright file, which should list all relevant licenses used by
-the code in the package in question, preferably in
-<a href="https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/">machine
-readable DEP5 format</a>.</p>
-
-<p>For large packages with lots of contributors it is hard to write
-and update this file manually, and if you get some detail wrong, the
-package is normally rejected by the ftpmasters. So getting it right
-the first time around get the package into Debian faster, and save
-both you and the ftpmasters some work.. Today, while trying to figure
-out what was wrong with
-<a href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=686447">the
-zfsonlinux copyright file</a>, I decided to spend some time on
-figuring out the options for doing this job automatically, or at least
-semi-automatically.</p>
-
-<p>Lucikly, there are at least two tools available for generating the
-file based on the code in the source package,
-<tt><a href="https://tracker.debian.org/pkg/debmake">debmake</a></tt>
-and <tt><a href="https://tracker.debian.org/pkg/cme">cme</a></tt>. I'm
-not sure which one of them came first, but both seem to be able to
-create a sensible draft file. As far as I can tell, none of them can
-be trusted to get the result just right, so the content need to be
-polished a bit before the file is OK to upload. I found the debmake
-option in
-<a href="http://goofying-with-debian.blogspot.com/2014/07/debmake-checking-source-against-dep-5.html">a
-blog posts from 2014</a>.
-
-<p>To generate using debmake, use the -cc option:
-
-<p><pre>
-debmake -cc > debian/copyright
-</pre></p>
-
-<p>Note there are some problems with python and non-ASCII names, so
-this might not be the best option.</p>
-
-<p>The cme option is based on a config parsing library, and I found
-this approach in
-<a href="https://ddumont.wordpress.com/2015/04/05/improving-creation-of-debian-copyright-file/">a
-blog post from 2015</a>. To generate using cme, use the 'update
-dpkg-copyright' option:
-
-<p><pre>
-cme update dpkg-copyright
-</pre></p>
-
-<p>This will create or update debian/copyright. The cme tool seem to
-handle UTF-8 names better than debmake.</p>
-
-<p>When the copyright file is created, I would also like some help to
-check if the file is correct. For this I found two good options,
-<tt>debmake -k</tt> and <tt>license-reconcile</tt>. The former seem
-to focus on license types and file matching, and is able to detect
-ineffective blocks in the copyright file. The latter reports missing
-copyright holders and years, but was confused by inconsistent license
-names (like CDDL vs. CDDL-1.0). I suspect it is good to use both and
-fix all issues reported by them before uploading. But I do not know
-if the tools and the ftpmasters agree on what is important to fix in a
-copyright file, so the package might still be rejected.</p>
-
-<p>The devscripts tool <tt>licensecheck</tt> deserve mentioning. It
-will read through the source and try to find all copyright statements.
-It is not comparing the result to the content of debian/copyright, but
-can be useful when verifying the content of the copyright file.</p>
-
-<p>Are you aware of better tools in Debian to create and update
-debian/copyright file. Please let me know, or blog about it on
-planet.debian.org.</p>
-
-<p>As usual, if you use Bitcoin and want to show your support of my
-activities, please send Bitcoin donations to my address
-<b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
-
-<p><strong>Update 2016-02-20</strong>: I got a tip from Mike Gabriel
-on how to use licensecheck and cdbs to create a draft copyright file
-
-<p><pre>
-licensecheck --copyright -r `find * -type f` | \
- /usr/lib/cdbs/licensecheck2dep5 > debian/copyright.auto
-</pre></p>
-
-<p>He mentioned that he normally check the generated file into the
-version control system to make it easier to discover license and
-copyright changes in the upstream source. I will try to do the same
-with my packages in the future.</p>
-
-<p><strong>Update 2016-02-21</strong>: The cme author recommended
-against using -quiet for new users, so I removed it from the proposed
-command line.</p>
+ <div class="title"><a href="http://people.skolelinux.org/pere/blog/A_program_should_be_able_to_open_its_own_files_on_Linux.html">A program should be able to open its own files on Linux</a></div>
+ <div class="date"> 5th June 2016</div>
+ <div class="body"><p>Many years ago, when koffice was fresh and with few users, I
+decided to test its presentation tool when making the slides for a
+talk I was giving for NUUG on Japhar, a free Java virtual machine. I
+wrote the first draft of the slides, saved the result and went to bed
+the day before I would give the talk. The next day I took a plane to
+the location where the meeting should take place, and on the plane I
+started up koffice again to polish the talk a bit, only to discover
+that kpresenter refused to load its own data file. I cursed a bit and
+started making the slides again from memory, to have something to
+present when I arrived. I tested that the saved files could be
+loaded, and the day seemed to be rescued. I continued to polish the
+slides until I suddenly discovered that the saved file could no longer
+be loaded into kpresenter. In the end I had to rewrite the slides
+three times, condensing the content until the talk became shorter and
+shorter. After the talk I was able to pinpoint the problem –
+kpresenter wrote inline images in a way itself could not understand.
+Eventually that bug was fixed and kpresenter ended up being a great
+program to make slides. The point I'm trying to make is that we
+expect a program to be able to load its own data files, and it is
+embarrassing to its developers if it can't.</p>
+
+<p>Did you ever experience a program failing to load its own data
+files from the desktop file browser? It is not a uncommon problem. A
+while back I discovered that the screencast recorder
+gtk-recordmydesktop would save an Ogg Theora video file the KDE file
+browser would refuse to open. No video player claimed to understand
+such file. I tracked down the cause being <tt>file --mime-type</tt>
+returning the application/ogg MIME type, which no video player I had
+installed listed as a MIME type they would understand. I asked for
+<a href="http://bugs.gw.com/view.php?id=382">file to change its
+behavour</a> and use the MIME type video/ogg instead. I also asked
+several video players to add video/ogg to their desktop files, to give
+the file browser an idea what to do about Ogg Theora files. After a
+while, the desktop file browsers in Debian started to handle the
+output from gtk-recordmydesktop properly.</p>
+
+<p>But history repeats itself. A few days ago I tested the music
+system Rosegarden again, and I discovered that the KDE and xfce file
+browsers did not know what to do with the Rosegarden project files
+(*.rg). I've reported <a href="http://bugs.debian.org/825993">the
+rosegarden problem to BTS</a> and a fix is commited to git and will be
+included in the next upload. To increase the chance of me remembering
+how to fix the problem next time some program fail to load its files
+from the file browser, here are some notes on how to fix it.</p>
+
+<p>The file browsers in Debian in general operates on MIME types.
+There are two sources for the MIME type of a given file. The output from
+<tt>file --mime-type</tt> mentioned above, and the content of the
+shared MIME type registry (under /usr/share/mime/). The file MIME
+type is mapped to programs supporting the MIME type, and this
+information is collected from
+<a href="https://www.freedesktop.org/wiki/Specifications/desktop-entry-spec/">the
+desktop files</a> available in /usr/share/applications/. If there is
+one desktop file claiming support for the MIME type of the file, it is
+activated when asking to open a given file. If there are more, one
+can normally select which one to use by right-clicking on the file and
+selecting the wanted one using 'Open with' or similar. In general
+this work well. But it depend on each program picking a good MIME
+type (preferably
+<a href="http://www.iana.org/assignments/media-types/media-types.xhtml">a
+MIME type registered with IANA</a>), file and/or the shared MIME
+registry recognizing the file and the desktop file to list the MIME
+type in its list of supported MIME types.</p>
+
+<p>The <tt>/usr/share/mime/packages/rosegarden.xml</tt> entry for
+<a href="http://www.freedesktop.org/wiki/Specifications/shared-mime-info-spec">the
+Shared MIME database</a> look like this:</p>
+
+<p><blockquote><pre>
+<?xml version="1.0" encoding="UTF-8"?>
+<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
+ <mime-type type="audio/x-rosegarden">
+ <sub-class-of type="application/x-gzip"/>
+ <comment>Rosegarden project file</comment>
+ <glob pattern="*.rg"/>
+ </mime-type>
+</mime-info>
+</pre></blockquote></p>
+
+<p>This states that audio/x-rosegarden is a kind of application/x-gzip
+(it is a gzipped XML file). Note, it is much better to use an
+official MIME type registered with IANA than it is to make up ones own
+unofficial ones like the x-rosegarden type used by rosegarden.</p>
+
+<p>The desktop file of the rosegarden program failed to list
+audio/x-rosegarden in its list of supported MIME types, causing the
+file browsers to have no idea what to do with *.rg files:</p>
+
+<p><blockquote><pre>
+% grep Mime /usr/share/applications/rosegarden.desktop
+MimeType=audio/x-rosegarden-composition;audio/x-rosegarden-device;audio/x-rosegarden-project;audio/x-rosegarden-template;audio/midi;
+X-KDE-NativeMimeType=audio/x-rosegarden-composition
+%
+</pre></blockquote></p>
+
+<p>The fix was to add "audio/x-rosegarden;" at the end of the
+MimeType= line.</p>
+
+<p>If you run into a file which fail to open the correct program when
+selected from the file browser, please check out the output from
+<tt>file --mime-type</tt> for the file, ensure the file ending and
+MIME type is registered somewhere under /usr/share/mime/ and check
+that some desktop file under /usr/share/applications/ is claiming
+support for this MIME type. If not, please report a bug to have it
+fixed. :)</p>