Heterogeneity is a given these days in almost any IT system installation. From hardware platforms to operating systems, networking protocols to applications, we use a variety of technologies for every layer of the system stack. Among its advantages, heterogeneity fosters innovation and competition. It even has the potential to improve overall system security and reliability, in that the same error or weakness is unlikely to be present in all different designs, which tend to yield different architectures and implementations, and even different bugs.