Тет-а-тет. Системные программисты, разработка «свободного» софта и будущее Android AOSP

Привет.

Каждый раз напрашиваюсь в гости в офис «Открытой Мобильной Платформы», или кратко ОМП, чтобы поговорить с разными людьми об аспектах развития рынка и частично затронуть их через призму «Авроры». Уже вышло несколько материалов, которые обрисовывают как бизнес ОМП, так и разработку «Авроры», а также показывают весь рынок и сложности, которые на нем встречаются. Мне нравится откровенность в обсуждении вопросов, которые обычно в компаниях старательно обходят по дуге. Предыдущие материалы вы можете найти ниже. Если что-то пропустили, то обязательно почитайте, обнаружите много любопытного.

В этот раз у нас разговор с Романом Аляутдиным, директором департамента разработки компании «Открытая Мобильная Платформа». Роман работает в довольно узкой сфере, он является системным программистом, поэтому мои вопросы были о наболевшем: где берут таких программистов, как часто их можно встретить в реальной жизни и что они значат для разработки. Но начали мы с общих вопросов, которые показывают место таких разработчиков в мировой табели о рангах.

Э.М. Сколько в мире системных программистов, которые пишут что-то для ядра Linux? Думаю, что в представлении многих людей это десятки тысяч человек.

Р.А. Сложно оценить общее число, например, каждый год в ядре Linux активно участвует примерно тысяча человек — это те, чей вклад виден. БольшАя часть движения open source сегодня оплачивается компаниями, системы стали настолько сложны и велики, что даже крупные корпорации не могут в одиночку потянуть разработку компонентов, которые в итоге не дают для них какой-то уникальности, но необходимы для их продуктов. Ядра операционных систем, библиотеки, компиляторы, фреймворки — это настолько крупная разработка, что легче сложить все в общий котел и делать вместе.

Э.М. Правильно ли будет считать, что со стороны больших корпораций, таких как Apple, Microsoft и других, нет никакого альтруизма, они вкладываются в Linux, потому что это необходимость для них? Это так?

Р.А. В целом, можно сказать, что в open source движении значительную долю имеют энтузиасты. Но не меньшую долю имеют, а в некоторых проектах даже полностью берут на себя эту роль крупные компании, большой бизнес. По тем или иным причинам, связанным с их монетизацией, разделением затрат на компоненты, они хотят это делать открыто. В качестве примера можно привести ядро Linux, это уникальный и большой проект. В нем доли и права участников распределились так, что нет одного доминирующего игрока. Да, у Intel много людей, ответственных за определенные куски ядра. Есть Google, которая также делает вклад в ядро. Но даже уход одной крупной компании не приводит к коллапсу разработки, доли так порезаны, что разработка действительно идет всем миром. И если какой-то разработчик выбивается из общих норм, то его всегда можно заменить, никакой катастрофы не случится.

Можно посмотреть публичный ежегодный отчет Linux Foundation о том, кто разрабатывает Linux, вы найдете в нем множество крупных компаний. В последние годы очень сильно увеличила свой вклад Huawei, то же самое можно сказать про Microsoft, для которой доработки ядра, вероятно, связаны с их облачным бизнесом.

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

Э.М. Примеры таких проектов?

Р.А. Например, это Android AOSP, Google Chromium. Огромные проекты, в которых архитектурные решения, принципы того, куда все это движется, не раскрываются. Все делается в закромах Google. Инженеры компании могут принять те или иные исправления ошибок в «открытый» проект, как правило, незначительные. Серьезных изменений в проект AOSP от вас никто не ждет. Если посмотреть на изменения кода AOSP за год, то вы увидите, что 90% исправлений приходит от инженеров Google, оставшиеся десять процентов — от инженеров производителей процессоров. AOSP — это пример крупного open source проекта, который по факту таковым не является. Если почитать документацию Google, то компания открыто говорит: мы открываем исходный код текущей версии Android для того, чтобы производители железа знакомились с ОС, адаптировали свои решения под нее [1]. В рамках этого проекта Google решает сугубо свои проблемы. Очевидная сложность состоит в том, как портировать свою ОС на разношерстные устройства разных производителей. Более того, у устройств разный жизненный цикл, разные ценности для целевых рынков.

Поэтому в Google решили сделать Android квазиоткрытым проектом, переложив на вендоров железа (Sony, Motorola, HTC и т.д.) стоимость портирования и сопровождения операционной системы на конкретном устройстве. А сами просто сосредоточились на выпуске новых версий этой ОС, новом функционале, а также на разработке Android SDK, который является вообще закрытым.

Э.М. Мы говорим о первоначальном Android, который потом разделился на AOSP и GMS-версию, так?

Р.А. GMS появился и как один из сдерживающих факторов от форков AOSP, и как инструмент превращения AOSP на смартфоне в Android на смартфоне.

Однако со временем в подходе по передаче жизненного цикла ОС на устройстве на сторону производителей оборудования проявились объективные проблемы. Вендоры, портируя операционную систему, стали залезать ей под капот, трогать священную корову. Делали они это по объективным причинам: что-то не работало именно с их оборудованием, что-то требовало улучшений уже в этой версии ОС. При этом пользовательский опыт на Android становился не единым, он различался от производителя к производителю, часто создавалось впечатление «глючного» Android, а не глючного Sony.

Чтобы ограничить вендоров в рукоприкладстве к потрохам Android, случился проект Treble [2]. Это была большая структурная переработка начиная с Android 8, которая на уровне архитектуры отделяла аппаратно-зависимые компоненты, которые должен обеспечивать вендор оборудования, от остального Android, куда вендор залезать уже не должен. Больше чем за четыре года инженеры Google провели эту работу и теперь идут дальше — проект GKI [3]

Так исторически повелось, что ARM-процессоры (системы-на-кристалле) сильно различаются, поэтому разработчики всегда выпускают порт ядра Linux под свой конкретный чип. Этот порт становится основой ОС Android на этом устройстве. Сегодня Google говорит, что вендоры плохо следят за поддержкой ядра, за безопасностью, не исправляют уязвимости — давайте мы сделаем так, что ядро будет от нас, проверенное, будет прямо из GMS обновляться. Это чрезвычайно трудная инженерная задача в силу разницы чипов, именно поэтому на заре Android эту сложность переложили на производителей. В случае успеха проекта GKI и ряда других инициатив это обозначит путь постепенного закрытия системы Android, дистрибуции под разное железо из одной точки. Проект AOSP как кодовая база для производителей железа больше не будет нужен.

У Google был этап разбрасывания семян, когда они подсадили производителей, всю мобильную электронную промышленность на свою «открытую» ОС. Теперь они начинают собирать урожай: делают конкретные инженерные шаги для закрытия. Если в Google придумали это изначально, то это было гениальное решение по захвату рынка. Но если даже по ходу пьесы додумали, то все равно выглядит сильно.

Э.М. Взгляд со стороны. AOSP все больше отстает от GMS-версии Android, из этого «открытого» Android выкидывают приложения, пытаются остановить развитие той же Huawei, которая использует AOSP для своих разработок. Сейчас GMS Android имеет версию 13, в AOSP это 11-я версия. Получается, что у нас останется только ядро в AOSP?

Р.А. Даже не ядро, останутся только интерфейсы для производителей оборудования. Это будет сделано по аналогии с тем, как когда-то придумали в Microsoft для портирования Windows на разное железо, однако там задача была попроще, архитектура х86 и периферия намного более стандартизированы. В Google решают более сложную задачу — как портировать Android на все разнообразные ARM-процессоры и при этом не отдавать ядро производителям оборудования.

Э.М. Системными программистами не рождаются, ими как-то становятся. На YouTube точно нет курсов, как стать таким программистом. Я вижу два пути — попасть в такую компанию, как ОМП, либо вас учат на системного программиста в вузе. Часто в вузах учат плохо, так как там преподают теоретики, люди, не знающие реальную разработку. Как разорвать этот круг? Где вы берете людей?

Р.А. Отличный вопрос. Отмечу, что системных программистов не только в нашей стране, но и в мире не очень много, их нужно растить и создавать инженерные школы.

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

Личный пример: в начале 10-х годов я работал в компании, которая разрабатывала драйверы для Intel, и у меня был их новый процессор, который еще не вышел на рынок. Ко мне этот чип пришел в виде пластины, которую нужно было прикручивать винтами к плате, — эта эксклюзивность мне очень нравилась.

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

Но мои коллеги по ОМП читают лекции, ведут курсы в разных учебных заведениях. Например, в Иннополисе у нас курс системного программирования. Сейчас мы хотим его масштабировать на другие вузы, потому что создан хороший материал, отличные лабораторные работы. Есть ВУЗы, где электронику и низкоуровневую разработку читают хорошо, там мы могли бы добавить практики в лабораторных работах. Также мы успешно взаимодействуем с Финансовым Университетом, где уже функционирует наша лаборатория, а студенты проходят летнюю практику в нашей компании по направлению продуктовой аналитики.

Э.М. Когда приезжаешь на фабрику, которая производит микроэлектронику, во время отладки техпроцесса до 95% уходит в брак. А сколько ребят остается в системном программировании после вуза?

Р.А. В МАИ у меня на потоке было примерно 80-100 человек, это большой поток. Из тех, кого я знаю, человек десять перешли в системное программирование или близко к нему. Остальные ушли работать в другие сферы. Очень многие шли работать по специальности. Получается, что не более 10%.

Э.М. Связано ли это с отсутствием рабочих мест? Или причина в сложности самой задачи?

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

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

Там, где нет работы практикующих специалистов с ВУЗом, не будет хорошей конверсии. Ребята не проходят первичный барьер, у них не привита любовь к интересному делу, никто не рассказывает, насколько это увлекательно.

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

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

Э.М. У нас в России системное программирование, кажется, востребовано во всех сферах, мы поэтапно пытаемся заместить с двух сторон — на уровне чипов, то есть снизу, и сверху, на уровне фреймворков, так как с уровнем приложений и сервисов у нас все уже хорошо. Получается, что мы создаем движение навстречу снизу и сверху.

Р.А. Да. На примере «Авроры» видно, что мы по центру, связующее звено между электроникой и прикладным софтом, и это очень мотивирует. На нашей площадке идет общение между электронщиками и прикладными программистами, создающими пользовательское ПО.

Э.М. Сегодня появляются сторонние разработчики железа под «Аврору», российские компании. Они должны взять на себя портирование «Авроры» под то железо, что они делают. Вы помогаете им научиться это делать и в конечном итоге отдаете им драйвера, работу с железом. То есть создаете классические центры разработки. Насколько сегодня эти компании готовы играть такую роль? У этих компаний очень разное понимание реальности, своего места в ней и того, что они делают. Как вы видите этот момент?

Р.А. Как закалялась сталь. Конечно, поначалу будет не хватать специалистов, которые смогут этим заниматься. Это создаст востребованность в таких людях на рынке и большую заинтересованность среди молодежи. Однако, студент, который только что закончил ВУЗ, не решит эти задачи. Так что это большой технически-организационный вызов — создать в российских центрах разработки боевые команды, которые возьмут на себя задачу портирования операционных систем, в широком смысле слова будут специалистами по встраиваемым системам. И самое интересное, что и специалисты, и компании смогут использовать эту экспертизу в других сферах в будущем.

Э.М. Условно сделать умные счетчики, а не смартфон на «Авроре».

Р.А. Да, это же умения, которые можно использовать в разных направлениях. Имея «Аврору» как локомотив развития, почему бы им не заняться потом и другими продуктами, почему не использовать полученные знания? Может быть, это громко сказано, но сегодня создается новая отрасль. После прихода специалистов, которые умеют и имеют опыт портирования операционных систем, компании сами ощутят, что перед ними открываются новые бизнес-возможности, что они реально смогут создавать то, чего нет у других. Не брать то, что есть по всему миру готовое, а делать свои уникальные вещи. Это ведь один из стимулов, которые толкают нашу команду вперед. Мы свободны в том, что можем предлагать и реализовывать что-то новое для своей системы. Для инженеров в нашей команде привлекательным является то, что, с одной стороны, у нас есть реальный продукт, которым пользуются. С другой стороны, перед нами постоянно возникают новые технологические вызовы, в разработке операционных систем многое можно и нужно сделать, проявив себя.

Э.М. А чем мобильная ОС отличается от десктопной?

Р.А. Многим. Мобильный телефон все время находится в разной среде, он подключается к разным сетям, Wi-Fi, не всегда доверенным, его легко потерять. При этом смартфон постоянно обрабатывает много данных, люди привыкли к тому, что мобильный телефон намного безопаснее, чем какое-либо другое устройство. Мы доверяем свои деньги мобильному телефону. Раньше прятали сберегательные книжки под матрас, а сейчас в одном окне у вас браузер, и неизвестно, куда он еще зашел, в другом окне — банковское приложение с вашими деньгами. И мы считаем это нормальным. Такие компании, как Apple, своими усилиями приучили нас к такому уровню безопасности, что мы не думаем, что здесь возможны какие-то проблемы. Поэтому мы должны обеспечивать не меньший уровень безопасности, и это вызов: нужно соревноваться в подходах с лучшими инженерами в мире.

Второе, чем отличается мобильная ОС и к чему привыкли разработчики, — наличие отдельного SDK с графическими библиотеками, компонентами, с дизайн-системой, API, инструментами, которые позволяют быстро создавать приятные приложения для ОС [4]. У тебя должен быть эмулятор, в нем можно проверить, как все работает, потом перекинуть пакет на телефон и посмотреть, как все работает там. Создание набора инструментов разработки для мобильной ОС — это необходимое условие сейчас.

Третье — это энергоэффективность. Чем дольше живет устройство, тем лучше для пользователя.

Четвертое — большое количество периферийных устройств и сенсоров. Даже если мы возьмем ноутбук, то там нет такого количества датчиков, как в телефоне. А для работы с каждым датчиком мы должны предоставлять интерфейсы для приложений. Все это вызовы, и на них нужно отвечать.

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

[email protected]
наверх