Внести изменения

Редактировать эту документацию

Переведите документацию или откройте весь проект на своём компьютере.

Ничего не будет опубликовано, пока вы не решите отправить свою работу.

Блог

Выпущен Wails v2

Примечания к выпускам и объявления Wails

leaanthonyЧтение: 6 мин

снимок экрана с монтажом

Он вышел!

Сегодня состоялся выпуск Wails v2. Прошло около 18 месяцев с выхода первой альфа-версии v2 и около года с выхода первой бета-версии. Я искренне благодарен всем, кто участвовал в развитии проекта.

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

Этот выпуск превзошёл все мои ожидания. Надеюсь, он принесёт вам столько же радости, сколько нам принесла его разработка.

Что такое Wails?

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

Что нового?

Выпуск v2 — огромный шаг вперёд для проекта, устраняющий многие недостатки v1. Если вы ещё не читали публикации о бета-версиях для macOS, Windows или Linux, рекомендую это сделать: там подробнее описаны все основные изменения. Кратко:

  • Компонент Webview2 для Windows с поддержкой современных веб-стандартов и возможностей отладки.
  • Тёмная и светлая темы, а также пользовательские темы в Windows.
  • В Windows больше не требуется CGO.
  • Встроенная поддержка шаблонов проектов Svelte, Vue, React, Preact, Lit и Vanilla.
  • Интеграция с Vite, обеспечивающая среду разработки приложения с горячей перезагрузкой.
  • Нативные меню и диалоговые окна приложения.
  • Нативные эффекты прозрачности окон для Windows и macOS. Поддержка фонов Mica и Acrylic.
  • Простое создание установщика NSIS для развёртывания в Windows.
  • Многофункциональная библиотека среды выполнения со вспомогательными методами для управления окнами, обработки событий, диалоговых окон, меню и журналирования.
  • Поддержка обфускации приложения с помощью garble.
  • Поддержка сжатия приложения с помощью UPX.
  • Автоматическое создание определений TypeScript для структур Go. Подробнее — здесь.
  • Вместе с приложением не требуется поставлять дополнительные библиотеки или DLL — ни на одной платформе.
  • Не требуется объединять ресурсы фронтенда в бандлы. Просто разрабатывайте приложение, как любое другое веб-приложение.

Благодарности

Подготовка версии v2 потребовала огромных усилий. С момента выхода первой альфа-версии и до сегодняшнего релиза 89 участниками было сделано около 2200 коммитов, а ещё очень и очень многие помогали с переводами и тестированием, оставляли отзывы и отвечали на вопросы на форумах обсуждений и в системе отслеживания проблем. Я безмерно благодарен каждому из вас. Также я хотел бы выразить особую благодарность всем спонсорам проекта за рекомендации, советы и обратную связь. Всё, что вы делаете, заслуживает огромной признательности.

Я хотел бы особо отметить нескольких человек:

Прежде всего, огромное спасибо @stffabi за множество изменений, которыми пользуемся все мы, а также за помощь в решении многих проблем. Он реализовал несколько ключевых возможностей, в том числе поддержку внешнего сервера разработки, которая преобразила наш режим разработки, позволив задействовать сверхвозможности Vite. Без его невероятного вклада выпуск Wails v2 был бы куда менее впечатляющим. Огромное спасибо, @stffabi!

Я также хочу выразить огромную признательность @misitebao, который неустанно поддерживал сайт, выполнял переводы на китайский язык, управлял Crowdin и помогал новым переводчикам освоиться. Это чрезвычайно важная работа, и я безмерно благодарен за всё вложенное в неё время и усилия! Ты великолепен!

И последнее, но не менее важное: огромное спасибо Мэту Райеру, который давал советы и оказывал поддержку во время разработки v2. Совместная работа над xBar с использованием ранней альфа-версии v2 помогла определить направление развития v2 и позволила мне понять некоторые недостатки проектирования в ранних выпусках. Рад сообщить, что с сегодняшнего дня мы начинаем переносить xBar на Wails v2 и это приложение станет флагманом проекта. Спасибо, Мэт!

Извлечённые уроки

На пути к v2 мы извлекли ряд уроков, которые определят дальнейшее развитие проекта.

Более компактные, быстрые и целенаправленные выпуски

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

Содействие участию сообщества

Когда я начинал этот проект, мне хотелось немедленно помочь каждому, кто столкнулся с проблемой. Я воспринимал проблемы как «личные» и хотел решать их как можно быстрее. Такой подход неустойчив и в конечном счёте мешает проекту существовать в долгосрочной перспективе. В дальнейшем я буду предоставлять больше возможностей другим людям участвовать в ответах на вопросы и первичной оценке проблем. Было бы полезно обзавестись инструментами, которые помогут в этой работе, поэтому, если у вас есть предложения, присоединяйтесь к обсуждению здесь.

Учимся говорить «нет»

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

Взгляд в будущее

Мы уже рассматриваем множество основных функций, которые хотим добавить в Wails в следующем крупном цикле разработки. В дорожной карте полно интересных идей, и мне не терпится приступить к работе над ними. Одним из самых частых запросов была поддержка нескольких окон. Это непростая задача, и для её правильной реализации нам, возможно, придётся предложить альтернативный API, поскольку текущий API проектировался без учёта такой возможности. Судя по предварительным идеям и отзывам, думаю, вам понравится выбранное нами направление.

Лично меня очень воодушевляет перспектива запуска приложений Wails на мобильных устройствах. У нас уже есть демонстрационный проект, подтверждающий возможность запуска приложения Wails на Android, поэтому мне очень хочется исследовать дальнейшие возможности этого направления!

В заключение я хотел бы затронуть вопрос функционального паритета. Одним из основных принципов долгое время было не добавлять в проект ничего без полной кроссплатформенной поддержки. Хотя до сих пор это оказывалось (в основном) достижимым, данный принцип серьёзно сдерживал выпуск новых функций. В дальнейшем мы будем применять немного другой подход: любая новая функция, которую нельзя сразу выпустить для всех платформ, будет доступна через экспериментальную конфигурацию или экспериментальный API. Благодаря этому первые пользователи на некоторых платформах смогут опробовать функцию и оставить отзывы, которые будут учтены при разработке её окончательного варианта. Разумеется, это означает, что стабильность API не гарантируется до появления полной поддержки на всех платформах, где такая поддержка возможна, но по крайней мере разработка больше не будет заблокирована.

Заключительные слова

Я очень горжусь тем, чего нам удалось достичь в выпуске V2. Поразительно видеть, что люди уже успели создать с помощью выпущенных к настоящему моменту бета-версий. Например, такие качественные приложения, как Varly, Surge и October. Советую вам с ними ознакомиться.

Этот выпуск стал возможен благодаря напряжённой работе множества участников. Хотя его можно бесплатно загрузить и использовать, он не возник без затрат. Не заблуждайтесь: этот проект потребовал значительных жертв. В него вложены не только моё время и время каждого участника, но и время, которое все эти люди не смогли провести со своими друзьями и семьями. Поэтому я безмерно благодарен за каждую секунду, посвящённую воплощению этого проекта в жизнь. Чем больше у нас участников, тем шире можно распределить эту работу и тем большего мы сможем достичь вместе. Я хочу призвать каждого из вас выбрать хотя бы один посильный вклад: подтвердить обнаруженную кем-то ошибку, предложить исправление, внести изменение в документацию или помочь тому, кому это необходимо. Все эти мелочи оказывают огромное влияние! Было бы замечательно, если бы и вы стали частью истории нашего пути к v3.

Приятного использования!

‐ Lea

P. S. Если вы или ваша компания считаете Wails полезным, пожалуйста, рассмотрите возможность спонсировать проект. Спасибо!