Grow-up and grow-down technologies
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. ⏎

          
        