- PVSM.RU - https://www.pvsm.ru -

Мейнтейнер на всю жизнь. Даниэль Стенберг, автор curl

Мейнтейнер на всю жизнь. Даниэль Стенберг, автор curl - 1 [1]

В наше время принято менять работу и занятия раз в несколько лет. Для сохранения душевного здоровья. Мало найдётся людей, которые работают над одним проектом всю жизнь, это слишком трудно с психологической точки зрения. Но такие люди есть. А некоторые вызывают настоящее уважение. Например, Даниэль Стенберг [2], автор программы curl [3], которую он написал 25 лет назад [4] и поддерживает до сих пор.

▍ Концепция свободного кода

По сути, Стенберг — человек одной программы. Нам мало что известно о других его проектах или юношеских разработках.

Как и многие сверстники, Даниэль познакомился с компьютерами в средней школе, когда в середине 80-х другу купили Commodore 64. Ребята покупали много компьютерных журналов, по которым учились программировать. В те времена код программ (например, игр) печатали прямо в журнале. Несколько страниц кода, который нужно было вручную и без ошибок ввести в компьютер, а потом запустить.

В 1985 году парень разжился собственным компьютером и начал программировать как маньяк, изучил ассемблер и присоединился к демосцене. В общем, это пример ещё одного талантливого программиста-самоучки, который полностью погрузился в свою страсть, не имея формального образования. После службы в шведской армии в 1991 году молодой человек решил не поступать в колледж, а нашёл первую работу, связанную с обслуживанием компьютерной техники в IBM (конфигурация мейнфреймов перед отправкой заказчикам). Там он познакомился и хорошо изучил Unix и экосистему опенсорсных инструментов. А в свободное время начал программировать… что и делает до сих пор.

Мейнтейнер на всю жизнь. Даниэль Стенберг, автор curl - 2

Даниэль готовил к поставке для клиентов мейнфреймы и магнитные ленты. Но стало понятно, что весь софт с магнитных лент можно скопировать, скомпилировать, посмотреть, как он работает, и изменить на своё усмотрение. Это была концепция «свободного кода» (термин «опенсорс» появился позже).

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

В 1996 году Даниэль Стенберг нашёл бразильского коллегу Рафаэля Сагула (Rafael Sagula), который написал консольную утилиту HttpGet (простенькая программка в 100 строчек кода). Даниэль взял её как вспомогательный инструмент к IRC-боту для автоматического расчёта курсов конвертации валют [5] (шведские кроны в доллары). Курсы нужно было скачивать из интернета. Дальнейшим развитием программы он уже занимался самостоятельно. С каждой версией утилита расширяла функциональность: сначала появилась поддержка HTTP-прокси, потом протокола Gopher и FTP и так далее. В 1997 году она переименовалась в urlget, а 20 марта 1998 года впервые вышла версия под названием curl, сокращение от «client URL». Размер программы к тому времени вырос аж до 2200 строк кода.

К настоящему времени curl превратился в мощный универсальный инструмент, позволяющий взаимодействовать по множеству различных протоколов с синтаксисом URL.

Мейнтейнер на всю жизнь. Даниэль Стенберг, автор curl - 3

Мейнтейнер на всю жизнь. Даниэль Стенберг, автор curl - 4

Сам Стенберг считает это не своей особой заслугой, а скорее выигрышем в лотерею. Но его дальнейшая четвертьвековая приверженность проекту и общему делу опенсорса всё-таки заслуживает уважения. И он против того, чтобы его называли Mr. Curl, потому что свой вклад внесли уже тысячи контрибьюторов. Если посмотреть статистику, за всю историю Даниэлю принадлежит примерно 57% из общего числа коммитов, так что его роль по-прежнему важна, тем более в последние несколько лет эта роль стала его основной оплачиваемой работой.

Доходы на жизнь он получает оказанием коммерческих услуг через компанию WolfSSL [6] (которая платит ему зарплату). Среди этих услуг:

  • настройка curl;
  • перенос на новые операционные системы;
  • разработка функций;
  • сопровождение патчей;
  • исправление ошибок;
  • апстриминг;
  • обучение;
  • обзоры кода использования API libcurl;
  • сканирование безопасности при использовании curl.

Есть ещё несколько официальных спонсоров [7].

Конечно, всё это делается и в рамках стандартной опенсорсной разработки, но если компания желает заплатить деньги мейнтейнерам, то это только приветствуется.

Статистика [5] curl на 2022 год:

  • Публичные релизы: 206.
  • Параметры командной строки: 245.
  • Опции curl_easy_setopt(): 295.
  • Публичные функции в libcurl: 86.
  • Контрибьюторы: 2601.

Сайт curl.se обслуживает 16,5 ТБ трафика в месяц, выполняя 462 млн запросов, а официальный образ для Docker был запрошен более четырёх миллиардов раз.

В подкасте Readme [8] Даниэль говорит, что до сих пор с удовольствием занимается своим детищем, уделяет ему всё время и не хочет мечтать ни о чём ином.

▍ Четверть века на службе опенсорса

Программе уже 25 лет, но работы по поддержке curl не становится меньше. Буквально в декабре 2022 года развернулась настоящая драма по поводу минорной уязвимости use-after-free в Windows-версии curl.exe. Хотя эту уязвимость практически невозможно использовать на практике, кураторы базы уязвимостей National Vulnerability Database (NVD) присвоили ей номер CVE-2022-43552 [9] и искусственно подняли её уровень до «средней» опасности, что вызвало небольшую панику у рядовых пользователей Windows, доверяющих «сканерам безопасности» типа Nessus, который начал детектировать эту «угрозу» в феврале 2023 года [10].

В итоге простые пользователи Windows 10/11 стали массово удалять [11] curl.exe из папки SYSTEM32, что оказалось крайне плохой идеей, поскольку это теперь часть операционной системы. Windows 10 c декабря 2017 года включила свою версию curl.exe [12] в дистрибутив и полагается на неё для выполнения ряда системных операций. Но пользователи просто скачивали с официального сайта последний билд curl.exe [13] и заменяли файл в системной SYSTEM32 вместо официального апгрейда [14] через Windows Update. А само официальное обновление потом не функционировало, если удалить файл или вручную заменить его на другую версию.

История доставила немало головной боли Даниэлю, потому что тысячи людей обращались к нему за помощью и даже с претензиями из-за того антивирусного сканера и за консультациями по поводу процедуры обновления. Он всем терпеливо объяснял, что поставщиком файла curl.exe под Windows является компания Microsoft, и по всем вопросам следует обращаться туда.

Это немного напоминает забавный инцидент 2018 года, когда владелец Toyota Verso 2015 обнаружил на экране своего автомобиля электронную почту Даниэля Стенберга и прислал ему недоумённое письмо [15]: почему в моём автомобиле написано ваше имя?

Мейнтейнер на всю жизнь. Даниэль Стенберг, автор curl - 5
VW Sharan

Разумеется, curl входит в комплект поставки Linux со ссылкой на автора по условиям лицензии. Но это не значит, что Даниэль несёт ответственность за работу Toyota Verso, как и 100 миллионов других автомобилей [16] и других устройств/приложений: телевизоров, игровых приставок, камер, часов, смартфонов iOS/Android и проч. Это миллиарды устройств, где работает curl, libcurl или производные форки с копирайтом автора.

Мейнтейнер на всю жизнь. Даниэль Стенберг, автор curl - 6
Garmin Forerunner 245

Мейнтейнер на всю жизнь. Даниэль Стенберг, автор curl - 7
Телевизор LG

Мейнтейнер на всю жизнь. Даниэль Стенберг, автор curl - 8
Электропоезд городских линий S-Bahn (Германия)

В общем, поддержка такого проекта — это работа на всю жизнь. По оценкам самого автора, сейчас в мире насчитывается около 10 миллиардов установок curl (на самом деле из них 9,8 млрд установок библиотеки libcurl). Программа работает на 24 архитектурах CPU и 89 операционных системах [17] (и уже на двух планетах [18]).

Мейнтейнер на всю жизнь. Даниэль Стенберг, автор curl - 9

Мейнтейнер на всю жизнь. Даниэль Стенберг, автор curl - 10

Такое большое количество установок частично объясняется тем, что отдельные билды libcurl поставляются в комплекте с разными приложениями: YouTube, Skype, Instagram, Spotify, Netflix, GTA V, Fortnite и так далее, поэтому на обычном телефоне или компьютере будет сразу несколько копий curl.

▍ Мейнтейнер — неоплачиваемая работа

Учитывая такую распространённость опенсорсных инструментов, коммерческим компаниям и корпорациям желательно спонсировать проекты, которыми они пользуются. Хотя бы несколько процентов от своего бюджета на канцелярские товары — это уже более чем достаточно, чтобы поддерживать важнейшую цифровую инфраструктуру [19]. Например, калькулятор вроде thanks.dev [20] автоматически распределит вознаграждения по вашему дереву зависимостей.

Тысячи людей практически безвозмездно трудятся на благо всего человечества, а плодами их труда пользуются все. В этом сила опенсорса, но отсюда и отсутствие стабильных финансовых моделей, которые подходят для всех участников. Проект curl нашёл своих спонсоров, а также вариант коммерческого заработка [6] для мейнтейнеров, но в мире Open Source это скорее исключение, чем правило [21].

Мейнтейнер на всю жизнь. Даниэль Стенберг, автор curl - 11

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

Пол-лимона подарков от RUVDS. Отвечай на вопросы и получай призы 🍋 [22]

Автор: Анатолий Ализар

Источник [23]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/programmirovanie/384591

Ссылки в тексте:

[1] Image: https://habr.com/ru/companies/ruvds/articles/733002/

[2] Даниэль Стенберг: https://daniel.haxx.se/

[3] curl: https://curl.se/

[4] 25 лет назад: https://github.com/curl/curl/discussions/10465

[5] IRC-боту для автоматического расчёта курсов конвертации валют: https://curl.se/docs/history.html

[6] WolfSSL: https://curl.se/support.html

[7] официальных спонсоров: https://curl.se/sponsors.html

[8] подкасте Readme: https://github.com/readme/podcast/curl-25-years

[9] CVE-2022-43552: https://curl.se/docs/CVE-2022-43552.html

[10] начал детектировать эту «угрозу» в феврале 2023 года: https://www.tenable.com/plugins/nessus/171859/changelog

[11] стали массово удалять: https://daniel.haxx.se/blog/2023/04/24/deleting-system32curl-exe/

[12] включила свою версию curl.exe: https://daniel.haxx.se/blog/2018/01/13/microsoft-curls-too/

[13] последний билд curl.exe: https://curl.se/windows/

[14] официального апгрейда: https://support.microsoft.com/en-gb/topic/april-11-2023-kb5025221-os-builds-19042-2846-19044-2846-and-19045-2846-b00c3356-baac-4a41-8342-7f97ec83445a

[15] прислал ему недоумённое письмо: https://daniel.haxx.se/blog/2018/02/16/why-is-your-email-in-my-car/

[16] 100 миллионов других автомобилей: https://daniel.haxx.se/blog/2018/08/12/a-hundred-million-cars-run-curl/

[17] на 24 архитектурах CPU и 89 операционных системах: https://daniel.haxx.se/blog/2022/11/25/89-operating-systems/

[18] на двух планетах: https://daniel.haxx.se/blog/2021/04/19/mars-2020-helicopter-contributor/

[19] важнейшую цифровую инфраструктуру: https://www.fordfoundation.org/media/2976/roads-and-bridges-the-unseen-labor-behind-our-digital-infrastructure.pdf

[20] thanks.dev: https://thanks.dev/

[21] скорее исключение, чем правило: https://words.filippo.io/full-time-maintainer/

[22] Пол-лимона подарков от RUVDS. Отвечай на вопросы и получай призы 🍋: https://habr.com/ru/specials/731732/

[23] Источник: https://habr.com/ru/companies/ruvds/articles/733002/?utm_source=habrahabr&utm_medium=rss&utm_campaign=733002