Linux.com опубликовал интервью с Гансом Питером Энвином (Hans Peter Anvin), одним из ключевых разработчиков Linux.
Каждый раз, когда вы загружаете Linux с CD или DVD, благодарите Ганса Питера Энвина (Hans Peter Anvin), который сделал это возможным. Но это далеко не единственное, что Питер сделал за свою Open Source карьеру.
Ганс Питер Энвин — один из разработчиков Linux «старой школы», работает над ядром с 1992 года, специализируясь на низкоуровневом взаимодействии с аппаратным обеспечением. В настоящий момент он участвует в управлении веткой x86, хотя писал код для множества подсистем ядра Linux. Также Питер является автором либо главным разработчиком следующих Open Source проектов: набора загрузчиков Syslinux, ассемблера NASM, библиотеки klibc, ftp-сервера tftp-hpa. Он основал Linux Kernel Organization, которая содержит сервера kernel.org.
Питер живет в Сан-Хосе, штат Калифорния, работает в центре Open Source технологий Intel. Ранее он занимал должности системного архитектора и технического директора в Transmeta, работая над архитектурой CPU и системой бинарной трансляции x86 в VLIW для процессоров Transmeta (Code Morphing Software), конструировал персональные суперкомпьютеры в Orion Multisystems, разрабатывал ПО для Linux в rPath. На досуге он программирует ПЛИС, ныряет с аквалангом, занимается исторической реконструкцией, также держит кроликов и кошек (fuzzy bunnies, psychotic cats). Он состоит в браке с Сьюзи Энвин, недавно у него родился сын Эрик.
Всегда интересно, какими путями люди приходят к тому, кто они есть — Питер согласился ответить на несколько вопросов.
Вы — ключевой разработчик Linux с самого его начала, вы сами писали код и руководили разработкой подсистем ядра. Это не привлекает столько внимания, как, например, разработка графических сред, но обеспечивает жизненно важную функциональность, которую многие даже и не замечают. Над чем вы работаете сейчас?
Сейчас я работаю в центре Open Source технологий Intel, я несу ответственность за работу Linux на x86-совместимых процессорах и за то, что x86 подходит для работы Linux. Я занимался низкоуровневым программированием x86 задолго до создания Linux, мне всегда приносило удовольствие работать на стыке программного и аппаратного обеспечения, так что я люблю свою работу.
Считается, что сообществу не хватает усилий и ресурсов для создания и поддержки аппаратного обеспечения с открытыми спецификациями (open hardware). Мы не можем сдвинуться с места без этого. Естественно, что порог здесь намного выше, чем для ПО; во-первых, это дорого, затем, аппаратная часть — не то, что мы можем просто взять и воплотить в жизнь, как код. Какие пути вы можете предложить для улучшения положения?
Проблема в том, что «open» в «open hardware» по существу отличается от «open» в «open source». На подложке всегда должен быть кремний, который кем-то искусно превращается в миллиарды транзисторов, затем дополняется деталями до готовой платы. Ничто в этом процессе не является шаблонным, простым (generic), даже с технологией ПЛИС вам нужно иметь готовую ПЛИС; в дополнение, вряд ли вам удастся добиться хотя бы десятой части производительности современных коммерческих процессоров. Однако, программирование ПЛИС — это весело.
С другой стороны, можно вспомнить, как появился Linux: студент из Финляндии на обыкновенном PC запустил свой код — это произошло не благодаря доступности разводок плат, но благодаря стандартам. Неважно, кто собрал ПК Линуса — суть в том, что он был собран в соответствии со спецификацией ISA, стандартом того времени. Многие производители следовали стандартам — это позволило снизить стоимость персонального компьютера. Именно это разделяет железки и платформу: платформа PC тянет и будет тянуть за собой тридцатилетний воз стандартов ради совместимости.
Наиболее успешные проекты open hardware, например, Arduino, заняли нишу не из-за того, что у них не было конкурентов, а благодаря безнадежной раздробленности: плат для программирования микроконтроллеров не пересчитать. На таком рынке едва ли можно надеяться на принятие в качестве стандарта; статус открытости, по крайней мере, дает видимость, что проект будет более жизнеспособен. Платформа приживается благодаря своей открытости — самоисполняющееся пророчество.
У вас с женой широкая сфера интересов, вам удается добиваться многого за небольшое время. Как вы это делаете, вы нашли способ жить без сна?
На самом деле, я не думаю, что прошло немного времени. Я начал интересоваться компьютерами в раннем возрасте. Первым компьютером, на котором я научился программировать, был шведский ABC80 с процессором Z80. В нем было целых 16 Кб оперативной памяти, в моем нынешнем компьютере 16 Гб. В то время моя семья была в стесненном финансовом положении, поэтому компьютер не был лично моим, я пользовался компьютером по возможности. Из этого следует, что я мог долго размышлять о построении программы перед тем, как сесть за компьютер. Я был сумасшедшим ребенком, который писал машинные коды на бумаге на детской игровой площадке. В конце концов я написал ассемблер, потому что не мог себе позволить купить готовый и не было открытых под мою платформу.
Конечно, мы с женой ведем очень деятельный образ жизни, мне часто говорят, что я слишком много работаю. Я бы сказал, что мне вообще удается работать во многом благодаря гибкости рабочей среды в сфере IT — работа из дома, гибкий график, общение в IRC и т. д. Все эти вещи необходимы для взаимодействия с сообществом разработчиков, над которым никогда не заходит солнце. В то же время, такая гибкость накладывает ответственность за разумное распределение времени.
Знать, когда нужно передать управление проектом — важный навык. К примеру, Ян Кент (Ian Kent) уже долгое время руководит проектом autofs, Кирилл Горкунов сейчас вкладывает значительно больше сил в NASM, чем я. Однако, может быть очень сложно решиться на такой шаг, если нет очевидных кандидатур — личностей, которым вы доверяете — для передачи управления. Иногда следует задумываться, достаточно ли проекту управления одним человеком, или его нужно передать сообществу.
С тем, как мир Linux развивается, он привлекает все большее число разработчиков и пользователей. Нам нужны программисты, дизайнеры, тестировщики, составители документации, художники, композиторы, дистрибьюторы, руководители сообществ, специалисты по маркетингу — требуется много разных умений, чтобы продвигать и улучшать Linux. У многих членов сообщества есть дети, но усилий, ориентированных на детей, не так много. Где взять разработчиков средств для обучения детей?
Я считаю, что есть несколько замечательных ориентированных на детей средств для обучения. Детям нравится сразу видеть результат своих действий, поэтому LEGO Mindstorm, Arduino, язык программирования Blockly, даже Minecraft — то, что способно их привлечь. Что-то из этого может быть не Open Source, но сомневаюсь, что это так важно на данном этапе, более важным является то, что эти вещи программируемы и предоставляют возможность обмена информацией.
В 80-е годы первые домашние компьютеры стали доступными из-за предустановленного интерпретатора BASIC. Программы на бэйсике были ужасно медленными по сравнению с ассемблером, но они снизили планку для решения практических задач. В середине 90-х я использовал Microsoft QuickBASIC для простейших задач, когда мог использовать C в Linux. Можно было придумать решение с графическим окошком за полчаса. Думаю, это единственный продукт Microsoft, по которому я скучаю.
Какие у вас взгляды на техническое образование в школе? Какие навыки нужны детям, когда их следует начинать преподавать?
Детям нужно привить навык исследования. Проблема школьного технического образования заключается в том, что детям предлагается только один путь из A в B: это не дает детям возможности изучения, без исследования не может быть простора для воображения. Представьте себе художественную школу, в которой рисуют по калькам!
Когда нужно начинать? Думаю, не существует нижней границы и я точно не верю в необходимость защищать детей от «слишком сложных» вещей. Нужно зажечь искру любопытства и дать им играть с ней.
Disclaimer: в переводе могут быть неточности.