A common problem with bug reports received for KBibTeX is that the issue may already be fixed in the latest master in Git or that I can provide a fix which gets submitted to Git but then needs to be tested by the original bug reporter to verify that the issue has been indeed fixed for good.
For many distributions, no ‘Git builds’ are available (or the bug reporter does not know if they exist or how to get them installed) or the bug reporter does not know how to fetch the source code, compile it, and run KBibTeX, despite the (somewhat too technical) documentation.
Therefore, I wrote a Bash script called run-kbibtex.sh which performs all the necessary (well, most) steps to get from zero to a running KBibTeX. The nicest thing is that all files (cloned Git repo, compiled and installed KBibTeX) are placed inside /tmp which means no root or sudo are required, nor are any permanent modifications made to the user's system.
There is a README.txt file explaining the script in greater detail.
The only requirement is that the user installs the usual KDE-related development tools and libraries. If a tool or library is missing, the script will abort, but the error message (most likely some output from cmake) can be searched for in order to learn which package to install. Once this is done, simply restart run-kbibtex.sh until all steps succeed.
I have tested the script with several Linux distributions and gave earlier versions to bug reporters for testing, so I am almost sure that it will work as promised. Please send suggestions or bug reports via email to me.
As promised, here comes the one intermediate pre-release between KBibTeX 0.7.90 (0.8-beta1) and the final release of 0.8: KBibTeX 0.7.95 aka 0.8-rc1. The most important changes between Beta1 and RC1 are the following:
- Update of the ChangeLog (alternatively here) to reflect recent releases' changes,
- Removal of ISBNdb as it is no longer a free service, and
- Various translation updates.
The release is available on KDE's mirror infrastructure:( Read more... )
Finally, the release of KBibTeX 0.8 is on its track again. I tagged (Phabricator) and tar-balled the code of the current Git branch kbibtex/0.8 (Phabricator) as KBibTeX 0.7.90 (a. k. a. 0.8-beta1) and asked the KDE sysadmins to put it on KDE's content distribution network.
Only afterwards I noticed that I totally had forgotten to update the ChangeLog which was still stuck on the ancient release of 0.6.1. Properly updating the changelog records will be my next step. In case I did't mention it before, the biggest change from 0.7 to 0.8 is the migration from KDE4 to KDE Frameworks 5. User interface and functionality has stayed surprisingly stable, though.
For you, my fellow KBibTeX users, you may fetch the tar ball kbibtex-0.7.90.tar.xz and test if everything is working for you. This request is especially relevant if you are a translator or a package maintainer or at least know a little bit of either to see if translations and/or package building works on your setup. If you find any issues, please report them at KDE's Bugtracking System (don't forget to set the version in your report to 0.8). There are known bugs in the code, some of which I fixed in the master branch (to become 0.9) already but did not integrate into 0.8 due to the feature freeze.
This release contains code contributions from, among others, Antonio Rojas, Frederik Schwarzer, Joao Carreira and Pino Toscano. Thank you very much!
My preliminary and optimistic time plan predicts a stable, final release of KBibTeX 0.8 at the end of May (this year). There'll may be some more pre-releases in between in case relevant issues were found and fixed.
Looking forward to your feedback!
The only changes compared to the release candidate are attempts to fix online search issues with Google Scholar and IEEE Xplore.( Read more... )
As no new bug reports came in for KBibTeX 0.7-beta1 which got released in early September and only very few changes got applied since then (the ChangeLog is virtually unchanged), it is now time to release KBibTeX 0.7-rc1 (0.6.95). A tag has been set and tar balls have been published. Unless there is a showstopper bug or real-life™ interference, expect a final release in November.( Read more... )
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 )
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 (0.6.0.90) 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... )
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).
I just made a release of KBibTeX 0.6.1-alpha1 (0.6.0.80), 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-alpha1or
git diff v0.6..v0.6.1-alpha1for details.
Tar balls of this release are available at http://download.gna.org/kbibtex/0.6/, more specifically:
The used GnuPG key is 0xA264FD738D861F41.
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.
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 …
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.
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.
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... )