1.2. Why Develop with KDE?

I'll give you three good reasons:

  • It's free (for free software development).

  • It works very well.

  • Your application can build on a collection of powerful, developer-friendly widgets that range in function from a simple text label to a full-fledged Java- and JavaScript-enabled HTML 4.0-compliant Web browser, component (or embedding) routines, and Internet access classes that make your application network transparent.

Because KDE is a popular free software project, you'll find it distributed with most Linux distributions, including Red Hat, SuSE, and Corel. You can always download the latest stable alpha and beta versions for free and download the up-to-the-minute (roughly) development code so that you can keep your application up-to-date and take advantage of new features as they become available.

KDE works so well because the open development model encourages submission of bug reports and patches and attracts skilled developers. KDE 1.1 was declared Innovation of the Year at CeBIT '99, the world's largest computer show and, in the same year, won LinuxWorld's Editor's Choice award in the Desktop Environment category.

The KDE libraries offer services that help developers maintain the level of sophistication expected of modern desktop applications. Classes offer network access via HTTP, FTP, and other protocols, drag-and-drop between applications, interprocess communication, and internationalization and localization functions.

The large collection of widgets in the KDE and Qt libraries, implemented in C++ classes, are well designed and functional. Because they are implemented in C++ classes, they can be subclassed to modify or extend their behavior. The widgets provide most of the KDE look and feel so that you can spend more time working on the functions that make your application unique. The Qt signal/slot mechanism (described in Chapter 3, "The Qt Toolkit"), which is a convenient alternative to C-style callback functions, allows you to quickly "wire together" widgets to create a GUI. The libraries also include utility classes to handle strings, linked lists, and other data structures, sockets programming, interprocess communication, as well as complex- function widgets, such as a desktopwide address book and a Web browser.

The KDE libraries also include a framework for application embedding (called KParts) that allows you to easily add the functionality of an entire application to your program. (This is similar in concept to Netscape Navigator plugins.) The KDE office suite, KOffice, uses the concept of application embedding to create documents that can contain text, graphics, spreadsheets, and other elements that all display on the same page and can be edited in place.

Finally, KDE provides the means for creating applications that are "network transparent". This means that users can open and save files from and to remote and local locations using the familiar techniques (i.e., selecting Open or Save from the File menu).

The network transparency theme runs through all of KDE, in fact. The "file manager" (this term doesn't do the application justice!), Konqueror, is the perfect example: In its window you can browse and manipulate local files, FTP sites, and HTTP directory listings using the same, familiar, file/folder metaphor. Using the KDE libraries for you application will allow you to easily implement the following scenario for example: A user drags a file from a Konqueror view of a remote, personal directory being accessed via FTP to your application. He/she edits the file and then presses Ctrl+S (the save command) and the file is automatically transferred back to its original location via FTP.

The KDE classes are well documented and this documentation, along with many tutorials and HOWTOs, is available on the developers' Web site: http://developer.kde.org. You'll find information on new KDE technologies, GUI design instructions, and programming tutorials. Figure 1.1 shows the home page of this Web site.


Figure 1.1. The KDE Developer's Corner Web site is a great resource for developers.