«CI плохо справляются с требованиями мобильной разработки»: интервью с создателем fastlane Феликсом Краузе
Многие мобильные разработчики любят инструмент fastlane, автоматизирующий задачи при выпуске приложения (генерацию скриншотов, code signing в случае с iOS, деплой в магазин или в систему бета-тестирования). Долгое время fastlane можно было использовать только на macOS, но сейчас этот проект делают частично кроссплатформенным. А его создатель Феликс Краузе на днях громко анонсировал новый проект: CI-систему fastlane.ci.
И мы взяли у Феликса интервью, расспросив про обе темы: начали с вопросов о CI-новинке, а затем перешли к «обычному» fastlane.
— В связи с появлением fastlane.ci кто-то может сказать «уже и так есть куча CI-систем, зачем ещё одна». Какими вы видите главные цели fastlane.ci, ещё не покрытые другими продуктами?
— Во главу угла fastlane.ci ставит мобильных разработчиков. Многие CI-системы очень обобщённые, а в итоге не слишком хорошо справляются с требованиями мобильной разработки. Хороший пример — использование командами разных версий Xcode при миграции на новую версию Swift.
Поэтому fastlane.ci — «opinionated»-проект, упрощающий жизнь мобильным разработчикам. Идея в том, чтобы CI-система автоматически распознавала ваш проект, по большей части настраивала сама себя, и оказывалась готова за несколько минут.
— Понятно, что fastlane и fastlane.ci будут отлично работать вместе, но насколько тесно они связаны? Не станет ли теперь поддержка других CI в fastlane менее приоритетной? Предполагается ли использование fastlane.ci без fastlane?
— Последний вопрос пока не решён окончательно, но пока что моё видение в том, чтобы запустить fastlane.ci только для работы с fastlane. Вероятно, со временем это ограничение ослабнет, но при работе над первой версией оно позволит нам сосредоточиться на самом главном.
Но работа над fastlane.ci, разумеется, никак не скажется на интеграции fastlane с другими CI-сервисами. Каждый вправе использовать любую CI-систему, какую хочет :)
— Сейчас fastlane.ci поддерживает исключительно мобильную разработку, но сделана оговорка «пока что». В будущем хотите, чтобы мобильная оставалась главной, но поддерживалась не только она?
— Тут как в предыдущем ответе: сначала нам надо сосредоточиться на самом главном, а затем можно постепенно расширять спектр деятельности.
— Насколько понимаем, fastlane.ci можно запустить на разных ОС…
— Нет, fastlane.ci не кроссплатформенная, она для macOS.
— Подождите, в системных требованиях написано «Requires Ruby 2.3.0 or higher. macOS and Xcode are required when building iOS projects». То есть точнее будет «Requires Ruby 2.3.0 or higher and macOS»?
— Угу, обновлю README, чтобы прояснить этот вопрос. Пока что всё рассчитано только на macOS.
— В fastlane.ci планируется поддержка как для iOS, так и для Android. Предполагаете ли вы, что в Android-мире сейчас как раз повысится спрос на CI из-за прекращения поддержки Android в BuddyBuild?
— Я думаю, использование BuddyBuild снизится и в Android, и в iOS, потому что теперь в ближайшие месяцы/годы от него вряд ли стоит ждать активного развития.
— Перейдём от fastlane.ci к fastlane. Для начала давайте проясним ситуацию для тех, кто далёк от темы. У fastlane хитрая история: сначала независимый проект, потом попал под крыло Twitter, став частью Fabric, затем вместе с Fabric перешёл к Google. Это может вызывать вопросы вроде «требуется ли пользоваться Fabric для использования fastlane». Как на самом деле обстоят дела?
— В данный момент fastlane — независимый проект в Google. Вам не требуется пользоваться ни Fabric, ни Firebase, ни сервисами Google для использования fastlane. Проект опенсорсный, поддерживается нами совместно с сообществом.
— Последняя новость о проекте заключается в объявлении «Мы активно работаем над поддержкой Linux и Windows для отдельных частей fastlane»…
— Ну, я лично активно этим не занимаюсь. Однако в команде контрибьюторов нашёлся человек, взявшийся за поддержку других платформ. И в последние месяцы действительно идёт работа над тем, чтобы всё больше составных частей fastlane переставали требовать macOS.
— Ограничивает ли в этой работе нежелание регрессии у более приоритетной основной версии?
— Да, в этом риск расширения числа поддерживаемых платформ: всегда побаиваешься сломать что-то на другой платформе.
— Поскольку iOS-разработчики сидят за Mac, спрос на кроссплатформенный fastlane возник исключительно из-за Android, или с iOS-стороны он тоже есть?
— Я высокого спроса в iOS не видел, за исключением кроссплатформенных разработчиков, вроде React Native.
— Когда Android-разработчики при установке fastlane первым же пунктом видят «Make sure you have the latest version of the Xcode command line tools», это не вызывает у них когнитивный диссонанс? :)
— Ну, Android-разработчикам на Mac для установки fastlane неизбежно нужны Xcode command line tools, чтобы установить Ruby и OpenSSL.
— А усложняет ли работу над проектом, поддерживающим Android, то, что у вас самого бэкграунд в iOS?
— Да, определённо. Я уже 7 лет занимаюсь iOS-приложениями, так что о платформе и экосистеме знаю много. Так что я лично не особо занимаюсь Android-частью, у нас есть группа контрибьюторов, сосредоточенная на этом.
— Главная страница fastlane.tools встречает нас счётчиком «сколько часов сэкономил fastlane разработчикам». А как вы эти часы считаете? :)
— Когда fastlane проверяет наличие обновлений, заодно отправляет нам очень базовые метаданные: главным образом, проведённое в запущенном состоянии время, версию Xcode и версию ОС.
— Но ведь «время работы fastlane» может совсем не равняться «времени, которое разработчик потратил бы на те же задачи без fastlane». Этот счётчик задуман как очень грубая аппроксимация?
— Да, верно. На самом деле, вероятно, fastlane сэкономил разработчикам куда больше. Например, в случае с генерацией локализованных скриншотов вручную может получиться гораздо дольше.
— Вокруг fastlane выросла целая экосистема плагинов. Есть ли у вас среди них личный любимчик?
— Я лично ранее использовал «badge», позволяющий прямо перед компиляцией легко добавить номер версии на значок «beta» на иконке.
— Бывает ли, что что-то начинается как плагин, а в итоге попадает в основной fastlane?
— Да, так происходило с несколькими плагинами — главным таким случаем стали плагины disable_code_signing и enable_code_signing. В Xcode 8 Apple добавила новую опцию для code signing, и люди хотели контролировать её с помощью fastlane. Гельмут (автор плагина) любезно согласился интегрировать плагин в fastlane, когда мы обратились к нему.
— А встречали ли в плагинах какую-то удивившую вас самого функциональность?
— Мне понравился плагин, получавший текущие сроки прохождения ревью для iOS-приложений.
— Удивительно, что такой популярный инструмент не был создан крупной компанией, а возник как ваш студенческий проект. Были ли у него тогда конкуренты? Что помогло их обойти?
— Когда начинал, аналога не было. Единственным похожим инструментом был Shenzhen от Nomad Tools, но его разработка тогда уже была прекращена. Но одиночке такой проект начинать даже легче, нет никаких зависимостей.
— Когда проект попал в Twitter, это позволило вам работать над ним фуллтаймово. А не хотелось ли вместо этого как-либо его монетизировать, чтобы получить ту же возможность, но при этом сохранив полную независимость?
— Я не вижу большого преимущества в полной независимости, если компания, позволяющая тебе работать над проектом, действует в его лучших интересах. В случае с fastlane как Twitter, так и Google позволили проекту развиваться в том направлении, которое было осмысленнее всего для сообщества мобильных разработчиков, мы прислушивались к желаниям пользователям и работали над ними. Собственно, до Twitter я даже предлагал спонсорство fastlane и связанную с fastlane контрактную работу, но это было сложно — сильно нагружало и отвлекало. Я определённо предпочитаю нынешнее положение вещей тому, что делал до Twitter.
— В вашем случае работа сама выросла из студенческого проекта. А если бы этого не произошло, чем бы занимались? Вас волнуют темы приватности и безопасности — направились бы в эту сторону?
— Вероятно, работал бы над iOS-приложениями — и, возможно, это было бы связано с приватностью, да.
— На вашем сайте есть целый раздел о проблемах приватности, которые находятся прямо под носом, но остаются незамеченными — по-вашему, для индустрии в целом это проблема?
— Я думаю, что в iOS-сообществе особенно не хватает осознания вопросов безопасности и приватности. Я понимаю, что это не самая увлекательная тема для большинства людей, и она способна тормозить разработку проекта. Но она необходима.
Минутка рекламы. В апреле Феликс выступит в Петербурге на нашей конференции Mobius с докладом «Trusting iOS SDKs», где как раз обратится к теме безопасности. А если после этого интервью у вас остались вопросы к Феликсу, на Mobius будет удобно задать их лично: каждый спикер после своего доклада будет отправляться в дискуссионную зону, где его можно как следует порасспрашивать.