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

в 10:00, , рубрики: client URL, curl, CVE-2022-43552, HttpGet, libcurl, open source, ruvds_статьи, urlget, Блог компании RUVDS.com, Даниэль Стенберг, мейнтейнеры, поддержка опенсорса, Программирование, Софт
Мейнтейнер на всю жизнь. Даниэль Стенберг, автор curl - 1

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

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

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

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

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

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

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

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

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

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

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

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

Сам Стенберг считает это не своей особой заслугой, а скорее выигрышем в лотерею. Но его дальнейшая четвертьвековая приверженность проекту и общему делу опенсорса всё-таки заслуживает уважения. И он против того, чтобы его называли 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 обнаружил на экране своего автомобиля электронную почту Даниэля Стенберга и прислал ему недоумённое письмо: почему в моём автомобиле написано ваше имя?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js