I don’t think many people know the history of the Cisco CLI and the impact it has had on the industry. Other companies are emulating it, as evidenced in recent articles on the topic. Network engineers typically become experts in the Cisco CLI first, then move to other vendor gear, so it makes sense for companies to emulate it. Brad Reese, who writes for Network World’s Cisco Subnet, did an article on the topic on October 5, 2007, Appealing to CCIEs, hardware vendors copy Cisco’s CLI and NetFlow to get into Cisco accounts .
Back in the late 1980s and early 1990s, the Cisco CLI underwent several changes. The original Cisco router didn’t even have a CLI. According to Kirk Lougheed, one of the founders of Cisco, it was only intended to have its configuration loaded via TFTP. He told me that he needed the ability to change the configuration at a trade show, so he added a quick hack to allow him to type the configuration into a buffer, which was passed to the function that parsed the TFTP file. The end of the input was indicated with CTRL-Z. You entered all the commands and when you pressed CTRL-Z, the file was parsed and any errors were displayed. It wasn’t great to have a bunch of typing be wasted when an error occurred.
Some time later, the CLI was changed to cause lines to be executed as soon as they were entered instead of after the CTRL-Z was input. Greg Satz, who told me of this change, was pleased to note that I had just barely noticed the change. I distinctly recall thinking that something changed, but hadn’t been able to put my finger on exactly what. The change reported errors as soon as you entered them, not after the entire buffer had been typed, so it was a good change. This change would have happened sometime before late 1990. There was still no command history, interactive help, or command editing capability.
In late 1990, Greg Satz contracted with me* to rebuild the CLI parser. The intent was to be able to extract the parser from the router (it wasn’t called IOS yet) and load it into a management station so that Cisco config files could be parsed. Eighteen months later, the team I had assembled (Rob Widmer, Brent Baccala, Pete Welcher, and I) finished the new Cisco CLI, which was released in version 9.21. I recall this being the first half of 1992, but would have to do some research to verify it.
During development, Rob, who was doing the user input code, decided to allow full editing of commands, much like was possible with the Unix shells (user interface) at the time. The CLI he implemented used CTRL- style keystrokes, for mode-less command editing. There wasn’t a way to handle multiple lines, so we decided to shift lines left and right and use the characters ‘^’ and ‘$’ to indicate that the line had been shifted. The lines were repainted on each keystroke so that it would work on any display.
While we were developing the new CLI, Bay Networks,** Cisco’s main competitor, was doing a lot of sales and marketing around the fact that they had a menu interface and how that made their products easier to use. Managers and new people tended to buy into that story and it was making things difficult for Cisco on that front. The problem with menu systems is that you can’t get a concise view of the entire state of the device. You have to pick your way through the menus to find the state of some setting, which becomes very inefficient after a short while. Once you switch to a configuration file for the concise view, you may as well learn that syntax and stop using the menu.
Shortly after we released 9.21, the marketing and sales efforts from Bay Networks started to slow and Cisco’s growth continued on its upward streak. As I tell people these days, you can try to blame me for the CLI. But we had a goal of backwards compatibility, which we upheld. You may curse the CLI, but if you used it prior to 9.21, you probably thank us for adding the functionality that exists today.
* I had started Chesapeake Computer Consultants by this time. Greg and others at Cisco made multiple job offers to me, but they all required that I move to Calif – something I wasn’t interested in doing. Silly me. Chesapeake went on to become one of Cisco’s premier training and consulting partners. I left Chesapeake in March 2000 after getting the vLab system started and released. Chesapeake went out of business in late 2001.
** Wellfleet merged with Synoptics to become Bay Networks, which was later acquired by Nortel.
Re-posted with Permission
NetCraftsmen would like to acknowledge Infoblox for their permission to re-post this article which originally appeared in the Applied Infrastructure blog under http://www.infoblox.com/en/communities/blogs.html