Linux Development Tools

PDF version of this report
You must have Adobe Acrobat reader to view, save, or print PDF files. The reader
is available for free

Development Tools

by Lynn Greiner

Docid: 00018396

Publication Date: 1804

Report Type: MARKET


With the popularity of Linux, the demand keeps expanding for more sophisticated tools
to use in application development. A wide variety of software tools
are available to a Linux developer, ranging from C or C++ programming to advanced
Integrated Development Environments (IDEs). There are many open-source choices
for Linux development in addition to commercial tools. This report looks at
a variety of available tools, the market leaders,
and some strategic planning implications.

Report Contents:

Executive Summary

[return to top of this report]

With Linux’s move into the mainstream came the need for
application development to accommodate the increasing requirements of

Related Faulkner Reports
Linux-Based Application Development

Consequently, a significant number of development tools have emerged to serve the needs of
developers. Many are free; a very few are commercial, or released by commercial software vendors.
Literally dozens of languages, from the familiar C and C++ to obscure ones like Haskell and
Modula-2, are available for download from the Internet, either for free or at a modest price.
This provides significant scope for developers choosing the appropriate tool for a project.

As strong as these development tools are, there are
still some weak areas, particularly in the realm
of integrated development environments, or IDEs. This situation has led to opportunities for commercial
software vendors to offer complete IDEs and as well as support for porting legacy applications to Linux.

Market Dynamics

[return to top of this report]

The Linux operating system is the ongoing product of years of volunteer
efforts to build an environment completely from free software. Not surprisingly,
Linux is the most popular platform for both developing and using free and open
source software today. As a result, it was slow to attract commercial software offerings. The cornerstone of a Linux development project is a
solid foundation of free and open source software development tools. Linux, by its very nature as
a community-based project, has helped to spur the creation and speed the adoption of these

Many of the original development tools available for Linux were geared toward UNIX programmers,
people who historically tend to prefer command-line interaction to visual integrated development
environments. This presented an opportunity to vendors who wished to introduce modern integrated
visual development environments to Linux. Such environments are positioned to aid the programmers
and organizations that find themselves more comfortable and more productive with Windows and MacOS
development environments. These commercial environments, now available for Linux, are also
intended to aid in the development of cross-platform software that can be used natively on Linux,
commercial versions of UNIX, and Windows. Microsoft’s
adoption of Linux, and the OS’s inclusion in its development environment, has
broadened the audience for Linux development.

The power of rich IDEs is not lost on the open source
community. A growing number of visual development environments are now available as open source
software. Some of these environments are pure open source software. Others are basic versions of
commercial development environments. One project, Eclipse, is an open platform for tool
integration built by an open community of tool providers. The Eclipse consortium includes many
market leading IT vendors like IBM, which initiated the project.

Market Leaders

[return to top of this report]

The market for Linux development tools is split into two major segments: tools produced by the
free software community and tools produced by commercial software vendors.

Open Source Tools

Tools created by the free software community can be split further into two general categories:
those that are specifically free software, and those which are open source. Free software tools
are those packages licensed under the GNU General Public License (GPL), and guarantee source code
access to all current and future users of a software package. One crucial aspect of free software
is that it is associative; that any program which incorporates source code licensed under the
GPL must itself be licensed under the GPL, thus becoming free software. Here, the term “free”
refers to the rights of the end user, not the cost of the software.

Open source software is similar to free software, but does not carry the requirement to
propagate GPL or any other software license to derivative works. Open source software is
published under a variety of licenses that enable the end-user to receive, inspect, and modify the
underlying source code for any open source product. Generally, open source software is available
free of charge, but may contain restrictions on certain types of usage, particularly commercial
usage. Sun, for example, released its MySQL database engine as free software (using the
GPL license) for most users, but required a token licensing fee for commercial applications that
need to modify or redistribute the MySQL platform, or who need
commercial-grade maintenance and support. Oracle is so far continuing to develop and support MySQL
as an autonomous entity, offering both commercial products and the free MySQL
Community Server.

Commercial software vendors, on the other hand, use conventional software licenses and
typically do not make the source code of their products available to users. Due to the abundance
of free software tools, the expectation has been set with many Linux users that software should
be available free of charge. As a result, even many commercial development tools for Linux are
available without cost in some form, typically with limited features or usage restrictions.

Interestingly, free software and open source development tools can be used to produce free,
open source, or proprietary software without restriction, while commercial tools can be used to
create free software only.

Compilers. The abundance and quality of free and open source development tools allows
them to dominate the market, leaving little room for commercial software vendors to compete. This
is particularly true with basic development tools, such as C and C++ compilers. Here, the Free
Software Foundation’s compiler, gcc, is not only the standard C and C++ compiler for Linux
development, it is also one of the most frequently used compilers for other platforms, especially
for commercial versions of UNIX. In general, commercial compilers are rarely used for Linux
application development.

The gcc compiler suite is also one of the most standards compliant C and C++ compilers in use
today. In fact, gcc 3.x was the first compiler to support the most recent ANSI C++ specification,
offering support for new features long before many commercial C++ compilers. While gcc started out
as a C compiler, it has been extended over the years to support more compiled languages over time.
In addition to C, gcc now supports C++ as well as Objective-C, Ada, Go, and Fortran. The gcc
collection included a Java-to-binary compiler called gcj, which is now merged
with GNU Classpath.

Compilers are generally incomplete as development tools without source level debuggers. Here,
the companion debugger for gcc is gdb, also made available by the Free Software Foundation. gdb is
available separately, and supports all languages that gcc supports, as well as Assembly, C, D, OpenCL, Modula-2, Pascal, and Rust.
The gdb debugger also
supports many advanced features, such as watch variables, breakpoints, kernel debugging, out of
process debugging, and debugging remote processes on separate machines.

It is important to remember that gcc is simply a compiler, not a complete graphical development
environment. Nor is gcc directly integrated into the gdb debugger. Similarly, although gdb is a
full-featured debugger, it is not a fully visual debugger. Most long-time UNIX and Linux
programmers do not find any problems with this tool chain, and in fact prefer the light coupling
of tools this situation provides.

Over the years, commercial development tools have demonstrated the benefit of visual interfaces
to source-level debuggers. As a result, free software tools such as the Data Display Debugger
(ddd), a graphical front end for command line debuggers like gdb, have evolved to fill the need
for graphical debuggers. ddd is also known for its ability to display
data structures in graphical form.

Integrated Development Environments (IDEs). Typically, Linux and UNIX developers prefer to
create software with their favorite text editing environment, and invoke tools such as gcc and gdb
as necessary. Advantages to this approach include allowing every developer to work at peak
efficiency using their tools of choice, rather than forcing them to use rudimentary text editing
facilities within an integrated development environment. Thus, text editors, such as emacs, and
interactive shells are the integrated development environment of choice for UNIX and Linux
developers. This configuration also allows low-level tools like gcc and gdb to be reintegrated
into much larger tools. One popular free software text editor, emacs, offers support for
integrating both gcc and gdb into its highly customizable text editing environment.

Even without visual development tools, Linux has become a popular platform
for software development. This is likely due to the fact that many software
development projects today involve Web-based applications, n-tier applications,
and other types of applications that are not primarily graphical desktop
applications. Nevertheless, desktop environments for Linux are always improving,
and the demand for fully integrated visual development environments
is increasing. One
such open source offering is the KDevelop IDE. Version 3 supports development in
15 languages,
including C and C++, with substantial support for developing graphical applications for the KDE
environment, while version 4’s language support is more limited, focusing on
C++, PHP, and Python. KDevelop 5 adds Javascript/QML. KDevDesigner integration enables GUI design from within
KDevelop. Other open source IDEs include Eclipse,
and Anjuta, a free IDE for C and C++ whose GUI can be customized for
each project if the developer so chooses.

Eclipse is particularly interesting project. While open source projects like KDevelop are focused on simplifying C and C++ development for the KDE environment, Eclipse is a
much more general purpose tool. Eclipse is best described as an IDE platform rather than a single
IDE. Its primary focus is to create a cross-platform open source IDE that can
be reused and extended by other companies and open source projects. With Eclipse, both the IDE and
the architecture create Java-based extensions to configure Eclipse to be used for other languages
and new kinds of development, such as Web services or data base development.
The Eclipse Project now has over 300 open source projects in areas
ranging from enterprise development to application lifecycle
management and service-oriented architecture (SOA).

ActiveState, known for its commercial IDE, initiated the Open
Komodo Project, an initiative to create an open source platform for
building development environments. It includes elements of KEdit, a
free, multi-language editor for dynamic languages that is based on the
Komodo IDE. It now resides on BlackDuck Open Hub; the URL
redirects to ActiveState’s commercial Komodo IDE site. The
free community edition supports Perl, Python, and TCL, but comes with no

The Mono Project, an open development initiative sponsored by Microsoft after its acquisition of the previous sponsor
, Xamarin, is an effort to develop
an open source, UNIX, Mac OS X, Linux and Solaris version of Microsoft’s .NET development platform;
it has now available as a Visual Studio plugin. The Mono Project looks to
enable developers to build and deploy cross-platform .NET Applications, and implements a
series of technologies developed by Microsoft (the Common Language
Infrastructure – CLI – and C#) that have now been accepted as ISO
standards. It can run binaries produced by Microsoft’s Visual Studio. The Mono Project has also seen hefty interest
in developing C#-based components, libraries, and frameworks. Its MonoDevelop is a free GNOME IDE primarily designed for C# and other
.NET languages. One of the notable components of the
Mono Project is its Mono Documentation Browser (monodoc), a Gtk# program that contains the full
documentation from the ECMA standard and permits Wiki-style documentation editing.
Its latest release, version 5.10, integrates
much of the code from Microsoft's open sourced .NET Framework source code into Mono.
It is now available for MacOS, Linux (Ubuntu, Debian, Raspbian, CentOS, and Fedora), Windows 7 and higher, and Docker

Figure 1 is a screenshot of the Mono Documentation browser.

Figure 1. Mono Documentation

Figure 1. Mono Documentation Browser

Source: Mono Project

Another popular text editor is Vim, based on the Unix Vi editor, which includes a series of tools for editing HTML and other
languages for Web development. Vim supports syntax highlighting for HTML, PHP, Python, Perl, CSS,
and a series of other languages, while using syntax files for each markup or programming language.
Vim also supports a developer’s ability to edit files on remote machines. Vim can edit files over
FTP, Secure FTP (SFTP), SSH (scp), rsync, and other protocols. Vim, however, "is a tool, the
use of which must be learned." Vim is charityware; users are asked to donate to help children in Uganda through
the International Child Care Fund.

Rapid Development Tools. Rapid Application Development tools on Linux and UNIX have
evolved to meet different needs than similar tools on platforms such as Windows. Here, quick
development of write-once-run-anywhere command line programs are currently more important than
desktop applications. As a result, a series of dynamic programming languages have been developed
to solve the need for rapid development of cross-platform software. While many of these languages
started out as tools used mainly for UNIX and Linux development, all have evolved to support
programming on Windows as well.

These tools include programming languages such as Perl, Python, Ruby, and Ruby on Rails (a
full-stack framework for developing database-backed applications), as
well as the Glade IDE. Perl in particular has proven
to be a very successful tool for rapid development on Linux. Perl’s primary area of strength today
is in Web-based application development, but it is also quite powerful for developing other types
of applications such as middleware, n-tier, and server software. Key factors in Perl’s widespread
adoption include the ability to write cross-platform software, automatic memory management, a
world-wide network of open source software archives for components written in Perl, best-in-class
string processing, and a unique ability to automate common interactions between programs. However, due
to dissent within the Perl community, it is now being supplanted by languages such as Python and Ruby;
on the April 2018 Tiobe Index of language popularity, Perl has falled to numer 16, while Pythos on Ruby are
number 4 and 10 respectively.

Other dynamic languages share many of these qualities with Perl, but the library of open source
modules available through the Comprehensive Perl Archive Network (CPAN) is unique in the software
world. This globally distributed software archive contains thousands of reusable open source
components. Access to CPAN allows Perl programmers to build solutions much more quickly than is
possible in many other programming languages, bypassing many of the time-consuming portions of the
development cycle.

Commercial Development Tools

Commercial software vendors are increasingly promoting open system solutions and Linux
development environments. Some of the market leaders are profiled below.

Red Hat. Red Hat Enterprise Linux is a platform designed for commercial environments. It
is sold in two versions: Enterprise Linux, and OpenStack Platform,
plus variant Red Hat OpenShift.

ActiveState. ActiveState’s Komodo is an IDE for editing, debugging,
and testing dynamic languages, and is available for the Mac OS, Windows, and
Linux platforms. Komodo is offered in a commercial version, as well as a free
subset, Komodo Edit.
Komodo is also included in ActiveState’s Pro Studio for Perl and Tcl.
The company offers a free 21 day trial.

IBM. IBM supports a suite of Linux application development tools under the general
umbrella name developerWorks . The company was also a founder of the Eclipse Foundation.

Intel. Intel Parallel Studio XE is a suite for Linux or Windows
including C/C++ and Fortran compilers, performance and parallel libraries, error
checking, and performance and profiling tools. In addition,
System Studio offers C++ tools for embedded and mobile devices, on Windows
Android, and Linux, and Intel provides special software development kits for Computer vision, media, and OpenCL applicationc.

Jungo. Jungo Connectivity produces a device driver software development kit for PCI devices called
WinDriver for Linux. The development kit includes tools for performing hardware diagnostics,
driver debugging, and automatic driver code generation. WinDriver USB for Linux extends that
functionality to USB devices. Jungo Connectivity is part of the Cisco
Investments portfolio of companies.

[return to top of this report]

Linux is the beneficiary of more than 20 years of effort to create free software development
tools. These tools started with text editors and compilers, the most fundamental of development
tools. From there, more tools were created to support software configuration management, automated
software builds, reusable code libraries, and interactive command-line shells. These tools are
intentionally similar to the same development tools used to build the earliest versions of UNIX
thirty years ago, and are still common today on commercial versions of UNIX.

Meanwhile, software development on personal computers has been moving away
from this style of development for over fifteen years. Most software developed on PCs or for PCs tends to be done
with integrated development suites, comprising editors, compilers, debuggers, and integrated help.
As Linux has gained wider acceptance, more developers became increasingly dissatisfied with the older style
of software development and expected to find familiar development environments to create software
for Linux. This drove, and continues to drive, demand for IDEs.

Development tools in Windows have also pioneered new paradigms for rapid
application development and easier development of graphical applications.
Notable examples of this trend were Microsoft’s Visual Basic and Embarcadero’s
Delphi and C++ Builder. Free software tools have lagged behind these commercial
development tools. To address this market opportunity, vendors
have brought complete integrated development environments to Linux as well.

The drive toward rapid application development has not been limited to Windows. While the
commercial software vendors were producing rapid application development tools for Windows, the
free and open source communities have been producing a different class of tools for cross-platform
rapid application development on UNIX and Linux. These include a wide variety of dynamic
programming languages, such as Perl, Python, and Ruby, which simplify the development process and
allow programs to be run unchanged across multiple Linux, commercial UNIX, Windows, and other

Linux supports all major paradigms for software development. The complete Linux
operating environment is itself a classic example of a large software project implemented with
compiled languages, notably C and C++. The self-hosting nature of Linux demonstrates the
capability of basic free software tools to support development of software implemented with these
compiled languages. Linux is also a primary platform for the new wave of open source dynamic
languages such as Ruby on Rails which support more rapid development. Although the free software community has not yet
produced an abundance of rich, interactive development environments, many such environments are
available from commercial software vendors.

While proprietary environments, in particular, those from Microsoft, dominate the enterprise market,
Linux is a real presence at this point. The Eclipse Consortium
has demonstrated that open source IDEs
are viable today, and will only grow stronger. Governments, too, are joining the chorus of support
for open environments, citing not only lower costs but the risk inherent in relying on expensive
and single-source proprietary solutions.

One factor that will likely strengthen the position of free software and open source development
tools is the existence of archives such as the CPAN archive of Perl software. The
effect of
CPAN on Perl development encourages code reuse and generally reduces the amount of effort to
create Perl applications. Similar libraries are in the process of being developed for other
programming language communities.

Nevertheless, free software and open source tools have tended to provide little help for
developers of legacy
applications and cross-platform C and C++ development. Here, commercial software vendors are
likely to provide solutions where free software and open source offerings are insufficient and
unlikely to improve significantly in the short term. In an unexpected move,
Microsoft decided to release free, full function versions of its Visual Studio
IDE in addition to its more comprehensive commercial suites, offering the best
of both worlds.

Commercial development tools are very attractive to large numbers of developers who are
uncomfortable with the traditional Linux development model, or are unwilling to adopt unfamiliar
or incomplete tools. Companies looking to switch away from Windows by adopting
Linux as a primary or secondary delivery platform may be more comfortable using such commercial
tools to ease the transition to Linux development.

Strategic Planning Implications

[return to top of this report]

As Linux continues to entrench itself in the enterprise, the need for solid, reliable development
tools accelerates. Thanks to the Open Source tradition, most tools suitable for Linux development
are either free, or modestly priced. This offers more scope for experimentation to find the best
tool for the job, since the cost of changing tools is relatively small. It also makes
Linux development less expensive, assuming developers already know the languages involved.

Because many of the tools are more basic, and do not offer the "training
wheels" that Windows developers expect, programmers must have stronger skills to
produce good code. Where Windows APIs will fill in much of the underlying
"plumbing"-type code, Linux developers must, on the whole, understand the
requirements and know the techniques to produce it themselves. Microsoft has now
brought its tools into the Linux development world, helping developers come up
to speed more quickly, and these tools offer similar aids to those enjoyed by
Windows developers.

Since many of the tools are available by download only, the spectre of viruses and other
malware rears its head. Companies must be sure their developers take adequate precautions when
downloading to ensure the security of the corporate network. The open source community does its
best to protect its products from malware, but with the increase in malicious behavior on the
Internet, it would be foolish to assume everything is malware-free.

[return to top of this report]

About the Author

[return to top of this report]

Lynn Greiner is Vice President, Technical Services, for a division of a multi-national
corporation, and also an award-winning computer industry journalist. She is a member of Faulkner’s
Advisory Panel.

[return to top of this report]