threads / discuss / 37995

ag, **, and the GPL

Subject: ag, **, and the GPL

## tl;dr

7 messages between Nov 18, 2014 and Nov 19, 2014.

replies: 6people: 4as markdown or json

Matthew Kaniaris· Nov 18, 2014, 04:50 UTC · lore

The Silver Search (https://github.com/ggreer/the_silver_searcher), is a small, open source, cross platform searching utility written as a replacement for ack. One of the major benefits of Ag (and a source for much of its speed) is that it obeys .gitignore. However, Ag currently treats gitignores as regexs which produces incorrect results for e.g. **. I'd like to add support to ag to obey the .gitignore spec but I'm not keen on implementing yet another fnmatch clone. Ag is licensed under the Apache License Version 2.0 which to the best of my understanding is incompatible with the GPLv2. Would you grant me permission to reuse wildmatch.c (and necessary includes) for use in Ag?

-Matt Kaniaris
Duy Nguyen· Nov 18, 2014, 06:20 UTC · re: Matthew Kaniaris · lore

Re: ag, **, and the GPL

On Tue, Nov 18, 2014 at 11:50 AM, Matthew Kaniaris <mkaniaris@gmail.com> wrote:
>  Would you grant me
> permission to reuse wildmatch.c (and necessary includes) for use in

wildmatch (in git) is originally from rsync. You need to ask them for permission as well. I'm ok with relicensing my changes in wildmatch.[ch] to Apache License Version 2.0.

-- 
Duy
David Turner· Nov 18, 2014, 17:57 UTC · re: Matthew Kaniaris · lore

Re: ag, **, and the GPL

On Mon, 2014-11-17 at 20:50 -0800, Matthew Kaniaris wrote:
Show 11 quoted lines
> The Silver Search (https://github.com/ggreer/the_silver_searcher), is
> a small, open source, cross platform searching utility written as a
> replacement for ack.  One of the major benefits of Ag (and a source
> for much of its speed) is that it obeys .gitignore.  However, Ag
> currently treats gitignores as regexs which produces incorrect results
> for e.g. **.  I'd like to add support to ag to obey the .gitignore
> spec but I'm not keen on implementing yet another fnmatch clone.  Ag
> is licensed under the Apache License Version 2.0 which to the best of
> my understanding is incompatible with the GPLv2.  Would you grant me
> permission to reuse wildmatch.c (and necessary includes) for use in
> Ag?

I already implemented this without using any git code at https://github.com/novalis/the_silver_searcher. The patch was rejected because it slowed down ag slightly (or perhaps because it was overly complex).

Duy Nguyen· Nov 19, 2014, 00:48 UTC · re: David Turner · lore

Re: ag, **, and the GPL

On Wed, Nov 19, 2014 at 12:57 AM, David Turner <dturner@twopensource.com> wrote:
Show 17 quoted lines
> On Mon, 2014-11-17 at 20:50 -0800, Matthew Kaniaris wrote:
>> The Silver Search (https://github.com/ggreer/the_silver_searcher), is
>> a small, open source, cross platform searching utility written as a
>> replacement for ack.  One of the major benefits of Ag (and a source
>> for much of its speed) is that it obeys .gitignore.  However, Ag
>> currently treats gitignores as regexs which produces incorrect results
>> for e.g. **.  I'd like to add support to ag to obey the .gitignore
>> spec but I'm not keen on implementing yet another fnmatch clone.  Ag
>> is licensed under the Apache License Version 2.0 which to the best of
>> my understanding is incompatible with the GPLv2.  Would you grant me
>> permission to reuse wildmatch.c (and necessary includes) for use in
>> Ag?
>
> I already implemented this without using any git code at
> https://github.com/novalis/the_silver_searcher.  The patch was rejected
> because it slowed down ag slightly (or perhaps because it was overly
> complex).

Interesting. Do you have a direct link to that discussion (I don't know how to navigate that novalis link). Generally you (or ag) should avoid fnmatch/wildmatch whenever possible. Hitting those *match() _will_ slow things down (and git tries hard to avoid it). I had some optimizations on top of rsync wildmatch to handle "*" case better, but I don't think it'll make big difference in practice.

-- 
Duy
David Turner· Nov 19, 2014, 01:51 UTC · re: Duy Nguyen · lore

Re: ag, **, and the GPL

On Wed, 2014-11-19 at 07:48 +0700, Duy Nguyen wrote:
Show 25 quoted lines
> On Wed, Nov 19, 2014 at 12:57 AM, David Turner <dturner@twopensource.com> wrote:
> > On Mon, 2014-11-17 at 20:50 -0800, Matthew Kaniaris wrote:
> >> The Silver Search (https://github.com/ggreer/the_silver_searcher), is
> >> a small, open source, cross platform searching utility written as a
> >> replacement for ack.  One of the major benefits of Ag (and a source
> >> for much of its speed) is that it obeys .gitignore.  However, Ag
> >> currently treats gitignores as regexs which produces incorrect results
> >> for e.g. **.  I'd like to add support to ag to obey the .gitignore
> >> spec but I'm not keen on implementing yet another fnmatch clone.  Ag
> >> is licensed under the Apache License Version 2.0 which to the best of
> >> my understanding is incompatible with the GPLv2.  Would you grant me
> >> permission to reuse wildmatch.c (and necessary includes) for use in
> >> Ag?
> >
> > I already implemented this without using any git code at
> > https://github.com/novalis/the_silver_searcher.  The patch was rejected
> > because it slowed down ag slightly (or perhaps because it was overly
> > complex).
> 
> Interesting. Do you have a direct link to that discussion (I don't
> know how to navigate that novalis link). Generally you (or ag) should
> avoid fnmatch/wildmatch whenever possible. Hitting those *match()
> _will_ slow things down (and git tries hard to avoid it). I had some
> optimizations on top of rsync wildmatch to handle "*" case better, but
> I don't think it'll make big difference in practice.

I did sort of a massive pull request here: https://github.com/ggreer/the_silver_searcher/pull/222 Here's the main commit: https://github.com/novalis/the_silver_searcher/commit/50d125647d7b91af08ad43b4b1b977b7e23e0cfa

I think there as more discussion on some of the other tickets, but it was over a year ago so I don't recall the details.

Really the thing that ag needs is (a) indexing and (b) to be hooked up to watchman to update the index.

Jonathan Nieder· Nov 18, 2014, 19:09 UTC · re: Matthew Kaniaris · lore

Re: ag, **, and the GPL

Hi,
Matthew Kaniaris wrote:
Show 5 quoted lines
>                                                                   Ag
> is licensed under the Apache License Version 2.0 which to the best of
> my understanding is incompatible with the GPLv2.  Would you grant me
> permission to reuse wildmatch.c (and necessary includes) for use in
> Ag?
wildmatch.c comes from rsync.

Conveniently, newer versions of rsync are under the GPLv3, which according to [1] is compatible with the Apache license. The code is at lib/wildmatch.c from git://git.samba.org/rsync.git. It hasn't changed since the rsync license change.

Duy, what would you think of making git's wildmatch.c "GPL v2 or v3, at your option"?

Thanks, Jonathan

[1] http://www.gnu.org/licenses/quick-guide-gplv3.html
Duy Nguyen· Nov 19, 2014, 00:51 UTC · re: Jonathan Nieder · lore

Re: ag, **, and the GPL

On Wed, Nov 19, 2014 at 2:09 AM, Jonathan Nieder <jrnieder@gmail.com> wrote:
> Duy, what would you think of making git's wildmatch.c "GPL v2 or v3,
> at your option"?

wildmatch.c is not really owned by me (latest change is from Anthony Ramine), but I would be ok with that.

-- 
Duy

← back to recent threads