[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Bug#993370: RFP: rg-el -- elpa-rg

Hi Antoine,

It looks like I forgot to send this draft... (Dated 07 Sep 2021).  So,
here's an update on the packaging: It's done, but the software seems to
be fundamentally broken by something that I haven't yet been able to
identify.  I also confess to low motivation, and to worrying that this
package could become a huge time/energy sink like Elpy...I should
probably share my WIP soon so someone can go "Aha!  That this is what
you missed!", and I'm hoping that's all it is, because I'm appalled that
the most basic function (rg) is nonfunctional.  Meanwhile, counsel-rg
works perfectly.

If you're short on time, skip to "As an aside" for some new info (you've
read the rest on IRC).

Antoine Beaupré <anarcat@debian.org> writes:

>> If you think the process might be interesting content for
>> Debian Planet, please let me know :-)
> That would be interesting, for sure, but no pressure. :)

Ok, will do!  Casual deadline of mid-October.

>>> I'm not actually sure why Nicholas picked rg.el.
>> I can update this bug with my rationale (from IRC) if you think it would
>> be useful to others.
> That, however, seems like an important thing to document here, for
> posterity.

Ok, for posterity :-)

Why this source package name?  Rg-el, because we can't have src:rg.el,
and the -el suffix denotes elisp; you're totally right, src:rg-el will
produce bin:elpa-rg :-)  Finally, ITPs are for source package names, but
I can't remember if this is a rule or convention.

I chose rg.el over alternatives (such as the excellent Deadgrep) for a
variety of reasons.  First, based on the README, it seemed to fit what I
think your use case (and criteria for an improved grep) was; second, it
(subjectively) seemed like a more familiar interface (standard Emacs
conventions and expectations), and it has (rg-enable-menu) which uses
Magit's transient.el.  The menu mode has a "magit-like" interface, and
UI consistency between modes is part of my overarching goal of making
contributions that make Emacs more accessible and less arcane for new
users; third, it impresses me that rg.el provides a backward-compatible
config key for keybindings when it moved to new, allegedly more
consistent ones ("new is better" is a pet peeve of mine, and I believe
that Emacs projects that have churn in this area would annoy you);
finally, the test suite impresses me, especially how it takes care to
test interoperation with other modes for possible regressions.

Rg.el also seems to be significantly more popular on MELPA, which is
more of a "probability of popularity in Debian" than a quality
thing... (eg: number of people who benefit to hours of work ratio thing)

As an aside, personally I'm happy with counsel-ag, and cousel-rg works
great; I packaged bin:elpa-counsel as part of src:emacs-ivy, which used
to be a hard dependency of elpa-find-file-in-project, which used to be a
dependency of src:elpy, my first big project (and your RFP).
Unfortunately upstream wasn't able to keep pace with Python breaking
changes, Python 3.9 broke Elpy's ERT tests badly.

For a user who doesn't know which to choose, at this point it seems like

  Choose rg.el for the traditional Emacs interface or Magit-like interface
  Choose Ivy/Counsel for a completion framework that is non-jarring for
  long-time Emacs users, and that is fast (in both cases, in when
  compared to Helm).  In other words, it seems to be a case of UI
  preference and inclination due to established habits.

At the moment I'm currently stumped about why "M-x rg" doesn't find
hits/matches that /usr/bin/rg does, even thought the ERT tests indicate
that this codepath is functional and correct.  My hypothesis is that
someone made a perfectly reasonable assumption that may have now been
revealed to be a technical deficiency.

Worse case scenario: please ping me in mid-October.


Attachment: signature.asc
Description: PGP signature

Reply to: