[Перевод] Flutter. Весеннее обновление 2020

Привет! Меня зовут Евгений Сатуров, я Flutter-разработчик Surf и основатель Flutter Dev Podcast.
Ниже перевод статьи Tim Sneath и Patrick Sosinski с моими комментариями.

Полмиллиона разработчиков, 50 тысяч приложений, взрывной рост и обновлённый релизный цикл.

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

mnnarhydrg1ykcwhgt5rytqhy-a.png

Движущая сила Flutter


Как и прежде, мы наблюдаем стремительный рост использования Flutter. За 16 месяцев с момента запуска число разработчиков, использующих Flutter, превысило 2 млн. Несмотря на беспрецедентные обстоятельства, мы заметили 10%-ный рост использования Flutter в марте по сравнению с предыдущими месяцами. Каждый месяц Flutter используют полмиллиона разработчиков.

Другая любопытная статистика:

  • 60% из вас используют Windows, 27% — macOS, и 13% пользуются Linux.
  • 35% из вас работают в стартапе, 26% — разработчики корпоративных приложений, 19% — самозанятые, а 7% работают в дизайн-студиях.
  • 78% Flutter-разработчиков используют канал stable, 11% пользуются beta, а 11% работают с dev или master-каналами.
  • Топ стран, где разрабатывают на Flutter: Индия, Китай, США, страны Европейского Союза, Бразилия.
  • В Play Store было опубликовано около 50 тыс. приложений, написанных на Flutter. Почти 10 тыс. приложений было загружено только за последний месяц.
  • Самые часто используемые библиотеки фреймворка: http, shared preferences, intl, meta, path provider и pedantic.
  • Самые популярные сторонние библиотеки: provider, rxdart, cached network image, sqflite, font awesome flutter и flutter launcher icons.


ty4ki1vneeixkec5mnd42ybatb0.png

Комментарий по статистике по операционкам:
Несмотря на значительный перевес в сторону Windows, мы в Surf разрабатываем Flutter-приложения исключительно на macOS. Слишком много ограничений накладывает отсутствие возможности быстро протестировать написанный код на iOS-устройствах. Некоторые операции и вовсе, сделать без macOS невозможно. Думаю, вы точно захотите выгрузить сборку не только в Google Play, что проблематично сделать без Xcode, который, в свою очередь, может быть установлен только на Mac. Да, существуют разные уловки, которые частично помогают решать эти проблемы без финансовых вложений. Советую попробовать плагин Remote Mac от наших друзей из Codemagic. Этот плагин на 20 минут предоставляет доступ к удалённому Mac для любых операций (и всё это бесплатно).

UPD (via tokarev): Доступ к macOS (SSH/VNC) был добавлен и в основной функционал Codemagic.


Комментарий по статистике по используемым каналам:
Пока мы, как и большинство разработчиков, плотно сидим на stable-канале. Он обновляется раз в квартал и это… редко. Хочется чаще получать апдейты и багфиксы. Поэтому, мы всё активнее двигаемся в сторону того, чтобы пробовать пользоваться dev-каналом для разработки на постоянной основе. В одном из выпусков Flutter Dev Podcast Андрей Лесницкий рассказал, что использует dev в качестве основного канала уже давно и это совсем не страшно и не больно. Рекомендуем послушать.


Flutter в корпоративной разработке


Всё больше компаний выбирают Flutter для разработки брендированных продуктов для нескольких платформ. Недавний пример — Nubank, крупнейший цифровой банк за пределами Азии с 20 млн. клиентов. Проанализировав три технологии кроссплатформенной разработки, Nubank остановились на Flutter. Им удалось объединить команду фронтенд-разработчиков в одном фреймворке, что позволило Nubank запускать новый функционал одновременно на iOS и Android.
В этом видео разработчики Nubank рассказывают об опыте использования Flutter и его преимуществах.

Комментарий про продакшн-кейсы:
Ищете больше существующих проектов на Flutter и референсов к известным командам, сделавшим свой выбор в пользу именно этого кроссплатформенного фреймворка? Сразу два выпуска Flutter Dev Podcast помогут вам узнать больше про успешный опыт таких команд-первопроходцев: Яндекс.Такси делают Flutter-приложение для водителей (ссылка на выпуск), а ребята из Grab, после того как вытеснили Uber из юго-восточной Азии, пишут на Flutter проекты для мерчантов и компоненты для супераппа (ссылка на выпуск).
Нам тоже есть чем похвастаться. Рассказ о нашем первом крупном публичном Flutter-проекте на сайте.


Частый запрос от компаний — наличие enterprise-компонентов. Мы начали сотрудничать с SyncFusion, чей продукт Essential Studio теперь включает ряд профессиональных компонентов для Flutter, таких как построение графиков, работа с PDF и генерация штрих-кодов. С релизом версии 2020.1 все компоненты из коробки поддерживают Android, iOS и даже web, а элементы управления получили веб-превью.

Обновлённый релизный цикл


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

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

  • отсутствие ясности относительно сроков подготовки релиза и кода, который пойдёт в релиз;
  • отсутствие тестирования веток, приводящее к регрессионным ошибкам hotfix-релизов.


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

Мы воспользовались этой возможностью, чтобы совместить релизные циклы и каналы Flutter и Dart. В результате мы добавили в Dart канал beta, что в будущем позволит нам синхронизировать релизы. Теперь beta-релизы Flutter будут содержать beta-релизы Dart.

Если ваше Flutter-приложение уже работает на базе канала stable, мы рекомендуем протестировать его на beta-канале и таким образом повлиять на качество стабильного релиза. Также вы можете принимать участие в исправлении регрессионных и блокирующих багов в stable-канале», используя новый процесс Flutter Cherrypick, описанный во Flutter Wiki.

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

Комментарий про новый релизный цикл:
TL; DR Что изменится в жизни Flutter-разработчиков вместе с изменениями релизного цикла? Ничего. Может быть жизнь станет чуточку лучше, а известные баги фреймворка будут быстрее доходить до стабильных каналов. Но периодичность обновления stable-канала раз в квартал не меняется и это немного расстраивает. Впрочем, самые критичные проблемы будут закрываться хотфиксами, как это и происходит сейчас. А вот окончательная синхронизация релизных циклов Dart и Flutter радует: новые фичи языка сразу будут находить своё применение и в самом фреймворке.


Изменения в версионировании


В рамках новой модели ветвления мы внесли несколько незначительных изменений в версионирование.

Полная техническая информация доступна на странице релизных каналов Flutter в Wiki. Приведём краткое описание изменений:
Нестабильные релизные версии получат суффикс .pre в строке версии для обозначения их предрелизного статуса. В строке формата x.y.z-n.m.pre значение n в сборках канала dev будет увеличиваться каждый раз, когда будет создана новая сборка в канале master:

  • 1.18.0–1.0.pre: первая dev сборка после сборки в канале master получает номер 1.18
  • 1.18.0–2.0.pre: следующая dev сборка, основанная на одной из последних сборок в канале master


Бета-релизы будут собираться после релиза в канале dev, как указано выше. С каждым исправлением значение m увеличивается. Например, если мы возьмём 15-ю dev сборку из канала master, вышедшую из беты под номером 1.18, нумерация будет выглядеть так:

  • 1.18.0–15.0.pre: изначальный бета-релиз (тот самый, который отправился в dev)
  • 1.18.0–15.1.pre: последующая сборка в (теперь уже) ветке beta с исправлениями
  • 1.18.0–15.2.pre: вторая, более поздняя сборка


Версии стабильных релизов оформляются как x.y.0. Последующие исправления будут увеличивать номер патча (x.y.1, x.y.2 и т.д.):

  • 1.18.0–15.4.pre: последняя тестовая сборка в ветке
  • 1.18.0: стабильный релиз, то же самое, что версия 1.18.0–15.4.pre
  • 1.18.1: потенциальный патч версии 1.18.0


Комментарий про новое версионирование:
Главное теперь не запутаться во всём этом разнообразии. Мне кажется, что новая система версионирования стала более понятной и простой. По-крайней мере, теперь не нужно никому объяснять, почему последняя и самая стабильная версия фреймворка носит такое странное название v1.12.13+hotfix.9.


Что дальше?


Следующий релиз в канале stable будет использовать новое версионирование. Мы планируем выпустить его на следующей неделе вместе с детальным описанием всех новых функций.

А пока предлагаем ознакомиться с другими нашими новостями. На прошлой неделе мы объявили о том, что платформа CodePen теперь поддерживает Flutter. Мы рады сообщить, что за несколько дней на сайте появилось множество работ, написанных на Flutter. Мы выбрали для вас самые интересные:


Хорошая новость для тех, кто хочет научиться разрабатывать на Flutter: мы запустили бесплатный 10-часовой ознакомительный курс по Flutter. Он включает в себя как учебные пособия, так и лабораторные работы, которые помогут вам начать свой путь в качестве Flutter-разработчика.
Увидимся на следующей неделе. Мы надеемся, что вам удастся добиться ваших целей в это сложное время. Оставайтесь дома и будьте здоровы!

© Habrahabr.ru