Issue 24

17th September 2006 by Danny Allen

This Week...

Amarok gets the roots of support for the Magnatune music store. Work begins on a LiveUI Designer application. Mass import of KBoard code, a lightweight canvas intended for games. Work on supporting the XML Paper Specification format in okular. Support for multiple galleries in kipiplugins, on which Digikam and KPhotoAlbum depend. Support for compressed Scalable Vector Graphics (SVGZ) in kdelibs. Solid gets Network Management and CPU Monitoring capabilities. Continued improvements in KArchiver.
Adriaan de Groot describes his efforts in improving KDE code quality with the English Breakfast Network:
The EBN, or English Breakfast Network (I have a habit of registering silly domain names) is the KDE project's quality-checking site. It keeps track of a lot of things that are "wrong" in our code base and produces nice graphs and charts and summaries so that developers can go out and fix what's wrong. It's not a bug-tracking site - we have for that - but more a guidelines checker: what is wrong with code with respect to our coding guidelines, the human-computer interface guide, API documentation norms, accepted English usage for user documentation, and so on.

We just count stuff right now, so we can say "there's sixteen thousand things wrong with KDE4" and compare that to how many there were last week and see if we're getting better. The actual number doesn't mean much, certainly not when comparing different software projects (even within KDE's software repository) because the guidelines vary considerably. So 16000 means "there is room for improvement" and never "good" or "bad".

One of the important ideas behind the EBN is that it should enable developers who are looking for simple stuff to fix - "low hanging fruit" as we call it, for easy-to-reach stuff - can do so quickly by checking the EBN and picking some reports that it produces. For instance, you may wonder "what's wrong with the kdelibs user documentation" in order to fix something simple there. There is one report, for kspell, and that report explains what is wrong (a missing license for the user documentation) and suggests a fix. Bam, that's a quick way to improve KDE's code quality with a single commit.

The EBN grew out of my own annoyance at incomplete API documentation and collected more bits along the way; Frerich Raabe wrote the user documentation checkers with the guidelines from the documentation team; Allen Winter has introduced a tool called Krazy that checks our basic coding guidelines. So we cover the documentation and some fairly simple code stuff with our checking right now. That provides ample opportunity to improve the codebase, and we believe that as KDE4 gets closer to release the numbers should drop off considerably - after all, the guidelines are what we believe *make* good code and good documentation, and we want to release the best stuff we can.

The coding guidelines and API documentation checks have received a lot of attention from some developers. I'm really pleased to hear from people who have taken the EBN checks to improve their own code - or to complain about the checks themselves, since they're certainly not infallible. It shows that our approach to checking does pay off: it moves people to make tiny incremental improvements when there's nothing bigger to do. Compare this also with the effect that Coverity's checks had on KDE's codebase: there were many small errors found and a small group of focused developers went through and fixed them all, thus ridding KDE of a whole class of potential crashes.

In the long run we want more sophisticated checks, including semantic analysis of the code and automated usability checks. The latter has been partly done by Frerich using FrogLogic's Squish tool - a fair amount of our HCI guide can be quantified and tested automatically - but it takes quite some time and patience to get everything set up right on the server. So we will expand our coverage at some point, and that will *increase* the number of bad things we find. It shouldn't be disheartening, though, because it's all low-hanging fruit: simple to find, clearly reported, quick to fix.

Besides expanding the coverage with new tools, we're also looking into ways to make the reporting better on the EBN. You can not yet ask "what's wrong with kicker?" because we don't have the information sorted like that yet. We *have* it all, just scattered in different log files that need better collation. At some point, you may be able to subscribe to an RSS feed of your favorite app, waiting for low-hanging fruit to be dangled in front of you to pick.

The *real* goal is to make the EBN obsolete, really, because all the numbers go to zero and everyone is writing such tremendously good quality code that there's nothing to complain about at this level. *Then* we'll have had a real impact on KDE's code quality.
Keeping with the theme of code quality, according to Stephan Kulow, KDE is now back to zero reported defects from the Coverity scan.
Also worth mentioning is the 74 bugs closed by Sebastian Trueg in K3b this week, a great number considering the imminent release of K3b 1.0.


Commits 2664 by 230 developers, 5924 lines modified, 948 new files
Open Bugs 12889
Open Wishes 11564
Bugs Opened 286 in the last 7 days
Bugs Closed 288 in the last 7 days

Commit Summary

Module Commits
Lines Developer Commits
Dirk Mueller
Gilles Caulier
Laurent Montel
Thomas Nagy
Paolo Capriotti
David Faure
Oswald Buddenhagen
Jos van den Oever
Eric Coquelle
Hamish Rodda

Internationalization (i18n) Status

Language Percentage Complete
Portuguese (pt)
Swedish (sv)
Danish (da)
Spanish (es)
Dutch (nl)
Estonian (et)
Italian (it)
Greek (el)
French (fr)
German (de)

Bug Killers and Buzz

Person Bugs Closed
Sebastian Trueg
Andreas Kling
Seb Ruiz
Allen Winter
Alexandre Pereira de Oliveira
Tommi Tervo
Stefan Borggraefe
Juergen Appel
Joris Guisson
Olivier Goffart
Program Buzz
Person Buzz
David Faure
George Staikos
Anne-Marie Mahfouf
Aaron J. Seigo

Commit Countries

Commit Demographics




  Bug Fixes Features Optimization Security Other



Development Tools






KDE Base

[] [] []   []


  []   []  






[] [] []   []

Networking Tools

[] []    

User Interface



  [] []   []





There are 68 selections this week

Bug Fixes

KDE Base

David Faure committed changes in /branches/KDE/3.5/kdebase/kioslave/trash:

Only remove the entry (.trashinfo file) if the deletion succeeded; otherwise report the error.

This ensures that we don't end up with "trash appears to be empty but it still takes much hdd space".

Joseph Wenninger committed changes in /trunk/KDE/kdelibs/kate/part/kateview.cpp:

make the cursor keys work for menus, if they were opened by Alt+Key. Without enabling/disabling the action collection the editor actions would have a higher priority than the key press events in the menu

Andreas Kling committed changes in /branches/KDE/3.5/kdelibs/kdecore:

Have KIconLoader catch KIPC::IconChanged and make the necessary reconfigurations.

Makes all toolbar icons update when KDE's icon theme is changed.

Reviewed by David.

Diffs: 1, 2, 3 Revision 583159
Kurt Hindenburg committed changes in /branches/KDE/3.5/kdebase/konsole/konsole/TECommon.h:

Patch dealing with bold and the 256 colors issues by Lars Doelle.
Read the comments from lars on the bug report for more info about bold/intensive colors in KDE 3.5.x.


Mark Kretschmann committed changes in /trunk/extragear/multimedia/amarok/src/contextbrowser.cpp:

We must not use KLocale::formatDateTime() in a helper thread. Behind the scenes KConfig is accessed, and this is totally not threadsafe. You get random crashes.

So for now the date is no longer localized. Hell, that's better than crashing.

Networking Tools

Giovanni Venturi committed changes in /trunk/playground/network/ksniffer:

Fixed the "Quitting from KSniffer". Now works correctly and let you save captured packets into a file if you need. Corrected also the removing of the temporary file correctly when quitting from KSniffer.

Diffs: 1, 2, 3, 4 Revision 582783


Development Tools

Dirk Mueller committed changes in /branches/work/icecream-make-it-cool/services:

protocol 26 is now ping-free and just uses tcp keepalive for network connection tracking

Diffs: 1, 2, 3 Revision 583438
Hamish Rodda committed changes in /trunk/playground/devtools/livedesigner:

Starting on the live ui designer app

Diffs: 1, 2, 3, 4, 5, 6, 7, 8 Revision 585089


Tobias Koenig committed changes in /trunk/playground/graphics/okular/generators/ooo:

* Add support for style families (text looks much more consistent now)
* Add support for images
* Add support for spaces and tabs

Diffs: 1, 2, 3, 4, 5, 6, 7, 8 Revision 585220
Pino Toscano committed changes in /trunk/playground/graphics/okular/ui:

reverting back the drawing of InPlace Text annotations to the unbuffered ones, but with a more clever behaviout than before:
- the text is drawn wrt the size of the page, and thenscaled to the real annotation boundary size. this makes the drawing of the annotation more similar to the page layout
- the bounding rectangle is drawn to be max 1pixel wide: if the drawn page is smaller than the page, then the rect is scaled along with the text, otherwise it's drawn after the scaling, so it won't appear huge at high levels of zoom

The AnnotationEngine's had to be modified by adding a page pointer parameter to the event() function, necessary to compute correctly the bounding rect of an inline text annotation.

Colin Guthrie committed changes in /trunk/extragear/libs/kipi-plugins/galleryexport:

Add support for multiple galleries.
Please can people test this? It works for me but there are no doubt issues somewhere ;)

Brad Hards committed changes in /trunk/playground/graphics/okular/generators:

Add in very rough first version of the XML paper
specification renderer.

This doesn't work yet. And it crashes a lot. You can help!

If you want to test this, a search for "xps sample documents" will give you a sample set that you can unzip.

Diffs: 1, 2, 3, 4, 5, 6, 7 Revision 583014
Brad Hards committed changes in /trunk/playground/graphics/okular/generators/xps/generator_xps.cpp:

It looks like Microsoft must have at least two completely different code bases for generation of XPS files.

In any case, we now handle FixedPage files where the path provided is relative to the FixedDocument, not an absolute path.

This allows us to load XPS samples from the Office2007 set.

KDE Base

David Faure committed changes in /trunk/KDE/kdelibs/kio:

Fix handling of hardlinks again:
fix for #20344 was wrong - testcase: <a href=""></a>;
this testcase broke too: "echo hello > A; ln A B; echo C>C; tar cf hardlink.tar A B C"

Carlos Olmedo Escobar committed changes in /branches/work/kdehw/solid:

Adding cpu monitoring code for single cpu and smp systems, for linux and net/open/freebsd.

Diffs: 1, 2, 3, 4, 5 Revision 584415
Luka Renko committed changes in /trunk/playground/base/guidance/powermanager:

Added support for multiple laptop batteries:
- battery code refactoring
- more has_key() checks for HAL properties
- improve battery presence detection

Diffs: 1, 2, 3, 4 Revision 584428
Will Stephenson committed changes in /branches/work/kdehw/solid:

Initial import of network managment classes. Currently just the frontend classes. Merge of Christopher Blauvelt's work and NetworkManager class to follow.

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 12 more) Revision 584930
Josef Spillner committed changes in /branches/work/knewstuff2/kdxs/src:

- make startup window a provider selection dialog instead of just test button
- handwritten translation dialog instead of Qt Designer ui file
- better HCI compliance
- keep engine separate from the view
- tooltips for email address links in KHTML view

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 10 more) Revision 585200
Oswald Buddenhagen committed changes in /trunk/KDE/kdelibs/kdecore:

KSvgRenderer, a thin wrapper around QSvgRenderer with SVGZ support.

Oswald Buddenhagen committed changes in /trunk/KDE/kdelibs:

svgz support.

also, zero out the image before rendering - nobody except the kernel does this for us, and we don't want to rely too much on the allocator, do we?

Diffs: 1, 2, 3 Revision 583621


Allen Winter committed changes in /branches/KDE/3.5/kdepim/kmail/folderrequester.cpp:

When there is no folder pre-selected, the dialog will say
Please select a folder
instead of
Unknown folder ''

Volker Krause committed changes in /trunk/KDE/kdepim/akonadi/libakonadi:

Add DND support to the collection model.
It's now possible to drag eg. a message from KDE3's Kontact into Akonadi.

Diffs: 1, 2, 3, 4, 5, 6 Revision 585474
Marco Gulino committed changes in /trunk/playground/pim/kmobiletools/kmobiletools:

Big improvements on the new device wizard:
- Removing retry, since now lockfile management is much better.
- Improving bluetooth: now automatically scanning ALL services, and showing user a list of good devices only. Also scanning automatically starts if bluetooth is enabled. Invalid services will be removed from config file.
- Typo fixes.

Also better serial port management, fixing timeouts, and closing automatically device after an error, instead of making the user wait wondering for what's happening.

Diffs: 1, 2, 3, 4, 5, 6 Revision 583260


Thomas Zander committed changes in /trunk/koffice/kword/part:

Implement printing of KWord documents directly to PDF.

Thomas Zander committed changes in /trunk/koffice/kword/part:

New feature. Well, its going to be invisible for most users, but thats the good kind of feature; where KWord does what its suppost to do without any work :)

I added padding to each document-page which means that the printed page will be printed slightly bigger to the PDF. This is done so normal printers ignore this, but professional printing studios will use this for so called 'bleed'.

This implies that there is now a space in the (virtual) document coordiante system between each page. Keep that in mind for loading/saving frames that work in an absolute coordinate system instead of relative to the page top.

Diffs: 1, 2, 3, 4 Revision 583095
Thomas Zander committed changes in /trunk/koffice/kword/part:

Implement undo/redo basis for texts + shapes.
This behaves exactly the way I want it to, it undoes the actions on the current text
document first and when there are none it will start undoing things on the document.
Note that since the actions are not yet properly enabled/disabled you'll get asserts (and crash) if you undo when there is no undo available ;)

Diffs: 1, 2, 3, 4, 5 Revision 583235
Jan Hambrecht committed changes in /trunk/koffice/libs/flake:

* implemented breaking a path at a selected point or segment
* implemented joining two subpath at their selected end nodes
* added some helper functions like reversing a subpath, closing a specified subpath or finding a point in the path
* introduced a new type KoPointPosition do describe a path points position inside the path
* added setProperty, unsetProperty functions to the KoPathPoint to add or remove a single point property
* made some documentation updates

There are no commands yet to undo/redo the new functions. I am working on them next.

Diffs: 1, 2, 3 Revision 583648
Jan Hambrecht committed changes in /trunk/koffice/libs/flake:

Implemented a command for changing a segment from curve to line or from line to curve.

The border insets is now used when calculating the size/boundingrect of a path. This fixes painting of paths which only consist of line segments whose points are on a horizontal or vertical line (x-size or y-size is zero).
Additionally made some cleanups.

Diffs: 1, 2, 3, 4 Revision 584478
Boudewijn Rempt committed changes in /trunk/koffice/krita:

Don't use KoPalette anymore: the Qt dock widgets are _almost_ good enough for us.

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9 Revision 584570


Andy Kelk committed changes in /trunk/extragear/multimedia/amarok:

Add support for creating and editing playlists on MTP devices

Diffs: 1, 2, 3 Revision 582933
Seb Ruiz committed changes in /trunk/extragear/multimedia/amarok:

When dragging podcast episodes to the playlist, reverse their orders so that oldest is first in the playlist. this works for multiply selected podcast of different channels, too!

Thus completing the "insert episodes chronologically" usability decision

Alexandre Pereira de Oliveira committed changes in /trunk/extragear/multimedia/amarok/src:

Support year in Guess Tags from Filename.
Patch by Corey. Thanks.

Andy Kelk committed changes in /trunk/extragear/multimedia/amarok:

Support downloading of files from an MTP device.

Diffs: 1, 2, 3 Revision 583405
Sebastian Trueg committed changes in /trunk/extragear/multimedia/k3b/src/k3bemptydiscwaiter.cpp:

Try unmounting the device before ejecting. Maybe a wrapper method would be better, one that always unmounts before ejecting.

This is one step but is not guranteed to work all the time.

Mark Kretschmann committed changes in /trunk/extragear/multimedia/amarok:

* Fade-out for xine-engine when pressing Stop or Pause. Patch by Tuomas Nurmi.

Everyone please enable this and test extensively! Do we even have a configure option for it? Maybe not.

Nikolaj Hald Nielsen committed changes in /trunk/extragear/multimedia/amarok/src:

Initial commit of my browser and integrated music store. Needs testing and feedback

Also added a button to make the tab managment feature more visible.

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 26 more) Revision 584860
Nikolaj Hald Nielsen committed changes in /trunk/extragear/multimedia/amarok/src/magnatunebrowser:

Added purchase album button to make this feature more visible. Fixed popup menu positions. Did more coding style cleanups

Sebastian Trueg committed changes in /trunk/extragear/multimedia/k3b:

If the data fits on a SL DVD also accept a DL medium if the user wants it.
TODO: add a warning that space will be wasted due to missing multisession.

Diffs: 1, 2, 3, 4 Revision 585076
Nikolaj Hald Nielsen committed changes in /trunk/extragear/multimedia/amarok/src/magnatunebrowser:

Now displays album info when selecting a track

Diffs: 1, 2, 3 Revision 585122
Sebastian Trueg committed changes in /trunk/extragear/multimedia/k3b/src/rip:

* No duplication of the default file naming pattern. Instead simply read the first entry from the combobox.
* New Audio ripping default file naming pattern. It is probably way to complicated for the average user but IMHO it simply provides the best results. It creates a directory with album artist and title and then names the files as follows: the tracknumber, followed by the artist if it differs from the album artist, followed by the track title.

Networking Tools

Giovanni Venturi committed changes in /trunk/playground/network/ksniffer:

now when capturing packets with the "display packets after stopped sniffing" option you get alway a correct behaviour: you'll see packets in the view after you stopped capturing

now I have to ask to the user to save the data when I exit from the application in all cases he has packets avaible or will have them availbale later in the view

Diffs: 1, 2, 3, 4 Revision 582659
Percy Leonhardt committed changes in /trunk/extragear/network/knemo:

- improved support for wireless interfaces
- sys backend now uses iwlib- redesigned wireless tab of status dialog

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 5 more) Revision 582809
Manolo Valdes committed changes in /branches/work/make_kget_cool/kget/transfers/multisegmentkio:

we can restart a saved work now :) .only remains a small problem try to restart a dead segment download.

Diffs: 1, 2, 3, 4, 5 Revision 582848
Eike Hein committed changes in /trunk/extragear/network/konversation:

Change the protocol handler to use the new DCOP interface and don't hand bashisms to /bin/sh. Patch by Tom Vollerthun.

User Interface

Nuno Fernades Pinheiro committed changes in /trunk/playground/artwork/Oxygen/theme/svg/actions:

new icons

Diffs: 1, 2, 3, 4, 5, 6 Revision 583138
Nuno Fernades Pinheiro committed changes in /trunk/playground/artwork/Oxygen/theme/svg/apps/kaffeine.svg:

new icon

Nuno Fernades Pinheiro committed changes in /trunk/playground/artwork/Oxygen/theme/svg/actions/small:

New icons

Diffs: 1, 2, 3, 4, 5, 6 Revision 585186


Stephan Binner committed changes in /trunk/kdereview/kerry:

make GUI during search non-blocking, add a spinner

Diffs: 1, 2, 3, 4, 5, 6, 7, 8 Revision 584283
Eric Coquelle committed changes in /trunk/kdenonbeta/karchiver:

Now, KArchiver Part component can browse rar, zip, tar* archives directories by directories. I couldn't so far set the ComboBox into the toolbar (like KArchiver's standalone window), so it stays in the statusbar...

Diffs: 1, 2, 3, 4 Revision 584766
Stephan Binner committed changes in /trunk/kdereview/kerry:

add non-Beagle based KDE addressbook searching

Diffs: 1, 2, 3, 4, 5, 6 Revision 585226
Klaus Niederkrüger committed changes in /trunk/KDE/kdeutils/kcalc:

Added display to toggle bits (contributed by Michel Marti).

Diffs: 1, 2, 3, 4, 5, 6, 7, 8 Revision 582747
Eric Coquelle committed changes in /trunk/kdenonbeta/karchiver:

Added a Wizard to create Sfx archives. Also added a new sfx module (7z's sfx for Windows)

Diffs: 1, 2, 3, 4 Revision 583276
Eric Coquelle committed changes in /trunk/kdenonbeta/karchiver:

When a huge archive is loaded, a little animation is now presented, while the archive's files are beeing read. The animated dialog is displayed only if reading time > one sec.

Diffs: 1, 2, 3, 4, 5, 6 Revision 583574
Eric Coquelle committed changes in /trunk/kdenonbeta/karchiver:

Added new functions that allow to better detect errors in Zip, Rar, Lha and 7z archives. Also, when an archive is checked for errors, one can repair damaged Rar and Zip archives

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 3 more) Revision 583626
Eric Coquelle committed changes in /trunk/kdenonbeta/karchiver/Pixmaps/Pics:

Added some nice pixmaps (taken from KDEArtwork Kids theme by Everaldo Coelho). I use them to display an animation when KArchiver is reading/writing an archive.

Diffs: 1, 2, 3, 4 Revision 583645
Raul Fernandes committed changes in /trunk/extragear/utils/ktranslator:

New icons for KTranslator. Thanks to Xavier Corredor Llano.

Diffs: 1, 2, 3, 4, 5 Revision 583703


Paolo Capriotti committed changes in /trunk/playground/games/kboard:

Imported last kboard snapshot.

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 600 more) Revision 584769


KDE Base

Aaron J. Seigo committed changes in /branches/KDE/3.5/kdebase/kicker/applets/clock:

silent night. kde night, all is calm, all is bright now the clock updates less often to our batteries this is a godsend
<chorus, verse, verse, chorus>

thx to Luciano Montanaro for starting on this fix

Andreas Kling committed changes in /branches/KDE/3.5/kdelibs/khtml/

Speed up ad filtering a bit by using const iterators.


Seb Ruiz committed changes in /trunk/extragear/multimedia/amarok:

Improve application startup times dramaticaly by lazy loading podcast episodes.
ie - wait until they are explicitly needed before querying the database.

regression testing needed!

Diffs: 1, 2, 3, 4 Revision 583128


Eric Coquelle committed changes in /trunk/kdenonbeta/karchiver:

*HUGE* speed improvement in handling (display) of Rar archives. It now uses KArchiveDirectory, and the MyKRar class can be seen as a "read-only" analog of KZip, except that it contains no Rar algorithms but calls to KProcess and the rar/unrar tools.

Rar archives can now be displayed directories by directories, as a file browser.

Diffs: 1, 2, 3, 4, 5 Revision 584485



Frank Osterfeld committed changes in /branches/KDE/3.5/kdepim/akregator/src:

surpress iframe, frame and other elements that could execute code and disable JS in the article viewer


KDE Base

Jos van den Oever committed changes in /trunk/playground/base/strigiplasmoid:

First part of port Strigi kioslave to KDE4

Diffs: 1, 2, 3, 4, 5 Revision 585177
Aaron J. Seigo committed changes in /trunk/KDE/kdelibs/kdeui/widgets/klineedit.cpp:

wow.that made absolutely no sense at all. *sigh*
new years resolution: don't start a patch, go to a meeting and then get bored during it and start idly committing what had been started ..
or better yet, no more of those meetings. they suck. ;)

David Faure committed changes in /trunk/KDE:

KIPC is gone, dbus signals replace it.
The API has been cleaned up too: the signals moved from kapp to kglobalsettings
[which now provides a singleton], as well as most of the gui-settings-related code.

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 46 more) Revision 582977


Sebastian Trueg committed changes in /trunk/extragear/multimedia/k3b/src:

Removed the K3bProjectTabBar. All it did is now done in K3bProjectTabWidget::eventFilter
I experimentally added the welcome widget as a tab to the project tab bar. This way the user always has access to it. I am not sure yet if I like it though.

Diffs: 1, 2, 3, 4, 5, 6 Revision 582798


Max Howell committed changes in /trunk/extragear/utils/filelight:

The English Breakfast Network is actually wrong about this code fix, but I want to see Filelight with a 0 next to it so no matter.

It's wrong as I'm adding a string to the QString not a character, but the rest of the string is inside a macro so it looks otherwise.

Diffs: 1, 2, 3, 4, 5, 6, 7 Revision 584010
Bram Schoenmakers committed changes in /trunk/extragear/utils/rsibreak/src/rsitimer.cpp:

I find 15 seconds too short to finish the stuff I'm doing before going into a break.
Yes, quite an egoistic commit.