Subject: bug#58502: We should not deprecate egrep and fgrep

From: Sam Trenholme <[email-masked]>
Date: Thu, 13 Oct 2022 16:29:21 -0700

>vanity

Presumably, "vanity" here is the older definition which more
accurately renders as "frivolous" in modern English, as in not
important or meaningless.

I think the point the GNU grep maintainers are making is that egrep
and fgrep, much to my surprise, aren't actually part of POSIX.
Personally, I think that's a bug in POSIX, and hopefully a future
POSIX spec will mandate some implementation of egrep and fgrep, even
if it's a `exec grep -E "$@"` implementation. Even with Busybox, which
does the equivalent transformation in C code, it's about 10 lines of
code, e.g. "if ((ENABLE_EGREP && applet_name[0] == 'e')" in the same
"if" which checks for the "-E" flag.

I would, as suggested earlier, just make it a non-POSIX GNU extension,
even though POSIX itself points out that egrep and fgrep are around to
not break old scripts. grep -P, with PCRE support, isn't POSIX either,
so there's precedent to extend GNU grep beyond what POSIX mandates.

-- Sam

On Thu, Oct 13, 2022 at 3:00 PM Shlomi Fish <[email-masked]> wrote:
>
> hi all,
>
> On Thu, 13 Oct 2022 18:52:51 +0100
> Sam James <[email-masked]> wrote:
>
> > > On 13 Oct 2022, at 18:46, Sam Trenholme <[email-masked]> wrote:
> > >
> > > After spending nearly an hour updating all of the scripts in the test
> > > framework for one of my open source projects to no longer use egrep,
> > > I’m going to say it:
> > >
> > > We should not deprecate egrep and fgrep
> > >
> > > egrep and fgrep have been around since the 1970s, were in wide use
> > > well over 25 years ago on the SunOS machines we used at the time, and
> > > are widely supported, e.g. Busybox includes an fgrep and egrep.
> > >
> > > Even the Posix spec acknowledges that that should remain supported for
> > > the foreseeable future:
> > >
> > > “The old egrep and fgrep commands are likely to be supported for many
> > > years to come as implementation extensions, allowing historical
> > > applications to operate unmodified.”
> > >
> > > See https://pubs.opengroup.org/onlinepubs/9699919799/utilities/grep.html
> > >
> > > Here is the amount of headache I went through to replace egrep with grep -E:
> > >
> > > https://github.com/samboy/MaraDNS/commit/afc9d1800f3a641bdf1bf14d39802443a34c2b70
> > >
> > > There are countless other shell scripts out there on countless
> > > machines which still use these commands. We should not lightly break
> > > widely deployed software, especially software which only needs two
> > > one-line shell scripts.
> >
> > Yep, I really do agree -- and Iv'e already provided examples of things
> > which did break in the wild. Just make it a GNU extension and call it a day.
> >
> > While I sympathise with the maintainers' perspective, it's pretty
> > clear that in reality, nobody actually realised it was "obsolescent"
> > and in fact actively using it in new scripts.
> >
> > Really, speaking from my perspective, distribution maintainers have
> > got enough going on with various fires (Clang 16, OpenSSL 3,
> > time64 migration, ...) that handling various trivial-but-numerous
> > grep bugs on top is not very helpful :(
> >
>
> +1. hope i'm not "alayhum"ing / "lynch"ing here, but I agree that breaking
> backcompat for vanity is bad.
>
> > Best,
> > sam
>
>
>
> --
>
> Shlomi Fish       https://www.shlomifish.org/
> Perl Elems to Avoid - https://perl-begin.org/tutorials/bad-elements/
>
> Chuck Norris knows who John Galt is.
>     — https://www.shlomifish.org/humour/bits/facts/Chuck-Norris/
>
> Please reply to list if it's a mailing list post - https://shlom.in/reply .