PetraSuper
Member
network boot believer
- Joined:
- Jun 2024
- Posts:
- 127
- From:
- Bratislava, Slovakia
I boot everything from the network. My status page would netboot too, obviously. Stateless node, config pulled from TFTP at boot. If it dies, reboot and you're back.
This is compatible with federation. The binary just needs to fit in my initramfs. 12MB is fine.
boot anything, anywhere, anytime
armstrongvds
Member
ARM Enjoyer
- Joined:
- Jun 2024
- Posts:
- 199
- From:
- Seoul, KR
12MB including the web UI
Too big. I run Ampere ARM servers. Watts matter. A status page should be under 1MB, no JS, render in lynx if needed. The federation is the point, not the pretty graphs.
I will write an implementation in Rust if someone else does the spec first. Async with tokio, static binary under 800KB.
one small ping for man...
steveipw
Member
OP
- Joined:
- Jun 2024
- Posts:
- 163
- From:
- Denver, US
The 12MB includes borrowed upptime UI which is all JS. I agree it's bloated. For my own use I would strip it to a static HTML template. The federation logic is maybe 2MB in go.
But customers want pretty. Tradeoff.
zfs send | zfs receive. repeat.
YuriDavid
Member
- Joined:
- May 2024
- Posts:
- 174
- From:
- Kyiv, Ukraine
I have heard this before.
Spec draft now at: https://github.com/YuriDavid/statusth/blob/main/SPEC.md
Name is still bad. Repository name is worse. I will rename before anyone notices.
Current status:
- Parser: done
- Signatures: done
- Well-known discovery: done
- Gossip: started, using full incident list exchange not deltas, KISS
- Web UI: stripped to 200KB of go templates, no JS
Need testers. Need someone to write a Python implementation so we can interop test. @torontoeng?
indentation is not optional
YuriDavid
Member
- Joined:
- May 2024
- Posts:
- 174
- From:
- Kyiv, Ukraine
Delta with sequence numbers is worth the complexity.
You were right. I implemented full list, tested with 2000 incidents, 3MB per poll. Unusable.
Switched to delta: each incident has monotonic `seq` per node. Peer asks `?since_seq=123`. Returns only newer. 200 bytes typical poll.
Spec updated. Breaking change, but nobody else implements yet so who cares.
indentation is not optional