Автор: Илья Щуров
Сторонники свободного ПО любят обсуждать открытые стандарты.
Хорош ли стандарт А? Насколько правильно его реализует программа Б? Почему до сих пор никто не реализовал замечательный стандарт В, а все пользуются неполными спецификациями, полученными в ходе реверс-инжиниринга продукции проприетарного разработчика Г, или изобретают велосипеды Д, Е, Ж?[Мы довольно подробно писали о процессе стандартизации форматов офисных документов, затрагивая и более общие вопросы ("КТ" #723).] Впрочем, это всё частности - а есть и более общие вопросы. Что делать, если очень распространенное приложение нарушает стандарт или расширяет его недопустимым образом, реализует новые функции в обход спецификаций? Соблюдать стандарт, теряя возможность эффективного взаимодействия с этим приложением, а значит - и собственную привлекательность для аудитории - или записаться в соучастники нарушения во имя пользователя и для блага пользователя?
Или, например, - как можно вообще что-то стандартизировать, если мир меняется столь быстро, что любой стандарт после длительной процедуры разработки и согласования между всеми заинтересованными сторонами выйдет уже устаревшим и станет не средством ускорения прогресса путем отказа от "изобретения велосипедов", а, напротив, тормозом на долгие-долгие годы?
Можем ли мы предложить процесс стандартизации, который будет столь же естественным и быстрым, как развитие самих технологий?
Чтобы ответить на этот вопрос, хочется найти какую-то аналогию стандарта в динамичной среде. И аналогия находится. С одним "открытым стандартом" каждый из нас сталкивается ежедневно, обычно с двух-трехлетнего возраста, а человечество как целое пользуется им многие десятки (если не сотни) тысяч лет.
Это язык. Протокол, обеспечивающий "интероперабельность", возможность передачи информации между триллионами людей - как живущими сейчас, так и жившими когда-то. Способ описания всего окружающего нас переменчивого мира, ключевой механизм мышления и, как следствие, важный фактор изменения этого самого мира.
Реальность меняется. Появляются новые сущности, которых раньше просто не было или о которых никто не думал. Язык вынужден догонять: придумывать множества новых названий, давать старым словам новый смысл - и, наоборот, очищать себя от устаревших слов и значений. Это критически важный процесс - находясь в плену неудачной терминологии, легко сделать неверные выводы о новых сущностях, приписывая им старые свойства. И наоборот - изменив название, можно выдать старое за новое - о чем прекрасно знают наши коллеги из маркетинговых и PR-отделов. Или, введя новое слово, - изменить мир.
Стандарт, которым мы все пользуемся (иначе не понимали бы друг друга) и которому никто не следует на 100% (даже наш литредактор), стихийно возникший и стихийно развивающийся - но записанный в виде орфографических словарей, грамматических справочников и официальных правил, обновляющихся пару раз за столетие - но не слишком тормозящих наше развитие.
Стандарт, над которым никто не обладает монопольной властью и в развитии которого участвует каждый из нас.
Мы пока не можем заставить наши программы так же легко адаптироваться к развитию протоколов и форматов файлов, как адаптируемся к изменениям языковой среды. Но может быть, когда-нибудь мы перестанем задумываться о появлении новой версии, скажем, HTML - как сейчас не думаем о том, что в наш язык вошло неизвестное ранее слово.