Weekly View of KDE CVS commits

December 20, 2002

By Derek Kite

This Week:

Security Audit Continues, comments on Kroupware, bugfixes and lots of new features in Kdevelop, Konqueror Kdeprint, Kig and the Accessibility capabilities of KDE

Security Audit Continues

Lubos Lunak continued the audit, focussing on the string handling routines. The number of commits decreased as each system call or string call was examined. The end seems near. This audit has resulted in hundreds of lines of code changed throughout the codebase. Will these changes introduce unstability or change in function? Hopefully not, but we will see when release candidate 6 comes out. The security fixes have been backported to the KDE 3.0.x releases and some to the 2.2 release.

The bug list below shows that the delay has been put to good use. Many bugs have been fixed and backported to the 3.1 release tree.

To err is human...

Last week I referred to a draft document describing sieve scripts. Actually, the document referred to ManageSieve. Marc Mutz corrected me by writing:

ManageSieve is an access protocol for server-side Sieve scripts. Sieve 
itself (the mail filter language) is described in RFC 3028 (a copy of 
which is also in kdenetwork/kioslaves/sieve/).

This feature first showed up in the Kroupware branch of Kmail, which was for changes required for a contract with the German Federal Agency for IT Security. Back in September 2002 there was some discussion of the goals of the project, with Martin Konold responding to a query:

> If I understood you correctly, you plan to make these filters available
> through a web interface, right? Because if you don't, then SIEVE is useless
> ;-)

Well I intend to provide this functionality via an enhanced version of the 
current kmail filter dialog.

I asked Marc Mutz if the kmail client generate the sieve scripts or do you have to write them? Also, there were many changes required in the kde client to get the functionality that was needed for the contract, ie. groupware, shared calendars, improvements in imap support and others. Were similar efforts required on the server side applications, or were they more or less plug and play? I wanted to get a feeling for the level of difficulty of implementing these types of projects using free software. Marc generously responded:

KMail generates scripts for vacation messages. That's the only thing we 
currently use Sieve for (and (permanent) redirection, which is not yet 
supported by KMail, but through the web interface). You can find this 
functionality under Tools->Edit "Out Of Office" Replies... in KMail 
HEAD and kroupware_branch.

In KMail, we needed to have standards-compliant MDN support (message 
disposition notification support - you know, the mails that tell you 
that your message has been read or deleted or forwarded). We also had 
to improve KMail's IMAP support, namely adding disconnected IMAP.

We added a new KAddressBook resource that can store addresses into IMAP 
folders (yes, such things exist), and we needed a MS-TNEF[1] parser 
(and possibly generator) for KMail. Both of this is for compatibility 
with legacy applications like Outlook. :-(

[1] That's a binary serialization format for MAPI objects. Think 
QDataStream, only more complicated.

We also had to make the KOrganizer/KMail duo look more like Outlook :-( 
That led to the situation where KMail now embeds KOrganizer in certain 
situations. That will change. We will port the Kolab client to use the 
Kaplan framework.

I don't oversee the KOrganizer changes, but I guess they were not so 
intrusive as those in KMail.

Apart from a few bugfix patches, the server components are 
"off-the-shelf" packages. We mainly added the web frontend, the LDAP 
schemas used and a set of scripts that generate config files for the 
components from the LDAP database.

The main problem is probably that we didn't finish the stuff in time 
before HEAD was opened again. Now we have to deal with four KMail 
branches (3_1_BRANCH, HEAD, make_it_cool, kroupware) and frankly, it's 
merge hell. :-(

It seems Kmail is blessed with lots of talented developers with many good ideas. Hopefully in the next months we will see it all come together.

Bug Fixes:

Bug 51905 - locolor icons still in kdeadmin
Bug 51925 - locolor icons still in kdegraphics
Lukas Tinkl fixed a bug in kwmtheme: don't crash kwin with the Nostalgy theme

Bug 41268 - scrolling behavior in diff view
Bug 50824 - cvs update to branch fetch list hangs

Bug 39989 - Alarm demon control module untranslated

Bug 51681 - embedded media player doesn't play OGG/MP3

Bug 50972 - attachments usng mimetype text/rtf will be displayed inline
Bug 51746 - Cannot resize folder column in left pane when other columns are turned off
Bug 51895 - pgp encryption attachment fails

Bug 51231 - Double shortcuts in context menus

Bug 32767 - error with opening of konqueror

Lars Knoll fixed a bug in kdelibs/khtml/rendering: position child correctly before calling layout. Fixes the initial layout problem on

Maks Orlovich committed a big speed up to kfmclient for common operations - openProfile, openURL. Here, it cuts roughly 170ms from processing, which is pretty much most of what it does. Works by not creating a KApplication object when not needed, which stops spending stuff on things relevant only for UI. Since Konqueror panel icons use kfmclient, makes effective Konqueror startup time faster...

Laurent Montel fixed a bug in kdebase/konqueror: Fix crash when tabwiget doesn't exist

David Faure fixed a bug in kdebase/konqueror: Don't show 3 message boxes when the user typed ~unknown_user Don't filter the given url twice (if no name filter is used)

Maks Orlovich backported the mini-optimization... in kdelibs/kio/kfile Forgot to mention the effect in last log: on my 1374-file home dir, saves about 0.7-0.8 seconds of work. (So I guess cluttered home dirs can be good, too - if only to encourage optimization of the filedialog :-) )

Bug 51755 - no sound played when incoming message window is popped up
Bug 51790 - irc commands bug on window
Jabber Plugin Bug 51800 - Allow plain text passwords

Bug 51736 - exchange plugin doesn't support all necessary username authentication bits
Laurent Montel fixed a bug in kdepim/kaddressbook: Fix crash when we remove address.

Bug 51985 - should ask for password again
Bug 51656 - no refresh of sheet
Bug 51658 - crash after quit without saving

Bug 52012 - prereq include file kdialog.h is missing

Bug 47664 - kscd window placement under panel

Bug 45906 - kword crash when table of contents is updated
Bug 52019 - "open link" doesn't open https urls

David Faure committed to kdelibs/kutils: Many fixes needed by KOffice: support for empty strings in setData(), support for setOptions() (to implement "Find previous"), missing signals, etc. Unbreak the final dialog box. Fixed a crash with the replace dialog. Will backport all I can (can't fix the wrong i18n'ed string in the branch :(( BIC to kde-3.1-rc5, but this class is new in 3.1.

Carsten Burghardt fixed a bug in kdebase/kioslave/imap4: Do not fire a list-command for every folder but only for every listing to speed things up. Inspired by Michael.

Malte Starostik fixed a few bugs in kdelibs/kdecore:

* make the in- and output buffers autodelete in order not to leak everything
  ever read from or written to a KBufferedIO "device"
* Don't skip the second buffer in consumeWriteBuffer:
  QPtrList::remove() already advances the list's current pointer, the
  following call to next() advanced it again.

Michael Goffioul fixed bugs in kdebase/kdeprint/kdeprintfax:

- Fixed crash on exit
- Fixed unrecognized tags in log viewer
- Added possibility to save log

Laurent Montel fixed a potentiel crash in kdegraphics/kghostview. When we delete process, change value to null, otherwise, it didn't never change to null

David Faure committed a better speedup patch from TrollTech to qt-copy/src/kernel: use the same QSettings for reading all the parameters during QApp construction.

New Features:


Stephan Binner dded GUI for option "Mouse wheel over desktop switches desktop". Popular request ( and it is implemented since KDE 3.1.

Laurent Montel added a new feature : Open new tab after current active page (as mozilla/galeon)

Andras Mantia responded to Lubos Lunak who wrote:

> Konqueror preloading (keeping last KonqMainWindow instead of destroying it,
> and keeping konqy running. to be precise).
> Turned off by default for now, and no GUI for the option yet (I need to
> recall how to do that ;)  ) :
> konquerorrc:
> [Reusing]
> MaxPreloadCount=
> First person with a computer slow enough to measure the speed difference
> (telling me it) wins a free upgrade to the kcontrol module having the GUI
> option.


 I don't have a slow computer (Athlon XP 1600+ with 256MB DDR RAM shouldn't be 
slow), but if I set MaxPreloadCount to 4, Konqueror appears noticable faster. 
I just worry about how much memory is used in this case after you quit 
Konqueror, as it remains in the memory, doesn't it? This is some kind of 
catch 22, as those with much memory can keep Konqi running all the time, but 
those with little memory, who usually quit Konqueror after browsing to free 
the used memory and start it when they need (so they would benefit of the 
quicker start) will end up with the same amount of used memory even after 
they think that they have freed up some by exiting Konqueror. Is it 
understandable and the correct assumptions what I've wrote?

Yes. But those with little memory of course will set MaxPreloadCount to 0 (or 
rather kpersonalizer will do so).


Till Gerken added proxy support for Jabber (HTTPS, SOCKS 4, SOCKS 5)

Till Gerken also added support for contacts without metacontacts (required by Jabber groupchat)


Dominique Devriese announced:

Adding the new Terminal interface, as discussed on kde-devel quite
some time ago, and approved by Waldo Bastian:

This is only the interface part of the patch yet.  The part in the
konsole source follows..


Reinhold Kainhofer added a new PalmDOC conduit to syncronize text files with doc databases (AportisDoc, TealReader, etc) on the handheld


Michael Ritzert added initial read support for JPEG2000 via JasPer.

Waldo Bastian announced that kdenonbeta/kgnuplot was Unmaintained, hence Removed.


Falk Brettschneider commented that breakpoint support in QEditor completed.

Roberto Raggi added first version of expand/collapse all blocks

Falk Brettschneider pointed to the ChangeLog with regard to many changes, including kdevelop/parts/fortransupport, kdevelop/parts/javasupport, kdevelop/parts/phpsupport, kdevelop/parts/pythonsupport.


Oliver Bausinger added dvd device support in kdebase/kioslave/devices/kdedmodule.


Kig, a program for exploring geometric constructions, has seen many changes and updates lately. Dominique Devriese commented on a patch:

1 commit one of Maurizio Paolini's patches: this one adds a
  cubic-line-intersection object..
2 remove the obsolete Object::copy() function.
3 finish DragRectMode.  It's working out surprisingly good :).  This
  allows me to combine some spaghetti code in NormalMode into clear
  code, and maybe reuse the mode in other places.  I'm going to start
  on a SelectionMode next..  DragRectMode has a very clean interface
  thanks to some QEventLoop magic..

Here are some example types by Maurizio Paolini

  A            ConicCenter.kigt   1.1
  A            LineConicMainAxis.kigt   1.1
  A            LineConicSecondAxis.kigt   1.1
  A            fregier.kigt   1.1
  A            parabolaBDF.kigt   1.1


Michael Goffioul implemented millimeter margins.


Josť Pablo Ezequiel FernŠndez commented:

Initial release of libkspeech (KSpeech and KSimpleSpeech).

Initial commit of the new Accessibility module.
This won't be compiled by default untill the old module is totally replaced.
The following tasks will be done:
- Name conversion from Access to Accessibility.
- Move kaccess (the accessibility daemon) to kded.
- Clean up and addition of new features.

Thanks for reading CVS Weekly