t_fischer: (Default)

After some delay, I am finally pushing forward towards a final release of KBibTeX for KDE 4. The first step is the tagging and releasing of tar balls for version 0.7's Beta 1.

Read more... )
t_fischer: (awed)

Today, KBibTeX 0.6.2 has been released. It replaces the never published 0.6.1 release, where a show-stopping bug was detected after tagging the release.

tl;dr: source tar ball, ChangeLog in Git

Read more... )
t_fischer: (Default)

After quite some delay, I finally assembled a second release candidate for KBibTeX 0.6.1. Version 0.6.1 will be the last release in the 0.6.x series.

The following changes were applied since the release of 0.6:

Read more to learn which changes were applied )
t_fischer: (Default)

After some time of activity on KBibTeX's master branch, I finally returned to the stable branches to push forwards some releases.

Read more... )
t_fischer: (Default)

Update: In an earlier version of this posting, the title called this release ‘0.6.1-alpha1’. Of course, it should have been ‘0.6.1-beta1’ as discussed in the text.

Quick update on the next bugfix release for the KBibTeX 0.6 series: KBibTeX 0.6.1-beta1 ( has just been released. Differences to the alpha version from two weeks ago are two minor bug fixes and updated translations for Galician and Italian (thanks!).

Read more... )
t_fischer: (Default)

After recently starting to port KDiff3 to KDE Frameworks 5, I made a few commits today making the software actually usable.

Commit 468652ce70b1214842c passes command line arguments, most importantly filenames of files to diff and merge, to the inner classes which do the actual work. The old code uses KDE 4's KCmdLineArgs which provided static functions to retrieve command line arguments from anywhere in the code. The new code processes command line arguments using QCommandLineParser in the main function and then passes this object down into inner classes. This makes the code working although it may not be the best design (I may consider a refactoring in the future).

t_fischer: (Default)

I just made a release of KBibTeX 0.6.1-alpha1 (, which is the first preview release of the upcoming bugfix release in the 0.6 series. Please note that the 0.6 series is still based on KDE 4.

If you are a distribution packager, please check if you can download, build, and install the sources and that KBibTeX starts and runs without any obvious bugs or crashes. If you are a translator (GUI or documentation), please check if translations are complete, correct, and appear in the right places.


  • KDE Bug 351455: Removing soversion from KBibTeX Part
  • KDE Bug 353898: Fixing build issues on ARM architecture
  • KDE Bug 354785: Using QTextDocument/QTextEdit instead of WebKit/WebEngine: more lightweight and supported on all platforms
  • Correcting choke on PubMed searches to 10 seconds
  • Setting foreground color of colored rows to either black or white for better readability
  • Disabling OCLC WorldCat (request for support denied by this organization)
  • Generally improved code quality as detected by code checkers such as Clazy or Coverity
  • Fixing handling of URLs and their protocols for local files
  • Fixing setting default id suggestion
  • Adding 'Keywords' field to .desktop file
  • Removing file that was licensed under CC BY-NC, but never got installed
  • Updating translations
  • Other minor backports from master. See git log v0.6..v0.6.1-alpha1 or git diff v0.6..v0.6.1-alpha1 for details.

Tar balls

Tar balls of this release are available at http://download.gna.org/kbibtex/0.6/, more specifically:

The used GnuPG key is 0xA264FD738D861F41.

Future Releases

Once release 0.6.1 got published without problems, I plan to focus on releasing 0.7 which will be the last series based on KDE 4. Most likely, there will be a few bugfix releases in the next years as long as there are users still using KDE 4.

Following a successful release of KBibTeX 0.7, version 0.8 will be the first stable series building on KDE Frameworks 5.

Both code bases for 0.7 (in Git kbibtex/0.7) and 0.8 (master as of now) are quite stable, i. e. it should be a matter of weeks instead of months to get both releases out of the door. Both 0.7 and 0.8 will be quite similar featurewise, the main differences are due to the porting from KDE 4 to KDE Frameworks 5. If you want to run more current code than the 0.6 series offers, please fetch the sources and test for yourself.

t_fischer: (Default)

First screenshot of KDiff3 port to KF5I am a regular user of KDiff3, a two-way or three-way merging tool for KDE. The tool is very useful to quickly compare and merge source code and LaTeX files or to resolve .rpmnew/.pacsave files.

Unfortunately, there has been very little activity in this project (last commit September 2014) and it is still stuck on Qt4/KDE4. The original maintainer, Joachim Eibl, has unfortunately no time left to develop this project.
To keep this very useful tool alive, I stepped forward and ported the code base in a few evenings from Qt4/KDE4 to Qt5/Frameworks 5. Well, the port is not complete, I have to admit …

Read more... )
t_fischer: (christmas)

In this posting, I am going to tell about the changes and development done in KBibTeX during the last few months. Most notably, KBibTeX has been ported to KDE Frameworks 5, but also some effort has been spent into code quality.

Port to Frameworks

Since Spring 2015, I have been working on a KDE Frameworks 5 (KF5) port of KBibTeX. In August, this KF5 port has become master and the last KDE 4 version resides in branch kbibtex/0.7 which is still due to be released. Except for the major refactoring for KF5, both master and kbibtex/0.7 are still quite similar.

The KF5 version is stable enough for (my) daily work and from bug reports I know that some people are already using it. For everyone who tries to run a Frameworks/Plasma 5-exclusive environment, I can recommend this version.

For both kbibtex/0.7 and master (which would become version 0.8) I plan to make releases really soonTM. Some known bugs need to be addressed and then building of tar balls for alpha/beta/rc releases can start. Some fixes will be ported to kbibtex/0.6 as well and there will be a minor bugfix release for 0.6 as well.
Now, if those names like kbibtex/0.6 or master have been confusing, please see my posting from June as well as the development documentation.

Code Quality

The other large focus next to the KDE Frameworks 5 port was code quality using code analysis tools. In particular, I am employing three tools:

  • Coverity Scan is a commercial tool, but offers to scan open source projects for free. Very useful at identifying dead code, uninitialized variables, bad memory management. It even found a copy&paste errors where variables were renamed inconsistently. Some hard-to-trace crashes have been identified as well. This tool can be strongly recommended. Usage requires to compile your code with a special wrapper provided by Coverity that generates a considerable amount of data that needs to be packed and uploaded to Coverity for analysis (automation for CI possible).
  • Krazy 2 through the English Breakfast Network. This tool I have been using the longest. From what I understand, most recommendations are more about ‘best practice’ than finding ‘real’ bugs. Still very useful and no overhead for a developer as EBN does make automated Git checkouts to run Krazy.
  • Clazy is the new kid on the block. It makes use of LLVM/Clang and checks code for proper use of Qt-specific features such as efficient construction of strings without temporary instances. Maybe of less usefulness for non-Qt projects, but very helpful to Qt/KDE projects. It requires a bleeding-edge LLVM and there are only few Linux distributions (e. g. ArchLinux) that ship such a version by default at the time of writing.

I don't recall seeing any overlap in identified issues between those three tools, so for best results in your code, you should use all three.

By now virtually all issues and warnings found by those three tools have been fixed in KBibTeX, at least in the master branch. Some fixes have been backported to older branches. I recommend to check out the Git logs, as messages state which code checker a commit/change was due.


One major feature currently under development and one of the largest external code contributions in recent times is DBus support by Shunsuke Shimizu. With ‘support’ I mean that you can remotely control KBibTeX via DBus. As of now, basic operations such as opening, saving, and closing files as well as inserting elements exist. The code resides in a special branch (branch bugs/kde332380 in repository clones/kbibtex/thomasfischer/kbibtex.git) for the bug report originally requesting DBus support. An example Python 3 script demonstrates how to control KBibTeX through DBus.

t_fischer: (computer)

The following two relases of KBibTeX are now available:

Read more... )
t_fischer: (Default)

The following two pre-relases of KBibTeX are now available:

Read more... )
t_fischer: (computer)

After a long time since the last release (13 months ago), I am currently working towards a number of releases for KBibTeX.

Read more... )
t_fischer: (pleased)

Inspired by a blog posting on Improving build times of large Qt apps found through Planet KDE, I tried to apply the concept of unity builds to KBibTeX. The idea with a unity build is instead of compiling a set of source code files individually into objects before linking them to merge them into one big source file and only compile this file. This approach promises time and I/O savings for C++, as repetitive reads on included headers can be skipped. Some issues such as name clashes can occur in unity builds, though.

Read more... )
t_fischer: (cat face)

Big Buck Bunny photo mosaic

Recently, a colleague of mine moved to a new office and he used the chance to put some posters on his wall. One was a photo mosaic he made back when the first of the new Star Wars movies (the one with Qui-Gon Jinn) came out. Based on a few hundred scaled-down images, those images where chosen and arranged in a grid to for a larger image from the same movie. Large image could be identified from a distance, but if you would step closer, you could clearly see each small image.

Read more... )
t_fischer: (Default)

Many years ago I wrote a parser for KBibTeX for KDE3, which would load plain text BibTeX files into an internal data structure in memory. Part of this process is to interpret strings like {\"a} or --- and to protect inline math commands. Internally, this encoder/decoder would have a long table of mappings between LaTeX representations and Unicode representations. Detecting, extracting, and replacing LaTeX representations with Unicode characters was primarily realized using regular expressions.
After ruling out most bugs, it worked well. Indeed, this piece of code has survived into KBibTeX for KDE4 as of today.

Read more... )
t_fischer: (happy)

Yesterday, I was working on porting KBibTeX to Windows. Eventually, I succeeded to make it compile and run. Continue to read to learn what changes had to be made and how to get it running on your own Windows machine. Special thanks for helping me go to SaroEngels on #kde-windows.

Screenshot: KBibTeX on Windows

Read more... )
t_fischer: (computer)

Recently, I stumbled upon a blog posting on how to make Psi logout on suspend in KDE. Although I am not using suspend myself for security reason, using D-Bus to control applications has its charm. In this posting, I will present some more use cases for D-Bus and Psi.

Read more... )
t_fischer: (tool)

Qt's QTreeView widget is a versatile tool to display information such as the content of a filesystem or the DOM tree of an XML file. Using the Model-View-Control (MVC) pattern, you can greatly control what, where, and how information is visualized. You can add icons or checkboxes to items, change color, font, or other aspects of the paint operation. What is missing is support for radio buttons in a QTreeView, but this post will show how to do it yourself.

Read more... )
t_fischer: (cat face)

Think of the situation, where you created a presentation or a lecture consisting of a set of slides. Now, imagine that part of you audience cannot attend, as your presentation is at a remote conference or you are teacher in a distance education course having students all over the world.

There exist commercial solutions, where you can record you presentation slides along with commentary speech, but cannot you achieve the same result using free tools?

The answer is "Yes", as I will explain in this posting.

Read more... )


Dec. 25th, 2010 12:17 pm
t_fischer: (christmas)

Nice holidays and a good new year to everyone!

This post was written to show the "christmas cat" icon ... ;-)