<?xml version="1.0" ?>

<kc>

<title>KDE Traffic</title>

<author contact="mailto:aseigo@mountlinux.com">Aaron J. Seigo</author>

<issue num="19" date="03 Aug 2001 00:00:00 -0800" />

<intro>
<p>Welcome to KC KDE! This week's issue comes in spite of downed email servers, ISP's giving up the ghost
and all sorts of general network troubles that made me start to think that I was living
in the middle of some cosmic conspiracy to deny my systems access to the Internet.</p>

<p>On a brighter note, KDE 2.2 is ready to go and the road towards KDE 3.0 is already being forged. Binary
compatibility in the libraries is set to be broken to allow needed improvements while others are breaking KDE speed
barriers. These events and more are covered in this issue. Enjoy and happy hacking!</p>
</intro>

<section
  title="KDE Usability Project Back On Its Feet"
  subject="Getting the ball rolling"
  archive="http://lists.kde.org/?l=kde-usability&amp;m=99588784102592&amp;w=2"
  posts="11"
  startdate="23 Jul 2001 03:28:02 -0800"
  enddate="26 Jul 2001 05:37:47 -0800"
>
<topic>KDE Usability Project</topic>
<p>Some months ago Jono Bacon along with a few other KDE hackers started working on a
project intended to help guage the usability of KDE. Unfortunately their time became limited
and the project stalled for a while. It picked up steam again this week and is once again
 proceeding with vigor. Jono kicked things off with this email:</p>

<quote who="Jono Bacon">
<p>From some discussion it is clear we need some form of usability testing. This
will not only give our product a sheen but also identify areas of user
preference in what users want.</p>

<p>What I need to know is who can help and what they do? IF anyone can help witht
he following it would be great:

<ul>
<li>Web programming</li>
<li>Usability research</li>
<li>Writing</li>
<li>Developing questionnaires / research suites</li>
</ul>
</p>

<p>If you could outline which areas you can help in that would be great.</p>
</quote>

<p>Since that email, there has been more activity on the kde-usability list that
there was in the previous four months. Many new faces have joined the project
and they are busy putting together standardized formats for reports, questionaires, software
to help automate the testing process and report drafts. To
see the state of the project and join in visit <a href="http://usability.kde.org/">http://usability.kde.org/</a>.</p>

</section>

<section
  title="The Road Ahead Includes a New Release Manager"
  subject="RFC: The Road Ahead"
  archive="http://lists.kde.org/?l=kde-core-devel&amp;m=99592272201661&amp;w=2"
  posts="19"
  startdate="23 Jul 2001 13:07:01 -0800"
  enddate="27 Jul 2001 05:17:17 -0800"
>
<topic>Release Schedule</topic>
<topic>KDE 2.2</topic>
<topic>KDE 3</topic>
<mention>Dirk Mueller</mention>

<p>To make sure that there were no questions remaining about the future timeline for KDE
Waldo Bastian posted the following summary:</p>

<quote who="Waldo Bastian">
<p>To wrap up the Qt3 discussion and to bring everyones expectations a bit in
line, here is a proposed time-table for the rest of this year:
<ul>
<li>Aug 2001: Release of KDE 2.2</li>
<li>Sep 2001: Release of KDE 2.2.1</li>
<li>Okt 2001: Development release, KDE 2.89 aka Qrash3.</li>
<li>Nov 2001: KDE 3.0beta1</li>
<li>Dec 2001: KDE 3.0beta2</li>
<li>Jan 2002: KDE 3.0 final</li>
</ul>
</p>

<p>I suggest to switch KDE CVS to Qt3 after the release of 2.2.1.</p>

<p>If you would like to be the release dude for KDE 3.0, now is a good time to
step forward :-)</p>
</quote>

<p>There was a brief discussion regarding whether to move KDE development into
a two phase schedule, much like Debian Linux' stable and development branches.
It was decided through discussion that this was not the best thing for KDE. As for the &quot;release dude&quot;
position, when Waldo announced  that KDE 2.2 was tagged and ready to go
he also announced that Dirk Mueller will be the cordinator for the KDE 3.0 release.</p>

<p>Waldo's hard work with the 2.x series has been greatly appreciated by all in the KDE
community and we look forward to Dirk's release schedule leadership.</p>
</section>

<section
  title="New Version of QextMDI"
  subject="QextMDI --&gt; kdelibs ? [was: Re: ANNOUNCE: QextMDI-2.0.0 Beta1 out now]"
  archive="http://lists.kde.org/?l=kde-core-devel&amp;m=99605215102189&amp;w=2"
  posts="7"
  startdate="25 Jul 2001 01:08:26 -0800"
  enddate="26 Jul 2001 08:05:35 -0800"
>
<p>QextMDI is a toolkit that implements a multiple document interface (MDI) API for Qt and KDE.
Several Qt and KDE applications use this framework. Falk Brettschneider announced a new beta
of QextMDI 2.0 was available on its <a href="http://www.geocities.com/gigafalk/qextmdi.htm">homepage</a>.
According to the announcement, the changes in 2.0 include:</p>

<quote who="Falk Brettschneider">
<p>
<ul>
<li>lots of new bugfixes, especially concerning focus problems</li>
<li>KDockWidgets of KDE-2.2 integrated, compile on Win32, too</li>
<li>TabPage MDI mode added, (the third MDI mode!)</li>
<li>Toplevel MDI mode works without focus problems</li>
<li>KDE 2 default decoration and KDE 2 laptop decoration added</li>
<li>optimized and speeded up</li>
<li>several new state signals and useful custom events</li>
<li>added faked SDI mode (just maximized view without system buttons)</li>
<li>dockable tool views (using KDockWidgets)</li>
<li>internal rewrite of several mechanisms</li>
<li>KDevelop project file updated to KDevelop-2.0</li>
<li>example applications improved</li>
<li>autoconf/automake project files updated to latest version</li>
<li>HTML class reference updated with latest KDoc 2.0a53</li>
<li>configure script added, with -kde2 and -release flag</li>
</ul>
</p>
</quote>

</section>

<section
  title="Possible Directions For KConfig in KDE 30"
  subject="RFC: KConfig changes for 3.0"
  archive="http://lists.kde.org/?l=kde-core-devel&amp;m=99606259430171&amp;w=2"
  posts="36"
  startdate="25 Jul 2001 04:02:23 -0800"
  enddate="26 Jul 2001 15:11:28 -0800"
>
<topic>KConfig</topic>
<topic>Development Plans</topic>
<topic>XML</topic>
<mention>Martijn Klingens</mention>

<p>There is only one way to know how well a car drives, and that is to actually
get in and drive it. Similarly for an API, the only way to really understand its capabilities
and limitations is to use it in real world situations. KConfig is one of those ubiquitous parts of the
KDE base libraries: any KDE application that needs to store configuration data (which is
the majority of them) use it. The strengths and limitations in KConfig have therefore been discovered
in detail and the future of KConfig has been discussed several times before. Now that KDE
is heading for a new major release in 3.0 it was to be expected that the topic would arise up again.
Rob Kaper kicked off the thread by saying:</p>

<quote who="Rob Kaper">
<p>Please give some input on the following idea. For KConfig in 3.0 I would
like to see the following changes:
<ul>
<li>allow &quot;defaul&quot; as readable value even for boolean entries etcetera,</li>
<li>add a &quot;requirement&quot; or good-practice recommendation that applications
  always save all possible entries in the config file, even those that are default</li>
<li>add a description QString to each key and group</li>
</ul>
</p>

<p>That way, users can be assured there are no &quot;hidden&quot; options in the code
ever. Every configurable option will be in the configuration file.</p>

<p>My concerns regarding this come forth from the removal of &quot;Fade out applet
handles&quot; from kcmkicker. Since it has no GUI entry and is not present in the
default saved configuration file, there is no way to know whether the option
exists but to be familiar with the code.</p>

<p>Proposed changes would also make it fairly easy to add &quot;Advanced options..&quot;
buttons to KControl as that could be a small program reading all the
entries, defaults and descriptions. Launching Kate with the appropriate rc
file and a special highlight mode would probably suffice.</p>

<p>Another option would be to switch to XML based configuration files, which
allows us to store possible values in a DTD and have a generic &quot;RC Editor&quot;
(or a Kate plugin) for advanced features. Such a config file editor would
probably be the best option to keep KControl simple yet allow power users to
tweak all advanced features of a program.</p>
</quote>

<p>Simon Hausmann had some concerns with writing out each and every
config option, saying:</p>

<quote who="Simon Hausmann">

<p>There's one disadvantage with always
writing out configuration values: They get written into the local config and
if you do that for each and every entry you

<ol>
 <li>get full blown config files in the user directory, containing redundant
 information</li>

<li>loose the ability for a system administrator to change global values,
 because the global changes never get applied to the apps as for each
 field there is an entry in the local file.</li>
</ol>

What we actually need for a kconfig editor is the meta information of which
field having which type and some documentation around it (that's an argument
for not putting the description in the kconfig file -> you might want to
translate the description) . Maybe we shouldn't try to put this information
into the config files but into a separate file/database.
</p>

</quote>

<p> Martijn Klingens
noted that most applications already write out all possible configuration options
regardless of whether they are set to the default value or not. XML files were
suggested but decided against as requiring too much time and resources to
parse efficiently.</p>

<p>On a slight tangent, Charles Samuels suggested:</p>

 <quote who="Charles Samuels">

<p> we should eliminate the obvious lack of OO
safety in KConfig and always explicitly set a group when accessing a key.
My personal favorite way is a group(QString) function that returns a
temporary KConfigGroup. In other words
<blockquote>
<code>
config->group(&quot;Some Group Name&quot;)->readEntry(&quot;Some Key&quot;);
</code>
</blockquote>
</p>

</quote>

<p> Several others agreed that this was a good idea and should deffinitely
be implemented in this manner.</p>

<p>In the end many questions remained unanswered. It will interesting for both developers and
users alike to watch what happens to the configuration infrastructure in KDE 3.0.</p>

</section>

<section
  title="Konqueror Showing Progress"
  subject="progress patch"
  archive="http://lists.kde.org/?l=kfm-devel&amp;m=99624099225666&amp;w=2"
  posts="5"
  startdate="26 Jul 2001 09:05:04 -0800"
  enddate="28 Jul 2001 16:10:05 -0800"
>
<topic>Konqueror</topic>
<p>Many have been watching Konqueror's tremendous progress towards becoming an excellent web
browser. So it's slightly ironic that one of Konqueror's
weakness is accurately displaying the progress of downloading and displaying a web page. This is
changing however thanks to a patch Dirk Mueller has been working on. Regarding this patch,
Dirk said, <quote who="Dirk Mueller">as I noted earlier I'm currently working on fixing the progress information.
What I thought about is putting all the ugly logic that maps the heap of
information about the ongoing actions into a 0-100% value in khtmlpart and
make it emit a signal that GUI frontends can connect to (void progress(int
percent) for example).</quote> He went on to ask for input on some of the aproaches he
was taking. After a lengthy technical discussion on the finer points of how and when to
let the GUI know about various events occuring from within khtml, Dirk posted a patch
saying:</p>

<quote who="Dirk Mueller">
<p>this is a prelimiary version of working progress information. It has a few
defiencies currently (one of them is that it is not well tested). Namely
there are:

<ul>
<li>speed information is broken, see the FIXME in the patch. I'm not sure if I
should accumulate the speed info of all jobs running, or just of the main
HTML page. if the latter, a slot that converts the unsigned long to
an int should suffice. or ?</li>

<li>it does now no longer only count images, but instead all referenced
objects. I did not yet adapt the i18n-strings to reflect that, anyway
 as images are the majority of objects this should be not a big issue</li>

<li>accumulating information over subframes is not yet implemented. I don't
know how to find out if I'm the &quot;topleve&quot; frameset and how I can find a
paretn khtmlpart if I'm a FRAME. Simon ?</li>
</ul>
</p>

<p>Besides that, the patch has also some other minor fixes and changes, as

<ul>
<li>fixing the broken baseurl handling we had all over the place. fixes
 the referrer string.</li>

<li>cleaning the related signatures up.</li>

<li>implementing attribute width for &lt;select&gt;. its CSS2 min-width, but as we
don't have a support for that yet I added a hack.</li>
</ul>
</p>
</quote>

<p>Simon Hausman pointed Dirk towards KHTMLPart::parentPart() as a means to
find out what the top level frameset is. Tobias Anton tested the patch thoroughly
and commented, <quote who="Tobias Anton">
i like the change in the loader very much!
looks like a long-needed cleanup. large, great patch.</quote></p>
</section>

<section
  title="An Option For The Speed Obsessed"
  subject="Faster startups by fixing C++ object files before linking (new version and results)"
  archive="http://lists.kde.org/?l=kde-devel&amp;m=99618500904021&amp;w=2"
  posts="24"
  startdate="27 Jul 2001 15:07:12 -0800"
  enddate="27 Jul 2001 15:27:04 -0800"
>
<topic>Building KDE</topic>
<topic>Performance</topic>
<mention>Waldo Bastian</mention>

<p>Members of the gcc project are working on making runtime linkage more efficient,
which is the largest contributor to slow KDE application start up times at the moment.
While they work on these solutions other temporary fixes are appearing.
One such improvement comes curtesy of Leon Bottou who has released an early version
of his objprelink program. When use to process object files prior to final linking, Leon's
program can significantly reduce the time it takes to start up an application that relies on
external libraries. The first version Leon released had some issues, including only supporting the i386 architecture. This week
Leon released a new version saying:</p>

 <quote who="Leon Bottou">
<p>My machine is now running objprelinked qt, kdelibs and kdebase.
On kdelibs, the number of R_386_32 went from 54216 to 15085.
It feels noticeable faster. But I would like much faster than that :-).
Some day I should try again with lazy binding.</p>

<p>Attached is a new version of objprelink with a larger message buffer
(some symbols have more than 256 chars) and a beginning of
multi-architecture support. I hope some people will be interested
enough to write the stubs for their preferred cpus.</p>

<p>I am just proposing a simple solution that can work now.
If you build QT and KDE with objprelink, you should feel a
speedup regardless of the other components of your system.
It works now.</p>
 </quote>

<p>Waldo Bastian even suggested integrating this improvement into the 2.2
build system. Andreas Pour objected to this saying, <quote who="Andreas Pour">
While I think too this is a great innovation, is it really appropriate
to release this w/out a beta test in a stable release?  Who knows what
different combinations of binutils/linkers/loaders/compilers will do.
It might cause rather severe problems, making KDE unusable.  Some of
these problems could be avoided if there was a &quot;configure&quot; switch
labelled "experimental" to enable this, and then the distros can at
least verify that it works on their particular systems when building the
packages.</quote> While it may not make it into 2.2, there is hope
that this will be seen 2.2.1 and/or later until actual prelinking is available
in commonly used compilers. This is a very important advancement in general
as Roberto Teixeira noted, <quote who="Roberto Teixeira">
IMHO, this is just a too big improvement to be left aside. The speed gain is
considerable and we'd be reducing, if not killing, one of the most common
(_the_ most common?) complains about KDE: speed.
OTOH, I really think we should not let it be included as default, so I am
really in favor of using a configure option, disabled by default.</quote></p>
</section>


<section
  title="Objections to Exceptions"
  subject="reason behind fno-exceptions?"
  archive="http://lists.kde.org/?l=kde-devel&amp;m=99651260609781&amp;w=2"
  posts="15"
  startdate="30 Jul 2001 09:08:36 -0800"
  enddate="31 Jul 2001 01:37:51 -0800"
>
<topic>Building KDE</topic>
<p>For those that have watched KDE compile, you will have noticed the -fno-exceptions
flag in the compile command and Makefiles. Anatoli Gorchetchnikov asked about this
saying, <quote who="Anatoli Gorchetchnikov">What is it? I'd love to catch couple of exceptions my core library
(non-kde/qt) throws and let user handle it through interface of my
kde app. What problems can it cause?</quote></p>

<p>This caused a small argument over whether exceptions in C++ were a good thing
or a bad thing. Allan Sandfeld Jensen noted some of the caveats saying, <quote who="Allan Sandfeld Jensen">
The overhead they talk about, is among other
things also a lot of code, not dealing with what you wrote, but just dealing
with exceptions. Try make a call to new() with and with-out exceptions, in
the standard it _might_ cast an exception and gcc inserts code to deal with
this. If you dont expect this and is programming low-level binaries or
drivers, this is a serious hazard. Whats even more, since how exceptions are
implemented are not general, you cant count on any specific behavior.
A library shouldnt cast exceptions since this breaks non-exception handling
user code, or insert various handlings per default. </quote></p>

<p>Waldo Bastian also put in some sage advice with regard to exceptions and KDE
saying, <quote who="Waldo Bastian">


Exception handling causes huge overhead, it caused an overhead of about 1Mb /
process for KDE applications when I last measured it (about a year ago). I
don't think this has changed much with gcc 3.0.
You can use exceptions in your own code though, as long as you don't throw
any exceptions through Qt or KDE code. (Watch out for signals/slots)
Your application will crash or abort when you attempt to throw a signal
through Qt or KDE code (when it is compiled with -fno-exceptions)</quote>
You have been warned.</p>
</section>

</kc>
