Skip to content

Osnabrueck 2008

Tuesday, 5 February 2008  |  tstaerk

Here's the first blog in my life. KDE PIM meetings are for hackers like a bottle of water in a desert. Finally time to hack, hack, hack and only sporadic meetings. And those meetings about development topics. This meeting took place from friday 2008-02-01 till 2008-02-03. This time I remembered to take vacation for the friday. At 10:00 am, I departed from Alzey and arrived shortly after 14:00 in Osnabrück at Intevation who hosted this meeting (thanks!). Some guys were already there. I finally got to know Thomas who had shown me <a href=http://techbase.kde.org/index.php?title=Getting_Started/Set_up_KDE_4_for_development#KDevelop >how to use kdevelop for KDE 4. I used this day to get KDE compile on my notebook. We left the office at 1 am.
krep
On Saturday, I gave a presentation about my pet project, simplified debugging. I showed how you can increase your productivity by using a combination of add_trace and krep. My pain points are:

  • with grep, I filter away either too much or too less
  • changing the pattern for grep requires grep's restart
  • grep's restart requires the restart of the application whose output you are sending to grep.
This makes debugging hard.

You use add_trace to change your KDE source code so that every function outputs its name first when called: QString KarmStorage::saveCalendar() { kDebug(0) << "Entering function" << endl; Here, the kDebug-line has been added by add_trace. You compile again then and watch the output using krep. This way, you can almost create a call tree. And as soon as I manage to make debugging output as soon as you leave a function, you will actually be able. You would start e.g. ktimetracker 2>&1 | krep krep then allows you to shrink or expand your view of ktimetracker's output.
Windows debugging
After my presentation, Jaroslaw gave his presentation about debugging KDE on Windows. There you can use MS Visual C's ide and you have a similar functionality as krep. It was also impressive to see the call stack being displayed while debugging and the performance of the system.
KDE 4.1 discussion
Interesting discussion about our proceeding for KDE 4.1. Good meeting minutes on the mailing list.
Akonadi
Akonadi for insiders. Discussing about the state (that I do not know). I preferred finally improving the KDE code.
debugging output
I asked how you compile your KDE programs so that kDebug messages are not output. The correct answer is use
 cmake -DCMAKE_BUILD_TYPE=Release .

Dinner
at the italian
kmail
Discussion with Ingo about kmail bugs. If we manage to get the body structure (documented in some rfc), the body information, we might be able to close bug 80995.
key signing party
My kmail is now secured thanks to Ingo taking me into the web of trust by signing my gpg key. The key server even had my old key that I had signed by c't at CeBit 2001.
HTML editor
Mike recommends me to try QTextEdit, QTextBrowser and QTextDocument for an HTML editor.
David
Hacking session with David on krep. You should replace
 foo(QString bar)
by
 
 foo(const QString& bar)
whenever possible for the reasons: * const prevents you from accidentially changing bar * QString& is in contrast to QString a pass-by-reference, not a pass-by-value. You save the time of copying a QString.
 QString blah;
is by default equivalent to
 QString blah=QString();
for QString blah; uses the default constructor to construct the object (unless adviced otherwise). This is also valid in a header-file. This is valid for all non-trivial data types, for all data types that have a constructor. So, you still need to initialize an int like this:
 int i=0;
And, pay attention, the following will have a NON DEFINED value:
 QString* qs;
You need to initialize it:
 QString* qs=new QString();
or
 QString* qs=0;
Thinking complicated is the cool and the ugly part of C programming (C++ is a dialect of C).
We created a benchmark for krep: for i in $(seq 1 1 300); do echo $i; done | ./krep it took 17 seconds (in revision 770163), then we worsened it, then it took 10 seconds (in revision 770188), then 2 seconds (in revision 770205).
Deleting a pointer ? Best set it to 0 afterwards so you know it is useless.
We left the office shortly after 2am.
commitfilter
During the breakfast, we discussed about various things, e.g. the strangest bug reports and mails on mailing lists. There was a discussion that the term "spouse" (e.g. in an address book) is discriminating people who live in relations and cannot marry because e.g. they are gay and live in intolerant countries. So it was proposed to change "spouse" to "partner". I think, so far this is good and understandable. But soon, a guy came up demanding to support polygamy for tolerance's sake. Or, there was a guy stating the letter K would make people commit suicide and demanding from us to change our logo...
What I also learned during breakfast: Did you know that you can easily watch changes in KDE's code base by registering at http://commitfilter.kde.org ? This site will send you a mail when the svn branch (can also be trunk ;) that you select changes. Thanks Thomas for the tip.
kexi
Talked with Jaroslaw about using kexi as database backend for ktimetracker. Also akonadi could be used. I could start with my kexi experiences at http://websvn.kde.org/trunk/koffice/kexi/tests/newapi/. Writing this blog, I discovered, that even german Autobahnen (motorways) are subjects of ENGLISH wikipedia's articles, so, here is one of these important topics, including pictures.
kcal error messages
Discussion with Cornelius and the others about error message handling problems with kcal. As this involves adding of virtual functions, we will not be able to get the fix in before KDE 5. And then, we will have Akonadi.