Dit Darwin-jaar is een goede gelegenheid om stil te staan bij de vraag hoe de evolutie van de 'soort' zich in ict-land ontwikkelt. Dat is natuurlijk een vrij hachelijke onderneming als je bedenkt dat computers pas zo'n zeventig jaar bestaan. Toch worden evolutiepaden hier en daar zichtbaar en beginnen de contouren van de volgende generaties zich af te tekenen.
Op één van die evolutiepaden kom je hardwarevirtualisatie tegen, dat ervoor zorgt dat één computer zich naar de software toe gedraagt alsof het er heel veel zijn. Je kunt je daarbij afvragen waarom hardwarevirtualisatie er niet direct al was, en of het er wel altijd zal blijven. Op de eerste computers was men echter al blij er één programma op te kunnen uitvoeren. Toen later de rekenkracht toenam, ontstond de behoefte om meerdere programma's tegelijkertijd te kunnen draaien. De meest logische evolutiestap was dan ook om een softwarelaag te bouwen die de afzonderlijke programma's de illusie gaf dat ze alleen op de hardware draaiden. Zo kon je die 'legacy-programma's' ongewijzigd op nieuwe systemen draaien. Er kwam dus een abstractielaag die de hardware afschermde. Tegenwoordig heet zo'n laag een operating systeem. IBM noemde het echter een supervisor, tekenend overigens voor het wereldbeeld destijds. De gebruiker, helemaal onderaan de ladder, mocht bij de gratie van de computerfabrikant gebruik maken van programma's, die bestuurd werden door de supervisor. Deze supervisor schermde het daarboven liggende mainframe af voor de programma's. In het huidige wereldbeeld is 'boven' en 'onder' meestal net andersom gelukkig: de gebruiker staat bovenaan, de hardware helemaal onderaan.
Toen na de introductie van de supervisor de rekenkracht van computers nog verder toenam, bedacht IBM dat het best nuttig zou zijn om meerdere besturingssystemen op zo'n systeem te kunnen laten draaien. Er was dus een soort Über-supervisor nodig en zo werd rond 1970 de eerste hypervisor geboren. Deze hardwarevirtualisatie werd echt 'booming business' vanaf het moment dat VMware het concept kort voor de eeuwwisseling geschikt maakte voor huis-tuin-en-keuken-computers. Zo'n hypervisor is dus opnieuw een abstractielaag boven de hardware, dit keer om meerdere besturingssystemen de illusie te geven dat ze exclusief de gehele computer besturen. Omdat zo'n besturingssysteem daar niets van hoeft te merken, is dit ook veel meer een evolutionaire dan een revolutionaire ontwikkeling.
De volgende evolutiestap begint ook al redelijk vorm te krijgen: 'cloud computing', of hoe dat in de toekomst ook mag gaan heten. Nu je namelijk door die dubbele abstractielagen zo onafhankelijk bent geworden van de onderliggende hardware, kun je je programma's in principe in ieder datacenter laten draaien. De economy-of-scale van hele grote datacenters maakt het daarbij een stuk goedkoper om je programma's daar te draaien en niet meer in je eigen datacenter. Nog beter, je wilt eigenlijk je programma's kunnen verhuizen van je eigen datacenter ('private cloud') naar een extern gehost datacenter ('public cloud'), bijvoorbeeld bij een plotselinge hoge vraag of bij een calamiteit. En je wilt daarna je workload van de ene 'public cloud' naar de andere 'public cloud' verhuizen, want aan vendor lock-in hebben wij nog steeds een broertje dood. Dat migreren van workloads is nog nauwelijks mogelijk, al was het maar omdat niet alle cloud computing-platforms gebruik maken van hetzelfde virtuele machineconcept. Zie daar de volgende stap in de evolutie: een extra abstractielaag die de cloud computing-hardware, en wellicht het gehele onderliggende grid, afschermt van de software erboven.
Zo zie je verschillende 'soorten' software ontstaan, die allen hun eigen plaats hebben in het hele ecosysteem: applicatieprogramma's, besturingssystemen, hypervisors en allerlei vertakkingen daar weer van. In theorie had de ict-industrie dat ook zeventig jaar geleden kunnen bedenken. In de praktijk ontstaat het echter puur langs evolutionaire weg, gedreven door een soort collectief voortschrijdend inzicht.