User-space API's voor programma's om aan te roepen. Hier wordt heel veel moeite in gestopt om ze stabiel te houden. Je kunt gerust stellen dat ze daar religieus in zijn.
Dat valt helaas tegen. Het komt toch vrij vaak voor dat je meerdere versies van een library naast elkaar moet hebben,vaak met cryptische symlinks (.so.2 enzo), omdat ze onderling niet 100% compatible zijn.
Met code is dat nog veel lastiger, want bij header files heb je niet meerdere varianten naast elkaar. Daarom lukt het soms niet om een app te bouwen tegen de versie van een library die je op je system hebt, en moet je een oudere/nieuwere versie van die lib installeren (wat dan weer een waterval-effect kan hebben op andere apps die daar gebruik van maken).
Men gaat er vanuit dat de source code van de driver beschikbaar is en dat deze, bij een nieuwe kernel versie, gewoon even opnieuw gecompileerd kan worden.
Dit is niets nieuws. Het is fundamenteel aan het ontwerp/filosofie van Linux.
Dat was leuk toen het een hobby-project was. Maar inmiddels zijn er miljoenen mensen met een Android-telefoon van tientallen verschillende fabrikanten met honderden verschillende combinaties van hardware, en het is duidelijk dat linux hier hard op stukloopt.
Ook op de desktop is het een groot struikelblok, zeker voor iets als bv gaming, waarbij de closed-source drivers van nVidia/AMD de enige realistische optie zijn voor de betere games.
De problemen zijn pas ontstaan toen er fabrikanten van hardware opdoken die wel drivers wilden leveren, maar pertinent geen source code.
Dat is wederom het paard achter de wagen spannen.
Drivers voor (consumenten-)hardware waren vrijwel altijd closed-source, zelfs al voordat linux bestond. MS-DOS, Windows, Mac, Atari, Amiga... noem maar op, allemaal closed-source systemen met closed-source drivers. De reden daarvoor was ook duidelijk: als fabrikant wil/moet je je IP zoveel mogelijk beschermen om je concurrentiepositie vast te kunnen houden.
Dit was dus al een fact-of-life. De 'spelregels' waren al geschreven. Dan kan de linux-wereld ervoor kiezen om niet compatible te zijn met de gevestigde orde, maar dan verf je jezelf wel gauw in een hoekje.
Het is dus WEL de schuld van linux, namelijk, het gevolg van hun keuze, wetende dat de wereld niet op die manier werkt.
Oh ja, de kernel heeft maar 1 API.
Het is niet de bedoeling dat apps direct tegen de de kernel aan praten. Daarvoor zijn er dus libraries user-land APIs zoals de ANSI C API, POSIX, BSD sockets en dergelijke. Apps praten daartegen, en die libraries praten dan weer tegen de kernel.
[Reactie gewijzigd door Anoniem: 471038 op 25 juli 2024 08:44]