Kontekst
Servio to lekki, modularny i rozszerzalny framework CLI napisany w Lua, który umożliwia instalowanie, konfigurowanie i zarządzanie usługami systemowymi w sposób prosty i spójny na różnych systemach Unix.
Zamiast skomplikowanych instalatorów, Servio pozwala tworzyć proste moduły usług w formie:
services/<NazwaUsługi>/install.luaKażdy moduł może zawierać własną logikę instalacji, konfiguracji i uruchamiania — dzięki temu społeczność może łatwo tworzyć i udostępniać własne instalatory.
Moja rola
Zaprojektowałem architekturę frameworka, format modułów usług, wykrywanie platformy oraz instalator uruchamiający narzędzie na obsługiwanych systemach Unix.
Problem
- różne systemy operacyjne mają różne menedżery pakietów i różne sposoby uruchamiania usług
- instalacja Redis, Nginx, MariaDB czy dowolnej innej usługi wygląda inaczej na Linux, macOS i BSD
- wiele narzędzi wymaga skomplikowanych skryptów lub manualnej konfiguracji
Servio upraszcza to do:
servio install redis --port=6380Funkcje
- modularna architektura oparta na Lua
- wsparcie dla wielu systemów Unix (Linux, macOS, BSD)
- proste API dla twórców usług (
install.lua) - automatyczne wykrywanie platformy
- możliwość tworzenia własnych flag i parametrów
- instalacja Servio jednym skryptem (
install.sh)
Stos technologiczny
- Lua 5.4
- POSIX shell (instalator)
- Modularne skrypty usług
Co osiągnąłem
- stworzyłem framework, który pozwala społeczności tworzyć własne instalatory usług
- ujednoliciłem proces instalacji na różnych systemach Unix
- zaprojektowałem architekturę, która jest prosta, ale bardzo rozszerzalna
- przygotowałem instalator działający na Linux, macOS i BSD
Czego nauczył mnie projekt
Servio rozwinął moje podejście do projektowania narzędzi CLI i rozszerzalnych systemów modułów. Najważniejsze było ukrycie różnic między platformami bez odbierania autorom modułów kontroli nad procesem instalacji.