In computing, a software application that provides complete facilities to computer programmers for software development is called an integrated development environment (IDE). An IDE usually consists of a source code editor, a compiler and/or interpreter, build automation tools, and a debugger. To simplify the construction of a GUI, sometimes a version control system and various tools are integrated. Several modern IDEs also have a class browser, an object inspector, and a class hierarchy diagram, for use with object oriented software development.

Some of the best IDEs are available commercially, like Microsoft’s Visual Studio. However, I prefer using free and open source IDEs because they are mostly resource-efficient and much more flexible compared to their non-free counterpart. Plus, it comes without a price tag. Here are some of my highly recommended free/open-source IDEs:

Boa ConstructorBoa Constructor (a pun on Boa Constrictor / Python) is a cross-platform integrated development environment (IDE) for the Python programming language. It includes a graphical user interface (GUI) builder for the wxPython toolkit and also has support for Zope, CVS and SVN. The IDE is available in eight languages and there is internationalisation support for applications. Other features include a source explorer, object inspector, applications (a logical grouping of source files), code completion, code folding, code templates, integrated interpreter and help, profiler and an advanced debugger.

It is itself written in Python, but also supports syntax highlighting of other languages. It uses the Scintilla component for source code editing.

AnjutaAnjuta is an integrated development environment for the C and C++ computer programming languages, written for the GNOME project.

Anjuta features project management, application wizards, an interactive debugger built over gdb, and a powerful source code editor with source browsing, code completion and syntax highlighting.

The goal of Anjuta DevStudio is to provide a customizable and extensible IDE framework and at the same time provide the implementations of common development tools. libanjuta is the framework that realizes the Anjuta IDE plugin framework and Anjuta DevStudio realizes many of the common development plugins.

GNAT Programming StudioGNAT Programming Studio (GPS, formerly known as the GNAT Programming System) is a free multi-language integrated development environment (IDE) by AdaCore. GPS uses compilers from the GNU Compiler Collection, taking its name from GNAT, the GNU compiler for the Ada programming language.

GPS is cross-platform, running on Linux, Microsoft Windows and Solaris. GPS uses GTK+ as the widget toolkit for its graphical user interface. Released under the GNAT Modified General Public License, GPS is free software.

AptanaAptana IDE is an open source integrated development environment (IDE) for building JavaScript intensive web applications. It includes coding assistance for JavaScript, HTML, and CSS languages, an outliner of JavaScript, HTML, and CSS code structure, error and warning notification and the possibility to customize and extend the UI.

This Eclipse-based IDE is available as standalone on Microsoft Windows, Mac OS and Linux, or as a plugin for Eclipse.

LazarusLazarus is a cross platform Visual Integrated development environment (IDE) which provides a Rapid Application Development (RAD) Delphi clone for Pascal and Object Pascal developers. It is developed for and supported by the Free Pascal compiler.

Distributed under a mix of licences, all of which are free software licences, Lazarus is free software, just as Free Pascal is. Notably among those licences is a modified version of the GNU Lesser General Public License. The modification grants extra permissions to allow Lazarus to be used in proprietary software.

Code::BlocksCode::Blocks is a free/open source, cross platform IDE. It is developed in C++ using wxWidgets. Using a plugin architecture, its capabilities and features are defined by the provided plugins. Currently, Code::Blocks is oriented towards C/C++.

Code::Blocks is being developed for Windows and Linux. Users have successfully built Code::Blocks under FreeBSD and (to date still with some UI problems) under Mac OS X.

The development releases after May 23rd, 2007 require wxWidgets 2.8.

DrSchemeDrScheme is an interactive, integrated, graphical programming environment for the Scheme, MzScheme, and MrEd programming languages.

DrScheme provides source highlighting for syntax and run-time errors, support for multiple language levels, an algebraic stepper, objects, modules, a GUI library, TCP/IP, Unicode, MysterX for COM support under Windows, and much more. It includes an extensive, hyper-linked help system called Help Desk, available from the Help menu. The Tour of DrScheme describes many of these features in greater detail.

EclipseEclipse is an open-source software framework written primarily in Java. In its default form it is an Integrated Development Environment (IDE) for Java developers, consisting of the Java Development Tools (JDT) and the Eclipse Compiler for Java (ECJ). Users can extend its capabilities by installing plug-ins written for the Eclipse software framework, such as development toolkits for other programming languages, and can write and contribute their own plug-in modules. Language packs are available for over a dozen languages.

EmacsEmacs is a class of text editors that have an extensive set of features and that are popular with computer programmers and other technically proficient computer users.

GNU Emacs, a part of the GNU project, is under active development and is the most popular version. The GNU Emacs manual describes it as "the extensible, customizable, self-documenting, real-time display editor." It is also the most portable and ported of the implementations of Emacs. As of 2007, the latest stable release of GNU Emacs is version 22.1. XEmacs is the other major Emacs.

BlueJBlueJ is an integrated development environment for the Java programming language, developed mainly for educational purposes, but also suitable for small-scale software development.

BlueJ was developed to support the learning and teaching of object-oriented programming, and its design differs from other development environments as a result. The main screen graphically shows the class structure of an application under development (in a UML-like diagram), and objects can be interactively created and tested. This interaction facility, combined with a clean, simple user interface, allows easy experimentation with objects under development. Object-oriented concepts (classes, objects, communication through method calls) are represented visually and in its interaction design in the interface.

EricEric is a full featured Python and Ruby editor and IDE, written in python. It is based on the cross platform Qt gui toolkit, integrating the highly flexible Scintilla editor control. It is designed to be usable as everdays' quick and dirty editor as well as being usable as a professional project management tool integrating many advanced features Python offers the professional coder.

Current stable version is eric4 based on Qt4. For Qt3 based systems eric3 is still available.

KDevelopKDevelop is a free software integrated development environment for the KDE desktop environment for Unix-like computer operating systems. KDevelop does not include a compiler; instead, it uses an external compiler such as gcc to produce executable code.

The current version, 3.5, supports many programming languages such as Ada, Bash, C, C++, Fortran, Java, Pascal, Perl, PHP, Python and Ruby. Released under the GNU General Public License, KDevelop is free software.

NetBeansNetBeans refers to both a platform for the development of Java desktop applications, and an integrated development environment (IDE) developed using the NetBeans Platform.

The NetBeans Platform allows applications to be developed from a set of modular software components called modules. A module is a Java archive file that contains Java classes written to interact with the NetBeans Open APIs and a manifest file that identifies it as a module. Applications built on modules can be extended by adding new modules. Since modules can be developed independently, applications based on the NetBeans platform can be easily and powerfully extended by third party developers.

MonoDevelopMonoDevelop is a popular, open source integrated development environment for the Linux platform, primarily targeted for the development of software that uses both the Mono and Microsoft .NET framework. MonoDevelop integrates features similar to that of Eclipse and Microsoft's Visual Studio such as "Intellisense", source control integration, and an integrated GUI and Web designer. It currently has language support for C#, Java, Boo, Nemerle, Visual Basic.NET, CIL, and C++.

Quanta PlusQuanta Plus is a free software web Integrated Development Environment (IDE) for (X)HTML, CSS, XML, PHP and any other XML-based languages, or scripting languages. It features tag completion as you type and tag editing through a dialog interface, script language variable auto-completion, project management, live preview, PHP debugger, CVS support, Subversion support (through external plugin) to name just a few. Quanta is capable of both WYSIWYG design and handcoding. It is part of KDE, released in the kdewebdev package.

If you know of other free and open source IDE software applications, please share them with us via comment.