Glue: The Dark Matter of Software
I do a lot of stuff with my house. As a result I have on hand, at various points in time:<p><pre><code>  * contact cement
  * superglue
  * mastic
  * wood glue
  * gorilla glue
  * liquid nails
  * various caulks
</code></pre>
Why so much glue? Because the right glue to use depends on the materials being joined, and the context in which the joint will need to survive (moisture, temperature, duration).<p>As with construction and art, so with software. The Unix pipe is powerful because it enforced &quot;the only thing you can connect together is line-oriented byte streams&quot;. But when you are building something where that&#x27;s not the substrates in question, it&#x27;s the wrong tool, and you need a different kind of glue.<p>Expand that to all the possible different things you may wish&#x2F;need to &quot;glue&quot; together in software, and it becomes fairly apparent why there&#x27;s a huge diversity in the glue being used, and why dreaming of a world in which you get by with just the software analog of gorilla glue is the wrong thing to do.