murex icon indicating copy to clipboard operation
murex copied to clipboard

Should murex: Deprecate `<stdin>` named pipe, in favour of `<in>` OR `<out>` & `<err>` in favour of `<stdout>`, `<stderr>`?

Open lmorg opened this issue 3 years ago • 2 comments

The purpose of this is purely to make STDIN (<sdtin>) named pipes consistent with STDOUT and STDERR (<out> and <err> respectively).

Reasons in favour of renaming <stdout> -> <in>:

  • it's fewer keystrokes in the terminal
  • it's more technically correct because named pipes are an abstraction around the standard streams

Reasons in favour of renaming <out>, <err> -> <stdout>, <stderr>:

  • it requires much less dramatic changes in code: eg <stdout> and <stderr> are not functions
  • documentation already uses <stdout> in command usage, that would all need to change if we stuck with <out>
  • it's more explicit for people already familiar with Bash

Third option: document <in>, <out>, <err>, but silently support their <stdin>, <stdout> and <stderr> counterparts

My take

I'm currently leaning towards option three.

lmorg avatar Nov 02 '22 09:11 lmorg

I vote For named piped should be renamed <in> <out> <err>

and while you are at it, I would also rename this weird err operator ? something else maybe ?> or ?->

  • documentation is not an issue
  • it's the concept, bash user will easily relate

orefalo avatar Sep 11 '23 09:09 orefalo

I vote For named piped should be renamed <in> <out> <err>

and while you are at it, I would also rename this weird err operator ? something else maybe ?> or ?->

* documentation is not an issue

* it's the concept, bash user will easily relate

Just my humble $.02, I'm not necessarily one to just blindly follow tradition, however tradition based in solid principles is something I don't think is wise to supersede unless the new alternative is exceedingly and quantifiably better than the long-standing standard.

So, I don't think renaming this is a good idea. The reason "STD" is in front of , , and is to disambiguate the use of arbitrarily opened descriptors from the standard ones at runtime and keeping a sane standard for applications systemwide. In other words, these are the STANDARD descriptors and are always available and used by default and they are the standard.

Now I'm new to murex and am still learning it, and in fact am having problems even using it (two blocking bugs found so far). With that, I admit that I'm assuming murex is compatible with traditional shells with respect to std(in|out|err), and if that's the case then if you ambiguate this paradigm, you could cause a bit of confusion I think. In other words, there's a reason why "STD" is used. Throwing that away is likely premature and not very well thought out and it's definitely not POSIX or Unix standard.

notjames avatar Jan 26 '24 19:01 notjames