prev
Issue 127
7th September 2008
by Danny Allen
next


This Week...
A KPhotoAlbum developer sprint leads to various developments, including a new viewer and support for image "stacks". Initial lyrics support and a new "Albums" applet in Amarok 2.0. Support for export to OpenDocument text and HTML formats for certain file types in Okular. More functionality in the Plasma "Engine Explorer", an application for data engine development. More work on the "grouping taskbar" and "Weather" applet for Plasma, and new features in the wallpaper configuration dialog. A new Plasma wallpaper plugin, "Mandelbrot fractal viewer" based on Eigen. Lots of new settings across KWin-Composite effects. Start of code for a "Plasma loader" in Raptor. Experiments with using Jabber to propose/find network games in KSirK. Support for subprojects with CMake, and a generic "Source Formatter" plugin (with multiple backends) in KDevelop 4. Start of an OpenSync plugin for Akonadi. An Akonadi "server configuration" KControl module, intended for use in KDE System Settings. Support for adding files through command-line arguments in Ark. "Instant search" is implemented in KCharSelect. More work on a new IRC implementation, and improved Kiosk support in Kopete. NEPOMUK query service, and kosdwidget move to kdereview. Import of "LokaRest", an experimental framework to access RESTful web services. A new application, kReMail, is added to playground/pim. Import of "deKorator" KWin window decoration engine to playground/artwork, and a KDE4 port of Kvkbd into playground/utils. KColorEdit 2.0 is released.

Rob Scheepmaker introduces his work on "Extenders in Plasma":
I've been working on Extenders for my Google Summer of Code project, and while there are still a couple of known (and probably also unknown) problems, they are basically ready for use. I'd like to take this opportunity to explain and show what this extender thing actually is, and why it is awesome.

Thanks to extenders, it is now very easy for applet developers to embed relocatable widgets in your applet. Any QGraphicsWidget can be wrapped in a so-called "ExtenderItem", which allows the widget to be simply dragged anywhere by the user. Items that have been "detached" this way, can live on even when the applet that created them goes away, and can even be persistent between sessions. Widgets can also be reordered by the user, they can be collapsed and expanded, and custom actions can be registered for easy interaction. Take a look at the following simple screencast to get an idea about what all this means.

Download Extenders in Plasma video (2.6 MB, AVI)

What is shown here is the kuiserver applet I made to test the extender API. It is located in KDE SVN playground at the moment (if you'd like to test it), but it will most likely move to kdebase for 4.2. The kuiserver can show any KJob, which can be file transfers (as shown here), but also the burning of a CD, the rendering of a 3d image - basically anything that takes some time. As you can see, the jobs that are shown can be moved around, detached (in which case they are persistent, so you'll see them again even after you restart your computer), and returned to its source (the little question mark icon, since there's no icon yet for "return to source"). Also, a couple of custom actions are registered by the applet to its ExtenderItems, allowing the user to pause, resume and stop its transfers.

One of the nice things about extenders is that they require very little work for a developer to use. Thanks to all the great feedback from the rest of the Plasma team, it has a very neat and easy to use API, where basically all you have to do is instantiate an Extender, and start adding ExtenderItems to it. For a more complete picture on how to approach extenders, you can take a look at the TechBase tutorial I wrote. It's still a bit of a work in progress, but I think it might be useful. The tutorial shows how to create a stripped down version of the kuiserver applet shown in the screencast.

So where to go from here? Well, there are lot's of places that extenders might be useful. To name a few: The notify applet. Imagine being notified of an important email, and being able to just drag that notification to somewhere on your desktop, or a ToDo applet on your panel, so you'll remember to answer that email once you've finished what you're working on. Or a system monitor applet, where you can simply detach the sensors that you are interested in. Or, since Plasma is all about clocks, a clock where you can detach different timezones. And once all kinds of applets start using this, you have the freedom to just drop almost any part of almost any applet together as you see fit. And that's the kind of flexibility Plasma is all about!

Parker Coates writes about his KDE game, "Killbots":
My name is Parker Coates. I'm 25 years old. I currently live in Sherbrooke, Québec, Canada. I program ultra-violet wastewater disinfection equipment for a living.

I've been working on my game, Killbots, on and off for the last two years. It's actually the first and only thing I've ever written in C++. I had just read a great introduction to C++ book and wanted to start a new project to test what I'd learned. I was a KDE user and had recently discovered the game "robots", so I thought a "robots" clone in KDE would be a great start.

In case your unfamiliar, "robots" is a classic, turn-based, UNIX console game in which the player tries to avoid being killed by attacking robots. The player cannot attack the robots directly, but instead must get them to collide with one another or the rubble of previous collisions. The game itself is quite simple, but can be surprisingly entertaining. The GTK port of "robots", GNOME Robots, added several new twists to the game, including two classes of robots, pushable junkheaps, and safe teleports, all of which have been included Killbots.

The game was originally called KRobots, a name which, interestingly enough, is now used by this non-KDE project: http://freshmeat.net/projects/krobots/. It was written in KDE3/Qt3 using QCanvas and used raster images for sprites. Due to my lack of experience with C++ and Qt, I ended up rewriting the entire application twice, because I kept coding myself into corners due poor design decisions.

By the time I had created something reasonably playable, I learned that the future lay with KDE4/Qt4, so I once again abandoned the existing code and started a fresh rewrite to KDE4 and QGraphicsView which was brand new at the time. SVG theming, custom rulesets, highscores and animations were slowly added. The application was renamed to Killbots, and eventually became respectable enough to move into the SVN playground. While there it has continued to gain polish, features and documentation and is now nearly release worthy.

Okay, so that was the introduction, now onto asking for favours.

First and foremost, i'd greatly appreciate having Killbots reviewed. Interface, game play, documentation and usability reviews are all welcome, but a code review would be most appreciated. As I mentioned, this is my first C++ application, so i'm extremely interested in any comments or suggestions on the code and/or application design. I'm a bit of a perfectionist, so i'd be glad to hear about even nit-picky issues or inconsistencies. Ideas for potential new features are also welcome, but lower priority.

Second, i'd like some input on what the logical next step is for Killbots. I remember there being a list of requirements somewhere that a game needed to meet before being considered for inclusion in KDEGames, but I can't seem to find it now. Does such a list exist?

There has also been talk lately of dividing KDE Games into "Minimal", "Extended", and "Extra" submodules. Obviously Killbots wouldn't fit in the Minimal set, but I question whether it would even be popular enough to go into the Extended set. I'm a bit apprehensive about the Extra submodule though, as it's my understanding that these would actually live in Extragear, which isn't automatically translated/packaged/released with the main KDE project. Thoughts on this would be appreciated.

Third is artwork. I've already spoken to Eugene Trounev about creating a new default theme, but if anyone else is interested in making a theme, the more the merrier. There are even basic instructions on how to do in the game handbook. I'm also in need of an application icon and icons for my three custom actions: "teleport", "teleport safely", and "wait out round". Any help with any of these would be greatly appreciated.


Statistics
Commits: 2908 by 245 developers, 12133 lines modified, 1425 new files.
Open Bugs: 16846
Open Wishes: 14426
Bugs Opened: 407 in the last 7 days.
Bugs Closed: 336 in the last 7 days.

Commit Summary
Module Commits
/trunk/KDE
688
/trunk/extragear
451
/trunk/l10n-kde4
449
/trunk/playground
272
/branches/stable
186
/branches/work
142
/branches/kdepim
115
/branches/KDE
103
/trunk/koffice
96
/trunk/www
95
Lines Developer Commits
2517
Thomas McGuire
291
249
Gilles Caulier
120
351
Volker Krause
117
18
Pradeepto Bhattacharya
109
210
Allen Winter
84
177
Albert Astals Cid
78
156
Laurent Montel
73
143
Aaron J. Seigo
63
255
Kévin Ottens
60
228
Luboš Luňák
58

Internationalisation (i18n) Status
Language Percentage Complete
Portuguese
100%
Ukrainian
99%
Swedish
99%
Estonian
99%
Galician
98%
Greek
96%
Low Saxon
92%
French
92%
Japanese
88%
Spanish
87%

Bug Killers and Buzz
Bug Killer Number Of Bugs Closed
Tobias Koenig
42
Bram Schoenmakers
27
Pino Toscano
26
Thomas McGuire
21
Lucas Murray
18
Mark Kretschmann
14
Marc Mutz
13
Seb Ruiz
12
Aaron J. Seigo
11
Emanuel Schütze
10

Program Buzz
Amarok
  9815
K3B
  4875
KMail
  4840
Kopete
  3320
KDevelop
  2595
Plasma
  2489
Kaffeine
  2037
Kate
  2001
Solid
  1873
Kontact
  1790


Person Buzz
David Faure
  2110
Stephan Kulow
  1749
Aaron Seigo
  1390
Torsten Rahn
  1367
Jonathan Riddell
  1132
Laurent Montel
  1030
Stephan Binner
  782
Thiago Macieira
  668
Zack Rusin
  638
Adriaan de Groot
  631
Commit Countries

Commit Demographics
Sex
87 %       Male
11.6 %       (unknown)
0.799 %       Female
Motivation
68.3 %       Volunteer
13.0 %       (unknown)
19.1 %       Commercial
 
Ages
67.1 %       (unknown)
27.8 %       25 to 34
23.7 %       18 to 24
6.03 %       35 to 44
5.99 %       45 to 54
1.03 %       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 [*]

There are 132 selections this week.

Bug Fixes
Graphics
Andrea Diamantini committed changes in /trunk/extragear/graphics/kipi-plugins/galleryexport:
Finally solved Connection Problems!! Now plugin connects to Galleries..
Its functionality are near to come back!
Diffs: 1, 2, 3 Revision 857187

KDE-Base
Peter Penz committed changes in /trunk/KDE/kdelibs/kfile:
assure that the URL navigator gets activated when the path gets the focus
Bug 169497: 500 Internal Server Error
Bug 170211: Focus problem in split mode with navigation bar
Diffs: 1, 2 Revision 856401

Michael Jansen committed changes in /trunk/KDE/kdelibs/kdeui:
Finally KShortcutsEditor should work 100% correctly regarding applying and undoing changes to local shortcuts.

# KKeySequenceWidget: Improve documentation and document that applyStealShortcut has the side effect of saving an action collection.

That works if you only change one shortcut so keep that method.

# KKeySequenceWidget: Emit a signal if a user agrees to stealing a shortcut. KShortcutsEditor listens to that signal and so hasn't to rely on applyStealShortcut()
Diffs: 1, 2, 3, 4, 5 Revision 856844

Aaron J. Seigo committed changes in /trunk/KDE/kdebase/workspace/plasma/shells/desktop:
bring up the containment's context menu on right click, something i've been meaning to do for a while and which happens to close bug 170475.
Bug 170475: controller mode: drag&drop of plasmoid is possible with RMB
Diffs: 1, 2, 3, 4 Revision 857606

KDE-PIM
Tobias Koenig committed a change to /trunk/KDE/kdepimlibs/kabc/vcardtool.cpp:
Only store in JPEG format when the image has no alpha channel, otherwise the transparency information get lost...