Hacker News new | ask | show | jobs
by rhymenoceros 2787 days ago
> I'm sure almost everyone reading this thinks I'm hopelessly pedantic to care so much about the sequence of lines of output in my build logs.

Not at all! In fact there are other tools in other domains that could benefit from careful thought about how to interleave parallel outputs in a way that favors interactivity/immediate output but preserves (effective) ordering [1][2]. This is a tough problem a lot of tools just give up on, but the status quo of "buffer everything until it is completely done" grates against one's senses.

[1] https://github.com/saltstack/salt/issues/22733

[2] https://github.com/ansible/ansible/issues/3887

1 comments

Wow, those are quite fascinating use cases I hadn't considered. I'm actually curious about things like ansible; what exactly does it do that you couldn't just do with a bunch of redo scripts? Or alternatively, what if you ignored ansible's parallelism and just ran ansible once per host, from redo?
A lot of devops tools, including Ansible and Salt, have higher-level concepts of ordering across hosts. In some cases this is implicit in the way the tool operates and people just take advantage of it, but in others (like Salt's orchestrate runner) the ordering of operations across hosts is explicitly defined by users. That can be useful for scripting blue/green deployment cutovers, pushing out new load balancer rules, etc.

> I'm actually curious about things like ansible; what exactly does it do that you couldn't just do with a bunch of redo scripts?

That might be more of a philosophical question :-) Most of those tools could be replaced with a sufficiently intelligent set of scripts. I think they get their popularity from providing more convenient syntax, building in parallelism for applying changes across hosts, offering cross-platform ways of doing common admin actions like creating accounts, etc.

But if you look at them the right way, they definitely share a lot in common with build systems, particularly when it comes to managing dependent actions.

Several things can be operated like build systems, and this has come up on Hacker News several times. I, for example, maintain my Debian package repository and my GOPHER site using redo, and use redo to import external software configuration into my service management.

* https://news.ycombinator.com/item?id=14837740

* https://news.ycombinator.com/item?id=14928216

* https://news.ycombinator.com/item?id=14836340

* gopher://jdebp.info/h/Softwares/nosh/guide/external-formats.html

* http://jdebp.eu./Softwares/nosh/guide/external-formats.html