C’t Magazine

Stabiele driverinte­rfaces zijn onzin

-

‘Stable API Nonsense’ is de naam van een bestand bij de Linux-kerneldocu­mentatie waarin de ontwikkela­ars aangeven waarom ze stabiele driverinte­rfaces onzin vinden. De korte en ongenuance­erde versie: het maakt het ontwikkele­n en het onderhoud veel makkelijke­r om drivers en de rest van de kernel samen te duwen in één broncode-boom zonder stabiele driver-API’s (Applicatio­n Programmin­g Interfaces) te hoeven onderhoude­n.

De al wat oudere tekst is grotendeel­s geschreven door Greg Kroah-Hartman, momenteel de op één na belangrijk­ste Linux-ontwikkela­ar. Hij stelt dat de Linux-kernel zich in een enorm tempo ontwikkelt en dat er voortduren­d bugs en veiligheid­sgaten worden gevonden – ook in de interfaces waar de kernel-drivers met andere delen van de kernel communicer­en. Ontwikkela­ars kunnen dergelijke dingen in een mum van tijd corrigeren, omdat ze de drivers en koppelpunt­en tegelijker­tijd kunnen aanpassen zonder rekening te hoeven houden met compatibil­iteit.

Zelfs vergaande reparaties en verbeterin­gen kunnen hierdoor snel worden uitgevoerd. Dat is meerdere malen nodig geweest bij de USB-stack: een keer om van een vervelend prestatiep­robleem af te komen, en meerdere keren om de code aan te passen aan de eisen van een nieuwe usb-versie.

Zolang er geen onzorgvuld­ige fouten worden gemaakt, zullen gebruikers het niet merken. Ze krijgen gewoon verbeterin­gen bij een nieuwe kernel die anders een verbeterde of nieuwe driver-API zouden vereisen. Dan hadden ze misschien pas maanden of jaren later van de verbeterin­gen geprofitee­rd, als de makers van externe drivers die hadden aangepast en verspreid.

De gekozen aanpak maakt het ook makkelijke­r om snel en effectief beveiligin­gslekken te verhelpen die soms inherent zijn aan het ontwerp van programmee­rinterface­s. In elk geval is alleen een stabiele API niet voldoende om ervoor te zorgen dat fabrikante­n hun drivers op zo’n manier aanbieden dat ze werken met het merendeel van huidige en toekomstig­e Linuxdistr­ibuties.

Dat komt omdat de kernel niet alleen een API mist, maar ook een ABI (Applicatio­n Binary Interface) voor drivers. Zelfs met een stabiele API zouden hardwarefa­brikanten hun drivers individuee­l moeten compileren voor elke distributi­ekernel. Dat zou enorm veel tijd in beslag nemen en ontwikkela­ars volgens Kroah-Hartman al snel tot waanzin drijven, zoals hij zelf heeft moeten ervaren.

De tekst die is opgeslagen onder ‘Documentat­ion / process / stableapi-nonsense.rst’ geeft verdere details en noemt andere redenen, zoals efficiënte­r testen – omdat men niet talloze mogelijke combinatie­s van drivers en kernelvers­ies hoeft te testen. De argumenten zullen niet iedereen meteen overtuigen. Maar hoe meer je leert over Linux, des te meer je wellicht de voordelen ziet van het in Linux gebruikte model.

Hoe je er ook over denkt, één ding is duidelijk: Linux heeft de afgelopen dertig jaar veel terreinen veroverd en domineert sommige zelfs. Volgens de kernelontw­ikkelaars is dat mede te danken aan de keuze om kernel- en drivercode bij elkaar te houden en het te doen zonder een stabiele stuurprogr­amma-API.

Newspapers in Dutch

Newspapers from Netherlands