Unstable Build открыла код IDE Rune и обещает участникам долю дохода

Компания Unstable Build открыла исходный код своей среды разработки (IDE) Rune под лицензией GPLv3 и опубликовала его на GitHub, в репозитории unstablebuild/rune. Rune, нативное, ориентированное на управление с клавиатуры приложение, написанное в основном на Go: это не веб-обёртка поверх Electron, а GPU-ускоренный интерфейс, построенный вокруг символьной сетки (character grid) и похожий по виду на терминальный мультиплексор. В одном окне здесь соединены редактор кода, файловый менеджер, терминал и сессия ИИ-агента.

По словам компании, Rune открыли не сразу, а только после того, как определились ключевые архитектурные решения, иначе ранние технические решения рисковали незаметно превратиться в постоянные ограничения или недокументированные обязательства перед пользователями. Сейчас у проекта выделено несколько таких решений: терминал, не отдельная программа, а полноценная часть интерфейса; встроенная консоль работает как постоянная интерактивная командная строка (REPL) для установки пакетов, настройки моделей, управления расширениями, процессами и отладчиком; все действия, от операций редактора до агентных сценариев, доступны через единую командную строку с нечётким (fuzzy) поиском, её можно вести с клавиатуры, привязывать команды к сочетаниям клавиш или собирать в цепочки; ядро редактора остаётся небольшим, а расширения работают через открытый gRPC-интерфейс, что позволяет писать их на любом языке, а не только на Go; наконец, каждый экземпляр Rune, узел собственной приватной P2P-сети, и по новой схеме ссылок rune:// можно удалённо открыть рабочее пространство на любой из своих машин, с оговоркой, что это зависит от прохождения NAT (трансляции сетевых адресов).

Отдельный раздел поста посвящён производительности терминала Rune, тоже написанного на Go: изначально по пропускной способности псевдотерминала (PTY) он уступал терминалам Alacritty (Rust), Ghostty (Zig) и Kitty (C) почти на два порядка, то есть примерно в сто раз. Разработчики сократили этот разрыв не переходом на язык с ручным управлением памятью через cgo, а инженерными средствами: более эффективными алгоритмами, лучшим распределением работы между горутинами, балансировкой их пробуждений, чтобы снизить накладные расходы среды выполнения (рантайма) Go, и переходом от модели рендеринга, завязанной на количество кадров в секунду (FPS) и унаследованной от игрового движка, на котором построена графика Rune, к событийной модели, ради меньшей задержки. Результат проверили тестом vtebench от Alacritty на двух контрастных машинах, Apple M4 Max со 128 ГБ ОЗУ под macOS и старом ноутбуке 2016 года на маломощном мобильном процессоре Intel Core m3-6Y30 под Linux, и показали статистические графики (box-plot) по десяти и двенадцати сценариям нагрузки соответственно; в частности, на новом Mac терминал iTerm2 оказался на один-два порядка медленнее остальных на нескольких сценариях прокрутки. Авторы прямо оговаривают: это не сравнение производительности языков программирования и не доказательство, что Go «так же быстр», как Rust или Zig, речь только о том, что профилирование и инженерная работа дали достаточный контроль, чтобы терминал Rune стал конкурентоспособен на этих нагрузках, не потеряв простоты и скорости разработки, ради которых Go выбрали изначально.

Ключевая часть анонса, не сама техника, а модель прав на код. Авторы описывают распространённую в опенсорсе проблему: компании развивают проекты открыто, получают выгоду от пользователей и участников, а затем меняют лицензию, когда проект становится ценным, этому помогают широкие CLA (соглашения с участниками), которые обязывают их передавать авторские права или особые права на релицензирование компании. Unstable Build называет отказ от такой практики «reverse rug pull», разворотом привычного сценария, в котором именно сообщество обычно остаётся ни с чем. Rune лицензируется по GPLv3, участники сохраняют авторские права на свой код и передают его на тех же условиях GPLv3, что и весь проект, а у Unstable Build не будет особого права сделать наработки сообщества проприетарными в будущем.

Вместо этого Unstable Build даёт участникам договорное право на долю от доходов, которые Rune приносит прямо или косвенно. Принятый вклад в проект будет приносить «кредиты участия» (contribution credits); часть, пока не названная, от «приемлемых доходов от сервисов» компании пойдёт в общий пул, и каждая выплата из пула будет делиться пропорционально активным на тот момент кредитам. Расчёт обещают вести в открытом, проверяемом реестре (публикуется на GitHub, в репозитории unstablebuild/blue), с учитываемыми поступлениями, разрешёнными вычетами, начислением кредитов, знаменателем расчёта и итоговым распределением, чтобы участники могли сами пересчитать сумму, а не верить цифре на слово. Участие в программе необязательно: вносить вклад в Rune по стандартной процедуре GPLv3 и DCO (Developer Certificate of Origin, подтверждения авторства вклада) можно и без неё, а вступление в саму программу не делает участников сотрудниками, совладельцами или членами Unstable Build и не передаёт компании дополнительных прав на их код. Зарегистрироваться уже можно в личном кабинете на сайте Rune, но сама компания уточняет, что юридические детали, процент отчислений, какие именно сервисы и доходы будут учитываться, как долго остаются активными кредиты участия и по какому графику пойдут выплаты, пока дорабатываются.

Первоклассная поддержка сейчас есть у двух языков, Go и Python; поддержка Rust и Zig в бета-статусе и доступна только через сборку из исходников (ветка main), а не из готового релиза. Компания ищет разработчиков, готовых возглавить поддержку других языков и экосистем, в посте как желаемые направления названы Elixir, OCaml, Clojure, Java, C# и TypeScript. По словам авторов, «первоклассная» поддержка языка, это больше, чем просто подключить языковой сервер (LSP): она включает определение структуры проекта, установку инструментов, подсветку синтаксиса и индексацию, отладку и рабочие процессы, специфичные для экосистемы языка. Пример уже есть: помимо стандартных методов LSP, Rune даёт доступ к операциям rust-analyzer через отдельную команду rust и позволяет управлять инструментами Rust (rustup) прямо из встроенной консоли, не выходя из среды. Начать предлагается с Go SDK (репозиторий unstablebuild/rune-go-sdk) или с уже существующего Python-расширения (само написано на Go) и растущего Python SDK, а отдельное руководство для разработчиков, «Languages», показывает архитектуру и жизненный цикл расширений на примере интеграции с Python: от синтаксиса и индексации до отладки и упаковки.

Ключевые факты

  • Unstable Build открыла исходный код своей IDE Rune (написана в основном на Go) под лицензией GPLv3 и опубликовала его на GitHub (unstablebuild/rune).
  • Компания одновременно запускает необязательную программу: участники разработки получат долю дохода Rune через систему «кредитов участия», которая финансируется отчислением от доходов сервисов компании, точный процент и остальные условия пока не определены, а вступление не делает участников сотрудниками или совладельцами.
  • Терминал Rune на Go изначально уступал по скорости Alacritty, Ghostty и Kitty почти на два порядка (~100 раз); профилирование и инженерная доработка (распределение работы между горутинами, переход на событийную модель рендеринга) сократили разрыв, и на тестах vtebench (Apple M4 Max и старый MacBook 2016 года) терминал стал конкурентоспособен на замеренных нагрузках, сами авторы подчёркивают, что это не сравнение производительности языков программирования.
  • Rune сейчас даёт первоклассную поддержку Go и Python; поддержка Rust и Zig, в бета-статусе и доступна только сборкой из исходников; компания ищет разработчиков, готовых вести поддержку других языков (в пример названы Elixir, OCaml, Clojure, Java, C# и TypeScript).
  • Архитектура Rune: терминал как часть интерфейса, встроенная консоль-REPL, единая командная строка с нечётким поиском, нативный GPU-ускоренный интерфейс на символьной сетке, расширения через gRPC на любом языке и собственная P2P-сеть с адресацией rune:// для удалённого доступа к рабочим пространствам.

Почему это важно

Новость соединяет два самостоятельных сюжета. Первый, ещё одна попытка переизобрести IDE: Rune написана в основном на Go, работает как нативное GPU-ускоренное приложение поверх символьной сетки, а не веб-обёртка на Electron, и с самого начала объединяет редактор, файловый менеджер, терминал и сессию ИИ-агента в одном окне с общей командной строкой, то есть агентные сценарии в ней не надстройка, а часть базового интерфейса. Это часть более широкого сдвига последних лет, где среды разработки перестраивают вокруг совместной работы с ИИ-агентами. Второй сюжет необычнее: сама модель прав на код. Вместо характерного для опенсорс-стартапов сценария, открыться, вырасти на труде сообщества, а затем сменить лицензию на закрытую, Unstable Build фиксирует GPLv3 без права релицензирования и добавляет договорную долю дохода для участников, которые вносят вклад в проект. Компания сама называет это «reverse rug pull», разворотом привычного сценария, в котором именно сообщество обычно остаётся ни с чем.

Кому это важно

В первую очередь, разработчикам на Go и Python: для этих языков в Rune уже есть полноценная («первоклассная») поддержка, и именно им проще всего начать пользоваться средой или дорабатывать её уже сейчас. Тем, кто работает с Rust или Zig, придётся собирать поддержку из исходников, готового релиза для них пока нет. Отдельная аудитория, разработчики, готовые возглавить поддержку других языковых экосистем: компания прямо ищет тех, кто займётся Elixir, OCaml, Clojure, Java, C# или TypeScript, и даёт для старта Go SDK и пример готового Python-расширения. Открытие кода и программа доли дохода важны и для участников опенсорс-сообщества в целом, особенно для тех, кто настороженно относится к CLA (соглашениям с участниками) в чужих проектах и хочет видеть более редкий сейчас пример: открытая лицензия без права компании закрыть код позже, плюс договорная, пусть пока не детализированная, доля в доходе. Наконец, это интересно тем, кто ищет терминал или IDE, написанные не поверх Electron, а как нативное GPU-приложение, тем более на фоне подробно показанных внутренних замеров производительности.

Как это применить

Исходный код Rune и лицензия GPLv3, на GitHub, в репозитории unstablebuild/rune; там же гид для участников (CONTRIBUTING.md) и список открытых задач. Начать разработку расширений можно с Go SDK (unstablebuild/rune-go-sdk) или посмотреть на уже существующее Python-расширение (само написано на Go) и растущий Python SDK; отдельное руководство «Languages» в документации показывает архитектуру и жизненный цикл расширений на примере интеграции с Python, от синтаксиса и индексации до отладки и упаковки. Поддержка Rust и Zig, в бета-статусе и собирается только из исходников, из ветки main, готового релиза с ней пока нет. Записаться в программу доли дохода можно уже сейчас, через личный кабинет на сайте Rune (rune.build/account); участие добровольное, и вносить вклад в проект по обычной процедуре GPLv3/DCO можно и без вступления в программу. Тем, кто хочет предложить себя в качестве ведущего разработчика поддержки нового языка (в посте прямо названы Elixir, OCaml, Clojure, Java, C# и TypeScript как желаемые направления), стоит начинать оттуда же, с открытых задач в репозитории и гида для участников.

Можно ли доверять

Источник, официальный блог самой компании Unstable Build, а не независимое СМИ, поэтому это анонс, а не сторонняя проверка: цифры о разрыве в производительности терминала и его сокращении получены и опубликованы самой компанией на её собственном оборудовании и в её собственной интерпретации графиков vtebench, без независимого воспроизведения третьей стороной, судя по доступным нам материалам. При этом деталей достаточно, чтобы отличить это от рекламного заявления без подтверждений: названы конкретные машины для тестов, число сравниваемых сценариев нагрузки, а авторы сами честно ограничивают вывод, прямо пишут, что это не сравнение производительности языков программирования, а лишь фиксация того, что разрыв в конкретных бенчмарках сократился. Отдельная оговорка касается программы доли дохода: на момент публикации это объявленное намерение, а не работающая схема с фиксированными условиями, компания сама пишет, что процент отчислений, список учитываемых доходов, срок действия кредитов участия и график выплат ещё дорабатываются, а обещанный открытый проверяемый реестр расчётов в самом посте пока не показан, только анонсирован. На Hacker News на момент сбора данных для этого разбора у обсуждения было 162 балла и 56 комментариев примерно за 14 часов, заметный, но не экстраординарный отклик; содержание самих комментариев в материалы для этого разбора не входило, поэтому судить об их тональности здесь нельзя.

Риски и подводные камни

Сама Rune, по признанию компании, «не завершена», первоклассная поддержка пока есть только у Go и Python, а Rust и Zig в бете и без готовой сборки, то есть ранним пользователям придётся мириться с шероховатостями и достраивать экосистему самим. Программа доли дохода рискованна именно неопределённостью условий: неизвестны ни процент отчислений, ни то, какие доходы будут «приемлемыми», ни срок жизни кредитов участия, ни график выплат, а значит, заранее оценить, сколько (и получит ли вообще что-то) заработает участник, нельзя; сама Unstable Build, молодая и небольшая компания, и доходы, из которых должен формироваться пул, пока ничем не гарантированы. Архитектурный выбор, GPU-ускоренный интерфейс на основе символьной сетки вместо привычного богатого графического интерфейса (GUI), сама компания называет «колоссальным компромиссом»: часть пользователей, ожидающих обычный интерфейс IDE, может счесть его ограничивающим. Собственная P2P-сеть Rune и адресация rune:// прямо оговорены как зависящие от прохождения NAT (трансляции сетевых адресов), то есть в некоторых сетевых конфигурациях удалённый доступ к рабочим пространствам может просто не заработать. Наконец, лицензия GPLv3, осознанный выбор в пользу сообщества, но и ограничение для части коммерческих пользователей: любой, кто распространяет изменённую версию Rune (например, форк), обязан открыть и свой код, условие, которое устраивает не всех потенциальных интеграторов.

«Это может быть законно, если все стороны с этим согласны, но мы не хотим такого для Rune.»

— Unstable Build, блог компании