«CI плохо справляются с требованиями мобильной разработки»: интервью с создателем fastlane Феликсом Краузе

my6s5ewtndfm2wcx3ej8kxtunrc.jpeg

Многие мобильные разработчики любят инструмент 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-частью, у нас есть группа контрибьюторов, сосредоточенная на этом.

ymx067vftlshsgbu8yj5od3nfme.png

— Главная страница 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-приложениями — и, возможно, это было бы связано с приватностью, да.

08bkqiqqmzosiikanlcw7nz0gq4.png

— На вашем сайте есть целый раздел о проблемах приватности, которые находятся прямо под носом, но остаются незамеченными — по-вашему, для индустрии в целом это проблема?

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

Минутка рекламы. В апреле Феликс выступит в Петербурге на нашей конференции Mobius с докладом «Trusting iOS SDKs», где как раз обратится к теме безопасности. А если после этого интервью у вас остались вопросы к Феликсу, на Mobius будет удобно задать их лично: каждый спикер после своего доклада будет отправляться в дискуссионную зону, где его можно как следует порасспрашивать.

© Habrahabr.ru