You dont 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 products 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, OpenMotifs 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 todays 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
- availability in multiple languages, particularly English, Japanese, French, and German
- imbedded tools, such as icon creators and web browsers, to complement the basic functionality
- reverse engineering of code, an important feature that allows the IDE to effectively import existing projects
- access to the code, documentation, and project management details via the web
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.
- KDevelop is one of the forerunners of a new breed of Open Source projects. The development team is large, very active, well structured, coordinated, and helpful. It currently has no true project management component but caters fully to the remaining IDE feature set, and is appropriately stable. KDevelop is dependent on the KDE and GNOME desktops and may not display on other desktops. Its GUI builder supports construction of Qt and KDE widgets, which might be problematic for commercial projects.
- KDE Studio started primarily as a one-person effort with some help from the open source community. This single-vision approach worked in this particular case; the product is highly polished and well integrated. The GUI builder is oriented for Qt widgets and KDE Studio extensions. KDE Studio is available only for KDE2. KDE Studio is now maintained by theKompany.com.
- Code Crusader has been around for several years. In conjunction with Code Medic, it forms a solid IDE but unfortunately has no GUI builder.
- VDK Builder is an IDE worth investigating, since it has many capabilities. It uses the VDK widget set and also provides support for GTK+.
- Source-Navigator is an IDE that provides in-depth code browsing for several languages. Source-Navigator does not have a GUI builder, but coupled with an external GUI builder, it does provide an excellent developer tool.
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
- CVS http://www.cvshome.org
- GTK+ http://www.gtk.org
- Lesstif http://www.lesstif.org
- OpenMotif http://www.opengroup.org/openmotif
- Qt http://www.trolltech.com/products/qt
- The IDE Guide http://ide.sourceforge.net
Petr Sorfa is a member of SCOs Development System Groups, where he serves as SCOs 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.