These must run over an astounding amount of different hardware, some of which with very peculiar behaviors, hardware- or configuration-specific bugs and very different support levels. So in some cases a certain feature will have two, three or sometimes even four fallback paths to support specific setups. This is a lot of complexity in the code and it makes doing changes and testing them extremely hard. Old platforms pose extra challenges on top of this, so let me give you a few examples. 3/13