prev
Issue 86
25th November 2007
by Danny Allen
next


This Week...
A Trash applet, various general improvements, and support for sharing configuration layouts in Plasma. "Undo close tab" feature in Konqueror. Development continues towards Amarok 2.0, with services becoming plugins and support for the Amapche music server. Continued progress in KDevelop and KEduca. More work on album display and improved thumbnails (with RAW format support) in Digikam. A BitTorrent plugin for KGet, based on the recently created libktorrent. Directory monitoring-and-update support in NEPOMUK. Work returns to Okteta, a hex editing utility. "Connection Status" plugin removed from Kopete. Kile begins to be ported to KDE 4, whilst work begins on KGPG2. Goya, a GUI widget framework, is imported into playground.

Shawn Starr gives a multimedia overview of the progress of the Plasma Weather data engine and the beginning implementation of the Weather Plasmoid:
(ensure sound is on to hear the voiceover)

Download Beginnings of Weather Plasmoid video (5.7 MB, AVI)

Hello! My name is Shawn and I have produced the Weather Plasmoid for KDE 4. Over the last few weeks, I have been busy making major progress on the Weather Plasmoid, with more changes coming thoughout this month and into the next.

Whilst the Weather Plasmoid will not rival the famous LiquidWeather SuperKaramba applet in the KDE 4.0 timeframe, it should at least rival the KWeather Kicker applet of KDE 3.

If you use imperial instead of metric for your measurements (as set centrally in your KDE configuration), the Weather Plasmoid will display the data in imperial units instead. The measurement of winds in meters per second is not yet functional in the applet but the weather ions (data sources) support this.

With this being my first KDE program, I hope to contribute more for the community and encourage people to send me ideas and possible features for the Weather Plasmoid too!

Rafael Fernández López introduces a new GUI widget framework, Goya:
Goya is a framework for easily adding widgets into itemviews. We could say that on itemviews we have a similar problem that Plasma (QGraphicsView) has/had (Qt 4.4 fixes this for QGraphicsView).

From my experience working with itemviews I found that sometimes it is very helpful to add widgets (for example, checkboxes, radio buttons, push buttons, etc) into itemviews. Such a use case can be seen in the plugin selector, for example.


I had to create lots of workarounds for adding only two buttons into the plugin selector itemview, and it seems that the complexity for adding more widgets becomes almost exponential!

So, I came up with a solution that consists of adding an intermediate layer between the Delegate and the View. I call this solution Goya. This makes it really easy and powerful (you can use signals and slots with Goya widgets) to use standard widgets and add them into itemviews, as the presence of a widget relies on the model, and their position on the Delegate.


Right now, the most important thing is written: Goya itself. You can currently add push buttons and combo boxes. I developed these for testing the framework, and they work very nicely. I will add other widgets very soon, for example checkboxes and radio buttons. Currently, you can also add a line edit, which I added for testing purposes, but it is not usable: you won't be able to scroll or edit text. It will only show a string with the appearance of a line edit.

Goya also tries to minimize memory usage, so if you add a button to all rows on a list view, only one button will be allocated in memory.

The utility of this project will be demonstrated by KPluginSelector, as well as KUIServer (which I plan to code when Goya is finished).

I think that adding widgets (at least push buttons, checkboxes and radio buttons) can be a very common case for itemviews, and for that reason I really think that other applications will benefit from Goya. That is the reason why I created Goya as a library.

The code can be found at http://websvn.kde.org/trunk/playground/libs/goya, and I would love to see it become an established part of KDE 4.1. There you can also find two small tests, where you can see Goya in action.



Simon St James discusses his new KDE 4 testing initiative, KDE4Daily:
Hi all! My name is Simon and I am the creator of the KDE4Daily project, which is my first contribution to KDE! The idea originally came from hanging around in #oxygen and observing that, whenever Nuno Fernades Pinheiro wished to see some changes to the widget style, he would need Ruphy to SSH into his machine and update and compile it for him. I thought things could be a bit more streamlined if Riccardo Iaconelli could somehow just add the changed code to a personal repository and have Nuno update to it automatically, but there were probably binary compatibility problems if they used different distributions which would prove awkward. Since virtualisation offers a way to distribute self-contained installations and have them run on different platforms, I thought this might be a way forward.

A little later I realised that this might be a good way of lowering the barrier for other people who want to try out bleeding-edge KDE but who don't run a distribution that provides up-to-date packages, or don't want to deal with the hassle of compiling. So I ran it past the KDE Promotion team and several people expressed their support for the idea, and so I set to work straight away.

The KDE4-install updater itself is not that sophisticated, technically - each build has all files hashed, and when a file changes between builds, the new version is simply globbed into a big bzip'd file. When the user updates, the list of changes is simply replayed and the replacement files are extracted into the correct places and symlinks are re-arranged, as required. This replaying is designed to be robust, so that if it fails (for whatever reason), it can be restarted without ill-effect and hopefully conclude successfully. While this aspect of the project was reasonably simple, dealing with debugging information was annoyingly difficult.

One of the technical challenges was fixing bugs / implementing features "in the field", as it were, without having to re-upload a brand new torrent, so one of the first things I worked on was a way of deploying script updates to users. Several bug fixes have been transparently slipstreamed in since the torrent was first added.

The debugging info for the KDE modules included in the KDE4Daily install is very big - approximately 512MB when bzip'd. Worse, even small changes in the source code can result in hundreds of megabytes of debug files that are not binary equals of the debug files from the previous build - generating an additional 300 MB per day of debugging info is not unusual. My upload bandwidth makes uploading this much per day unfeasible, but KDE4Daily's usefulness as a debugging aid is significantly reduced if it cannot be provided when an app crashes - without it, the backtraces given by DrKonqui are not really useful to developers.

Thankfully, the debugging info is fantastically susceptible to utilities such as bsdiff and bspatch, which help bring this down to a much more manageable 10-20MB per day of patches. So, after compiling a build, the fat, debug-filled executables are stripped and separated from their debug info and tagged in a way that associates them with this extracted debug info. Ordinarily, the way the GNU tools work means that an otherwise unchanged executable would change whenever its debugging info did (a fairly common occurrence), but a bit of jiggery-pokery and a naughty hack to GDB eliminate this inefficiency. If (not when ;)) an app crashes in KDE4Daily, a FUSE daemon written in Ruby intercepts requests for debug information from GDB, downloads a mapping that associates the executable's tag with its debug info, downloads the "original" debug info for this executable and the small patch required to bring it up to date, combines the two and then delivers the full, up-to-date debugging info to GDB for backtrace generation.

Preparing an install is about 99% automated. I only deploy a build if all modules have compiled cleanly and while there are occasional patches where one or two modules might have problems, on the whole compilation is pretty reliable. Building takes about 2-5 hours, and stripping and diffing the debugging info takes 1-3 hours. Generally, I need to upload anywhere between 20 and 70 MB per day, all-inclusive.

The torrent was uploaded two weeks ago but not widely publicised. Eventually, Aaron Seigo, Jos Poortvliet, Sebastian Kügler and Anne-Marie Mahfouf goaded me into writing a Dot article (my first!) and Jonathan Riddell helped knock it into shape. Many more people downloaded it than I had expected - I was expecting maybe one hundred or so people over the lifetime of the project, but at its peak, more than 1100 people were on the torrent! Dirk Mueller very kindly provided hosting for the updates and debugging info, and Martin and Kiyoshi provided hosting for the image itself for people who have no access to BitTorrent. Many people approached me with support and extra information (Liquidat blogged on how to convert the image so that VirtualBox users could use it) and left encouraging comments on the Dot article, and a gratifying number of people in #kde4-krush seemed to be using it! :)

I always thought it was pretty cool that when I first upped the torrent, Aaron Seigo himself was the first to hop on and has continued to seed ever since - I think this nicely highlights the "community" aspect of KDE :)

On the whole, it's been a fun challenge and overall a very positive first KDE experience - post-4.0, I hope to continue to contribute to KDE with some libs work and some apps :)

Simon also points out that the KDE build dashboard (http://ktown.kde.org/~dirk/dashboard/) is a really nice tool for checking the status of individual KDE modules before compilation, and it seems to be relatively unknown amongst users who try to compile KDE itself.

Cornelius Schumacher writes about another 10 year anniversary, this time that of the establishment of the KDE e.V. as a legal entity to represent KDE:
Tomorrow (27th November) is the day on which the KDE e.V. was founded, ten years ago. The first entry of our official registration says "The articles of association are constituted on 26th November 1997". It also mentions the President of the Board as "Matthias Ettrich, Student" and the Vice President "Matthias Dalheimer, Computer Scientist". Stories tell that they had to drag in housemates and girlfriends to reach the minimum number of persons needed to create a "registered association", i.e. an e.V., according to the German regulations.

I'm pretty sure that none of them expected where we would be today, ten years later. The KDE community lives and prospers, the fourth generation of the KDE desktop is about to be released. The KDE e.V. stands firm behind the project providing representation and support where needed. We have 203 regular members, representing the core of the KDE community, and a number of supporting members, our patrons Mark Shuttleworth, Trolltech, Intel, Novell and Klarälvdalens Datakonsult, as well as the supporters basysKom, Sirius Corporation and Medas GmbH. They and all the donors which give us financial support make it possible for the e.V. to fulfil its mission, to support the KDE community to develop the Free Software Desktop.

So join in and celebrate this day as the tenth birthday of the KDE e.V.

Happy Birthday KDE e.V.!

Anne-Marie Mahfouf announces the KDE-Edu meeting, due to take place next weekend:
The KDE-Edu team will meet for the first time next weekend in Paris. Mandriva is hosting the meeting and KDE e.V. is sponsoring the event. 14 people will share ideas about one of the biggest challenges of the moment: Free Educational Software.

The aims of the meeting include debugging applications for the upcoming KDE 4.0 release: please issue bug reports for all programs in the kdeedu module at bugs.kde.org. We'll also be preparing the KDE 4.1 KDE-Edu roadmap and have various other items in the agenda.


Statistics
Commits: 3062 by 255 developers, 7036 lines modified, 1369 new files.
Open Bugs: 15137
Open Wishes: 13281
Bugs Opened: 306 in the last 7 days.
Bugs Closed: 222 in the last 7 days.

Commit Summary
Module Commits
/trunk/KDE
891
/trunk/l10n-kde4
759
/trunk/extragear
328
/trunk/playground
200
/branches/work
173
/trunk/kdesupport
136
/trunk/www
112
/trunk/koffice
112
/branches/extragear
82
/branches/stable
71
Lines Developer Commits
129
Sébastien Renard
100
98
Yannig Marchegay
98
200
Laurent Montel
96
222
Gilles Caulier
82
187
Aaron J. Seigo
80
147
Andreas Pakulat
78
80
Oswald Buddenhagen
64
109
Dirk Mueller
55
75
Ralf Habacker
54
76
Allen Winter
50

Internationalisation (i18n) Status
Language Percentage Complete
Portuguese
100.00%
Swedish
99.93%
Greek
99.84%
Japanese
94.88%
German
89.37%
Chinese Traditional
86.15%
Spanish
85.02%
Dutch
83.87%
Estonian
82.90%
Brazilian Portuguese
82.12%

Bug Killers and Buzz
Bug Killer Number Of Bugs Closed
Luboš Luňák
41
Thomas McGuire
19
Maks Orlovich
17
Pino Toscano
16
Aaron J. Seigo
14
Will Stephenson
14
Percy Leonhardt
12
Tommi Tervo
11
Julian Seward
9
Peter Penz
8

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
95.3 %       Male
8.03 %       (unknown)
1.45 %       Female
Motivation
46.3 %       (unknown)
43.5 %       Volunteer
14.8 %       Commercial
 
Ages
69.8 %       (unknown)
17.8 %       25 to 34
7.44 %       18 to 24
6.32 %       35 to 44
2.75 %       45 to 54
0.595 %       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
Development Tools
Michael Pyne committed a change to /trunk/KDE/kdesdk/scripts/kdesvn-build:
apaku uncovered another bug in the pipe() based IPC implemention. Of course, I had already foreshadowed it. For future reference, if you see a comment somewhere that says "should be enough length", it is not enough length.

Making the read buffer bigger would probably have fixed it, but instead I made the buffer even smaller and made the I/O handle message fragments instead. A nifty exercise is to reduce the 256 in the sysread call to 1 and see if everything still works in pretend mode. :)
Diff Revision 740765

Educational
Jasem Mutlaq committed a change to /branches/KDE/3.5/kdeedu/kstars/kstars/indiproperty.cpp:
Fixing menu-to-command mapping for all INDI devices. This is a quick fix for the problem. It was solved in KDE 4 branch using a completely different approach.
Bug 152453: kstars can connect but not control lx90 using kubuntu gutsy