Linux


Open Source IDEs for Linux/Unix

Petr Sorfa

You don’t have to give up a graphical environment to develop software under Linux. There are as many IDEs freely available on the Internet as there are definitions of the word “free.”


Introduction

Traditionally, programmers developing software for Unix operating systems have either been limited to using a favorite editor, such as emacs or vi, or have had to use an expensive commercial IDE (Integrated Development Environment). However, with the proliferation of Linux and the Open Source concept, several open source IDEs have emerged to achieve the maturity that allows quick, painless, and cheap development on Unix operating systems.

In this article, I describe some of the most popular IDEs. I deal specifically with IDEs that are available as Open Source, support C or C++, and are available for Unix. Trial, commercial, or binary-only versions are not considered. However, this article does include open source products that offer commercial support or upgrades as an option.

What Is an Open Source IDE?

The term "Open Source" [1] indicates that the release of a product’s source code is available to the public. This enables any user to compile the source to build an open source product and possibly make code modifications. A key issue with Open Source is licensing. There are several licensing schemes (GPL, LGPL, BSD, QPL, and many more), each with their own particular quirks. On occasion, an open source licensing scheme will prevent the use of a program to generate a product that could be sold and distributed commercially — unless the vendor of the product pays a fee to the creator(s) of the open source program. This problem can affect open source IDEs: the program developed via such an IDE may rely on components provided with the IDE, such as widget sets, that effectively associate a cost with the commercial release of the developed product. Consequently, using open source IDEs does not necessarily imply the creation of "free" programs.

What Qualifies As a "Real" IDE?

There are no standards that define the components of an IDE. However, commercial products, particularly those for non-Unix platforms, have effectively determined the expected feature set of an IDE. The following IDE feature list reflects my personal opinion of what makes up an IDE.

Source Editing

A core feature provided by an IDE is the ability to edit the program source. An editor should provide color schemes for recognizing the underlying program code with appropriate syntax highlighting for the relevant programming language. On Unix platforms, the IDE should cater to power users by enabling them to select a default editor, such as vi or emacs.

Compiling and Debugging

An IDE should enable users to compile source code or interpret generated code. In addition, for an IDE to be useful in the long term, it must eventually support more than one language, as well as different compilers. Open source IDEs tend to only support the gcc/g++ compilers due to their wide use by the Open Source community.

Since programs under development always contain bugs, an integrated debugger is a necessary component for an IDE. An integrated debugger enables users to interact with the source code, examine variables and registers, trace the stack, and set break points in the program.

Browsers

Browsers allow quick navigation of code, documentation, and other files. In general, a browser provides navigation views of functions, classes, variables, source files, and interface components.

Widget Sets

Unix graphics generally rely on X11 graphic and Motif libraries. These complex programming APIs are represented by their graphical building blocks, the widget set. Motif was the commercial standard until the Motif API became outdated. Recently OpenMotif was released for open source operating systems, such as Linux and FreeBSD. Unfortunately, OpenMotif’s current licensing terms do not adhere to the official open source definition [1]. There is also an open source version available called Lesstif. However, neither implementation of the Motif API has reached the basic functionality expected by users of non-Unix operating systems.

As a result, several open source widget sets have emerged over the last few years. Two widget sets, GTK+ and Qt, having gained the most popularity and acceptance by the open source and commercial communities.

All these open source widget sets pose a problem of diversity that is not experienced on non-Unix platforms. In addition, the license agreements of certain widget sets are free only to a point. For instance, the Qt widget set is free for non-commercial product development only.

GUI (Graphical User Interface) Builders

A GUI builder is a facility that automates the production of boilerplate GUI code. The GUI builder allows users to build graphical front ends for their programs. Once the programmer specifies the GUI components to be used, the GUI builder generates code — either in the form of a script specific to the widget set, or as source code. The generated source code must be flexible to permit interface changes throughout program development. GUI builders are essential for the creation of user applications, since today’s users desire a graphical interface.

Source Code Configuration

A source code configuration facility allows developers to retain a history of the changes they have made to the source code. This feature is important for projects that have multiple branches and/or several programmers. There are several open source code versioning systems, CVS being the most popular.

Application Configuration and Distribution

Application configuration is important since users require applications to compile and execute under various operating systems. The standard tools for configuring applications are the autoconf and automake utilities. These tools allow the user to automatically configure the necessary build environment to cater to the differences between operating systems, libraries, and other build environment dependencies. The IDE should automate the creation of these configuration files. These tools also allow the creation of source code distributions.

Documentation

Although documentation has been overlooked in the past, developers should distribute documentation for the source and final product when they distribute an application. Product documentation usually consists of man pages, HTML pages, tutorials, and user guides. As the IDE parses source code, it can generate source code documentation from the programming comments. (To enable this feature, the comments may need to adhere to a simple standard format.) The IDE itself should be able to handle multiple language versions of these documents, although it is acceptable to provide translations of only the product documentation.

Project Management

Project management deals with determining project structure, assigning and accepting tasks, tracking bugs and milestones, and producing progress and development reports. Project management is possibly one of the weakest areas in open source IDEs, which currently provide only minimal support.

Miscellaneous Desirable Features

The Open Source IDEs

The Open Source community has been working on several different IDEs, which range from simple one-person projects to large coordinated projects. The reality of open source IDEs often falls short of the ideal. Many products are incomplete and poorly maintained. In addition, occasionally an open source product stops being open source — the authors release the next and subsequent versions as commercial products. This in effect blackmails the current users to purchase the products. The users usually react by rejecting the product and denouncing the author(s). (The Open Source community is very vocal.)

The following is a brief synopsis of some of the open source IDEs. The full list appears in Tables 1 and 2. URLs for downloading the IDEs are listed in the sidebar, “IDE Internet Sites.”

For projects that do not need a GUI builder and require only a simple IDE, it is worthwhile considering the other IDEs listed in Tables 1 and 2. To my knowledge, there are no Open Source IDEs that provide a GUI builder for Motif. Fortunately, VDX (View Designer X) is a Motif GUI builder with some IDE capabilities which may provide a satisfactory solution. Sadly, the project seems to have become defunct, but it may be possible to obtain the source code somewhere on the Internet.

The Biz — Usage Issues & Concerns

When looking for an IDE, developers expect quality, stability, and a strong feature list. Going along with this, developers naturally want to use IDEs that are well supported and not likely to be abandoned in the near future. Several of the IDEs, such as KDevelop and KDE Studio, pose little concern with respect to available support, since they are in active development, but this cannot be guaranteed with every IDE.

Adequate support and the long term future of an IDE are always a concern, particularly when only a few individuals develop or maintain a product. These products tend to stop evolving once the major developers divert their resources elsewhere. Even large projects that involve many developers may lose active support once the developers with intimate knowledge of the internals of the product are no longer involved. Consequently, these developers’ replacements, if any, end up providing maintenance but no major product feature movement. However, there are some companies, such as theKompany.com (KDE Studio) and RedHat (Source-Navigator), that do provide a level of official support.

Another concern for developers of commercial products is hidden costs associated with the code generated by an open source IDE. These costs arise from associated libraries and widget sets, such as the Qt widget set, which may require a licensing fee for commercial products. However, the costs associated with these licensing fees tend to be far less than those of commercial IDEs.

Summary of Features

Tables 1 and 2 list the available open source IDEs with their respective features. This product listing is by no means complete, but gives a good indication of the more popular open source IDEs. Note that this information is subject to change, since most of these products are currently in development. The license column gives a general indication of the licensing agreement, but users should carefully examine the license shipped with the product for more details.

Conclusion

Commercial product development using open source IDEs may be subject to licensing fees, but overall, this cost is substantially less than purchasing commercial IDEs. KDevelop is exemplary as an all-around open source IDE and is suitable for both commercial and Open Source development, although several products are almost as good, particularly KDE Studio, VDK Builder, Source-Navigator, and Code Crusader/Medic.

If licensing costs are an issue, VDK Builder provides a solution based on GTK+ and the VDK widget set, which has a GPL license. VDX is the only product that supports a GUI builder for Motif. KDevelop and KDE Studio use the Qt Widget set, while Code Crusader/Medic are dependent on the JX Application Framework, and Epingle produces code for GTK+ and GNOME applications.

Although there are minor concerns, it is clear that Unix open source IDEs have reached a maturity that allows developers to use them effectively in the development cycle of a product.

Reference

[1] For a definition of Open Source, see http://www.opensource.org/osd.html.

Other Links of Interest

Petr Sorfa is a member of SCO’s Development System Groups, where he serves as SCO’s alternate member of the ANSI C++ Committee. He has a B.Sc. from the University of Cape Town and a B.Sc with honors from Rhodes University. He also maintains the cscope and Sar3D Open Source projects. His interests include open source projects, computer graphics, development systems, and sequential art.