1980, operating systems class, write a shell for UNIX. I thought I'd be clever and do more than simple pipes, so I created some syntax to enable the specification of a directed graph. It's pretty neat to see that someone has now done this industrial strength.
I think it's a pretty natural idea. According to Brian Kernighan's memoir, the original vision for pipes was more like a mesh than the omnidirectional flow we ended up with:
"Doug wanted to allow arbitrary connections in a sort of mesh of programs, but it was not obvious how to describe an unconstrained graph in a natural way, and there were semantic problems as well: data that flowed between programs would have to be queued properly, and queues could explode in an anarchic connection of programs. And Ken couldn't think of any real applications anyway."
My first thought when reading over the docs for dgsh is always something similar...what's the real application? What does it gain me other than some mathematical elegance that I don't lose in harder to read scripts? The examples all pretty much collapse to doing things in parallel and collecting them via cat, which seems a little basic for something as abstract as a DAG.
Interesting effort.
On the other hand there is a bunch of other more popular and battle tested tools from Apache Airflow to a bioinformatics pipelines managers, such as Nextflow, Snakemake etc.
For example, to get a bunch of urls concurrently
$ mario async-map 'await asks.get ! x.text' < urls.txt
https://github.com/python-mario/mario