For many years programmers have dreamed of building systems from a li­brary of reusable software components together with a little new code. The closest we’ve come is Unix commands connected by pipes. This paper discusses the fundamental reasons why software components of this kind have not worked in the past and are unlikely to work in the future. Then it explains how the dream has come true in spite of this failure, and why most people haven’t noticed.