Issue 24
17th September 2006 by Danny AllenThis Week...
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.
Statistics
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 |
/trunk/KDE |
411
|
/trunk/l10n |
399
|
/trunk/www |
330
|
/trunk/playground |
318
|
/trunk/extragear |
307
|
/branches/stable |
272
|
/branches/work |
173
|
/branches/KDE |
137
|
/trunk/koffice |
106
|
/trunk/kdenonbeta |
51
|
Lines | Developer | Commits |
221
|
Dirk Mueller |
103
|
207
|
Gilles Caulier |
85
|
126
|
Laurent Montel |
59
|
127
|
Thomas Nagy |
58
|
304
|
Paolo Capriotti |
57
|
144
|
David Faure |
55
|
131
|
Oswald Buddenhagen |
51
|
53
|
Jos van den Oever |
47
|
94
|
Eric Coquelle |
39
|
94
|
Hamish Rodda |
35
|
Internationalization (i18n) Status
Language | Percentage Complete |
Portuguese (pt) |
99.94%
|
Swedish (sv) |
99.05%
|
Danish (da) |
98.97%
|
Spanish (es) |
96.99%
|
Dutch (nl) |
96.76%
|
Estonian (et) |
93.81%
|
Italian (it) |
93.63%
|
Greek (el) |
93.53%
|
French (fr) |
93.03%
|
German (de) |
92.23%
|
Bug Killers and Buzz
Person | Bugs Closed |
Sebastian Trueg |
74
|
Andreas Kling |
31
|
Seb Ruiz |
17
|
Allen Winter |
17
|
Alexandre Pereira de Oliveira |
16
|
Tommi Tervo |
14
|
Stefan Borggraefe |
11
|
Juergen Appel |
10
|
Joris Guisson |
9
|
Olivier Goffart |
8
|
Program | Buzz |
Amarok |
3568
|
KDevelop |
704
|
Kopete |
700
|
K3B |
693
|
SuperKaramba |
689
|
KMail |
689
|
Kate |
687
|
Kontact |
687
|
Kicker |
567
|
digiKam |
489
|
Person | Buzz |
David Faure |
298
|
zogje |
273
|
pipitas |
255
|
telex |
252
|
wheels |
245
|
George Staikos |
245
|
boud |
235
|
riddell |
227
|
Anne-Marie Mahfouf |
218
|
Aaron J. Seigo |
217
|
Commit Countries
Commit Demographics
Sex
Age
Contents
Bug Fixes | Features | Optimization | Security | Other | |
---|---|---|---|---|---|
Accessibility | |||||
Development Tools | [] | ||||
Educational | |||||
Graphics | [] | ||||
KDE Base | [] | [] | [] | [] | |
KDE-PIM | [] | [] | |||
Office | [] | ||||
Konqueror | |||||
Multimedia | [] | [] | [] | [] | |
Networking Tools | [] | [] | |||
User Interface | [] | ||||
Utilities | [] | [] | [] | ||
Games | [] | ||||
Other |
There are 68 selections this week
Bug Fixes
KDE Base
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.
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.
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".
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
Multimedia
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
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.
Features
Development Tools
protocol 26 is now ping-free and just uses tcp keepalive for network connection tracking
Graphics
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.
Annotations:
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.
KDE Base
KSvgRenderer, a thin wrapper around QSvgRenderer with SVGZ support.
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?
Fix handling of hardlinks again:
fix for #20344 was wrong - testcase: <a href="http://www.ibiblio.org/pub/Linux/utils/disk-management/cdrecord-1.9.tar.gz">http://www.ibiblio.org/pub/Linux/utils/disk-management/cdrecord-1.9.tar.gz</a>
this testcase broke too: "echo hello > A; ln A B; echo C>C; tar cf hardlink.tar A B C"
Added support for multiple laptop batteries:
- battery code refactoring
- more has_key() checks for HAL properties
- improve battery presence detection
- 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
KDE-PIM
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.
When there is no folder pre-selected, the dialog will say
Please select a folder
instead of
Unknown folder ''
Office
Implement printing of KWord documents directly to PDF.
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.
Feature;
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 ;)
* 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.
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.
Multimedia
Add support for creating and editing playlists on MTP devices
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
Support downloading of files from an MTP device.
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.
* 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.
Added purchase album button to make this feature more visible. Fixed popup menu positions. Did more coding style cleanups
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.
Now displays album info when selecting a track
* 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
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
Change the protocol handler to use the new DCOP interface and don't hand bashisms to /bin/sh. Patch by Tom Vollerthun.
User Interface
new icon
Utilities
Added a Wizard to create Sfx archives. Also added a new sfx module (7z's sfx for Windows)
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.
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...
Games
Optimization
KDE Base
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
Speed up ad filtering a bit by using const iterators.
Multimedia
Improve application startup times dramaticaly by lazy loading podcast episodes.
ie - wait until they are explicitly needed before querying the database.
regression testing needed!
Utilities
*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.
Security
KDE-PIM
surpress iframe, frame and other elements that could execute code and disable JS in the article viewer
Other
KDE Base
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. ;)
Multimedia
Utilities
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.
I find 15 seconds too short to finish the stuff I'm doing before going into a break.
Yes, quite an egoistic commit.