prev
Issue 42
21st January 2007
by Danny Allen
next


This Week...
KHangman becomes the latest application to migrate to SVG-based scalable interface rendering. KOpenBabel is merged and the beginnings of a 3d navigation system in Kalzium. Work expands in the Umbrello/KPlato Student Mentoring program. Support for the ComicBook Archive and other improvements in okular. Work on Picture, Video and Krita "Flake" shapes in KOffice. Improvements in both the KDE 3.5 and 4.0 versions of Konsole. Language detection in Sonnet continues to mature. Import of concept code demos in Decibel. "Simple-search" user interface work, and support for indexing binary data fields in Strigi. "liveui" moves back into kdelibs. dbmodeler, a database schema modelling application (part of the Season of KDE), is renamed "grama".

Jacob Rideout discusses Sonnet, the new language checking framework for KDE 4:
The Past (KDE 3.X)
In the KDE 3.X series, KSpell2 was used to check for misspellings. Several plugins were provided for to allow various spellchecking engines to be used. Checking was done in one of two ways, either by checking in the background or via an interactive dialog. The background checking was implanted by checking a word each iteration of the event loop. Words were chosen to be checked by using a simple algorithm that worked for common European languages, but was of limited utility to those languages and scripts with more complexity. For the future, something else was needed...

The Future (KDE 4.X)
For KDE 4.X we've created Sonnet. Sonnet will include those functions provided by KSpell2, but will expand its scope. This includes grammar and style checking and providing the linguistic tools that underline them for application developers.

Standards
The algorithm to segment text into suitable chunks for checking is now based on the recommendation from the Unicode Consortium. The class will be extendable enough to provide special rules to conform to specific orthographic conventions. It has yet to be determined to what extent the end user will be allowed to customize their environment and what rules will be hidden in the implementation.

The language checking engines will be accessed from cross-platform libraries. Spelling engines will be provided by Enchant and grammar checking by Elixir. Enchant has been in use for some time by AbiWord. Elixir is currently being developed with the input of the developers of An Gramadóir, LanguageTool, and the maintainers of the AbiWord port of Link Grammar. The standard interfaces of both Enchant and Elixir will become part of a new Freedesktop.org spec that is being developed concurrently with Elixir. Once the spec is available, OpenOffice.org will consider allowing spec-conforming plugins to be used.

Which Language?
Sonnet will provide a new set of heuristics to determine which language a particular segment of text is written in. Global settings will provide a default list of languages most likely to be used in KDE. Application-specific settings will refine that list. Furthermore, applications can opt for language detection which will attempt to guess the languages in use. A language will be selected on a per paragraph basis. The language will be determined based on a statistical model of the language and its proximity to other languages using the same script. The likelihood of each of match will be weighted by both user settings and the language determined by the previous and next paragraph.

User Interface
The GUI is still under discussion. Work to be done includes crafting the Standard Checking Dialogs & Widgets (dialogs that appear when checking text and which allow you to iterate through errors) and Highlightling (the automatic highlighting of misspelled words, etc. within applications). Any suggestions, especially from usability exports is encouraged.

An early screenshot:

This shows a test app for An Gramadóir. The error is shown in bold. The tooltip has an explanation of the error. The small green box below is part of a WeaverThreadGrid, and shows the thread activity for background language checking.

Philosophy
KDE should support all languages for which users exist. This includes supporting diglossic languages in such countries where this is discouraged. Sonnet will provide additional facilties to assist application developers where such support is not provided by Qt.

Read more about the recent technical progress of Sonnet at http://jrideout.blogspot.com/2006/12/how-is-sonnet-stacking-up.html

Matt Williams, a new KDE developer, recalls his experiences so far and introduces his new game, KSquares:
I'm very much a new face in the KDE development crowd and so first, a message to all you out there who are tentative about jumping in with KDE 4 development.

In many people's eyes, the release of KDE 4 seems a long way off. This is especially true for developers outside the "inner circle" of KDE developers and it seems to only put people off. They seem to think it's too early to develop against and (maybe six months ago) I even heard people recommending that if you were thinking of starting a new application, you were better off using KDE 3 and then porting it much later. This couldn't be farther from the truth.

Before I started work on KSquares, I had no KDE development experience whatsoever. I had two choices; I could follow the (then) recommended path of developing under KDE 3 and then later porting to KDE 4 or I could simply jump in at the deep end with KDE 4. I made the latter choice and haven't regretted it. Admittedly, it can seem like a large hurdle to overcome at the beginning since you need to compile the libraries yourself (which six months ago could be quite an adventure but now is much easier) and the lack of beginner-friendly tutorials (now we have some very lovely tutorials on the new developer wiki) made finding your way around initially confusing. But once I got going, the Qt 4-like API along with the ease of use of CMake and the the helpfulness of everyone on IRC have made it such an easy journey (and in fact, looking at KDE 3 code, I'm glad I never had to deal with automake et cetera).

KSquares itself came about from the desire for the sort of game that I want on my desktop. I don't want a game that takes an hour to play, I need a quick, short, entertaining break from work. Many of you will no doubt know of the game of squares as you have probably played it with a friend while in a meeting or a boring lecture. This is the sort of "take your mind off it" experience which I believe is needed on the desktop and it is games like this that were discussed on the mailing list as being the way that the official KDE Games module is likely to go.

Development was started locally, but since being moved to the KDE SVN server (trunk/playground/games/ksquares), KSquares has accumulated the following features:
  • 2-4 players (AI or human)
  • Virtually any sized board
  • Two different levels of AI difficulty
  • Scoring independent of board-size
  • Colourful theme (slightly customisable)
  • Auto zoom of board (for accessibility)


It was at this point in development when I came across a problem. Since all this code is only in SVN (and will remain there, unreleased, until KDE 4.0 is released) I found it very hard to get feedback about my application. This is because the only people who compile it are developers who are busy writing KDE 4 for us all - which is perfectly understandable.

Despite not knowing in whch direction KSqaures should take, I think there are some features which still need to be implemented:
  • Network play (possibly using GGZ)
  • Fully customisable theme, possibly with pictorial icons as well as colours
  • Centralised highscore tabling (using libkdegames)
  • A gametype where different squares are worth different amounts of points
  • Any other fun game types people could suggest.
  • Usability review (as the interface _was_ designed by a developer :P)
KSquares is far from alone in the KDE games arena. In the official kde-games department the games have been coming on leaps and bounds with SVN porting across the board making them all look sexier than ever. Check them out and remember, feedback is always appreciated by developers!

Adriaan de Groot distills and comments on the reasons and purpose behind the three branches of KDE-PIM:
kdepim-3.5.5+
This is a feature branch. Fun stuff gets developed and tried out here, like new KPilot stuff (ha!) and HTML templates and UI modifications and whatnot. When something is finished and signed off by [person4_short] and the developer and the KDE 3.5 branch maintainer (also [person4_short]) then things can merge back to the stable branch.

3.5/kdepim
This is the stable release branch. It works towards KDE 3.5.X releases as they show up (like KDE 3.5.6 later this month). It takes bugfixes and completed features when they are approved by maintainers and translators.

pimterprise
This is the ultra stable branch. I made the name up, which is why it's so horrible and there will be a better name before the branch is actually created. This has the 5-years or so of support that the name "ultra stable" deserves. Bug fixes, stability and scaling fixes, only features specifically requested by customers. What happens in this branch - in terms of fixes, not necessarily all of the business features - gets merged back to the stable branch.

KDE 3.5.6 should be released sometime in the coming week, probably on Tuesday 23rd January. Included in this release are some nice bug fixes and functionality improvements, including the "bullet-aliased password input field" modification. The long-awaited KDevelop 3.4 is also due to officially hit the streets next week - the 3.4 code is ready for release, and is now only awaiting syncing to the download servers.


Statistics
Commits: 2668 by 224 developers, 5335 lines modified, 1690 new files.
Open Bugs: 12763
Open Wishes: 12116
Bugs Opened: 247 in the last 7 days.
Bugs Closed: 219 in the last 7 days.

Commit Summary
Module Commits
/branches/stable
561
/trunk/KDE
473
/trunk/l10n
461
/trunk/playground
227
/trunk/extragear
211
/trunk/koffice
194
/branches/work
162
/trunk/www
107
/branches/KDE
105
/trunk/kdesupport
73
Lines Developer Commits
127
Diniz Bortolotto
127
250
Laurent Montel
114
274
Gilles Caulier
110
205
David Faure
86
66
Ralf Habacker
41
115
Pino Toscano
41
83
Volker Krause
37
171
Stefan Nikolaus
36
76
Alexander Dymo
32
90
Thomas Zander
31

Internationalisation (i18n) Status
Language Percentage Complete
Portuguese
100.00%
Swedish
99.88%
Danish
99.66%
Spanish
98.86%
Dutch
97.52%
Estonian
95.64%
Greek
95.75%
German
95.30%
Italian
94.57%
French
92.57%

Bug Killers and Buzz
Bug Killer Number Of Bugs Closed
Andreas Pakulat
48
Bram Schoenmakers
34
Kurt Pfeifle
18
Martin Koller
14
Gilles Caulier
11
Urs Wolfer
10
David Faure
9
Mark Kretschmann
8
Angelo Naselli
8
Jens Dagerbo
7

Program Buzz
Amarok
  5020
Kate
  2970
KMail
  2840
K3B
  2810
Kopete
  2426
KDevelop
  2407
Kicker
  1619
Kaffeine
  1494
Kontact
  1486
KWord
  1342


Person Buzz
David Faure
  1162
Adriaan de Groot
  1068
Stephan Kulow
  904
Waldo Bastian
  612
Aaron J. Seigo
  454
George Staikos
  384
Daniel Molkentin
  348
Thomas Zander
  328
Stephan Binner
  321
Thiago Macieira
  288
Commit Countries

Commit Demographics
Sex
88.1 %       Male
10.4 %       (unknown)
0.962 %       Female
Motivation
44.6 %       (unknown)
34.5 %       Volunteer
20.3 %       Commercial
 
Ages
72.2 %       (unknown)
15.1 %       25 to 34
6.83 %       18 to 24
4.25 %       35 to 44
0.708 %       45 to 54
0.253 %       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
Andreas Pakulat committed a change to /branches/kdevelop/3.4/languages/php/phpsupportpart.cpp:
Use project-relative path for opening php projects in web-mode.
Bug 80792: all php files searched in php project root URL even if they are i...
Diff Revision 623419

Jens Dagerbo committed a change to /branches/kdevelop/3.4/src/partcontroller.cpp:
Fix partial url lookup. Thanks to Achim Spangler for the patch!
Bug 140161: Jump to error (from the ouput "Messages" window) does N...
Diff Revision 624237

Jan Schäfer committed changes in /trunk/KDE/kdewebdev/kimagemapeditor:
Fixed a crash bug
Highlight selection points when mouse is over one
Inactive selection points have different color
Diffs: 1, 2, 3, 4, 5 Revision 624289

Andreas Pakulat committed a change to /branches/kdevelop/3.4/buildtools/qmake/scope.cpp:
Who said I wouldn't commit to 3.4 anymore :)
Make it possible to delete subprojects when the parent project was changed from subdirs to app/lib template
Bug 140253: QMake manager cannot delete subproject after subproject type chan...