prev
Issue 84
11th November 2007
by Danny Allen
next


This Week...
Resurgent development work on KDevelop 4, with work on code parsing, code completion and the user interface. Support for converting the KVTML XML-based format to HTML in KDE-Edu. Support for the much-wanted feature of multiple album root paths in Digikam. Various continued developments in Amarok 2. Multiple additional comic sources for the Plasma Comic applet. Support for Kopete plugins written in Python, Ruby, JavaScript and other supported languages through the Kross scripting framework. A simple command-line application for playing media supported by Phonon. WavPack, TrueAudio and Speex format support added to the TagLib support library used by JuK and Amarok. Audio device work (utilising Solid) in KMix. Work begins on KsCD by a team of French students. Various optimisations in Plasma and Dolphin, amongst other applications. okular moves to a shared FreeDesktop.org library for PostScript format support. KGhostView finally removed in favour of okular for KDE 4.0. Code for supporting Apple OS X Dashboard applets via WebKit imported into playground (not for KDE 4.0!)

Nikolaj Hald Nielsen, Jeff Mitchell, and Harald Sitter write a report on the current status of Amarok 2 development:
Album grouping in the new playlist

Earlier this year, Ian Monroe did a lot of exciting work on laying down the basics of a new kind of playlist for Amarok 2 as a part of his Google Summer of Code project. The new playlist aims at being much more graphical in its expression, and allow for greater customizability of the info displayed for each track. Also, the old column based playlist required a large amount of horizontal space, and one of the goals o the new design was to make the playlist less wide. One response we heard quite a bit in connection with the development screenshots we posted, was the each track in the new playlist took up too much vertical space. So in an attempt to overcome this problem in many use cases. I experimented a bit with displaying an an album as a cohesive group. This has the advantage that you only need to show the information common to all the tracks in the album once, allowing each track to take up much less space.

Upon posting the first, quote rough, preview screenshots of this, some people were inspired to come up with graphical mockups of how this could be made to look. One of these was so good that we decided to try and use it as a base for the general look of the new playlist.

Doing the actual code for keeping tracks of album groups when moving, adding and deleting content took a few tries to get right, but the result is turning out quite promising. I have created the following video showing the current state. Keep in mind that this is still under quite heavy development :-)

Scriptable services

One of my long running pet projects (that has been rewritten a few times by now) is the scriptable service framework. As I started working on a general framework for adding services to Amarok2 (the framework that currently hosts the Magnatune, Jamendo, MP3Tunes and Shoutcast services), I started playing with the idea of letting people add their own services and content using scripts. This would allow people to add content that we either do not have the time or resources to add to Amarok ourselves, or content that is too "narrow" to warrant the inclusion in the default installation. Or, and this is the part that really excites me, great content and services that we have simply not thought of!

The basic idea behind the scriptable services is that you run a script to create a service. The newly created service then calls back the script to add he root content elements when the service is activated. Each element is created with the knowledge of what it needs to tell the script to have it populate that node when it is expanded. In this way, everything is lazy loaded as needed and the framework really does not care how the script gets its content (or even if it is a script or a remote application).

This is a bit abstract, and unfortunately, I do not have any screenshots I can show currently. Also, as it is not something that is in the "must have" list for Amarok 2, it might not be included in the first coming version. But it is definitely something I will continue to play with.


Media device support in Amarok 2 is coming along nicely. In Amarok 1.4, we used KDED's MediaManager to inform us of generic file systems that could be handled by the Generic device plugin. This has been reworked and extended in 2.0 to use Solid to automatically detect and select the correct plugin for almost any (probably more than 95%) type of non-generic device out there (one notable exception being some specific Sony devices), and any type of generic device that is marked in HAL as a portable audio player. Jeff Mitchell will be working on a method to mark generic devices and file systems that are not in HAL but should be handled automatically as a portable audio player. Jeff plans to use a system that will interoperate with Banshee's method, discussions with the Banshee developer are planned to finalise these details.

After that come the devices themselves - they are not yet ported. There are a few things that need to be done first, like converting the device handling structure to use the new Meta system. But two of the devices (generic and MTP) work well enough that you can connect to the device and disconnect from it, and see a listing of the files on the device. Once the Meta system is put in place, Jeff hopes that it won't be too hard to get the devices ported over to use it, as well as the other new subsystems in 2.0.
Download Amarok 2 Playlist Grouping video (991 KB, AVI)

Development tools

Amarok's old release script was basically a Ruby rewrite of our very first (bash script) version: over time, we developed it with more and more lovely Ruby code. But as always with such things, nowadays it is no more than a big messy load of crap.

Amarok 2 development seemed like the perfect time to do a complete rewrite. The new release script, which currently has the obvious name of release_amarok2.rb, is rooted in its very own framework which is aiming to provide a solution for every release-related task (may it be creating the tarball or just tagging).

The real cool thing about this framework is that by design, it is 100% modular and generic, which makes it usable for every KDE extragear (and probably also playground application). The only thing you have to do is to write the actual script which calls the functions you want to use. This is possible because everything is divided into logical parts at the file level (e.g. libl10n for everythin l10n related), as well as at the code level (e.g. InformationQuery() and FetchSource()). This way you can easily turn features off, turn them on again, trace bugs and most importantly, it makes the code better structured, hence improving maintainability and making it unbelievably easy to add new functionality.

Currently it can fetch the sources of the application, l10n-messages, docs, and also creates a ready-to-go tarball (using KDialog all over the place ;-)

Roger Pixley introduces a new quality initiative for the upcoming release of KDE 4.0, KDE4-Krush Saturday:
Two weeks ago, Aaron Seigo suggested that anyone interested in KDE hacking and testing come in all day Saturday to #kde4-krush on irc.freenode.net and beat on the KDE 4 application of your choice until all the bugs come running out. It happened and much good came of it, which of course led to the establishment of the Krush day as a recurring tradition (at least until the release of KDE 4.0!). We welcome all who want to contribute to join in next Saturday and help ensure that your favourite KDE 4 application becomes a stable addition to the KDE 4.0 release!


This last week has seen about 70 participants, with over 70 bugs confirmed (and with 57 of those confirmed fixed already). Specific examples of issues found and fixed include:
  • Broken previews in Konqueror
  • KRunner freezing every time a letter was entered
  • The Plasma application appearing in the alt-tab dialog
  • KMix configuration dialog crashing the application
If you want to report a bug, or confirm one of the 241 existing issues, prepare yourself and join us next Saturday on our KDE4-Krush quest!


Statistics
Commits: 2636 by 235 developers, 6103 lines modified, 1521 new files.
Open Bugs: 15041
Open Wishes: 13282
Bugs Opened: 255 in the last 7 days.
Bugs Closed: 144 in the last 7 days.

Commit Summary
Module Commits
/trunk/KDE
947
/trunk/l10n-kde4
702
/trunk/koffice
152
/trunk/extragear
150
/branches/work
93
/trunk/playground
92
/trunk/l10n-kde3
87
/branches/stable
81
/trunk/kdesupport
67
/branches/extragear
58
Lines Developer Commits
129
Allen Winter
76
184
Gilles Caulier
74
149
Laurent Montel
74
64
Karl Ove Hufthammer
64
196
Hamish Rodda
64
152
Aaron J. Seigo
58
136
David Faure
56
159
Dirk Mueller
55
122
Pino Toscano
54
129
David Jarvie
47

Internationalisation (i18n) Status
Language Percentage Complete
Portuguese
100.00%
Swedish
99.40%
Greek
98.87%
Japanese
94.81%
German
91.17%
Chinese Traditional
87.30%
Spanish
85.43%
Dutch
84.78%
Brazilian Portuguese
80.51%
Low Saxon
78.77%

Bug Killers and Buzz
Bug Killer Number Of Bugs Closed
Seb Ruiz
13
Tommi Tervo
11
Pino Toscano
9
Thomas McGuire
8
Gilles Caulier
7
Arnd Baecker
6
Christian Esken
6
Kevin Funk
6
Roman Jarosz
6
Peter Penz
5

Program Buzz
Amarok
  6305
K3B
  5640
KMail
  5120
Kopete
  4330
Kontact
  3948
Kate
  3880
KDevelop
  3205
digiKam
  2798
Kicker
  2436
SuperKaramba
  2154


Person Buzz
David Faure
  856
Sebastian Kügler
  854
Stephan Kulow
  771
Matthias Kretz
  654
Adriaan de Groot
  630
Allen Winter
  629
Waldo Bastian
  440
Aaron J. Seigo
  364
Boudewijn Rempt
  340
George Staikos
  322
Commit Countries

Commit Demographics
Sex
91.3 %       Male
6.10 %       (unknown)
2.22 %       Female
Motivation
48.6 %       Volunteer
32.8 %       (unknown)
16.1 %       Commercial
 
Ages
65.1 %       (unknown)
22.6 %       25 to 34
7.00 %       18 to 24
6.85 %       35 to 44
5.15 %       45 to 54
0.804 %       Under 18


Contents
  Bug Fixes Features Optimise Security Other
Accessibility
Development Tools [*] [*]
Educational [*] [*]
Graphics [*] [*] [*]
KDE-Base [*] [*] [*] [*]
KDE-PIM [*] [*] [*]
Office [*] [*] [*]
Konqueror
Multimedia [*] [*] [*]
Networking Tools [*] [*]
User Interface [*]
Utilities [*] [*] [*]
Games [*] [*] [*]
Other [*]


Bug Fixes
Games
Johannes Bergmeier committed changes in /trunk/KDE/kdegames/ksudoku/src/gui:
Fixing loading and creating your own game
* Fixed showing cells as wrong when entering your own game
* Fixed crash when starting your own game or loading
* Some cleanup of class KSudoku to prevent further crashes
* Reomoved unneeded code in serializer
Diffs: 1, 2, 3, 4, 5, 6 Revision 733926

Pierre Ducroquet committed a change to /trunk/KDE/kdegames/konquest/mapscene.cc:
This is a fix for the bug #150880 (stars improperly postioned on non-standard grid)

The problem was related with some old legacy code...

Cleanup is really gonna be needed.
Bug 150880: stars improperly postioned on non-standard grid
Diff Revision 734586

Graphics
Albert Astals Cid committed a change to /branches/KDE/3.5/kdegraphics/kpdf/xpdf/xpdf/Stream.cc:
another gmallocn -> gmallocn_checkoverflow
Fixes crashes on erroneus pdf sent by Than Ngo
Diff Revision 734456

KDE-Base
Stefan Monov committed a change to /trunk/KDE/kdebase/apps/dolphin/src/main.cpp:
use an icon even when launched manually. okular uses the same workaround.
Diff Revision 733138

Peter Penz committed changes in /trunk/KDE/kdelibs/kfile: