prev
Issue 23
10th September 2006
by Danny Allen
next


This Week...
Work begins on Ruby language support in KDevelop 4. Work continues in the KReversi code rewrite. Kalzium gets functionality to visually show the country an element was discovered in. Automatic regression testing for Kate. Mimetype and metadata support for the XML Paper Specification format. Strigi can now use outside applications to index files outside its core scope, such as PDF files. KJots gets greatly improved find and replace functionality. Many improvements in supporting different archive formats in KArchiver.

Matt Rogers discusses the latest developments in KDevelop:
Development on KDevelop 4 is looking very promising at the moment. Hamish Rodda has done great work on the C++ parser, improving the speed, providing some nice custom highlighting that uses the parser, etc. Eventually, we hope to offer some refactoring features for C++ in addtion to navigation, code templates (eg. switch generation), integrated documentation. We have lots of ideas. :) Java and C# support are also being worked on and they'll get many of the same features as the C++ support as well.

We've also started integrating CMake and Autotools into KDevelop 4 for use as build systems. They should provide more and better features than their KDevelop 3 counterparts.

I'd also like to mention that the integrated Qt Designer support for KDevelop completely rocks. The trolls have done a marvelous job of providing a very useful framework for those wanting to embed designer in their own apps for use during development.

Also in the works, as part of Google's Summer of Code program are three very interesting projects. C# Support, Teamwork mode, and a generic refactoring API were all submitted as part of the Summer of Code program, and we've gotten some very promising results:
  • Jakob Petsovits is the student working on the C# support, and he is a parsing genius. He's done some really nice work with both the C# and the Java parsers and I'm sure the results will be outstanding.
  • David Nolden is the student working on the Teamwork mode for KDevelop and that's really coming along. Teamwork mode will feature some nice patch management and review, the ability to send and receive text messages, very similar to IM, and file collaboration has also been worked on.
  • Tom Stephenson is the student working on the generic refactoring framework. Sadly, due to the slightly undeveloped state of our code model, parser, and other things that will be needed for refactoring during the SoC period, Tom only has a few small refactorings to show for his SoC project, but it does highlight the many possibilities in store for refactoring support and I hope that Tom has time during his studies to continue to help out in that area.
KDevelop 4 - It's gonna be great and you're gonna love it! :)

Screenshots of KDevelop 4 during various stages of development (mostly showing off what I was working on at the time):



Please note that none of these are current, but show off some of the functionality KDevelop will get.

An important project noted above is the KDevelop Teamwork Summer Of Code effort. I talked to David Nolden, the developer behind this feature about his work:
When I first heard about Summer Of Code I thought about proposing a project called "Advanced Code Completion for KDevelop 3"(with full support for templates, comments, etc.), but when that didn't go down well with most of the KDevelop developers (since they were already focused on KDevelop 4), I just started implementing it. I spent a lot of time working on that until SOC started (and even quite some time since then), and you can see the result in the current KDevelop 3.4 SVN tree. I finished everything I planned and more.

Some of the features:
  • Intelligent resolution of types.
  • Support for templates like for example shared pointers.
  • Support for implicit template-instatiation
  • Nicer and more useful completion-list with items ordered in a useful way and indented by inheritance-depth, with popups that include comments and any other interesting information
  • Many improvements in the parser, for example all comments are extracted and used in any possible way, macros are dealt with correctly, Enums are handled in a more useful way, and much more
  • A powerful navigation-menu: Click any item within a function and see it's real type, a trace of all typedefs on the way to that type, information on all involved typedefs, classes, variables, functions, etc., and the same as a submenu for all involved template-parameters, argument-types, base-classes, etc.
  • Improved jump-to-menus and navigation-bar.
  • Highlighting of function-names in the navigation-bar and class-tree.
And countless other major improvements in code-completion and navigation.. see the feature list of the beta releases or the commit log to see all of them.

KDevelop 3 is doing well feature-wise, but currently lacks developers since the focus already is on KDevelop 4, but it'll take a long time until that is really usable, so I hereby encourage anyone interested to start using the SVN version of KDevelop 3.4 and hunt down a few bugs, to make sure that a stable version can be released soon.

Collaboration through the internet is fundamental to most open-source-software. Almost any open- and even closed-source-software might profit from better collaboration-possibilities. If you work for a project that has a collaboration-server, you can directly ask other developers working on the same project for very specific help, patches can be reviewed very quickly, and discussion can instantly take place within the documents themselves. File Collaboration may also be useful for discussion of new ideas, teaching, for friends less experienced in programming requesting help (Or am I the only one who is asked how to program something through ICQ again and again?), and simply because it's cool ;)

So I took the basic Idea for the Summer Of Code project "KDevelop Teamwork" from the Wiki where someone proposed it, and developed it using my own Ideas, trying to add some of the teamwork features I always missed in any IDE I ever used. :)

Generally it consists of four parts:
  • Client/Server Architecture
    I created a multi-threaded library for networking, including client/server- and user-management, and a standalone server not dependent on Qt which can be run on any webserver and administrated using the console.

  • File Collaboration
    An arbitrary count of developers can collaboratively edit a dynamic set of files, and the edited documents can be dynamically transformed (for example chosen changes made by exactly one user could be undone, which will allow single-user undo, redo, etc.)

  • Conversation
    All users connected to any of the connected servers, as well as the servers themselves (in the case they are not standalone) can be contacted by using instant messages, collaboration-requests, patch-requests, in-document messages, etc.

    The most interesting message for conversation is the in-document message: It can reference a position or piece of text within any document, and the receiver of the message automatically jumps to that document and highlights the referenced piece of text as the message is selected, and pops up a chat-window within the document itself at the found position, where other messages of the same thread may be selected and discussion can take place.

    Any answers written into the chat will automatically reference the currently selected text. Referencing is simply done by marking a piece of text before sending a message, and the reference-position is being found by a fuzzy algorithm I developed which tries to find the correct place even within totally different documents (and is pretty successful at doing so).

  • Patch Management
    Every user can manage a set of patches (or other file types) for each project. They can either be files or dynamic patches which are automatically retrieved from commands on request (for example "svn diff"). Patches can be easily shared directly through the developer-list, using different access-levels.

    A modified version of Kompare's diff3-library is used to get information from patches. Using that the patch-manager can automatically highlight all changes made by an applied patch within all documents, and allows you to easily browse through those positions so you can review the patch within the correct context and directly discuss about it using in-document messages.

    They can be applied/reverted to the local tree using single buttons, and for diff-files it is possible to automatically determine whether the patch is already applied or not. If problems arise within the patching process they can be dealt with using an embedded console in the patch-management-window.
It is important that all those features are well integrated: For example you can store the results of a file-collaboration-session as a patch into your local patches-list, and thereby share it with other developers and easily revert it at any time, and you can use in-document messages directly within the temporary file-collaboration files.

To store all the project-specific data (like patches), a ".teamwork" subfolder is created within the project directory.

I encountered many problems during development. Apart from one harddisk crash, the most annoying problem was the very unstable and (in the begginning) difficult to compile kdelibs/qt-copy/qdbus/kdesupport etc. combination, which again and again cost me days and hours just to get it working.

The most challenging part was the file-collaboration. Getting a simple form of collaborative editing to work was quite fast, but making the document-transformation work correctly in all test-cases really took some time, and I had to finish it after the deadline without stress (luckily I didn't mention anything like it in my application ;)). The trick was writing everything down and trying to solve it mathematically as I learnt at university, unfortunately I got that idea after days of unsuccessful hacking and trying - well... you live and learn :)

I was able to finish nearly everything I planned until the deadline, but unfortunately I missed the week I planned in my application for "debug, make it perfect", so that work is missing, and it shows :) Most of the work I did after the Summer Of Code ended was in other, more important parts (finishing the text-transformation algorithm, or fixing file-collaboration which stopped working after a kdelibs-update), but it is work I'll surely do. Then there's one other big problem, the executable-size when the executable is built with debug-information. During my work on this project I fell in love with templates and meta-programming, but I think the main reason is my use of boost serialization, I'll still have to work on that. Then of course i'll need some nice icons. :)

Here are some screenshots showing the results of my work:

 


Now that the Summer Of Code has concluded, the first thing I will do is working intensively for the institute of my university that paid me the whole year, and that I neglected since March because of my work for KDevelop 3 Code Completion and then the Summer Of Code. Of course, I won't forget KDevelop and KDE in general, since I like the Open-Source Idea a lot. I started working on Open-Source Software before I started the Summer Of Code, and I won't stop it now that it's over :) I'll keep maintaining the teamwork-module (and of course finish it), I'll keep caring about KDevelop, and maybe I'll start a project to make KDE more Tablet PC friendly if I can find the time for it.

Max Howell announces the long-awaited release of Filelight 1.0:
It started some months ago. I'd awake at night with images of concentric segmented rings flashing around my mind, calling to me, commanding me, jeering me, begging me to finish what I'd started.

I set to work. I created crop circles. I made elaborate handwoven murals with cotton and twine. I sailed the pacific in ever-increasing circles.

The dreams did not cease, instead they became ever more disparate and galling.

Then I realised they were actually asking me to finish Filelight. So I did. I hope you like it, my uncle did.

http://www.methylblue.com/filelight/

"Filelight 1.0 - it's a bit of alright." - Uncle Rodney


Statistics
Commits: 2437 by 216 developers, 5572 lines modified, 1844 new files.
Open Bugs: 12890
Open Wishes: 11539
Bugs Opened: 273 in the last 7 days.
Bugs Closed: 340 in the last 7 days.

Commit Summary
Module Commits
/trunk/KDE
453
/trunk/extragear
374
/trunk/www
336
/branches/stable
272
/trunk/playground
233
/branches/work
168
/trunk/l10n
150
/branches/KDE
117
/trunk/koffice
100
/branches/koffice
79
Lines Developer Commits
175
Dirk Mueller
80
159
Gilles Caulier
75
154
Thomas Nagy
65
157
Laurent Montel
63
88
Andras Mantia
59
129
David Faure
55
142
Stephan Kulow
53
110
Sebastian Trueg
42
202
Hamish Rodda
40
100
Thomas Zander
37

Internationalisation (i18n) Status
Language Percentage Complete
Portuguese
99.98%
Swedish
99.28%
Danish
99.12%
Spanish
96.94%
Dutch
96.82%
Estonian
94.03%
French
93.12%
Italian
93.42%
Greek
93.35%
German
92.27%

Bug Killers and Buzz
Bug Killer Number Of Bugs Closed
Sebastian Trueg
40
Philip Rodrigues
30
Andras Mantia
30
Alexandre Pereira de Oliveira
29
Frank Osterfeld
29
Tommi Tervo
29
Seb Ruiz
26
Andreas Kling
23
Stefan Monov
11
Gilles Caulier
10

Program Buzz
Amarok
  3461
Kontact
  734
Kopete
  703
KDevelop
  693
Kate
  691
KMail
  689
SuperKaramba
  687
K3B
  686
Kicker
  559
aKregator
  460


Person Buzz
David Faure
  310
Waldo Bastian
  281
Tom Chance
  255
George Staikos
  252
Boudewijn Rempt
  243
Kurt Pfeifle
  235
Scott Wheeler
  233
Stephan Kulow
  230
Aaron Seigo
  222
Jonathan Riddell
  218
Commit Countries

Commit Demographics
Sex
96.0 %       Male
1.28 %       (unknown)
0.495 %       Female
Motivation
42.5 %       Volunteer
37.7 %       (unknown)
17.5 %       Commercial
 
Ages
70.1 %       (unknown)
14.4 %       25 to 34
8.57 %       18 to 24
4.41 %       35 to 44
0.247 %       45 to 54
0.049 %       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
Educational
Albert Astals Cid committed changes in /trunk/KDE/kdeedu/kgeography/data:
Fix bug 133499, serbia and montenegro are not together since summer 2006

Will ask the translators if it is ok to backport for KDE 3.5.5
Bug 133499: mistake in country data for serbia/europe
Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 Revision 580513
View Visual Changes (to 5 files)

Graphics
Jesper Pedersen committed changes in /trunk/extragear/graphics/kphotoalbum:
Ensure every action's keybinding in the viewer is configurable
(Thanks to Kimball Robinson for bringing it to my attention that they were not)
Diffs: 1, 2, 3, 4 Revision 582451

</