38 слайдів · ← → · зібрано зі звіту
existing-system audit
Добре спроєктований опенсорсний комерційний фреймворк, який тихо втратив свого доглядача вдруге за десять років, — і конкурент, що повернувся з мертвих із бізнес-моделлю за плечима.
Solidus — не хостований магазин: це набір бібліотек для Rails, які ви встановлюєте у власний застосунок — ви запускаєте сервери, ви володієте базою даних, ви тримаєте в себе кожну кастомізацію.
знайдено
Solidus технічно здоровий і стратегічно дрейфує. Обидва твердження правдиві, і розрив між ними — уся ця історія.
знайдено
PL1 · direction · proposed
Проєкт добре проєктує міграції і ніколи не планує їх у часі — RC1 (Міграції спроєктовано, але ніколи не заплановано) є механізмом за найбільшою повторюваною витратою в журналі, D1 (Три незавершені переписування — найбільша повторювана витрата проєкту). Промоакції вже два роки мають завершений движок і гайд міграції на 190 рядків — і жоден реліз ніде не каже, коли легасі-движок піде. Це правило закриває прогалину біля джерела: наступник виходить як паралельний opt-in лише поруч із названим релізом, що прибирає попередника. Rails і Ruby публікують таймлайни депрекації саме так; заява нічого не коштує й нікому не призначає праці. Її перше застосування — B5 (Назвати реліз, що прибирає легасі-промоакції), і зробити його можна було безплатно вже два роки.
PL2 · allocation · proposed
Кожен рік серйозних витрат фінансував одну-єдину співпрацю, і провалилася саме та, що купила активність замість результату — $45,760 за шість «Agile Design Sprints» 2023 року (F1 (Визначення «готово» існувало, і гроші до нього не підключили)). Правило: оплачувана співпраця називає свій артефакт, критерій завершення і того, хто нестиме роботу після того, як гроші скінчаться. Сама модель фінансування вже усталена й свідома — незалежні розробники, оплачувані з колективу, поки фірми-мейнтейнери лишаються на клієнтській роботі , — тож цей рядок ратифікує норму, яку проєкт уже тримає, і записує стандарт відстані витягнутої руки, який сьогодні існує лише у Slack та в голові одного мейнтейнера. Перевірено на минулому: співпраці 2020, 2024 і 2025 років проходять за формою і провалюються на наступності; купівля 2023-го провалюється повністю — і різниця якраз у цьому правилі.
PL3 · guidance · proposed
Core Team тримає явні технічні повноваження, спільнота збирається щотижня — і жодне рішення не досягає публічного артефакту: дошка роадмапу — чейнджлог, що носить ім'я роадмапу, а найясніша заява стратегії проєкту живе в маркетинговому блозі консалтингової фірми (S1 (Свідомо відкинути напрям JavaScript-фреймворків)). Потенційний користувач знаходить доглянутий запис того, що проєкт мав минуле, — і жодного свідчення, що він має майбутнє. Правило: кожне рішення Core Team упродовж місяця лягає статус-постом або майбутнім пунктом на дошці роадмапу. Це публікація, а не врядування — рішення, можливо, і так ухвалюються; просто їх не видно. Блог уже наполовину прокинувся сам: один реліз-анонс у травні 2026-го ; це правило перетворює поодинокий вчинок на звичку.
PL4 · approval · proposed
Адмінку три роки ані відвантажили, ані скасували — всередині структури врядування, яка прямо дозволяє і те, і те: повноваження є, місця для них нема (S5 (Право мерджу належить Core Team, що сама себе призначає), D2 (Врядування описує проєкт, якого більше не існує)). Правило дає повторюваному рішенню адресу: раз на квартал кожна паралельна ініціатива оголошується — просувається, фінансується, призупиняється до названої дати або скасовується, — і відповідь записується там, де її прочитають зовні. Механізм не може провалитися тихо, і саме ця властивість важить: квартал без списку вердиктів сам собою видно. Це той рядок, який упіймав би зупинку адмінки ще 2024 року, замість лишати архітектурі, що ховає покинутість (R3 (Напівзбудована адмінка стає постійним третім станом)), ховати її ще два роки.
PL5 · guidance · proposed
Коли 2025 року зупинився оплачуваний розробник, сім адмінських pull request-ів застигли там, де стояли, і єдиним порятунком досі був один контриб'ютор, що зголосився вручну через рік (F3 (Роботу останнього розробника покинули на півдорозі)). Той порятунок спрацював — 30 липня 2026-го він переїхав у свіжий pull request, з підходом, якому надавав перевагу рев'юер , — і це водночас доводить механізм і виказує його покриття: один сирота з шести знайшов нового автора, випадково. Правило робить випадковість рутиною. Коли контриб'ютор іде, кожна його відкрита чернетка впродовж одного релізного циклу дістає явне рішення: підхопити чи закрити. Закрити — легітимний результат; нелегітимний лише теперішній дефолт — безстрокове підвішення, яке правило сумісності потім зберігає вічно.
виведено
Шар політик одним рядком: плануй те, що заміняєш, купуй результати, а не час, публікуй рішення, давай ініціативам квартальний вердикт, підхоплюй або закривай роботу тих, хто пішов. П'ять правил — і жодне не просить волонтера працювати.
знайдено
Уся дуга одним рядком: форк Spree 2015 року, творець зник до 2018-го, інженерія доглядача — до 2024-го, а машина досі їде на дисципліні, яку збудували ті, хто пішов.
знайдено
| Рік | Виплачено | Витрат | Куди пішло |
|---|---|---|---|
| 2019 | $11,768 | 10 | Витрати на конференцію — Sean Denny 43%, Cindy Backman 42% |
| 2020 | $35,736 | 24 | Peter Berkenbosch 80% — щомісячні «Development & Maintenance» |
| 2021 | $0 | 0 | геть нічого |
| 2022 | $500 | 1 | Один інвойс за монтаж відео з конференції |
| 2023 | $45,760 | 7 | Адмінка — Nebulab 79%, Andrea Iurisci 21%. 100% року. |
| 2024 | $32,506 | 16 | Logicielle B.V. 100% — 16 інвойсів за розробку, серпень–грудень |
| 2025 | $16,888 | 6 | «e.c441» 100% — 6 інвойсів за розробку, лютий–липень |
| 2026 | $0 | 0 | геть нічого |
знайдено
Гроші одним рядком: фінансована розробка зупинилася в липні 2025 року, відтоді надійшло тринадцять місяців доходу, і $133,750 лежать невитраченими.
знайдено
знайдено
Продукт одним рядком: три паралельні переписування читаються як системна нездатність доводити до кінця, але промоакції — керована міграція, сторфронт — успіх; застрягла лише адмінка.
знайдено
| Людина (організація) | 2022 | 2023 | 2024 | 2025 | 2026 |
|---|---|---|---|---|---|
| Елія Скіто (Nebulab) | 133 | 696 | 46 | 4 | 0 |
| Альберто Вена (Nebulab) | 70 | 232 | 52 | 12 | 3 |
| Райнер Дема (Nebulab) | — | 168 | 2 | 0 | 0 |
| Super Good Software (усі) | 34 | 3 | 140 | 62 | 136 |
знайдено
Люди одним рядком: Nebulab дали приблизно 60% усіх комітів 2023 року і 0.8% за останні дванадцять місяців — і жодного оголошення так і не було.
знайдено
Машина одним рядком: кожна зміна тестується проти чотирьох комбінацій Ruby–Rails, де найновішу з кожного підхоплюють за лічені тижні після релізу, депрекації валять збірку, фікси бекпортуються автоматично — машинерія доставлення з верхнього дециля для проєкту такого розміру.
знайдено
Найдорожча ініціатива в історії проєкту зупинилась без жодного звуку: три роки і $45,760 по тому нова адмінка — на версії 0.4, а архітектура влаштована так, що покинутість не дає жодного симптому.
знайдено
| Метрика | Solidus | Spree |
|---|---|---|
| Коміти за останні 52 тижні (власний ряд GitHub — git log у §06 нараховує 493 за те саме вікно; співвідношення 5.5× береться одним інструментом з обох боків) | 400 | 2,190 — 5.5× |
| Зірки GitHub | 5,317 | 15,572 |
| Форки | 1,400 | 5,287 |
| Останній реліз | v4.7.0 · 15 квіт. 2026 | v5.6.1 · 28 лип. 2026 |
| Платформні релізи в липні 2026 | 0 | 6 |
| Сукупні завантаження пакетів | 3.22M | 2.85M |
знайдено
Опенсорс Spree — маркетингова витрата на плечах справжнього бізнесу; опенсорс Solidus тримається на банці пожертв у $25k на рік.
знайдено
Конкурент одним рядком: Spree відвантажує у п'ять з половиною разів більше комітів, ніж Solidus, шість платформних релізів лише за липень 2026-го, а його безкоштовна редакція — воронка продажів платного enterprise-продукту.
знайдено
| Rule | Written where? | Health | |
|---|---|---|---|
| S1 | Свідомо відкинути напрям JavaScript-фреймворків. Простота, один стек, жодних оплат, розподілене врядування. | у блозі компанії провідного мейнтейнера | Фактична стратегія проєкту — сформульована, просто не тут |
| S2 | Ніколи не ламати наявний магазин. Депрекація перед видаленням; бекпорт виправлень у старі версії. | ратифіковано | Тримається — ціною, яку ніхто не порахував |
| S3 | Постачати заміни поруч зі старою версією як opt-in, з написаним гайдом міграції; стара лишається, доки магазини не переїхали. | у гемах, не у врядуванні | Працює — див. гайд міграції промоакцій |
| S4 | Ядро лишається худим; можливості живуть в окремих розширеннях. | ніде | Слабшає — чотири офіційні розширення заморожені |
знайдено
| Rule | Written where? | Health | |
|---|---|---|---|
| S5 | Право мерджити належить Core Team, яка сама себе призначає. Гроші купують голоси щодо витрат, ніколи — щодо коду. | ратифіковано | Так — розділення навмисне і здорове |
| S6 | Якість забезпечують машини; про стиль не сперечаються. | лише в конфігурації CI | Правило, що працює в проєкті найкраще |
| S7 | Усю доставку роблять люди. | мовчазно, через відсутність | Неперевірено — агентського харнеса не існує |
виведено
Втрата доглядача — це не шок, який цей проєкт пережив один раз; це його нормальний стан, і за десять років врядування так і не виростило механізму давати цьому раду.
знайдено
Дві причини складаються в один стан: непрофінансована ініціатива поруч із невитраченим бюджетом.
виведено
| Risk | Flag | Likelihood | Would you notice? | |
|---|---|---|---|---|
| R1 | Рутинний дрейф залежностей між безпековими релізами | понижено | Низька для розкритих вразливостей — цей шлях покрито. Середня для дрейфу | Для розкритої CVE — так. Для поступового дрейфу — ні |
| R2 | Дві фірми — це 78% грошей і більшість коду | важко помітити | Середня — це вже ставалося двічі | Місяцями — ні. Відхід виглядає точнісінько як тихий квартал |
| R3 | Напівзбудована адмінка стає постійним третім станом | важко помітити | Знижена на 24-й редакції — за версією Core Team темп свідомий; підтверджувальне спостережуване ще не спрацювало | Ні. Кожен сигнал, на який дивиться мейнтейнер, зелений |
| R4 | Spree забирає ринок нових проєктів | видно здалеку | ||
| R5 | Новий сторфронт ламає наявні розширення за задумом |
виведено
виведено
| Debt | Kind | |
|---|---|---|
| D1 | Три незавершені переписування | strategic |
| D2 | Врядування описує проєкт, якого більше не існує | organizational |
| D3 | Архітектурні рішення ніколи не фіксуються | knowledge |
| D4 | Агентський харнес і дві дрібні прогалини в автоматизації | technical |
знайдено
| Credit | Status | |
|---|---|---|
| C1 | Тестова матриця, актуальна до найновіших Rails і Ruby | confirmed |
| C2 | Гейт збірки на депрекаціях | confirmed |
| C3 | Автоматизовані бекпорти | confirmed |
| C4 | Автоматизований стиль коду | confirmed |
| C5 | Автоматизація релізів і чейнджлогів | confirmed |
| C6 | Відтворюване середовище розробки | confirmed |
| C7 | Сторфронт | confirmed |
| C8 | solidus_promotions | overdue |
| C9 | solidus_admin | past the point of write-off |
виведено
Висновок, який підтримують ці свідчення, — роль, а не камбек: комерційний фреймворк, яким ви ще володітимете через десять років і який служить мерчантам, що його вже вибрали.
виведено
| Роль | Хід | Заковика |
|---|---|---|
| A — доглядати встановлену базу | Жодних нових ініціатив; гарантувати оновлення й безпеку; завершити промоакції; скасувати адмінку й сторфронт | Явне прийняття керованого занепаду — частина контриб'юторів піде |
| B — боротися за агентський канал | Відвантажити відсутній агентський харнес; продавати «один рантайм, одна команда тестів» будівникам, що працюють через агентів | Spree відвантажив свій першим — модифікатор до Role A, а не альтернатива |
| C — зійтися зі Spree | Влитися назад у проєкт, від якого Solidus відгалузився | Ніхто всередині цього не запропонує — саме тому це мусить бути записано |
виведено
| Bet | Verdict | Addresses | Cost | |
|---|---|---|---|---|
| B2 | Перезапустити фінансовану розробку — купуючи результат, а не спринти | Do | R3, D1 | один пункт порядку денного наради |
| B5 | Назвати реліз, що прибирає легасі-промоакції — заява про політику, а не праця; перше застосування PL1 | Do | D1, RC1 | безплатно |
| B6 | Вирішити долю адмінки — виготовивши свідчення, а не розмірковуючи без них | Decide | R3, D1 | один складний екран |
| B7 | Наздогнати React-сторфронт Spree | Kill | R4 | — |
| B8 | GraphQL / headless-поверхня | Wait | R4 | — |
виведено
| Bet | Verdict | Addresses | Cost | |
|---|---|---|---|---|
| B9 | Подвійна підтримка асет-пайплайнів, з міграцією, яку виконує агент | Do | R1, D3, D4 | див. шаблон |
| B10 | Публікувати технічні рішення — перезапустити статусні пости, заводити перспективні пункти роадмапу; одноразовий акт, що стоїть за PL3 | Do | D2, D3, S1, R4 | година на місяць |
виведено
виведено
Ходи одним рядком: жоден із перших кроків не дорогий — публікуйте рішення, які ухвалюєте, назвіть реліз, що прибирає легасі-промоакції, і фінансуйте результати, а не спринти.
Ніщо тут не просить, щоб йому вірили: кожне фактичне твердження в цьому звіті несе позначку, як до нього дійшли, а позначки рахує збірка — їх ніколи не пишуть руками.
Перед висновками
Скільки з почутого справді знайдено в джерелах.