|Email: firstname.lastname@example.org||Phone: +1 603-654-6474|
This white paper describes the advantages of Halpern-Wight Software’s CLI Power Tools to WindRiver’s RapidControl for CLI based on our evaluation of WindRiver’s offerings as of April, 2001. The contents of this white paper represents our opinion.
The purpose of both products is to simplify and accelerate the development process for creating a command line interface (CLI) for network-connected devices. In both products, a development tool generates C or C++ code based on a developer's description of the syntax and semantics of commands, modes, etc.. The generated code is compiled and linked with a run-time library to produce the final CLI. The run-time library provides command-line editing, parsing, and some error checking and can be hosted on a different platform from the development tools (cross-compilation).
The development tools for the two products work on substantially different usage models. CLI Power Tools was initially created for a specific project. In the early stages of that project, we considered using RapidControl for CLI and rejected it based on our perception of deficiencies in the usage model. Although developing a new tool cost more, we did not regret the decision. For the following reasons, it is our opinion that CLI Power Tools has the better usage model:
Text files vs. GUI: The most important difference between the products is the mechanics of creating commands. CLI Power Tools uses a traditional edit-compile cycle for defining commands. Commands are created in the CDL language using a conventional text editor (emacs, vi, notepad, etc.). The CDL compiler and linker are used to generate C++ code, which is compiled and linked with the run-time library into an executable image.
RapidControl for CLI uses a graphical tool called the integration tool to define commands. The user adds nodes to a command tree and fills in dialog-box forms for parameters, code, etc.. A command is then used to generate C code, which is compiled and linked with the run-time library to create an executable image.
Graphical interfaces can be handy, but we believe that the RapidControl GUI gets in the way. WindRiver’s GUI is not simply a wizard that gives you a head start and then leaves you to your coding tasks; it is the only practical way commands can be created or modified. To define a new command, you must go through a half-dozen dialog boxes or more. Modifying a parameter can cause any code you entered to be lost, so you must be careful to cut-and-paste your code into a temporary file before making changes to the parameter list. The process of creating and changing commands can get tedious for large numbers of commands. (The Cisco CLI has several hundred commands.)
CLI Power Tools requires that you learn the CDL language. However, the language is small and example files are provided which make the learning process quick and easy. In our opinion, there is actually less to learn this way than with the GUI.
Independent command definitions vs. tree structure: With CLI Power Tools each command is defined independently; it is the job of the CDL linker to reconcile different commands that share a common prefix. The part of the CDL used to define a command’s syntax resembles the way command descriptions are found in Cisco (and other) user manuals, e.g. square brackets designate optional parameters, bars separate choices, etc.
The RapidControl integration tool displays a tree of nodes. Commands with a common prefix share the same branch of the tree, so each command is always created in the context of all other commands. This can be seen as an advantage in that it is impossible to create inconsistencies that will need to be resolved later. However, it is also somewhat artificial. When creating a command set, it should be the tool’s job to create the parse tree, not the user’s job. The fact that the command, "show ip ospf" consists of three nodes in a tree is of little interest to the developer.
Independent files vs. centralized integration tool: With CLI Power Tools, separate commands can be put in separate text files and managed with any standard revision control system (Clearcase, RCS, CVS, etc.). Several developers can simultaneously edit unrelated command files with little fear of tripping over one another.
RapidControl for CLI stores its command tree in a large XML file. Only one person can edit the command tree at a time. Although the XML file can be kept under revision control, merging simultaneous changes from several different developers is likely to be a nightmare, if it is even possible. XML may be text, but it is not easy to make sense of it in a merge window. Although RapidControl allows for some independent development, the integration is still the job of an individual using the graphical tool.
True human-readable files vs. XML: CLI Power Tools files are handcrafted, can be annotated with comments, and are as readable as the developer wants to make them. WindRiver claims that their RapidControl project file is human-readable because it is stored as XML and XML is a text format. We consider this characterization to be a stretch. XML is designed to be written by computers and read by computers. Although a person could muddle through it, XML is not designed to be human readable. (If you doubt this, try viewing the source of a Web page containing a table. The HTML format is similar to XML.) If fact, we consider any code generated by a software tool to be something you’d rather not have to read.
The consequence of WindRiver’s use of XML is that revision control is more difficult – differences between versions are hard to understand and merging changes made by different programmers would be error-prone, at best.
The features listed below are unique to CLI Power Tools and are not provided by RapidControl for CLI.
Clearly, this white paper is focused on the things that, in our opinion, make CLI Power Tools a superior choice for most CLI projects. In fairness to WindRiver, however, we will point out some of features in RapidControl for CLI that are absent in our own offering. See WindRiver’s marketing materials for more information.
It would be inappropriate to quote prices for either product here, as price information is quickly outdated.
In general terms, however:
CLI Power Tools offers significant advantages over RapidControl for CLI. Key among these advantages are efficiency in creating and modifying commands and integrating commands created by multiple developers. Most developers will find the CLI Power Tools usage model to more natural and comfortable. For moderate to large command-line interfaces, CLI Power Tools can save significant amounts of time and money.
Visit the CLI Power Tools home page at http://www.halpernwightsoftware.com/CLI or
Call Pablo Halpern at (603) 654-6474 or
Copyright 2002, 2003 Halpern-Wight Software Inc. All rights reserved.