Про библиотеки компонентов

Wooden assВ отличие от большинства встречающихся на интернет-помойке библиотек, JCL и JVCL были достаточно стабильными и функциональными во времена своей молодости. У нас эта крупная связка используется ради нескольких компонентов начиная еще с версий 1.х, выпущенных сообществом в начале 2000-х годов.

Вчера после 7 (!) лет понадобилось обновить библиотеки. Заходим на сайт, оттуда переадресовывают на sourcefoge, где находим официальный выпуск JCL 2.7, датированный сентябрем 2015 года. Ну, неважно, юникод поддерживается, большего и не нужно.

Скачиваем, распаковываем, запускам компиляцию... облом. Вылезает банальная ошибка конфликта имени параметра функции с именем свойства внутри оператора with, будь он неладен, не к ночи помянут, и да не поминайте всуе используйте без нужды. Ошибку исправить несложно, переименовав параметр, однако "осадочек остался".

Ради интереса задаю на форуме "типа поддержки" вопрос в духе, парни, а как можно "зарелизить" исходники, которые не собираются под любой версией компилятора? Ответ не замедлил последовать: "Мужик, возьми новый файл из текущей версии на гитхабе".

Вряд ли я смогу объяснить ответившему, что брать текущую версию можно лишь в целях её дальнейшей разработки, а не для использования в другом продукте. Интересно, своим конечным клиентам они тоже ежедневно предлагают новую версию?

Поскольку этот опыт уже не первый за последние годы, то наметился мощный тренд превращения открытых библиотек в "говнокашу", где сегодня не работает одно, завтра ошибку исправили, зато влили изменения и перестало работать другое. В проектах с финансированием ситуация лучше, но таких проектов не слишком много, а отличия от покупки кода и поддержки у нормального поставщика не столь значительны.

С другой стороны во многих открытых, но по сути индивидуальных проектах (навскидку, я назову SM Components Михаила Школьника или ICS Франсуа Пиетта -- обе библиотеки нами используются) таких проблем нет. Продукты существуют десятилетия, при этом их качество не снижается!

Однако и в финансируемых проектах не все хорошо. Я уже писал про угробивших Unity социопатах из Убунты, доведших Майкла Шаттлворта до ручки. А недавно Фейсбук объявил, что отказывается от PHP и переходит на свою платформу, которая по сути -- допиленный PHP5. Потому что новый PHP7 оказался плохо совместимым со старым. Порезвились студенты, понаделали "фич". Итог -- PHP остался без одного из главных контрибуторов и поддержантов.

Этот сайт крутится на движке Drupal, благополучно пережив обновления версий 5, 6 и 7. А вот 8-ю вряд ли переживет: её авторы решили не поддерживать совместимость и не предоставлять средств обновления.