38 слайдів · ← → · зібрано зі звіту

existing-system audit

Solidus

Добре спроєктований опенсорсний комерційний фреймворк, який тихо втратив свого доглядача вдруге за десять років, — і конкурент, що повернувся з мертвих із бізнес-моделлю за плечима.

Повний звіт ↗1 / 38

Набір комерційних бібліотек для Rails. Ви запускаєте все; ви володієте всім.

Solidus — не хостований магазин: це набір бібліотек для Rails, які ви встановлюєте у власний застосунок — ви запускаєте сервери, ви володієте базою даних, ви тримаєте в себе кожну кастомізацію.

Повністю: Що таке Solidus насправді ↗2 / 38

знайдено

Технічно здоровий, стратегічно дрейфує.

Solidus технічно здоровий і стратегічно дрейфує. Обидва твердження правдиві, і розрив між ними — уся ця історія.

Повністю: Політики й операції ↗3 / 38

знайдено

Уся історія в чотирьох числах.

  • 60% → 0.8%Частка комітів Nebulab, 2023 → останні 12 місяців
  • $45,760Уже витрачено на адмінку, яка так і не вийшла
  • 3 yr 3 moВік нової адмінки, досі версія 0.4
  • $133,750Готівка на руках · тринадцять місяців без жодної витрати
Повністю: Політики й операції ↗4 / 38

PL1 · direction · proposed

Кожна заміна називає реліз, який прибирає те, що вона замінює

Що закриває
RC1 (Міграції спроєктовано, але ніколи не заплановано), D1 (Три незавершені переписування — найбільша повторювана витрата проєкту)
Щодо чинних стратегій
доповнює S3 (Постачати заміни поруч зі старою версією як opt-in, з гайдом міграції), додаючи критерій виходу, якого їй бракує; підсилює S2 (Ніколи не ламати наявний магазин — депрекація перед видаленням) — опублікована дата тримає «депрекуй перед видаленням» чесним
Механізми
рядок критеріїв виходу в шаблоні релізних нотаток (та сама автоматизація, що вже генерує чейнджлоги); порада «мігруйте вже» з гема промоакцій — як зразковий документ
Ухвалює
Core Team (запропоновано)
Виконується
чекліст релізу — рядок критеріїв виходу в релізній автоматизації
Перегляд
2027-02-08

Проєкт добре проєктує міграції і ніколи не планує їх у часі — RC1 (Міграції спроєктовано, але ніколи не заплановано) є механізмом за найбільшою повторюваною витратою в журналі, D1 (Три незавершені переписування — найбільша повторювана витрата проєкту).

Повністю: Запропонований реєстр політик ↗5 / 38

PL2 · allocation · proposed

Гроші колективу купують названі результати, а не час

Що закриває
RC1 (Міграції спроєктовано, але ніколи не заплановано), R3 (Напівзбудована адмінка стає постійним третім станом), F1 (Визначення «готово» існувало, і гроші до нього не підключили)
Щодо чинних стратегій
заповнює порожнечу — писаного правила розподілу не існує; ратифікує неписану норму фінансування, яку Core Team назвала на 25-й редакції
Механізми
наявне щотижневе голосування стейкхолдерів як місце затвердження; перевірка фіскального хоста як незалежний контроль; опис витрати сам несе результат і критерій, тож інспекція відбувається в момент затвердження без нової машинерії
Ухвалює
голосування стейкхолдерів (запропоновано)
Виконується
крок затвердження витрати — витрату без названого результату повертають, а не затверджують
Перегляд
2027-02-08

Кожен рік серйозних витрат фінансував одну-єдину співпрацю, і провалилася саме та, що купила активність замість результату — $45,760 за шість «Agile Design Sprints» 2023 року (F1 (Визначення «готово» існувало, і гроші до нього не підключили)).

Повністю: Запропонований реєстр політик ↗6 / 38

PL3 · guidance · proposed

Рішення публікуються там, де їх прочитає той, хто обирає

Що закриває
D2 (Врядування описує проєкт, якого більше не існує), D3 (Архітектурні рішення ніколи не фіксуються), R4 (Spree забирає ринок нових проєктів)
Щодо чинних стратегій
ратифікує S1 (Свідомо відкинути напрям JavaScript-фреймворків), переносячи опубліковану стратегію у власні артефакти проєкту; підсилює S5 (Право мерджу належить Core Team, що сама себе призначає)
Механізми
обидва канали вже існують і дрімають — перезапуск коштує годину на місяць; E1 (Проставити в чеклісті перенесення галочки за вже зроблене) та E5 (Переопублікувати заяву стратегії у власних артефактах проєкту) — перші два кроки, на хвилини
Ухвалює
Core Team (запропоновано)
Виконується
два наявні канали — статус-пости й майбутні пункти роадмапу — на щомісячному нагадуванні
Перегляд
2027-02-08

Core Team тримає явні технічні повноваження, спільнота збирається щотижня — і жодне рішення не досягає публічного артефакту: дошка роадмапу — чейнджлог, що носить ім'я роадмапу, а найясніша заява стратегії проєкту живе в маркетинговому блозі консалтингової фірми (S1 (Свідомо відкинути напрям JavaScript-фреймворків)).

Повністю: Запропонований реєстр політик ↗7 / 38

PL4 · approval · proposed

Кожна паралельна ініціатива щокварталу дістає вердикт, зафіксований публічно

Що закриває
R3 (Напівзбудована адмінка стає постійним третім станом), D1 (Три незавершені переписування — найбільша повторювана витрата проєкту), RC2 (Доглядач змінився в коді, але не у врядуванні)
Щодо чинних стратегій
доповнює S5 (Право мерджу належить Core Team, що сама себе призначає) — повноваження лишаються рівно там, де були; це додає місце, каденцію і запис, яких у них ніколи не було
Механізми
їде на наявній щотижневій зустрічі, чотири рази на рік; запис — пункт на дошці роадмапу, що заразом годує PL3 (Рішення публікуються там, де їх прочитає той, хто обирає)
Ухвалює
Core Team (запропоновано)
Виконується
один пункт порядку денного на квартал у наявній щотижневій зустрічі; список вердиктів живе на дошці роадмапу
Перегляд
2027-02-08

Адмінку три роки ані відвантажили, ані скасували — всередині структури врядування, яка прямо дозволяє і те, і те: повноваження є, місця для них нема (S5 (Право мерджу належить Core Team, що сама себе призначає), D2 (Врядування описує проєкт, якого більше не існує)).

Повністю: Запропонований реєстр політик ↗8 / 38

PL5 · guidance · proposed

Роботу контриб'ютора, що пішов, підхоплюють або закривають за релізний цикл

Що закриває
RC2 (Доглядач змінився в коді, але не у врядуванні), F2 (Збудовано однією організацією, передано нікому), F3 (Роботу останнього розробника покинули на півдорозі)
Щодо чинних стратегій
заповнює порожнечу — і ратифікує механізм порятунку, який спільнота вже раз продемонструвала
Механізми
збережений пошук GitHub за чернетками без активності автора N місяців — оце й уся інспекція; нагадування йде лише в реально застояні гілки, мовчить в усіх інших
Ухвалює
Core Team (запропоновано)
Виконується
прохід по застояних чернетках (збережений пошук або запланований action) плюс коментар з одним питанням: підхопити чи закрити?
Перегляд
2027-02-08

Коли 2025 року зупинився оплачуваний розробник, сім адмінських pull request-ів застигли там, де стояли, і єдиним порятунком досі був один контриб'ютор, що зголосився вручну через рік (F3 (Роботу останнього розробника покинули на півдорозі)).

Повністю: Запропонований реєстр політик ↗9 / 38

виведено

П'ять постійних правил, усі запропоновані, жодне не просить волонтера працювати.

Шар політик одним рядком: плануй те, що заміняєш, купуй результати, а не час, публікуй рішення, давай ініціативам квартальний вердикт, підхоплюй або закривай роботу тих, хто пішов. П'ять правил — і жодне не просить волонтера працювати.

Повністю: Що реєстр свідомо не покриває ↗10 / 38

знайдено

Форк Spree 2015 року. Творець пішов 2018-го; доглядач — 2024-го.

Уся дуга одним рядком: форк Spree 2015 року, творець зник до 2018-го, інженерія доглядача — до 2024-го, а машина досі їде на дисципліні, яку збудували ті, хто пішов.

Повністю: Хронологія ↗11 / 38

знайдено

Кожен серйозний рік фінансував один-єдиний контракт. 2021 і 2026 — нічого.

Витрати за роками — і хто отримав основну частину
РікВиплаченоВитратКуди пішло
2019$11,76810Витрати на конференцію — Sean Denny 43%, Cindy Backman 42%
2020$35,73624Peter Berkenbosch 80% — щомісячні «Development & Maintenance»
2021$00геть нічого
2022$5001Один інвойс за монтаж відео з конференції
2023$45,7607Адмінка — через Nebulab 79%, Andrea Iurisci 21%. 100% року.
2024$32,50616Logicielle B.V. 100% — 16 інвойсів за розробку, серпень–грудень
2025$16,8886«e.c441» 100% — 6 інвойсів за розробку, лютий–липень
2026$00геть нічого
Повністю: Куди пішли гроші — і коли це припинилось ↗12 / 38

знайдено

Фінансована розробка зупинилася в липні 2025. $133,750 лежать невитраченими, поки дохід продовжує надходити.

Гроші одним рядком: фінансована розробка зупинилася в липні 2025 року, відтоді надійшло тринадцять місяців доходу, і $133,750 лежать невитраченими.

Повністю: Хто може їх витратити ↗13 / 38

знайдено

Обсяг комітів: пік 2023-го — це одна організація, що прийшла й пішла.

20152,194
20162,244
20171,980
20181,070
2019883
20201,252
2021817
2022828
20231,810
20241,016
2025685
2026 дотепер223
Повністю: Обсяг розробки за роками ↗14 / 38

знайдено

Три переписування виглядають застряглими. За свідченнями, застрягла лише адмінка.

Продукт одним рядком: три паралельні переписування читаються як системна нездатність доводити до кінця, але промоакції — керована міграція, сторфронт — успіх; застрягла лише адмінка.

Повністю: Екосистема розширень ↗15 / 38

знайдено

Передача в комітах: 696, потім 46, потім 4, потім нуль.

Людина (організація)20222023202420252026
Елія Скіто (Nebulab)1336964640
Альберто Вена (Nebulab)7023252123
Райнер Дема (Nebulab)—168200
Super Good Software (усі)34314062136
Повністю: Відхід, рік за роком ↗16 / 38

знайдено

Доглядач написав 60% коду 2023-го — і 0.8% торішнього.

Люди одним рядком: Nebulab дали приблизно 60% усіх комітів 2023 року і 0.8% за останні дванадцять місяців — і жодного оголошення так і не було.

Повністю: Де ухвалюються рішення — і де ні ↗17 / 38

знайдено

Відмінна машина: найновіші Rails і Ruby, підхоплені за тижні після релізу.

Машина одним рядком: кожна зміна тестується проти чотирьох комбінацій Ruby–Rails, де найновішу з кожного підхоплюють за лічені тижні після релізу, депрекації валять збірку, фікси бекпортуються автоматично — машинерія доставлення з верхнього дециля для проєкту такого розміру.

Повністю: Машина ↗18 / 38

знайдено

За $45,760 і три роки куплено версію 0.4. Покинутість не дає жодного симптому.

Найдорожча ініціатива в історії проєкту зупинилась без жодного звуку: три роки і $45,760 по тому нова адмінка — на версії 0.4, а архітектура влаштована так, що покинутість не дає жодного симптому.

Повністю: Чому все зупинилось — три причини, що підсилюють одна одну ↗19 / 38

знайдено

Solidus і Spree, виміряні одного дня.

МетрикаSolidusSpree
Коміти за останні 52 тижні (власний ряд GitHub — git log у §06 нараховує 493 за те саме вікно; співвідношення 5.5× береться одним інструментом з обох боків)4002,190 — 5.5×
Зірки GitHub5,31715,572
Форки1,4005,287
Останній релізv4.7.0 · 15 квіт. 2026v5.6.1 · 28 лип. 2026
Платформні релізи в липні 202606
Сукупні завантаження пакетів3.22M2.85M
Повністю: Spree, виміряний ↗20 / 38

знайдено

Spree їде на бізнесі; Solidus — на банці пожертв.

Опенсорс Spree — маркетингова витрата на плечах справжнього бізнесу; опенсорс Solidus тримається на банці пожертв у $25k на рік.

Повністю: Порівняння можливостей ↗21 / 38

знайдено

Spree повернувся, відвантажуючи 5.5× коду, з enterprise-виручкою за спиною.

Конкурент одним рядком: Spree відвантажує у п'ять з половиною разів більше комітів, ніж Solidus, шість платформних релізів лише за липень 2026-го, а його безкоштовна редакція — воронка продажів платного enterprise-продукту.

Повністю: Порівняння можливостей ↗22 / 38

знайдено

Стратегія в дії: справжні правила, запроваджені машинами — і майже ніде не записані.

RuleWritten where?Health
S1Свідомо відкинути напрям JavaScript-фреймворків. Простота, один стек, жодних оплат, розподілене врядування.у блозі компанії провідного мейнтейнераФактична стратегія проєкту — сформульована, просто не тут
S2Ніколи не ламати наявний магазин. Депрекація перед видаленням; бекпорт виправлень у старі версії.ратифікованоТримається — ціною, яку ніхто не порахував
S3Постачати заміни поруч зі старою версією як opt-in, з написаним гайдом міграції; стара лишається, доки магазини не переїхали.у гемах, не у врядуванніПрацює — див. гайд міграції промоакцій
S4Ядро лишається худим; можливості живуть в окремих розширеннях.нідеСлабшає — чотири офіційні розширення заморожені
Повністю: Стратегія, що вже діє ↗23 / 38

знайдено

Стратегія в дії: справжні правила, запроваджені машинами — і майже ніде не записані.

RuleWritten where?Health
S5Право мерджити належить Core Team, яка сама себе призначає. Гроші купують голоси щодо витрат, ніколи — щодо коду.ратифікованоТак — розділення навмисне і здорове
S6Якість забезпечують машини; про стиль не сперечаються.лише в конфігурації CIПравило, що працює в проєкті найкраще
S7Усю доставку роблять люди.мовчазно, через відсутністьНеперевірено — агентського харнеса не існує
Повністю: Стратегія, що вже діє ↗24 / 38

виведено

Втрата доглядача — нормальний стан цього проєкту.

Втрата доглядача — це не шок, який цей проєкт пережив один раз; це його нормальний стан, і за десять років врядування так і не виростило механізму давати цьому раду.

Повністю: Першопричини ↗25 / 38

знайдено

Непрофінансована ініціатива поруч із невитраченим бюджетом.

Дві причини складаються в один стан: непрофінансована ініціатива поруч із невитраченим бюджетом.

Повністю: Першопричини ↗26 / 38

виведено

П'ять ризиків: шкода, помножена на ймовірність — і на те, наскільки тихо вони приземляються.

RiskFlagLikelihoodWould you notice?
R1Рутинний дрейф залежностей між безпековими релізамипониженоНизька для розкритих вразливостей — цей шлях покрито. Середня для дрейфуДля розкритої CVE — так. Для поступового дрейфу — ні
R2Дві фірми — це 78% грошей і більшість кодуважко помітитиСередня — це вже ставалося двічіМісяцями — ні. Відхід виглядає точнісінько як тихий квартал
R3Напівзбудована адмінка стає постійним третім станомважко помітитиЗнижена на 24-й редакції — за версією Core Team темп свідомий; підтверджувальне спостережуване ще не спрацювалоНі. Кожен сигнал, на який дивиться мейнтейнер, зелений
R4Spree забирає ринок нових проєктіввидно здалеку
R5Новий сторфронт ламає наявні розширення за задумом
Повністю: Реєстр ризиків ↗27 / 38

виведено

Карта ризиків: застрягла адмінка водночас імовірна й тиха.

Вплив, якщо станеться
Планувати й моніторитиДіяти заразСписок спостереженняЗапасний планR3Нова адмінка лишається застряглою — поставлено високо, бо тиша і є знахідкоюR2Концентрація контриб'юторів — відхід однієї організації вже довів цю формуR4Конкуренція зі Spree наростає, поки Solidus стоїть на місціR5Поломка розширень на мажорних оновленняхR1Рутинний дрейф залежностей між безпековими релізами
Імовірність упродовж дванадцяти місяців
  1. R3Нова адмінка лишається застряглою — поставлено високо, бо тиша і є знахідкою
  2. R2Концентрація контриб'юторів — відхід однієї організації вже довів цю форму
  3. R4Конкуренція зі Spree наростає, поки Solidus стоїть на місці
  4. R5Поломка розширень на мажорних оновленнях
  5. R1Рутинний дрейф залежностей між безпековими релізами
Експозиція до ризиків.
Повністю: Реєстр ризиків ↗28 / 38

виведено

Чотири борги, сплачувані з кожним релізом — найбільшого не видно на жодному дашборді.

DebtKind
D1Три незавершені переписуванняstrategic
D2Врядування описує проєкт, якого більше не існуєorganizational
D3Архітектурні рішення ніколи не фіксуютьсяknowledge
D4Агентський харнес і дві дрібні прогалини в автоматизаціїtechnical
Повністю: Журнал боргу ↗29 / 38

знайдено

Дев'ять кредитів у книзі: кожна інвестиція в машину окупилася; обидві продуктові ставки застрягли.

CreditStatus
C1Тестова матриця, актуальна до найновіших Rails і Rubyconfirmed
C2Гейт збірки на депрекаціяхconfirmed
C3Автоматизовані бекпортиconfirmed
C4Автоматизований стиль кодуconfirmed
C5Автоматизація релізів і чейнджлогівconfirmed
C6Відтворюване середовище розробкиconfirmed
C7Сторфронтconfirmed
C8solidus_promotionsoverdue
C9solidus_adminpast the point of write-off
Повністю: Журнал кредиту ↗30 / 38

виведено

Роль, а не камбек: фреймворк, яким ви ще володітимете через десять років.

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

Повністю: Виберіть роль ↗31 / 38

виведено

Три легітимні ролі. Дрейф між ними — єдиний нелегітимний варіант.

Три ролі поряд
РольХідЗаковика
A — доглядати встановлену базуЖодних нових ініціатив; гарантувати оновлення й безпеку; завершити промоакції; скасувати адмінку й сторфронтЯвне прийняття керованого занепаду — частина контриб'юторів піде
B — боротися за агентський каналВідвантажити відсутній агентський харнес; продавати «один рантайм, одна команда тестів» будівникам, що працюють через агентівSpree відвантажив свій першим — модифікатор до Role A, а не альтернатива
C — зійтися зі SpreeВлитися назад у проєкт, від якого Solidus відгалузивсяНіхто всередині цього не запропонує — саме тому це мусить бути записано
Повністю: Виберіть роль ↗32 / 38

виведено

Сім ставок — більшість коштує наради, заяви про політику або одного складного екрана.

BetVerdictAddressesCost
B2Перезапустити фінансовану розробку — купуючи результат, а не спринтиDoR3, D1один пункт порядку денного наради
B5Назвати реліз, що прибирає легасі-промоакції — заява про політику, а не праця; перше застосування PL1DoD1, RC1безплатно
B6Вирішити долю адмінки — виготовивши свідчення, а не розмірковуючи без нихDecideR3, D1один складний екран
B7Наздогнати React-сторфронт SpreeKillR4—
B8GraphQL / headless-поверхняWaitR4—
Повністю: Ставки — вирішувати вам ↗33 / 38

виведено

Сім ставок — більшість коштує наради, заяви про політику або одного складного екрана.

BetVerdictAddressesCost
B9Подвійна підтримка асет-пайплайнів, з міграцією, яку виконує агентDoR1, D3, D4див. шаблон
B10Публікувати технічні рішення — перезапустити статусні пости, заводити перспективні пункти роадмапу; одноразовий акт, що стоїть за PL3DoD2, D3, S1, R4година на місяць
Повністю: Ставки — вирішувати вам ↗34 / 38

виведено

Послідовність: рішення зараз, делеговна робота потім.

Зараз — тижні
Наступний квартал
Горизонт 2
Ставки
B6 · портувати один складний екран адмінки
B10 · знову публікувати рішення
E1–E5 · спорожнити швидку смугу
PL1–PL5 · прийняти, змінити або відхилити реєстр
B5 · назвати реліз, що прибирає легасі-промоакції
Role A або A+B оголошено публічно
Повністю: Послідовність ↗35 / 38

виведено

Ліки дешеві: публікуйте рішення, називайте дати, фінансуйте результати — не спринти.

Ходи одним рядком: жоден із перших кроків не дорогий — публікуйте рішення, які ухвалюєте, назвіть реліз, що прибирає легасі-промоакції, і фінансуйте результати, а не спринти.

Повністю: Послідовність ↗36 / 38

Не вірте деку на слово: кожне твердження позначене й перевірне у звіті.

Ніщо тут не просить, щоб йому вірили: кожне фактичне твердження в цьому звіті несе позначку, як до нього дійшли, а позначки рахує збірка — їх ніколи не пишуть руками.

Повністю: Чого я не зміг встановити ↗37 / 38

Перед висновками

132 твердження із джерелом

знайдено51%69
веб27%35
стейкхолдер17%22
виведено5%6
припущено0%0

Скільки з почутого справді знайдено в джерелах.

Повний звіт ↗38 / 38