В наше время принято менять работу и занятия раз в несколько лет. Для сохранения душевного здоровья. Мало найдётся людей, которые работают над одним проектом всю жизнь, это слишком трудно с психологической точки зрения. Но такие люди есть. А некоторые вызывают настоящее уважение. Например, Даниэль Стенберг, автор программы curl, которую он написал 25 лет назад и поддерживает до сих пор.
▍ Концепция свободного кода
По сути, Стенберг — человек одной программы. Нам мало что известно о других его проектах или юношеских разработках.
Как и многие сверстники, Даниэль познакомился с компьютерами в средней школе, когда в середине 80-х другу купили Commodore 64. Ребята покупали много компьютерных журналов, по которым учились программировать. В те времена код программ (например, игр) печатали прямо в журнале. Несколько страниц кода, который нужно было вручную и без ошибок ввести в компьютер, а потом запустить.
В 1985 году парень разжился собственным компьютером и начал программировать как маньяк, изучил ассемблер и присоединился к демосцене. В общем, это пример ещё одного талантливого программиста-самоучки, который полностью погрузился в свою страсть, не имея формального образования. После службы в шведской армии в 1991 году молодой человек решил не поступать в колледж, а нашёл первую работу, связанную с обслуживанием компьютерной техники в IBM (конфигурация мейнфреймов перед отправкой заказчикам). Там он познакомился и хорошо изучил Unix и экосистему опенсорсных инструментов. А в свободное время начал программировать… что и делает до сих пор.
Даниэль готовил к поставке для клиентов мейнфреймы и магнитные ленты. Но стало понятно, что весь софт с магнитных лент можно скопировать, скомпилировать, посмотреть, как он работает, и изменить на своё усмотрение. Это была концепция «свободного кода» (термин «опенсорс» появился позже).
После 1993 года все официальные работы Даниэля были связаны непосредственно с программированием, а знания консольных утилит пригодились в дальнейшем. Это были как раз годы бурного распространения интернета среди энтузиастов, годы первых BBS и т. д. Тогда же формировалось сообщество энтузиастов опенсорса.
В 1996 году Даниэль Стенберг нашёл бразильского коллегу Рафаэля Сагула (Rafael Sagula), который написал консольную утилиту HttpGet
(простенькая программка в 100 строчек кода). Даниэль взял её как вспомогательный инструмент к IRC-боту для автоматического расчёта курсов конвертации валют (шведские кроны в доллары). Курсы нужно было скачивать из интернета. Дальнейшим развитием программы он уже занимался самостоятельно. С каждой версией утилита расширяла функциональность: сначала появилась поддержка HTTP-прокси, потом протокола Gopher и FTP и так далее. В 1997 году она переименовалась в urlget
, а 20 марта 1998 года впервые вышла версия под названием curl
, сокращение от «client URL». Размер программы к тому времени вырос аж до 2200 строк кода.
К настоящему времени curl
превратился в мощный универсальный инструмент, позволяющий взаимодействовать по множеству различных протоколов с синтаксисом URL.
Сам Стенберг считает это не своей особой заслугой, а скорее выигрышем в лотерею. Но его дальнейшая четвертьвековая приверженность проекту и общему делу опенсорса всё-таки заслуживает уважения. И он против того, чтобы его называли Mr. Curl, потому что свой вклад внесли уже тысячи контрибьюторов. Если посмотреть статистику, за всю историю Даниэлю принадлежит примерно 57% из общего числа коммитов, так что его роль по-прежнему важна, тем более в последние несколько лет эта роль стала его основной оплачиваемой работой.
Доходы на жизнь он получает оказанием коммерческих услуг через компанию WolfSSL (которая платит ему зарплату). Среди этих услуг:
- настройка curl;
- перенос на новые операционные системы;
- разработка функций;
- сопровождение патчей;
- исправление ошибок;
- апстриминг;
- обучение;
- обзоры кода использования API libcurl;
- сканирование безопасности при использовании curl.
Есть ещё несколько официальных спонсоров.
Конечно, всё это делается и в рамках стандартной опенсорсной разработки, но если компания желает заплатить деньги мейнтейнерам, то это только приветствуется.
Статистика curl
на 2022 год:
- Публичные релизы: 206.
- Параметры командной строки: 245.
- Опции
curl_easy_setopt()
: 295. - Публичные функции в
libcurl
: 86. - Контрибьюторы: 2601.
Сайт curl.se обслуживает 16,5 ТБ трафика в месяц, выполняя 462 млн запросов, а официальный образ для Docker был запрошен более четырёх миллиардов раз.
В подкасте Readme Даниэль говорит, что до сих пор с удовольствием занимается своим детищем, уделяет ему всё время и не хочет мечтать ни о чём ином.
▍ Четверть века на службе опенсорса
Программе уже 25 лет, но работы по поддержке curl
не становится меньше. Буквально в декабре 2022 года развернулась настоящая драма по поводу минорной уязвимости use-after-free в Windows-версии curl.exe
. Хотя эту уязвимость практически невозможно использовать на практике, кураторы базы уязвимостей National Vulnerability Database (NVD) присвоили ей номер CVE-2022-43552 и искусственно подняли её уровень до «средней» опасности, что вызвало небольшую панику у рядовых пользователей Windows, доверяющих «сканерам безопасности» типа Nessus, который начал детектировать эту «угрозу» в феврале 2023 года.
В итоге простые пользователи Windows 10/11 стали массово удалять curl.exe
из папки SYSTEM32
, что оказалось крайне плохой идеей, поскольку это теперь часть операционной системы. Windows 10 c декабря 2017 года включила свою версию curl.exe
в дистрибутив и полагается на неё для выполнения ряда системных операций. Но пользователи просто скачивали с официального сайта последний билд curl.exe и заменяли файл в системной SYSTEM32
вместо официального апгрейда через Windows Update. А само официальное обновление потом не функционировало, если удалить файл или вручную заменить его на другую версию.
История доставила немало головной боли Даниэлю, потому что тысячи людей обращались к нему за помощью и даже с претензиями из-за того антивирусного сканера и за консультациями по поводу процедуры обновления. Он всем терпеливо объяснял, что поставщиком файла curl.exe
под Windows является компания Microsoft, и по всем вопросам следует обращаться туда.
Это немного напоминает забавный инцидент 2018 года, когда владелец Toyota Verso 2015 обнаружил на экране своего автомобиля электронную почту Даниэля Стенберга и прислал ему недоумённое письмо: почему в моём автомобиле написано ваше имя?
VW Sharan
Разумеется, curl
входит в комплект поставки Linux со ссылкой на автора по условиям лицензии. Но это не значит, что Даниэль несёт ответственность за работу Toyota Verso, как и 100 миллионов других автомобилей и других устройств/приложений: телевизоров, игровых приставок, камер, часов, смартфонов iOS/Android и проч. Это миллиарды устройств, где работает curl, libcurl или производные форки с копирайтом автора.
Garmin Forerunner 245
Телевизор LG
Электропоезд городских линий S-Bahn (Германия)
В общем, поддержка такого проекта — это работа на всю жизнь. По оценкам самого автора, сейчас в мире насчитывается около 10 миллиардов установок curl (на самом деле из них 9,8 млрд установок библиотеки libcurl). Программа работает на 24 архитектурах CPU и 89 операционных системах (и уже на двух планетах).
Такое большое количество установок частично объясняется тем, что отдельные билды libcurl
поставляются в комплекте с разными приложениями: YouTube, Skype, Instagram, Spotify, Netflix, GTA V, Fortnite и так далее, поэтому на обычном телефоне или компьютере будет сразу несколько копий curl
.
▍ Мейнтейнер — неоплачиваемая работа
Учитывая такую распространённость опенсорсных инструментов, коммерческим компаниям и корпорациям желательно спонсировать проекты, которыми они пользуются. Хотя бы несколько процентов от своего бюджета на канцелярские товары — это уже более чем достаточно, чтобы поддерживать важнейшую цифровую инфраструктуру. Например, калькулятор вроде thanks.dev автоматически распределит вознаграждения по вашему дереву зависимостей.
Тысячи людей практически безвозмездно трудятся на благо всего человечества, а плодами их труда пользуются все. В этом сила опенсорса, но отсюда и отсутствие стабильных финансовых моделей, которые подходят для всех участников. Проект curl
нашёл своих спонсоров, а также вариант коммерческого заработка для мейнтейнеров, но в мире Open Source это скорее исключение, чем правило.
Иногда закрадывается несерьёзная мысль, что если бы человечество выделяло на науку и технологии столько денег, сколько на косметику и средства от облысения, то мы уже, наверное, вышли на уровень цивилизации I типа и колонизировали ближайшие планеты.
Пол-лимона подарков от RUVDS. Отвечай на вопросы и получай призы 🍋
Автор: Анатолий Ализар