We are essentially a software company but do not sell our software directly to customers. Instead, it is packaged along with hardware in the form of an appliance. There are several reasons for taking this approach and they include:
For high-end applications, our software runs on a standard x86 platform but the hardware requirements are quite specific. For example, our software requires four Ethernet interfaces with each interface is used for a particular purpose. Now, a customer could potentially install our software on his own system but after installation, it would take some complex probing to identify the function of each interface. Instead by buying a box preinstalled with our system, they get a convenient, easy-to-use box with all the interfaces on the front panel with clear labels indicating their intended purpose. On the low-end, our software can run on diskless Geode based systems from vendors such as Soekris and SnapGear. However, simply getting the software installed on these boxes requires the use of PXE which is probably far beyond the ability of most average customers.
The biggest problems that we have faced with this approach are pretty much what you can expect:
Hardware and firmware quality is variable: A small but significant number of boxes have suffered hardware failure and have to be replaced. Since we sell the box, we are responsible for both hardware and software failures we have to keep spares available at all times. Numerous logistical problems with the hardware vendors, who are all located in Taiwan and China. We have to spend extra effort to ensure that the vendor preloads the software properly and tests the boxes before shipping. Hardware will change with time: One can not count on having exactly the same hardware and firmware (such as BIOS) available forever. In order to ensure hat our software continues to work on older shipped boxes, we need to maintain a sort of a “museum” of all the old equipment that we have shipped.
The initial configuration of our boxes is done with the help of a serial port on the front panel. Using some terminal emulation software such as TeraTerm, the administrator can access a command line interface that is used to configure IP parameters. After the initial configuration, all subsequent configuration is conducted over a web interface. Other appliance products sometimes include an LCD panel that can be used for the same purpose.
Network appliances usually do not include a CD ROM so they must be updated over the network. Getting software upgrades to work properly has been one of the main challenges that we have faced. In general, flash or disk must be structured into multiple partitions so that the live code does not have to be touched. The new version of the software is written into another partition and when properly installed, the box is changed to boot from the new code.
We have also been thinking of packaging our software solutions as an “edge appliance.” In India, one of the primary motivations is that IT managers tend to overpay for hardware and underpay (if at all!) for software.