>Вы и ffirefox меня практически убедили. Примеры действительно жутковатые. Надо что-то менять.
>А вот меня Documentation/stable_api_nonsense.txt (о котором я узнал из комментария от Michael Shigorin) убедил в обратном: если кому-то надо, чтобы его устройство поддерживалось всеми выпускающимися ядрами, то пусть свой драйвер лицензирует под GPL и добавляет в main kernel tree. А если устройство популярное, то достаточно открыть его спецификации, и кто-нибудь сам напишет для устройства драйвер.
Если указанный файл документации читать лень, то вот краткое содержание (почему API меняется):
Linux не стоит на месте. Исправляются баги, добавляются улучшения, которые требуют новое API (изменение имён функций, формата передаваемых аргументов). Если новое API добавлять, не удаляя старое, то 1) кто его будет обслуживать? (лишняя работа для разработчиков, которые работают в своё свободное время) 2) для исправления некоторых уязвимостей требуется удалять старое API, 3) при удалении старых интерфейсов размер ядра держится как можно меньше, 4) неиспользуемые никем интерфейсы регулярно удаляются, так как если их не используют, то они остаются плохо протестированными.
Из прочитанного, правда, я так и не понял, удаляются ли ВСЕ старые интерфейсы, или только те, для которых вышеперечисленные пункты имеют значение.
Невозможность же держать ABI неизменными -- следует хотя бы из-за того, что компилируя ядро разными компиляторами, получаются разные результаты (в этих самых бинарных интерфейсах).