Кстати, про опенсорс

Кинули ссылку на http://gitterdimmerung.blogspot.com/2009/04/yep-some-apis-changed.html.

Заголовок (Yep. Some APIs changed) не случаен. Я столкнулся с этой душевной фразочкой на одном из форумов, когда попал в ситуацию, описанную в этом посте, когда в ТП повалились гневные письма клиентов, сообщающих о слете и невозможности перекомпилляции модулей при обновлении ядра. Делать что то было надо – терялись деньги. Месячный геморрой окончился моей победой, но осадочек остался.

Какой дорогой идет нынешний опенсорс (в основном – разрабатываемое “всем миром” Free Software)? У [info]belnetmon видел обсуждение аналогичной проблемы – нынешние Линуксы не совместимы по бинарникам, при обновлении каких-либо библиотек зачастую приходится перекомпилировать программы (особенно “нестандартные”, не лежащие в популярных репозиториях), не говоря уже про обновления ядра – все потому, что Торвальдс (или Бог-Питух, кто там разберет) говорил: “В динамично развивающемся проекте не может быть стабильного ABI”.

Не знаю, что там говорил Торвальдс, а вот в нормальных Юниксах этот этап прошли еще во времена System V Release 4, в которой стандартизировали ABI – по той простой причине, что в maintenance cost входят и затраты на поддержание работоспособности “хитрого корпоративного софта” (обычно – кривого поделия на коленке), и было бы очень хорошо, если бы этот софт нормально запускался после обновления системы.

Хочу еще заметить, что за поломанную совместимость в современных условиях быстро бьют по рукам – вспомним ту же Windows Vista. В середине 2000-х Microsoft пообещала целую кучу новых “трехбуквенных технологий” – от .NET до ASP, сдобрила их анонсом заменителя старого доброго WinAPI (Windows Forms), плюс заявила о том, что все это будет в Vista, чем напугала многих вплоть до состояния “вендекапец”. Слава богу, что все эти обещания так и остались обещаниями (кстати, давно хотел написать про “обещания” в разработке ПО, вот еще одна “зарубка”), разве что в Vista реализовали более “правильный” механизм контроля пользовательских разрешений. Естественно, немалая часть софта, рассчитывающая на возможность беспрепятственной записи в Program Files и тому подобные не очень одобрявшиеся возможности, просто отказалась работать. Надеюсь, про солидарность общественного мнения в отношении Vista напоминать не надо?

Конечно, “поломанная совместимость” после обновления – черта не только нынешнего “Free software”, но тут она проявляется особенно ярко. В любой коммерческой разработке эпохальные решения вроде “теперь мы изменим поведение вот этой функции и вот этого недокументированного параметра” должны быть как-то обоснованы, а кое-где даже предпочтают сделать из “бага” фичу, лишь бы работало старое ПО. В опенсорсе такие решения могут принимать “фанатики”, для которых такие абстрактные вещи, как красота кода, могут оказаться важнее, чем совместимость с ранее написанными программами.

2 комментария

  1. [info]golergka пишет:

    У Joel, который on software, была просто прекрасная история про Windows 98 и Simcity на эту тему.