Написать пост

Как создать классную среду для разработчиков — взгляд Aurora Foundation

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

ОС Аврора — российская мобильная операционная система. Её начали разрабатывать в 2016 году, сейчас выходит уже пятая версия, есть своё комьюнити разработчиков, появляются приложения. В общем и целом платформа развивается.

Конечно, её сравнивают и будут сравнивать с гигантами вроде Android и iOS. Поэтому она должна быть качественной и вполне конкурентоспособной, и одновременно самобытной и по-своему прорывной.

Нам хотелось бы привлечь больше разработчиков, создать больше приложений, сформировать свою экосистему сервисов и ширить базу преданных пользователей. И мы создали Aurora Foundation. Проект уже начал объединять разработчиков ОС, приложений и сервисов, производителей устройств. В статье расскажем, что уже готово и что планируем делать в будущем.

Взять хорошую универсальную основу

Сейчас многие популярные инструменты стали официально недоступны. Любимые многими продукты JetBrains не купить в России, какие-то ресурсы порой доступны только через VPN. Мы делаем IDE для Flutter, так что, очевидно, доступна ещё Android Studio. Но это всё же нишевый инструмент, который нет смысла брать за основу универсального продукта.

Есть и альтернативные пути. При желании можно и Neovim заточить под Flutter (хотя вряд ли найдётся много охотников таким образом работать) или посмотреть в сторону развивающихся опенсорсных проектов вроде подающего надежды Zed от создателей Atom. Но на длинной дистанции это не кажется удобными или надёжными.

По большому счёту, из мощных универсальных инструментов в свободном доступе остался лишь VS Code — по статистике им пользуется примерно треть разработчиков. Но не все его плагины полноценно работают в России, особенно сопряжённые с зарубежными облачными сервисами.

Так что мы взяли его опенсорсную версию Code OSS в качестве основы и начали писать свою IDE для российского комьюнити разработчиков под основные платформы (Linux, Windows, macOS на x86 и ARM). Лицензия MIT, убедительная история разных форков и способность работать как серверное веб-приложение без локальной установки стали дополнительными аргументами.

Project IDX — анонсированная новая среда разработки от Google тоже основана на Code OSS.
Как создать классную среду для разработчиков — взгляд Aurora Foundation 1
Начало работы с Aurora Studio

Максимально упростить работу

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

Как создать классную среду для разработчиков — взгляд Aurora Foundation 2
Dart и Flutter в Aurora Studio

Мы хотим убрать этот барьер и сделать процесс проще, чтобы даже новичок, который только-только окончил курс «Введение в программирование», смог установить и настроить IDE под себя, И затем быстро собрал работающее приложение с помощью шаблонов и преднастроенных тулчейнов сборки.

Поэтому делаем так, чтобы всё окружение и инструменты сами устанавливались и настраивались «по клику», а всё остальное автоматически доезжало по мере необходимости. Ну и конечно же используем контейнеры, чтобы создание сред отладки и сборки было наименее «инвазивным» для компьютера разработчика, и в перспективе появилась возможность запускать среды и на серверной стороне в облаке.

Продуманный Developer Experience — ключ к успеху любой платформы, будь то операционная система или просто фреймворк для прикладной разработки. И мы стараемся позаботиться в том числе о начинающих разработчиках и сделать опыт работы с Авророй для них приятным открытием
Михаил СоколовВладелец продуктов

Добавить эмулятор и совместимость с другими операционками

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

Поэтому нужен эмулятор устройства с Авророй. В классическом Aurora SDK уже есть такой, на базе виртуалок. А в Aurora Studio мы реализуем контейнеры с разными таргетами сборки ОС и эмулятором на базе QEMU. По задумке, его можно будет виртуально запускать и отлаживать приложения на основных архитектурах и форматах устройств локально или в облаке.

Взяв на вооружение Flutter, можно собирать приложения сразу для Авроры, Android и iOS. И почему бы не задаться целью сделать подход Aurora first — когда вместо портирования на Аврору приложений, изначально разработанных под другие платформы, мы сразу пишем софт под Аврору и параллельно собираем для других платформ. Думаю, такой подход поможет Авроре стать у российских разработчиков куда более популярной мобильной ОС.

Добавить облака

Облака — это тренд рынка по нескольким причинам.

  • Отладка с тестированием становятся настолько ресурсоёмкими и комплексными процессами, что разумно выносить эти операции с компьютера разработчика на внешние мощности, в том числе облачные. 
  • Да и благодаря многообразию операционных систем, устройств и архитектур (x86 и ARM, RISC-V и MIPS, скорее всего, перестанут быть экзотикой Эльбрусы и LoongArch и так далее), приходится учиться жонглировать всё более сложными средами разработки и заниматься созданием и поддержкой собственных стендов в железе.
  • Стандартом индустрии становятся IDE, усиленные облачными средствами сборки, запуска, отладки, тестирования и всевозможного анализа кода, а также публикации релизов на площадках дистрибуции. У Apple эти задачи решает Xcode Cloud, у Google — недавно стартовавший Project IDX. Подобная история есть, разумеется, и у Microsoft, причём сразу в нескольких местах – на vscode.dev, на github.dev и в Azure.
  • В IDE прорастает направление ИИ-ассистентов для программирования, базирующихся на соответствующих облачных сервисах.
  • Растёт актуальность нового класса облачных услуг — Environment-as-a-Service (EaaS, «среда как сервис»).  

Это, кстати, ещё один аргумент в пользу Code OSS и его способности работать и десктопно, и в браузере. С таким фундаментом переход к нашей собственной EaaS-платформе станет абсолютно бесшовным.

Гарантировать безопасность

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

Но безопасное кодирование — непростая дисциплина, особенно для новичков, потому что надо: 

  • овладеть принципами и подходами «безопасного кода»;
  • освоить инструменты для своевременного выявления потенциальных уязвимостей;
  • разобраться во множестве неочевидных технических нюансов, определяющих безопасную работу ПО;
  • изучить требования закона к системам, которые затрагивают персональные данные и идентификацию пользователей, их платёжные средства или физиологические показатели;
  • понимать требования закона к системам, которые обслуживают критическую инфраструктуру. 

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

Это же просто нескончаемая эпопея с тем, как гиганты вроде Microsoft и их пользователи страдают от дыр в системах: взломы, сливы данных, скандалы. Конечно, сделать софт на 100% безопасным крайне сложно, но тем не менее инструментально обеспечить приличную долю неуязвимости можно.

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

  • указывать, что в написанном коде есть небезопасные конструкции, и подсвечивать их (для этого уже есть инструменты, которые нужно интегрировать в IDE);
  • автоматически находить дыры и вредоносный код в опенсорсных пакетах, которые использует разработчик (и в их транзитивных зависимостях), прямо на это указывать и советовать использовать другую версию такого пакета или какие-то другие аналоги (у нашего «РТК-Феникс» уже выстроен очень хороший пайплайн, советую зайти и почитать);
  • предлагать готовые шаблоны безопасной реализации типовых прикладных конструкций.

Реализовать это всё в упомянутой ранее концепции EaaS — самая разумная стратегия.

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

Всесторонне развивать экосистему

Недостаточно просто сделать IDE и ждать, когда к нам придут разработчики — нужно развивать всю экосистему платформы, включая глобальные службы, необходимые приложениям. 

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

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

Представим, что у вас пять банковских приложений, и вы перешли на Аврору. Чтобы не скачивать всё заново и потенциально не мучиться с иконками веб-версий, можно просто использовать предустановленный сервис, назовем его «Финансы», где будут данные из всех банков. Примером подобной концепции является многим хорошо знакомый Apple Wallet.

Разумеется, шаблоны работы со всеми сервисами этой экосистемы сразу интегрируем в Aurora Studio. И обеспечим автоматическую публикацию их релизов в RuStore и приватных корпоративных Аврора Маркетах.

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

Что осталось сказать

У нас огромные планы — осталось всё это сделать. Сейчас у нас уже есть первые сборки среды разработки Aurora Studio, которые можно скачать и пощупать. Пока там нет всех фич, про которые рассказали в статье, но мы в процессе их реализации. И приглашаем вас протестировать альфа-версию нашей IDE.

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

Пишите в комментариях, на что вы обращаете внимание в среде разработки и что хотели бы видеть в IDE.

И бонусом несколько полезных ссылок

Следите за новыми постами
Следите за новыми постами по любимым темам
879 открытий8К показов