Computerworld

King of the dynamic IDEs

Multilingual ActiveState Komodo 5.0 conquers Perl, PHP, Python, and Ruby projects with strong debug facilities, excellent code control, and an unbeatable set of utilities

Komodo IDE 5 from ActiveState is the most comprehensive code editor and debugger available for enterprise teams that develop applications using a range of dynamic languages. Komodo's strong debugging skills are blended with broad-based coding support for Perl, PHP, Python, and Ruby, not to mention Tcl, Java, C, C++, Visual Basic, and many more. With powerful HTML, CSS, JavaScript, and XML support, Komodo is a great Web 2.0 companion as well.

The latest release, Version 5.0, updates the IDE's source code control (SCC) wizardry to give development teams seamless checkout across distributed code repositories. Newly added support for Mercurial, Git, and Bazaar complement Komodo's existing coverage for CVS, Subversion, and Perforce.


JavaScript, Perl, PHP, Python, Ruby, and other dynamic languages are remaking the Web and bringing programming to the masses. Where should programmers place their bets? See "Dynamic programming futures."

New code formatting tools, which support Perltidy and PHP Beautifier plug-ins, promise to help teams homogenize dissimilar coding styles -- a common disorder of distributed development. And overall, Komodo's workspace has been cleaned up and made easier to customize, which should help new users more easily get their bearings. Plus, multiple workspace instances can now be run simultaneously (see screen image).

In the past, one of my biggest nits with Komodo was sluggish performance -- an affliction that grew in lock step with the size of the project. I'm happy to report that ActiveState has successfully addressed this issue. Komodo is now based on Mozilla's Gecko 1.9, bringing XULRunner bootstrapping and a livelier JavaScript engine by way of the Tamarin runtime. Additionally, an internal update to Python 2.6 -- from which Komodo draws most of its functionality -- has improved stability and brings a more OS-native feel to the Mac.

Detracting from an otherwise superb product, Komodo does not yet support development in .Net languages such as C# and ASP.Net. I would also like to see steps taken to integrate collaboration tools -- along the lines of efforts coming out of N-Brain, for example, where the UNA IDE bundles a whiteboard and chat facility.

Why spend good money on an IDE when a plethora of free Python editors and open source Eclipse plug-ins are readily available for the download? Quite simply, it's a matter of capability and pedigree.

Page Break

Eclipse plug-ins such as EPIC's Perl Editor are perfectly fine, but not nearly as extensive or feature rich as Komodo. Third-party tools such as Zend Studio for PHP or Wingware's Wing IDE for Python are also exemplary products. But these one-trick ponies do little to bridge team effort across multiple languages. A single, standardized IDE for all dynamic language development promises to reduce training requirements and boost team efficiency and productivity.

Further, ActiveState's enterprise distributions offer pre-compiled, quality-guaranteed builds with service level agreements, support, and interim point releases that, in my experience, are typically packed with new features -- not just bug fixes.

I'm certainly not suggesting that C++ programmers dump Visual Studio or that Java jockeys jump from NetBeans to Komodo. But developers used to the robust features of first-rate IDEs won't find them in the spartan tools available for dynamic languages. For dynamic language development, I've yet to discover any open source tool that can match the scope of functionality in Komodo.

The dragon's lair

Getting started with Komodo involves installing language-specific interpreters and compilers, but is pretty much a no-brainer. I was up and running quickly.

I find the workspace easy to navigate. All the standard aids are present: tabbed document access, handy toolbox, color-coded syntax guides, and code folding to obscure blocks of code for easier navigation. Komodo is able to import projects based on file system -- replicating the structure -- and can import and export packages for easy distribution among teams.

The code browser shows a hierarchical tree view of all your code -- classes, objects, methods -- that provides quick navigation. A sort-and-search facility lets you easily flip through different views, such as the current directory, current file, or any open file.

Based on actual code analysis rather than static dictionary lookups, Komodo's code completion and background syntax verification are top-notch -- definitely among the best I've used for dynamic languages. However, it would be valuable to see code completion extended beyond objects and namespaces to include variables as well.

Komodo's code fragments and macros help streamline workflow. Apart from some issues with dialog boxes not displaying correctly, macros performed well in my tests. Because Komodo macros allow user interaction via prompts, they can provide more flexibility than static automation.


Sun's NetBeans isn't just for Java. Read the comparison of Rails tools.

Komodo's extension and plug-in manager -- similar to the add-on manager in Firefox -- make it easy to see what's installed and to locate updates.

I was also impressed by the SCC enhancements. Along with supporting the version control systems noted above, Komodo now allows you to push entire sets of changes to the repository (versus solo file commits). Although I'd like to see the addition of support for password authentication and a work-around for managing Perforce's proprietary format, Komodo's quick-click transaction history log and code differential tool go a long way toward shoring up change management.

Page Break

Many pros, a few cons

Komodo's integrated debugger and testing facility are simply terrific. Traditional variable watch lists and static breakpoints are augmented by conditional breakpoints (based on a specific value or event, such as an exception). The unit testing interface also facilitates plan definitions (either globally or within a Perl, PHP, Ruby, or Python project) and helps locate errors quickly and easily across multiple files in complex projects.

For Perl developers, Komodo offers perks such as the brand new Perl Development Kit 8. PDK provides a regular expression utility that lets you build and validate regex statements (see screen image) against live data, and it allows you to create and maintain cross-platform executables targeted for stand-alone execution on any supported platform.

Another nice addition in PDK 8 is the GUI interface to the Perl::Critic package. The facility delivers analysis of your source files and verifies against established policy guidelines -- great for keeping teams in sync with best practices. I particularly liked the option to interactively walk through code scans versus static report dumps.

For Web-related projects, Komodo provides a convenient, built-in browser and an HTTP inspector that delivers real-time, granular insight into request/response transactions. The split-screen interface is a real timesaver during debugging, allowing me to step through an XSLT debug session and the live XML doc at the same time. Komodo also includes an interactive shell to the interpreter, so statements can be executed directly for prototyping and session interaction.

On the minus side, Komodo lacks a GUI toolkit. ActiveState used to include GUI construction for Tcl, but the tools for GUI development have been withdrawn.

ActiveState could also do a better job with the developer aids. A good number of sample project templates and code snippets are provided for each of the supported languages, but most offer little more than basic skeletons. More functional code samples would be warmly welcomed.

Finally, ActiveState's PPM (Perl Package Manager) -- which facilitates module management and updates in the company's Perl distributions -- is still not supported on 64-bit installs. I'm hopeful this gets resolved sooner rather than later.

But Komodo's shortcomings are greatly overshadowed by its advantages. If you're in need of an IDE that can flexibly bridge multiple languages, support distributed teams with ease, and ultimately improve code quality and streamline development cycles, you'll want to take a close look at Komodo 5. An extremely flexible licensing scheme, allowing developers to run Komodo concurrently on all supported platforms (Windows, Mac OS X, and Linux) from a single license, only sweetens the deal.