[tags]diversity, complexity, monocultures[/tags]
In my last post, I wrote about the problems brought about by complexity. Clearly, one should not take the mantra of “simplification” too far, and end up with a situation where everything is uniform, simple, and (perhaps) inefficient. In particular, simplification shouldn’t be taken to the point where diversity is sacrificed for simple uniformity.
Nature penalizes monocultures in biological systems. Monocultures are devastated by disease and predators because they have insufficient diversity to resist. The irish potato famine, the emerald ash borer, and the decimation of the Aztecs by smallpox are all examples of what happens when diversity is not present. Nature naturally promotes diversity to ensure a robust population.
We all practice diversity in our everyday lives. Diversity of motor vehicles, for instance supports fitness for purpose—a Camero, is not useful for hauling dozens of large boxes of materials. For that, we use a truck. However, for one person to get from point A to point B in an economical fashion, a truck is not the best choice. It might be cheaper and require less training to use the same vehicle for everything, but there are advantages to diversity. Or tableware—we have (perhaps) too many forks and spoon types in a formal placesetting, but try eating soup with a fork and you discover that some differentiation is useful!
In computing, competition has resulted in advances in hardware and software design. Choice among products has kept different approaches moving forward. Competition for research awards from DARPA and NSF has encouraged deeper thought and more focused proposals (and resultant development). Diversity in operating systems and programming languages brought many advancements in the era 1950-2000. However, expenses and attempts to cut staff have led to widespread homogenization of OS, applications, and languages over approximately the last decade.
Despite the many clear benefits of promoting diversity, too many organizations have adopted practices that prevent diversity of software and computing platforms. For example, the OMB/DoD Common Desktop initiative is one example where the government is steering personnel towards a monoculture that is more maintainable day-to-day, but which is probably more vulnerable to zero-day attacks and malware.
Disadvantages of homogeneity:
- greater susceptibility to zero-day vulnerabilities and attacks
- “box canyon” effect of being locked into a vendor for future releases
- reduced competition to improve quality
- reduced competition to reduce price and/or improve services
- reduced number of algorithms and approaches that may be explored
- reduced fitness for particular tasks
- simpler for adversaries to map and understand networks and computer use
- increased likelihood that users will install unauthorized software/hardware from outside sources
Advantages of homogeneity:
- larger volume for purchases
- only one form of tool, training, etc needed for support
- better chance of compatible upgrade path
- interchangeability of users and admins
- more opportunities for reuse of systems
Disadvantages of heterogeneity:
- more complexity so possibly more vulnerabilities
- may not be as interoperable
- may require more training to administer
- may not be reusable to the same extent as homogeneous systems
Advantages of heterogeneity:
- when at a sufficient level greater resistance to malware
- highly unlikely that all systems will be vulnerable to a single new attack
- increased competition among vendors to improve price, quality and performance
- greater choice of algorithms and tools for particular tasks
- more emphasis on standards for interoperability
- greater likelihood of customization and optimization for particular tasking
- greater capability for replacement systems if a vendor discontinues a product or support
Reviewing the above lists makes clear that entities concerned with self-continuation and operation will promote diversity, despite some extra expense and effort. The potential disadvantages of diversity are all things that can be countered with planning or budget. The downsides of monocultures, however, cannot be so easily addressed.
Dan Geer wrote an interesting article for Queue Magazine about diversity, recently. It is worth a read.
The simplified conclusion: diversity is good to have.