To, že je něco lepší než něco horšího neznamená, že je to vhodné nebo snad optimální. Ini, které používá systemd je celkem OK, mohlo by to být lepší, ale rozhodně je to vyhovující a rozhodně lepší, než službu popisovat v Scheme.
V blahé paměti skripty služeb psané v shellovském skriptu byly slušný peklo a na jednu stranu jsem rád, že po příchodu systemd tohle nemusím řešit. Pravda řeším jiné problémy...
Proč by měl být problém popisovat službu ve Scheme?
Většinou je dobré do diskuze přinášet kromě subjektivních názorů i objektivní fakta. Nejlepší je používat slovo "optimální" bez jasné množiny aspektů, podle kterých optima bylo dosaženo. Ale tak samozřejmě můžeme si tady na Rootu tu úroveň klidně stáhnout někam na úroveň Novinek.
Jako systemd rozhodně nemiluju, ale naučil jsem s ním žít a používat ho, včetně resolvectl, journalctl a dalších volovin, které přináší. Ale tohle je od pohledu dost svéráz a bizár.
Délka vývojovému cyklu k verzi 1.0 je standard GNU, a že do této doby jsem o projektu neslyšel a to se o OSS celkem zajímám a s příchodem Systemd do Archu jsem dost dlouho řešil alternativy, taky ledacos napovídá. Použitím opravdu "populárního" jazyka Scheme pro psaní unit služeb, mi to přijde taky celkem mino.
Celé to má důvtip, šarm a duchapřítomnost německýho ovčáka po transplantaci hlavy.
Jako moje srdce emacsisty při pohledu na Scheme/Lisp zaplesalo, ale to je tak vše... Používat bych to rozhodně nechtěl.
(define sshd
(service
'(sshd ssh-daemon) ;the secure shell daemon
#:start (make-inetd-constructor ;start on demand
'("/usr/sbin/sshd" "-D" "-i")
(list (endpoint
(make-socket-address AF_INET INADDR_ANY 22))
(endpoint
(make-socket-address AF_INET6 IN6ADDR_ANY 22)))
#:max-connections 10)
#:stop (make-inetd-destructor)
#:respawn? #t))
(register-services (list sshd))
(start-in-the-background '(sshd))
Tady zase někomu v GNU úplně ujel vlak :).
10. 12. 2024, 13:56 editováno autorem komentáře
Já mám spíš problém s tím, že jde o živý - spustitelný kód, nikoli o neživý deklarativní dokument... Ale jinak mne překvapuje, kolik nenávisti se tu vůči Lispu/Scheme zvedlo, protože z jiných diskusí mám zase pocit, že tyhle přístupy jsou dost populární. Nicméně na českých fórech obecně převládají negativní komentáře, takže to zase tak překvapivé není.
" deklarativního způsobu definice služeb"
=== nekde za tim musi byt obrovsky moloch, tim vetsi a slozitejsi (a zabugovanejsi) cim vic chci tohoto nedosazitelneho cile dosahnout.
Treba by me zajimalo, japa se deklarativne overi, ze dana (obecne libovolna) sluzna bezi a je dostupna. A odpoved je ... nijak. Protoze pro kazdou jednu sluzbu (a pro kazdou jednu variantu jeji konfigurace) bych musel napsat nejake overovadlo.
To je prece kouzlo vsech deklarativnich jazyku: SQL, HTML, Ansible.
Rozhrani s uzivatelelem je jednoduche a citelne, vetsi mnozstvi prace udela pocitac a vas.
Samozrejme, ze health check nakonec musi nekdo napsat v imperativnim jazyce. Dneska ve svete Kubernetes a SpringBoot na to mate rozhrani a knihovny. Zadna velka prace to neni.
Použít Scheme rovnou je svérázný způsob, jak předejít srážce s Desátým pravidlem Greenspuna (Any sufficiently complicated C or Fortran program contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp. :-))
Ale ta ne-deklarativnost se mi nelíbí.