Технологии
Никита Логинов

«Мой путь к успеху — не строить планов и позволить людям работать за тебя»: главное из интервью с создателем Linux

Как Линус Торвальдс 30 лет назад создал систему, ставшую основой современного интернета.

Линус Торвальдс, создатель Linux Фото Washington Post

В 1991 году финский студент Линус Торвальдс выложил в интернет исходный код самодельной операционной системы. Эту систему он создавал как более удобную замену системе Minix, и начал с эмулятора терминала — программы, в которую можно вводить текстовые команды. Торвальдс считал свою систему «простым хобби», которое не собирается превращаться во что-то «большое и профессиональное».

Сейчас, почти тридцать лет спустя, операционная система Linux господствует на встроенных системах, серверах и суперкомпьютерах. Сам Линус Торвальдс стал гражданином США и одним из самых влиятельных людей в области IT. Он продолжает руководить разработкой Linux и другого своего успешного продукта — системы управления версиями Git.

В преддверии тридцатилетия Linux топ-менеджер компании Tag1 Джереми Эндрюс расспросил Линуса Торвальдса о прошлом и будущем Linux, о его жизни в Финляндии и США, о дальнейших планах. TJ собрал самые интересные моменты интервью, которое доступно в двух частях на сайте компании.

Когда вы поняли, что Linux стал чем-то большим, чем «просто хобби»?

Я понял это довольно быстро, в конце 1991 года, и уж точно — к началу 1992 года. Может, это звучит странно и смешно, потому что у Linux тогда было всего несколько сотен пользователей. Но для меня переломный момент наступил, когда я увидел, что люди действительно используют мою систему и заинтересованы в ней. Они стали присылать свои патчи (изменения кода), и с той поры Linux зажил своей жизнью.

Изначально я делал Linux так, чтобы он был удобен лично мне. Взять, например, лицензию. Сначала она гласила что-то вроде «вы можете распространять исходный код системы, но не за деньги». Просто потому, что Unix был слишком дорогим для меня, тогдашнего студента, а я хотел, чтобы люди могли свободно получить мою систему и повозиться с ней.

Позже я познакомился с людьми, которые хотели бы распространять Linux среди своих знакомых и друзей, но при этом хотя бы отбить затраты на дискеты. И я понял, что важнее правило «вы можете распространять исходный код системы», чем «не за деньги». Поэтому я сменил лицензию на GPL 2.0, которая не запрещает зарабатывать деньги на программах с открытым кодом.

По сравнению с тем, что было в самом начале, всё остальное видится мне второстепенным. Да, потом были крупные события вроде прихода IBM, портирования Oracle DB, выхода Red Hat на биржу, взлёта популярности Android, который основан на ядре Linux. Но для меня всё это было уже не так значимо, как осознание факта, что люди, которых я даже не знаю, используют Linux.

Компания Red Hat — крупнейший производитель ПО на базе Linux, недавно была поглощена IBM Фото Red Hat

У вас бывают сожаления насчёт выбранной лицензии или того, что другие люди и компании зарабатывают столько денег на том, что вы создали?

Нет, ничего подобного. Главное — у меня всё хорошо. Я не безумно богат, но мне хорошо платят, и при этом я делаю то, что мне нравится. Свой рабочий график я формирую сам. В общем, никаких страданий.

И что не менее важно — я полностью уверен, что лицензия сыграла важную роль в успехе Linux, да и Git тоже. По-моему, причастные к проекту становятся немного счастливее, когда знают, что все они равны между собой, и что лицензия никого не ставит в особое положение.

Но двойное лицензирование, когда программу можно использовать и свободно, и в коммерческих целях, создаёт определённые трудности. Часть сообщества, которая занимает сторону открытого кода, ощущает себя «вторым классом». Кроме того, двойная лицензия порождает много возни с документами. Всё это вызывает трения внутри проекта.

С другой стороны, я видел достаточно проектов под лицензиями вроде BSD и MIT, которые фрагментировались, как только вырастали до какой-то коммерческой значимости. Компании просто закрывали код своих частей от других участников проекта.

Так что GPL 2.0, по-моему, даёт идеальный баланс между равноправием и коммерцией. Вы получаете столько, сколько вкладываете. Да, вы можете «выжимать» проект, будучи простым пользователем, и это нормально. Но так вы не сможете его контролировать. Если у вас какие-то особые требования, единственный способ удовлетворить их — участвовать в проекте.

То, что каждый может создать свою ветку, многих беспокоило, но я думаю, что это не слабость, а сила Linux. Кажется странным, но именно это позволяет Linux избегать фрагментации. Мы всегда считали создание других веток Linux чем-то естественным — и столь же естественным считаем брать хороший код из этих веток, чтобы включить его в нашу, основную ветку.

Как проходит ваш обычный день? Сколько времени вы тратите на написание кода? Как совмещаете личную жизнь с разработкой Linux?

Я пишу очень мало кода, и уже давно. Код я пишу, как правило, для того, чтобы наглядно показать решение какой-либо проблемы во время обсуждения разработки Linux. То есть, большая часть моего кода это что-то вроде «посмотрите, как насчёт того, чтобы сделать это вот так». В абстрактных технических дискуссиях очень легко увязнуть, поэтому лучший способ решить проблему — предложить конкретное решение в виде фрагмента кода.

Вся моя настоящая работа — это чтение и написание электронных писем. То есть, в основном, это общение, а не программирование. Общение с журналистами и техноблогерами я считаю частью своей работы — пусть оно не так важно, как технические дискуссии, но тоже занимает немало времени.

Конечно, я и код проверяю, но если честно — обычно до меня он уже проверен несколькими людьми. Так что я больше смотрю не на сам код, а на его комментарии и его историю. Если же речь идёт о коде, который написан моими самыми давними коллегами, то я даже на комментарии не смотрю. Эти люди долгое время успешно поддерживают свои подсистемы, и я не собираюсь заниматься микроменеджментом.

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

Как обустроена ваша рабочая среда? Какое «железо» используете?

В моей комнате жалюзи на окнах всегда закрыты, потому что мне не нравится яркий свет солнца. Так что никаких красивых видов из окна — только весьма грязный стол с двумя 4k-мониторами и мощным системным блоком внизу. Ну и пара ноутбуков для тестирования и поездок.

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

Всю работу я делаю в эмуляторе терминала, но я не использую vi. Я пользуюсь мерзостью под названием micro-emacs, которая не имеет ничего общего с GNU Emacs, за исключением нескольких комбинаций клавиш. Я привык к нему в Хельсинкском университете, когда был юнцом, и уже не смог переучиться на что-то другое. Хотя сильно чувствуется, что этот антикварный мусор был написан в 80-х годах и заброшен в середине 90-х.

В целом, моя рабочая среда довольно проста: несколько открытых эмуляторов терминала и веб-браузер с электронной почтой. Я люблю просторные рабочие столы, потому что привык к большим окнам терминала, да ещё открываю сразу несколько окон бок о бок. Поэтому — два монитора с разрешением 4k.

В ноябре прошлого года вас впечатлили новые процессоры Apple ARM64 (M1). Может ли быть такое, что Linux будет работать на Apple MacBook? Станете ли вы им пользоваться?

Я слежу за этой работой время от времени, но пока рано о чём-либо говорить. Поддержку этого оборудования, может быть, и включат в Linux следующей версии, но это будет только начало. Проблема не в ARM64, а в драйверах для графического процессора и SSD. Сейчас некоторые базовые функции уже работают, но не делают ничего полезного. Так что потребуется время.

Но вообще, улучшилось не только оборудование Apple — вся экосистема ARM64 сильно выросла, а ARM-ядра превратились из насмешки во что-то конкурентное, как минимум в серверном сегменте. Процессоры Amazon Graviton2 и Ampere Altra — это намного лучше того, что предлагали ещё несколько лет назад.

Я уже лет десять жду рабочую станцию на ARM, и таковой всё ещё нет, но она явно стала намного ближе. Нет, не десять лет, а намного дольше. Я ещё подростком хотел компьютер Acorn Archimedes на процессоре ARM, но смог купить только Sinclair QL с процессором Motorola 68008, а потом — машину на Intel 386.

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

Первый личный компьютер Торвальдса Sinclair QL подключался к обычному телевизору Фото Medium

Есть ли в Linux что-то неоптимальное, что нужно полностью переписать? Ядру уже почти 30 лет, за это время языки, технологии, оборудование сильно поменялись.

На самом деле, мы хорошо умеем переделывать вещи, если это нужно, даже если требуется переписать что-то полностью. Так что всё, что могло стать катастрофой в Linux, уже давно переписано. Да, у нас там изрядное количество слоёв совместимости, но в целом — ничего ужасного. И я не уверен, что эти слои исчезли бы при переписывании. Я считаю, что возможность запускать старые программы на новых версиях Linux очень важна.

Есть ещё устаревшие драйверы, которые настолько заброшены, что их даже вычистить некому. Теоретически, они могут вызвать ужасные проблемы, но пока проблем нет — всем плевать. Когда же проблемы появляются, мы активно удаляем устаревший бесхозный код. За последние годы мы удалили множество старых драйверов и даже процессорных архитектур.

Мне кажется, единственная разумная причина для переписывания Linux — это если появится некий сценарий использования, в который Linux не впишется из-за своей масштабности и сложности. Потому что Linux очень сильно разросся.

А что насчёт того, чтобы переписать Linux на Rust — языке, который специально создали для максимальной производительности и безопасности?

Посмотрим. Не думаю, что Rust вытеснит С из самой сердцевины ядра, но отдельные драйверы и подсистемы драйверов — почему нет? Может быть, и файловые системы тоже. Так что Rust не замена С, а скорее, дополнение к нему там, где это имеет смысл.

Конечно, драйверы это чуть ли не половина кода Linux, так что простор для деятельности большой, но я не думаю, что кто-то захочет переписать всю эту массу кода на Rust. Скорее, некоторые люди будут писать новые драйверы сразу на Rust, да несколько уже имеющихся драйверов перепишут на Rust, если это будет оправданно.

Но сейчас люди больше пробуют Rust и играют с ним, чем делают что-то большее. Преимущества этого языка известны, но есть и сложности, поэтому я очень хочу посмотреть на деле, что окажется весомее — достоинства или недостатки.

Есть ли какие-то части Linux, которыми вы гордитесь?

Наиболее выдающиеся части, на которые я обычно обращаю внимание, это виртуальная файловая система (VFS, абстракция над любыми файловыми системами) и подсистема виртуальной памяти. Первая хороша тем, что Linux делает многие базовые вещи вроде поиска файлов намного лучше других операционных систем. Вторая — тем, что Linux поддерживает более 20 компьютерных архитектур, и этот код во многом унифицирован.

Впрочем, у разных разработчиков разные мнения. Кто-то в восторге от планировщика процессов. Другим нравятся драйверы оборудования, которых у нас очень много. Ну, а лично мне больше всего нравятся VFS и подсистема виртуальной памяти.

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

Файловая подсистема должна по максимуму использовать многоядерность, а это влечёт кучу проблем с блокировками. Все эти функции настолько важны, что их приходится реализовывать на уровне VFS. Ядро Linux поддерживает более 20 реальных файловых систем вроде Ext4, NTFS, XFS и прочих, и если дать им самим реализовывать базовые функции вроде поиска файлов — будет полная катастрофа.

VFS справляется со всем этим по-настоящему хорошо даже на системах с тысячами процессорных ядер, и при этом обходится минимальным количеством блокировок. А там, где не обойтись без блокировок — VFS использует уникальные подходы вроде механизма блокировки со счётчиком ссылок, который разработали специально для Linux VFS.

Так что в этом Linux не просто лучше других операционных систем, а превосходит на голову. Ничто другое даже близко не сравнится.

Как управляющий таким крупным проектом — что вы можете посоветовать другим людям, чтобы они могли успешнее управлять своими проектами?

Трудно сказать, потому что я сам точно не знаю, в чём вообще ключ к успеху. Да, Linux оказался очень успешным, и очевидно, что Git тоже хорошо стартовал, но какую-то глубинную причину этого успеха мне всегда было трудно выделить. Может, мне просто повезло?

Если же отвлечься от глобальных вопросов и спуститься на землю, то я, пожалуй, могу дать пару советов. Первое: вы всегда должны быть на месте. Вы должны быть рядом с другими людьми, с разработчиками, и должны быть рядом с ними всё время. Вы столкнётесь с техническими проблемами и вы будете работать с людьми, у которых самые разные взгляды на решение этих проблем. Но технические проблемы — это самая лёгкая часть.

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

Это не значит, что вы не сможете сделать перерыв. Я постоянно делаю перерывы. Если я расстраиваюсь, я просто иду читать книжку или делаю что-то в этом роде. Пытаться работать, когда вы расстроены — не лучший вариант. Я так делал — и я злил и обижал людей своими резкими замечаниями. Теперь я просто пытаюсь отслеживать своё плохое настроение и вовремя уходить из-за компьютера.

Линус Торвальдс упрекает компанию Nvidia в плохой помощи разработчикам Linux Скриншот с видеозаписи конференции

Другой важный момент — вы должны быть открытыми. Не только в обсуждениях проблем, но и в принятии решений других людей. Ни к чему иметь слишком чёткое и твёрдое представление о том, что и как нужно делать. Наверное, одной из причин успеха Linux было как раз то, что у меня не было такого чёткого плана. Поэтому люди и компании легко вливались в разработку и развивали Linux.

Не менее важно быть честным. Не нужно играть в политику за спинами людей. Открыто говорите о своих мотивах, о том, что вы делаете и почему. Вам не нужно нравиться всем, и все не должны нравиться вам, но если вы все открыто обсуждаете рабочий процесс — вы начинаете доверять друг другу, а это главное.

Наконец, вы должны научиться «отпускать контроль». Я отлично помню, как в первое время я тщательно изучал патчи, которые присылали мне люди, и я не вносил их в Linux, а писал их аналоги с нуля, и вносил в Linux уже свой код. Так мне было комфортнее.

Оказалось, делал я это напрасно. Я довольно быстро перестал этим заниматься благодаря своей лени. Вместо этого я научился быстро просматривать патчи и вносить их в Linux. А также находить людей, которым можно доверять — как раз для того, чтобы не контролировать их.

Вы занимаетесь своим делом уже 30 лет, это большой срок. А что насчёт будущего? Каким вы видите Linux через 30 лет, и кем вы видите себя?

Вот на этот вопрос я совсем не могу ответить — просто потому, что у меня нет никакого 30-летнего плана. У меня нет даже пятилетнего плана. Если честно, я планирую не дальше, чем на один-два выпуска — то есть, всего на несколько месяцев вперёд.

Как инженер, я твёрдо уверен, что детали имеют значение. Более того — детали это чуть ли не единственное, что имеет значение. Если вы справитесь с деталями — всё остальное приложится.

Да, я уверен, что философия Unix, особенно в той части, где «всё есть файл» — правильна. Но такие абстрактные, высокоуровневые концепции хороши только как ориентир. Они не могут быть абсолютным правилом. Реальность слишком сложна и подчас уродлива, чтобы хорошо вписываться в красивые высокопарные концепции.

Так что я следую инженерным путём — смотрю на то, что происходит сейчас, смотрю на текущие проблемы и не увлекаюсь планированием будущего. На последнюю часть вашего вопроса я могу ответить так: вижу себя тем же, кто я сейчас. Мне нравится то, что я делаю, и пока я полезен проекту — я буду рядом.

Линус Торвальдс (слева) в 2020 году на саммите в Европе Фото Мэтта Эсэя

Что привело вас в США? Вы скучаете по Финляндии? Хотели бы вернуться?

Я перебрался в США в 1997 году, отчасти это было вызвано тем, что я был молод и получил хорошее предложение от стартапа, который занимался интересными вещами с процессорами Intel 386 — то есть, с тем, что я прекрасно знал.

В Финляндии тоже был сильный сектор высоких технологий, но он был связан с мобильными телефонами — тогда ещё процветала Nokia. А меня мобильные телефоны не интересовали, потому что тогда это были действительно телефоны, а не карманные компьютеры, как сейчас. Так что США показались мне интересным вариантом, и я переехал с женой и 10-месячной дочерью.

Переезжать в другую страну, имея на руках маленького ребёнка — не самое разумное решение. Но мы были молоды, следовали подходу «эй, давай попробуем!» — и у нас всё получилось. До сих пор помню тот февраль, когда мы улетели из Хельсинки при температуре −20 °C и вышли из самолёта в Сан-Франциско при 21 °C тепла.

Это было интересно. Сейчас я иногда скучаю по Финляндии, по некоторым её аспектам. Система образования в США — катастрофа. Чтобы получить хорошую школу, вы должны переехать в нужный район. А потом заплатить безумные деньги за хороший вуз. Это позор. То же самое и с системой здравоохранения. А политический климат в США превратился из «чуть странного» в прямо-таки пугающий. В Финляндии же всё «просто работает».

Думали ли мы о том, чтобы вернуться? Да, несколько раз. Сначала — когда дети пошли в школу. Затем — когда они пошли в старшую школу. А потом — когда показалось, что Трампа переизберут.

Меня беспокоит политическая система США в целом, а американские национализм и шовинизм печалят и пугают. Особенно, когда они проявляются у людей, которые понятия не имеют, о чём говорят, и которые никогда не жили за пределами страны.

США — во многом прекрасная страна, и это очень разнообразная страна. Здесь много разных людей и культур, очень разная природа, и мне это нравится. Из-за этого мне было бы, наверное, трудно вернуться в Финляндию. Финляндия — очень хорошая, разумная и безопасная страна, но она слишком маленькая и однородная.

Но вот это «ура, Америка — номер один!» от необразованных людей сильно раздражает. Поймите меня правильно — национализм есть везде, даже в Европе, даже в Финляндии. Но его американская версия кажется особенно токсичной. Честно говоря, это одна из причин, почему я живу на западном побережье. Орегон в основном очень либерален, и в моём районе не увидеть флагов Конфедерации.

Впрочем, США меняются — даже за те 25 лет, что мы тут живём, Штаты серьёзно изменились. Сильно упала религиозность, хотя, конечно, многое зависит от того, где вы живёте. Государство отказалось от многих репрессивных политик — легализованы однополые браки, фактически остановлена война против наркотиков. Так что в целом я настроен оптимистично.

Какие у вас интересы и хобби, кроме разработки Linux?

Ну, я много читаю — ничего серьёзного, как правило, случайная научная фантастика и фэнтези, которые легко забываются. Но есть и пара вещей, к которым я регулярно возвращаюсь. Например, «Дюна» — её я перечитываю примерно раз в десяток лет. Она прошла испытание временем, в отличие от произведений Хайнлайна, от которых меня сейчас просто передёргивает.

Вообще, у меня довольно обычная семейная жизнь. У меня трое дочерей, но они уже выросли и практически «выпорхнули из гнезда». Только младшая ещё учится в колледже и приедет домой на лето. Средняя — в аспирантуре и приехать не сможет, а старшая работает на другом конце страны.

Так что сейчас моя семья это жена, две наши собаки и кошка. Я уже получил первую дозу вакцины, вторую получу через пару недель, и надеюсь, что через несколько месяцев смогу вернуться ко второму своему хобби — подводному плаванию с аквалангом.

Линус Торвальдс во время дайвинга Фото Linux Foundation

#интервью #компьютеры #linux #мнения #сша