Geek Alert: Edit Code With This Open-Source Implementation of a Leading RAD Tool
At a Glance
Lazarus places a Delphi-like GUI on top of Free Pascal.
Lazarus (so named because it's an older project, reborn) is a full-featured graphical IDE for Free Pascal, an open-source implementation of Object Pascal. While the Lazarus developers politely ask that it not be called a Delphi clone... if it walks, talks, and quacks like a duck, it's a duck. This should not be considered a slam. I found it because I went looking for a free or low-cost Delphi clone, because there's a powerful market niche for one.
Lazarus is what is sometimes referred to as a RAD (Rapid Application Development) tool, primarily because of the tight integration of user interface design and code design. This can sometimes lead to poor coding, with developers placing program logic and data manipulation directly into user interface elements, but it doesn't force this behavior, and good programmers learn to separate the two. In addition to visual elements such as text fields and buttons, developers can also add code elements such as database connections or processes to a form. This aids in connecting the interface to back-end elements such as a database; you can place a SQL Query on the form, then specify that various fields take their displayed values from the results of that query. The bulk of the generic SQL code is generated automatically, but can be edited later as needed.
Lazarus uses a lot of free-floating windows, instead of the more common frame-and-dock model favored by Eclipse and Visual Studio. This can sometime be confusing during development; it's easy for windows to slip under other windows, and arranging screen real estate optimally can be tricky. This is a matter of taste and habit, of course. I had more difficulty getting used to the manner of placing controls on a form, which is one of the main functions of a RAD tool like this. You click an icon on the tool palette, then click on the form. You don't drag an icon, or see a visual indication on the form that you're about to place an element, until you click, although the toolbar does show a selected item. Not deal-breaking, but odd; I expect more visual feedback in modern programs.
It is worth praising the palette of items contained by default in Lazarus. All the classic controls are there (button, radio button, grid, and so on), as well as a number of useful, less-common, controls ( icon grids and trees, common dialog boxes, and database connectivity tools). It must be noted that the components are not 100% identical to their Delphi counterparts, and some fairly basic functions, such as high-level drag-and-drop support, are not yet fully implemented. The Lazarus wiki details the key differences.
You don't have to be a Delphi user to find Lazarus interesting and useful. It offers a nice environment for interface-rich application development, especially for small utility apps and for in-house, vertical, applications that need to be quickly developed and prototyped. It also offers "write once, compile anywhere" functionality for Windows, Mac, and Linux users, and one of the common uses to which it has been put is offering Linux versions of applications originally developed for Windows. Linux and Mac versions of Lazarus are available at SourceForge as well.