17th September 2006by Danny Allen
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.
|Commits||2664 by 230 developers, 5924 lines modified, 948 new files|
|Bugs Opened||286 in the last 7 days|
|Bugs Closed||288 in the last 7 days|
|Jos van den Oever||
Internationalization (i18n) Status
Bug Killers and Buzz
|Alexandre Pereira de Oliveira||
|Aaron J. Seigo||
There are 68 selections this week
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".
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.
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.
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"
- 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
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.
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.
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.
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.
* 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.
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.
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
*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.
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.