rant.md
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
~~ zoa doesn't pretend ~~ this section is a rant that i'll convert into a blog post tbh chef & ansible & puppet & salt all pretend to be fully idempotent & declarative, but leave actual declarative-ness and idempotence as an exercise to the user. zoa doesn't pretend. zoa is not idempotent. zoa is not declarative. it assumes your state changes over time, and zoa makes it easy to keep up with those changes. you won't have to look at horrible doc websites or commit a week to learning a god damned stupid DSL other config management systems make their users feel stupid. zoa doesn't. zoa uses shell scripts like every single linux distro has used for millenia. it has exactly zero dependencies besides zoa itself. zoa adheres to standards, and uses well-known distro conventions. zoa is easy. and simple. and honestly, quite a smol guy the other tools want to do a lot - search across your nodes, deploy via their tooling, automate testing, manage AWS resources?!?!? zoa is only concerned with _managing configuration_ _on servers_ and nothing else. forever. the other tools break constantly because they try to do everything. zoa breaks rarely because it does almost nothing. other tools are slow because they have HUGE runtimes and scopes zoa is comparatively fast, because it's just running god dang shell scripts :3 zoa doesn't require: - ssh - python - ruby - a chef server or salt master other tools abstract too much zoa abstracts a few definitely useful functions, but otherwise gets out of the way and gives you a light framework to speak shell to your systems. in zoa, you write plain POSIX shell. Why? - posix shell is productive! - posix shell is portable! - posix shell is the language of system configuration! - posix shell is easy to remember! - posix shell rarely changes!