KDevelop Talk at FOSDEM 2005 by Harald Fernengel


These are my rough notes only, corrections welcome.

KDevelop started as any other free software project because some developer lacked the program he wanted so decided to integrate all the tools he used into an IDE. It was re-written for KDevelop 3 to be completely plugin base so you can modify or add most of the tools without having to work on the main KDevelop. At the time this was very novel but with Eclipse the idea is now more common.

KDevelop Platform is a platform for making an IDE. The core application is about 5000 lines of code, everything is now in plugins. We have a very nice set of interfaces for the plugins.

Long list of supported languages. C++ is best supported. Ruby support is very good now thanks to Richard Dale. PHP has intelligent code completion.

Supports various build systems including GNU's automake, qmake and for custom projects just make. They try to be as non-intrusive as possible and it doesn't go editing your Makefile.am out from under you.

Quick code navigation is available in all languages for files, classes and methods. E.g. to find the destructor of class X takes a second with these. There's also the class tree view to find your way around the code, this knows nothing of the language but gets it's data from the language plugin.

KDevelop has a complete C/C++ parser from Roberto. It is very fast and allows for code completion.

There is a problem reporter which finds problem in your code for example if you are calling a method with the wrong number of arguments.

A code snippit plugin lets you quickly add common pieces of code for example a 'for' loop over a container, it will ask you which container and it inserts the code.

There are code wizards for helping in writing code. These try to be as unintrusive as possible. Getter/setter creation, new class and making a member based on its declaration are all supported.

Integrated debugger is supported by Ada, C/C++, Pascal and Ruby. Lets you set breakpoints and get backtraces etc. Uses external programmes such as gdb.

GUI designer has been integrated now as an embedded component for C++ and Ruby. Automated creation of subclasses and slot implementation is done.

Memory leak checking is done with Valgrind and profiling with KCachegrind, unlike similar tools these don't require you to recompile your program. Other features such as global search and replace, regular expression tester, persistant project-wide code bookmarks, source formatter, API documentation generator and IDE scripting engine using DCOP are available in all languages. People are scared of global search and replace incase it breaks something so it gives you a preview. DCOP allows you to script KDevelop with any language including bash, e.g. to start a compile or do a search&replace.

Version control systems are integrated: CVS, Subversion, Perforce and Clearcase. KDevelop can create repositories for you.

It has an integrated developer documentation viewer for KDE, Qt and Gnome libraries. Can even find documentation on the web if you don't have it installed. This is now a standalone application called KDevelopAssistant if you don't want to use KDevelop.

KDevelop has no editor, probably the only IDE on the planet to not ship with an editor. The KDE editor plugin system is used. Kate is the default but Yzis, a new vi clone, can also be integrated, it even works with code completion. He usually get questions about emacs now, people have tried to integrate this but failed because it is too huge and not designed to be integrated with anything other than itself (they have tried using XEmbed but this causes issues with mouse and keyboard focus).

KDevelop 4 is in planning, will be based on KDE 4 and Qt4. They will try to make it multiplatform so there will be a native MacOSX version, the source for this is all there but there's no packages yet. Qt 4 will be GPL on windows so likely KDevelop 4 will turn up on windows too. Code refactoring is often requested and they are considering this for KDevelop 4, however it is very hard to get this reliable.

"Developers wanted" in big red text. Please join us on IRC and mailing list. "Users Wanted" in big red text, all KDevelop users are developers so there is an ulterior motive to this.

Any questions?

Where does the syntax highlighting in the editor come from, is that KDevelop? No it's part of the editor. There are some interfaces to say "highlight this line" or "this is a bookmark" etc but otherwise display is up to the editor being used.

Ben Lamb asks about highlighting bits of lines such as particular variables. This is not possible but good idea, report to bugs.kde.org.

When port to Qt4? Not for say one year or more, KDELibs need to be ported first and become reliable.

Can plugins be written in any language? That depends on kdebindings. Richard Dale points out that Ruby can do this.

Will there be a UML tool integrated with it? There is Umbrello but there are communication difficulties with their developers because they think the IDE should be integrated with the UML tool and we think it should be the other way around. Also not many KDE developers use UML. However this is on the wishlist.

Demonstration of KDevelop. Every language has a "Hello World" template you can use this to start a new project. He demonstrates the integrated GUI designer, it's just another tab in KDevelop like the text editor. He shows quick navigation between header and implement file. Toolbar always shows you where you are in the code with a drop down that lets you select previously visited parts of the code. He shows the documentation viewer, tree gives various libraries and docs open as another tab with full search ability. He shows the code completion which contains the whole Qt and KDE libraries, a tooltip then gives you the arguments needed for the method.