Grow-up and grow-down technologies

In the history of computing, there's a pattern that emerges. Technologies can be split into two broad categories: grow-up technologies and grow-down technologies.

Grow-down technologies are designed from the outset for the high end, whereas grow-up technologies are designed from the outset to be cheap. Both try to expand their territory by growing to cover more use cases; grow-down technologies try to lower their cost to dominate the market, and grow-up technologies gradually increase their sophistication to try and make themselves more applicable to the high-end use cases that they didn't initially target.

It seems like in practically every case where a grow-up technology and grow-down technology were pitted against one another, the grow-up technology won. Grow-down technologies can't become cheap enough fast enough to compete, so grow-up technologies win the race to capture the majority of the market.

Consider some examples:

Grow-upGrow-down
USBFirewire
EthernetInfiniband, Fibre Channel
ATASCSI
x86Enterprise RISC (POWER, etc.)
Personal ComputersMainframes

In particular, it's worth noting that once grow-up technologies mature, they tend to end up being almost, but not quite as good as grow-down technologies, whereas grow-down technologies rarely if ever become as cheap as grow-up technologies start.

For example, take USB vs. Firewire. Firewire supported DMA from the outset and facilitated fast communications1 and low CPU usage. USB was designed from the outset to be as cheap as possible to implement, and thus was a half-duplex, polled protocol. But with USB 3, these disadvantages have been mitigated substantially; it has been upgraded to high-speed, full duplex operation and no longer requires polling. “Streams” allow for different channels of data to be directed to different regions of memory, while avoiding the security hazards inherent with DMA. The main deficiency of USB3 is perhaps its complexity and the technical debt borne of the requirement for backwards compatibility.

In general, grow-down technologies end up consigned to one of two fates: Either they fail and become wholly abandoned, or they fall back to a healthy niche market of high-end applications for which even fully matured grow-up technologies just don't quite cut it. Examples include Infiniband, Fibre Channel, SAS, POWER; really any grow-down technology which is still successful today. Ethernet won by being cheap, and now it is “almost, but not quite as good as” technologies like Infiniband and Fibre Channel — almost, but not quite. So these grow-down technologies now make their market in the applications where “not quite as good as” isn't good enough. The gap becomes smaller, closing asymptotically on zero, as the “grow-up” technologies try to cover more use cases, but is never fully closed. For example, Ethernet is not generally considered suitable for industrial applications requiring hard real-time control, but there are myriad standards proposals and proprietary offerings purportedly allowing Ethernet to be rendered suitable for this purpose. It's worth noting, however, that the cost of this tends to be an increase in complexity substantially above that which is required with use of the grow-down technology. If your castles are built from cardboard, you're going to need a lot of duct tape to make something sturdy. (But on the other hand, you can choose how much duct tape you need to buy for your application.)

Probably the most commonly told story of the grow-up vs. grow-down dynamic is the PC versus the mainframe. The PC won, but this is just a specific instantiation of a more general pattern.

(Parallel) SCSI is a slightly unusual case, because it forked in two. Originally envisioned as a general attachment mechanism for system peripherals, both internal and external, it was the USB of its day, and was used to attach not just disk drives but also e.g. scanners. USB replaced these consumer-grade use cases, and SAS replaced the enterprise-grade use cases. In other words, a consumer-grade use case camped on a grow-down technology until a grow-up technology was available to replace it.

Software

I should point out that software is an exception to the grow-up/grow-down dynamic, since software can be replicated without cost, and thus manufacturing cost is a non-existent concern; there are only amortisable R&D costs. For this reason, in the software domain we can find grow-down technologies that became mainstream: for example, Windows NT.

With software, it also becomes less clear whether a technology is grow-up or grow-down; it becomes a matter of perspective. From a mainframe perspective UNIX is a grow-up technology, being built for inferior minicomputers. From a personal computing perspective UNIX is a grow-down technology. Likewise, from a VMS perspective Windows NT is a grow-up technology; from a Windows 9x perspective it's a grow down technology.


1. Note that Firewire tops out at 3.2Gb/s by present standards, and I'm not sure if the 3.2Gb/s standard was ever even implemented. USB3 supports speeds of 5Gb/s and faster. But I don't count this as an advantage of USB3 because the only reason Firewire is slow by comparison is because it fell out of usage and thus ceased to be renovated with modern signalling, as contemporary bandwidth expectations changed. If Firewire had remained popular, I've no doubt it would support 5Gb/s and faster signalling today.