Waarom is kernelupgrade op Android zeldzaam?
Krijgt Android niet iedere jaar een nieuwe versie van besturingssysteem? Maar daar zit ook kernel upgrade/update?
Het komt door een combinatie van redenen.
Deels zijn die technisch en deels financieel en deels organisatorisch.
De financiele reden is uiteraard simpelweg dat het goedkoper is voor de fabrikanten om niks te doen.
De technische reden is dat sommige chipfabrikanten er voor kiezen om hun drivers geheim te houden en alleen te leveren in een formaat (binary blob) dat niet door anderen onderhouden kan worden en gebonden is aan een bepaald model. Net zoals je een brood niet meer kan veranderen nadat het in de oven is geweest. Heel Linux is gebouwd rond het idee dat iedereen alle ingredienten beschikbaar heeft om een snel nieuw brood te bakken. Oud en bedorven brood gooi je weg, conserveringsmiddelen zijn dan ook niet nodig.
Veel fabrikanten willen alleen gebakken brood verkopen om hun recept geheim te houden (net zoals dat iedere bakker denkt dat z'n brood uniek is) maar ze willen ook "geen conserveringsmiddelen" op de verpakking zetten. Dat gaat niet goed.
Anderen publiceren hun werk wel maar voldoen niet aan de kwaliteitseisen die nodig zijn om te worden opgenomen in de Linux-kernel.
De meeste andere systemen (zoals Windows en iOS) hebben een andere aanpak en zullen ook 10 jaar oud brood accepteren. Die systemen zijn gericht op alles kunnen eten ("liever ziek dan hongerig").
Het is maar waar je prioriteit ligt, zo lang mogelijk leven of zo lang mogelijk gezond zijn.
De organisatorische reden is dat verantwoordelijkheid is uitgespreid over veel partijen, de fabrikant van de chips, de fabrikant van de telefoon, de Linux-programmeurs, de onafhankelijke Android-programmeurs, de programmeurs van Google, (soms) het telefoonbedrijf en de eindgebruiker. Al die partijen zijn van elkaar afhankelijk en het begint bij de partijen die het verste van de eindgebruiker staan. Alle partijen daarna zijn afhankelijk van hun voorganger en als de chipfabrikant niet mee wil werken (of al failliet is gegaan) dan kan de rest ook niet veel. Als klant wordt je van het kastje naar de muur gestuurd. De telefoonfabrikant wijst naar de fabrikant van de chips. De fabrikant van de chips praat niet met consumenten want dat zijn geen directe klanten.
Als klant zou je dat niet moeten accepteren maar je hebt weinig te kiezen. Ze doen het bijna allemaal en dat blijven ze doen zolang de meeste gebruikers het accepteren. De meeste gebruikers weten echter niet eens dat er een probleem is. Ze weten niet beter dan dat het normaal is dat brood groene vlekken heeft.
Nu zou je kunnen zeggen dat Apple dat beter voor elkaar heeft en in praktijk klopt dat. Fundamenteel is het probleem daar echter veel groter. Apple heeft nog meer controle over de hardware en software dan bij Android en binnen het Apple ecosysteem zijn er geen alternatieven. Alles komt alleen maar van Apple. Pragmatisch gezien werkt dat momenteel beter dan het Android model, principieel gezien raak je van de regen in de drup. Onder Android wordt in ieder geval een deel van de hardware ondersteunt met open drivers, bij Apple is alles onder controle van Apple.
De situatie onder Android is gelukkig niet helemaal kansloos. Geheime/gesloten drivers kunnen altijd nog worden geopenbaard of vervangen door nieuwe drivers. Alle stukjes zijn er maar iemand moet ze samenbrengen en/of de fabrikanten betalen om mee te werken of hun code te publiceren, of de documentatie zodat anderen zelf een driver kunnen schrijven. Als zo'n driver eenmaal netjes wordt gepubliceerd kan die worden opgenomen in de kernel en gebruikt worden door iedereen met zo'n chip, in plaats van dat iedere telefoonfabrikant z'n eigen kopie van de driver moet hebben die allemaal weer onderhouden (zouden) moeten worden.
Ik denk dat Google dus bezig is met oude drivers op te vragen bij fabrikanten en het werk af te maken door ze op te nemen in de Linux kernel zodat er voortaan één generieke driver is voor iedereen, in plaats van dat ieder model telefoon z'n eigen versie van die driver heeft die allemaal apart worden worden onderhouden.