Одиннадцатого октября сего года Линус Торвальдс ответил на вопросы аудитории сайта slashdot.org.
ВОПРОС: Недавно вы высказывались насчёт патентов на ПО и патентных судебных процессах. Меня заинтересовала та часть, в которой вы говорите о «мерзких» ситуациях, которые мы могли бы получить. Вы приводите SCO в качестве примера очевидной кошмарной проблемы в этой сфере, но каким было бы ваше отношение к нарушениям свободных лицензий, таких как GPLv3? Вы обеспокоитесь, если кто-либо форкнет ядро, внесёт в него какие-то крупные изменения и начнёт продавать получившийся продукт, не предоставляя покупателям исходный код продукта? Как вы представляете себе идеальную ситуацию со свободным ПО и коммерческим проприетарным ПО? Вы бы просто скопировали финскую модель без боязни, что американские эксперты окажутся такими же тупыми, как американские юристы?
ОТВЕТ: Поэтому я только за патенты и авторские права, и я не в лагере тех, кто считает, что «патенты — зло». Когда я разглагольствую о патентах и авторских правах, я призываю, прежде всего, против перегибов и агрессивной политики (надо полагать, что под этим имеется в виду патентный троллинг — прим. переводчика), а не против патентов как таковых.
Люди на slashdot, вероятно, знакомы с существующей патентной системой: она имеет совершенно нелепую систему выдачи патентов, в значительной степени «заточена» под злоупотребление ими, и всё это препятствует изобретениям и инновациям, а не помогает им. Промахов и ошибок много, и я даже не знаю, как это всё исправить, но ясно одно — необходимы гораздо более строгие ограничения на перечень того, что может быть запатентовано.
Я явно удивил людей, сказав, что в сфере авторских прав тоже есть проблемы. Я не понимаю, почему люди удивились, но ещё меньше я понимаю тех, кто говорит, что само существование авторских прав является проблемой и они должны быть отменены. Этого вообще не следует делать.
Честно говоря, в этих ваших интернетах до чёрта грёбаных дебилов.
Во всяком случае, проблемы с авторскими правами происходят из совершенно невменяемого периода защиты продукта и некоторых сумасшедших правоприменений. Не поймите меня неправильно: я, на самом деле, не думаю, что эти проблемы проявляются в полной мере именно в сфере ПО. Ситуация с SCO, я думаю, не была такой сильной демонстрацией проблем с авторскими правами: конечно, это раздражало, но в то же время это было больше психозом компании, стоящей на грани банкротства и пытавшейся обыграть систему. Попытались и проиграли. Да, эта агония была долгой, дорогой, и её следовало бы закончить намного быстрее, но брешь, позволяющая «использовать закон в целях домогательства» — это отдельная проблема законодательства США, не зависящая от закона об авторских правах.
Нет, когда я заявил, что защита авторских прав излишне сильна, я имел в виду семидесятилетний период после смерти автора и бизнес-версию с девяносто пятью годами. Ведь это смешно.
Стоит снизить ограничение до пятнадцати лет, и закон об авторских правах станет намного лучше.
ВОПРОС: Я потратил некоторое время на проектирование в Verilog, пытаясь разобраться в исходниках других людей на opencores.org, и вспомнил, что вы над чем-то там работали в Transmeta. В течение некоторого времени у меня был список команд, которые могли бы быть добавлены в процессоры, чтобы резко ускорить некоторые распространённые функции, и SSE 4.2 включает одни из моих любимых — инструкции сравнения строк dqword. О чём это я… Ах да: что вы думаете об инструкциях, которые вы хотели бы видеть включенными в процессор, но которые так и не были включены?
ОТВЕТ: Я на самом деле не являюсь большим поклонником блестящих новых фич. В дизайне процессоров — как и во многих технологиях — большее значение имеют слаженность и совместимость. Я понимаю, что это печалит людей, потому что они гонятся за новыми крутыми функциями, но ё-моё! функции функциями, но о выполнении элементарных полезных вещей тоже забывать не следует!
Случайный большой прорыв может действительно переключить внимание на новые технологии, но это редко имеет такое большое значение. Тут уместно процитировать Томаса Эдисона: «Гений — это 1% вдохновения и 99% пота». И это полностью применимо к процессорным технологиям: вдохновение просто не так важно, как хорошее выполнение тривиальных задач. Конечно, без вдохновения не обойтись, но вы не должны преувеличивать его роль в вашей работе.
Таким образом, в процессоростроении вы должны обращать внимание прежде всего на то, как хорошо он выполняет ожидаемые от него задачи. Наборы инструкций важны — но важны, главным образом, означает: «я могу выполнить некоторые инструкции на предыдущем процессоре, чтобы мне не пришлось прикладывать какие-то усилия для запуска на нём своих программ», а не «что супер-пупер крутого я бы хотел видеть в наборе инструкций».
Как архитектору процессоров я советую вам заняться грёбаной подсистемой памяти. Вам придётся изрядно попотеть, чтобы улучшить её, так как не существует серебряной пули с крутой инструкцией, которая смогла бы её улучшить.
И не поймите меня превратно: это касается не только подсистемы памяти, но и остальных подсистем тоже.
Теперь, что касается самих инструкций. Я думаю, что индустрия уходит от RISC-архитектуры. Я верю, что хорошая ситуация вокруг работающих на различных архитектурах программ — это заслуга их совместимости. Поэтому ломающие её архитектуры, которые зависят от статического планирования инструкций, я считаю просто безумными. Если ваш процессор требует планирования инструкций для одного конкретного набора инструкций задержек или ограничений — ваш процессор плох. По этой причине я ненавидел Itanium — развёртывание микроархитектуры в набор команд это просто сумасшествие.
Нет, конечно, я хочу дополнительные «высокоуровневые» инструкции, действительно работающие в различных реализациях одного ISA, а также на различных классах оборудования. Например, я считаю, что внести инструкции «memcpy» или «memset» — это классная идея, если только она будет эффективно работать на разных архитектурах и подсистемах памяти.
В качестве примера, что не надо делать: предоставлять прямой доступ к cacheline с какой-нибудь идиотской командой «DCBZ», которая бы его очищала — потому что это добавит в написание ПО проблем с определением размера cacheline и т. д. То же самое касается вещей вроде «нонтемпорального доступа» в обход кэша первого уровня — откуда вам знать, как его использовать в своём ПО, если разные процессоры имеют разную архитектуру кэша? Программы просто не должны волновать такие детали.
ВОПРОС: Прошло более двадцати лет с момента создания Linux. Что бы вы сделали по-другому, если бы имели в те дни сегодняшний опыт и знания?
ОТВЕТ: Мне часто задают этот вопрос и я действительно не понимаю, что и как я мог сделать лучше. Я не претендую на какую-то сверхпредусмотрительность, просто в то время я в самом деле сделал правильный выбор. Я всё ещё люблю GPLv2 и думаю, что это была та самая вещь, что сделала Linux свободным.
Делал ли я ошибки? Безусловно. Но в целом, я думаю, Linux сделан невероятно хорошо, и я принимал правильные решения относительно него.
ВОПРОС: Было ли такое время, когда вы склонялись к микроядерному пути развития ядра в стиле HURD, пропагандируемому Танненбаумом, или вы чувствуете, что с архитектурной точки зрения Linux прекрасен своим монолитным дизайном?
ОТВЕТ: Я считаю, что микроядра это тупняк. Они перемещают проблемы из пространства ядра во взаимодействия, что порождает гораздо более глобальные и фундаментальные проблемы, чем те, которые это перемещение решает. Они также создают ужасные дополнительные сложности, в итоге вы должны бороться с такими проблемами микроядерной модели, как дополнительные задержки при взаимодействиях. HURD является прекрасным примером такого рода отстоя, для которого людям пришлось делать совершенно новые модели маппинга памяти просто потому, что старые работающие модели были сломаны микроядерной моделью.
Между прочим, это касается не только микроядер. Каждый раз, когда у вас есть сверхценная идея и вы продавливаете её в качестве единственно правильной, вас будет ждать провал. Микроядра — одна из таких сверхценных идей, но есть и другие. Это всё полная херотень. Дело в том, что реальность сложна и не поддаётся одной большой и красивой модели. Единственный способ получить хоть что-то работающее — это решать множество проблем по мере их возникновения, а не пытаться предрешить всевозможные проблемы с помощью одной супер-идеи.
ВОПРОС: Если бы вы создавали Git с нуля, что бы вы изменили в нём? В частности, нравится ли вам проект git-flow и намерены ли вы слить его с главной веткой или нет?
ОТВЕТ: Есть несколько небольших деталей, которые, как я думаю, могли бы сделать Git лучше, но, в целом, я очень доволен Git'ом. Я думаю, что основной дизайн очень прочный и что мы имеем почти нулевую функциональную избыточность. Git очень юниксвеен тем, что имеет несколько базовых принципов дизайна («всё является объектом» с несколькими основными типами отношений внутри базы данных Git) и множество утилит, делающих его таким мощным инструментом.
Что касается git-flow, то я хочу подтвердить, насколько действительно велика роль Джунио Хамано в качестве мейнтейнера Git, в этот период времени я просто могу не беспокоиться о развитии и состоянии Git. Я не использую git-flow, потому что это мне не нужно, но если этот проект помогает людям, то все карты им в руки. И я не стану гадать, попадёт ли git-flow в главную ветку или нет — я уверен, что Джунио в любом случае примет правильное решение.
ВОПРОС: Как у разработчика ПО, у меня богатая коллекция книг и журналов. Некоторые их образцы — как художественные, так и технические — изменили мою жизнь. Вы можете назвать такие примеры, не считая, конечно, маны и txt-файлы?
ОТВЕТ: Я читал немало книг, но, должен признаться, что чтение для меня — это акт эскапизма (бегство от действительности путём погружения в иллюзии и фантазии — прим. переводчика), поэтому большинство прочитанного я просто забываю. Я не могу вспомнить ни одну книгу, которая изменила бы мою жизнь, но не отрицаю, что жизни некоторых людей книги меняют коренным образом.
Тем не менее, я назову пару книг, чтение которых доставляло мне истинное наслаждение. В научно-популярной сфере это «Эгоистичный ген» Докинза, а в художественной — «Чужак в чужой стране» Хайнлайна, также я должен признаться, как много для меня значит «Властелин колец» Толкиена, но не потому, что я поклонник фэнтези или самого автора — просто «Властелин колец» был той самой первой настоящей английской книгой, и если вначале при чтении я пользовался словарём, то под конец словарь мне уже не был нужен.
В настоящее время я, в основном, читаю всякое дерьмо. Мне нравится мой Kindle и я часто читаю самиздатовские вещи за девяносто девять центов. Там попадаются и реальные вещи, но основную массу, конечно, составляет шлак, который реально стоит этих девяноста девяти центов. Также я иногда с наслаждением перечитываю классиков, из которых давно вырос — например, «Граф Монте-Кристо» или «Три мушкетёра».
ВОПРОС: Порой складывается ощущение, что вы неминуемо должны сгореть при таком темпе работы над ядром Linux… как вы со всем этим справляетесь?
ОТВЕТ: О, мне очень нравится то, что я делаю. Также я большой любитель поспорить, и могу поклясться, что зачастую выгляжу сварливым стариком, но так же часто я просто позволяю себе пускать некоторые вещи на самотёк. Также я не склонен держаться за какой-то конкретный вопрос слишком долго, и это позволяет избежать «выгорания».
Зацикливаясь на некоторых вещах, даже если эти вещи реально важны, вы рискуете просто спятить.
Так что для меня периодические холивары — как бодрящий душ. Технологии и способы их применения меняются достаточно часто, чтобы не впадать в скуку и уныние, так что на самом деле я достаточно далеко от «выгорания».
ВОПРОС: Вы можете достаточно подробно описать свой домашний и рабочий компьютеры, назвать марку процессора, материнской платы, видеокарты? А также рассказать об их совместимости с Linux?
ОТВЕТ: Мой домашний компьютер на самом деле не так уж интересует меня: мне не нужен процессор более мощный, чем установлен сейчас, и за последние несколько лет моё основное требование к железу — это наличие тихих SSD вместо шумящих HDD. Если мой кот соизволит взгромоздиться на мои колени во время моей работы за компьютером, самым громким звуком должно быть его мурчание, а не шум компьютера.
Моей основной машиной является аппарат с четырёхъядерным Westmere, в нём нет ничего особенного. Я собираюсь модернизировать её этой осенью и после этого думаю использовать её ещё года два.
Мой лэптоп c прошлого года — 11" Apple Macbook Air, но, естественно, не с Mac OS X, а с Linux, потому что я реально ненавижу большие лэптопы. Правильная масса для лэптопа — не более 1 кг.
ВОПРОС: Какой вы видите экосистему Linux после завершения ваших полномочий в этой сфере?
ОТВЕТ: О, ядро действительно имеет очень прочное сообщество разработки, так что беспокоиться тут не о чем. У нас есть несколько очень сильных и стойких людей, которым можно доверить управление разработкой ядра, так что я бы больше беспокоился о других открытых проектах, которые не имеют настолько прочных сообществ.
Тем не менее, я занимаюсь этим уже более двадцати лет, и я не представляю себя вне участия в разработке ядра. Я до сих пор люблю то, что делаю, и моему разуму было бы просто скучно без этих головоломок.
>>> Подробности