Сегодня отмечается выход Wails v1. После почти 2 лет разработки, наконец, пришло время поставить на него большой штамп v1. Как всегда, я не решился это сделать, но об этом позже. Во-первых, позвольте мне немного рассказать о том, как мы сюда попали.

Прошлое

Идея Wails возникла из комбинации двух вещей, которые произошли довольно близко друг к другу. Я хотел создать графический интерфейс для Restic (желательно в html / js / css), и мне не нравился тот факт, что единственный способ получить интерфейс - это создать веб-сервер, а затем использовать браузер. Вскоре после этого я обнаружил WebView, библиотеку для создания окна веб-просмотра на Mac, Linux и Windows. Немного поигравшись с WebView, я понял, что есть несколько сложных моментов - в основном, связанных с выполнением / синхронизацией кода между интерфейсом и сервером. Мне пришла в голову мысль: что, если бы я мог создать что-то, что решает все сложные задачи и предоставить базовую платформу для людей, которая имеет дело со всеми сложностями? Так родился Wails.

На то, чтобы сменить репо с частного на публичное на Github, потребовалось около полутора лет. Почему? Потому что это был мой первый крупный проект Go, а также мой первый крупный проект с открытым исходным кодом. Меньше всего я хотел, чтобы мой код попал в викторину Дэйва Чейни с вопросом Что в этом коде правильного?! Я был уверен, что его разорвут на части. С некоторой поддержкой от теперь уже хорошего друга в Твиттере я выпустил первую общедоступную версию кода 1 мая этого года. Отклик на Reddit был фантастическим! Оказывается, никто не тратит свои дни на рецензирование кода на случайные проекты в Интернете. Вместо этого я начал получать положительные отзывы и просьбы о помощи. С тех пор проект набрал 1,3 тыс. Звезд на GitHub, и около 10 тыс. Пользователей посетили сайт документации.

Настоящее

Благодаря удивительной помощи других, проект сейчас находится в стабильном состоянии. Вы можете легко добавить HTML-интерфейс в свои проекты Go. Вы можете сделать это с помощью любого JS-фреймворка, хотя вы получите руку помощи, если захотите использовать React, Vue или Angular. Вы можете упаковать приложение в .exe или .app с помощью значка по вашему выбору. Вы можете отправлять события из Go или Javascript и получать их с любой стороны или даже с обеих!

Как и в случае с любой версией v1, единственной гарантией является стабильный API. Есть еще ряд неурегулированных ошибок. Но всегда будет. Документы почти наверняка будут иметь некоторые дефекты. Выпуск v1 касается исключительно стабильного API, а не претензии на совершенство. Но кое-что я понял, так это то, что единственный способ приблизиться к совершенству - это групповые усилия, а это не может произойти изолированно.

Будущее

Я твердо верю в трехэтапный подход к решениям:

  1. Сделай так, чтоб это работало
  2. Сделать это правильно
  3. Сделай это быстро

Версия 1 - это только первый шаг. Это работает, но есть вещи, которые можно улучшить. Чтобы перейти к версии 2, мы рассмотрим следующие основные области:

  • Замените WebView библиотекой окон.
  • Графический интерфейс для управления вашей средой и проектами.
  • Добавьте безголовый (серверный) объект для сборок.
  • Больше интеграции с рабочим столом (уведомления, трей и т. Д.).
  • Общий рефакторинг проекта.

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

Никогда не угадаешь, возможно, я наконец дойду до создания пользовательского интерфейса для Restic.