The Unix Heritage Society mailing list
 help / color / mirror / Atom feed
From: Diomidis Spinellis <dds@aueb.gr>
To: Marc Rochkind <mrochkind@gmail.com>, tuhs@tuhs.org
Subject: [TUHS] Re: Pipes (was Re: After 50 years, what has the Impact of Unix been?)
Date: Fri, 6 Dec 2024 10:16:38 +0200	[thread overview]
Message-ID: <4c107309-75b7-42b3-ada3-161ec1421bd5@aueb.gr> (raw)
In-Reply-To: <CAOkr1zUyGNDhy=1hJNsbrboKxZ4MJw79qXb8sv5PHyVepYB3NA@mail.gmail.com>

On 06-Dec-24 01:07, Marc Rochkind wrote:
> I found that 2017 paper "Extending Unix Pipelines to DAGs". It's open 
> access:
> 
> https://ieeexplore.ieee.org/document/7903579 <https:// 
> ieeexplore.ieee.org/document/7903579>
> 
> The open source code itself is here: https://github.com/dspinellis/dgsh 
> <https://github.com/dspinellis/dgsh>
> 
> Maybe an ambitious TUHS contributor can get the code running and give us 
> a report.

I wrote the dgsh code with my co-author Marios Fragkoulis, so I still 
have it running.  Doug McIlroy, who also mentioned dgsh in another 
message, is too modest to say that its design owes much to his input.  I 
asked him for feedback when I was working on it, and over several 
iterations he proposed important (and quite demanding as I recall) 
improvements to its design.

The system allows the concise and readable expression of several graph 
topologies I had in mind when I started working on it, and more [1]. 
However, it hasn't caught on.  I think the main reason is that it is 
based on modified versions of several existing tools (bash, cmp, comm, 
cut, diff, diff3, grep, join, paste, perm, sort) [2].  The modifications 
allow the tools to coordinate between them the setup of pipes when 
placed in a dgsh graph according to available inputs and required 
outputs.  The changes (especially for bash) aren't small, which meant 
that I didn't think it was realistic to push them upstream, which now 
means that the modified tools are out of date and difficult to build. 
Not sure what can be done to address this problem.  It seems that a 
widely adopted system, such as modern Unix/Linux, has too much inertia 
for it to adopt potentially disrupting innovations.

In retrospect, the way we designed the pipe graph setup could also be 
improved.  The current design involves an initial phase where IPC 
messages are circulating around the graph to communicate the I/O 
requirements of each tool, for example that comm(1) should expect input 
from two processes and output to three processes.  The design is brittle 
and difficult to troubleshoot, because coordination happens dynamically 
behind the scenes.  A better design (and one I think Doug was 
advocating) would statically analyze the graph's topology and invoke 
each tool with appropriate parameters or environment variables. 
However, this design would require significantly more extensive 
modifications to bash, or the implementation of a new shell.  Both 
approaches required work for which we didn't have the time and energy at 
the time, and also had their own downsides regarding adoption potential.

[1] https://www.spinellis.gr/sw/dgsh/#examples
[2] https://www.spinellis.gr/sw/dgsh/#tools

Diomidis




  reply	other threads:[~2024-12-06  8:16 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-12-04  3:17 [TUHS] After 50 years, what has the Impact of Unix been? sjenkin
2024-12-04 13:05 ` [TUHS] " Marc Donner
2024-12-04 13:40   ` William Cheswick
2024-12-04 15:02   ` Rich Salz
2024-12-05  3:08   ` John Levine
2024-12-05 15:19     ` [TUHS] Re: Pipes (was Re: After 50 years, what has the Impact of Unix been?) Dan Cross
2024-12-05 16:00       ` John R Levine
2024-12-05 16:17         ` Heinz Lycklama
2024-12-05 17:06           ` Marc Rochkind
2024-12-05 17:53             ` John Cowan
2024-12-05 18:05             ` John Levine
2024-12-05 17:22           ` Paul Winalski
2024-12-05 18:19         ` Ron Natalie
2024-12-06  2:29           ` Adam Thornton
2024-12-07 20:38             ` Ron Natalie
2024-12-05 16:55       ` Adam Thornton
2024-12-05 17:35       ` Chet Ramey via TUHS
2024-12-05 20:55         ` arnold
2024-12-05 21:12           ` Dan Cross
2024-12-05 21:50             ` Marc Rochkind
2024-12-05 22:03             ` Warner Losh
2024-12-05 22:19               ` Chet Ramey via TUHS
2024-12-05 23:07                 ` Marc Rochkind
2024-12-06  8:16                   ` Diomidis Spinellis [this message]
2024-12-06  0:46                 ` Alexis
2024-12-06 21:46                   ` Chet Ramey via TUHS
2024-12-05 23:07               ` arnold
2024-12-06  1:09                 ` G. Branden Robinson
2024-12-06  1:31                   ` Greg A. Woods
2024-12-06  2:05                     ` Steve Nickolas
2024-12-06 16:44                     ` arnold
2024-12-05 22:05             ` Bakul Shah via TUHS
2024-12-06  2:02             ` John Levine
2024-12-06  2:21               ` Dan Cross
2024-12-06 16:46                 ` arnold
2024-12-06  2:26 Douglas McIlroy

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4c107309-75b7-42b3-ada3-161ec1421bd5@aueb.gr \
    --to=dds@aueb.gr \
    --cc=mrochkind@gmail.com \
    --cc=tuhs@tuhs.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).