# ag, **, and the GPL

7 messages from 2014-11-18 to 2014-11-19. Participants: Matthew Kaniaris, Duy Nguyen, David Turner, Jonathan Nieder.
Thread: https://gitlist.dev/t/37995

## Matthew Kaniaris, 2014-11-18 04:50

Subject: ag, **, and the GPL
Message-ID: <CACr0F2iGY_vxWzsNaPQNJ2cLUDRZPS70i79EhyA9OkA7qLaUQQ@mail.gmail.com>
URL: https://gitlist.dev/e/CACr0F2iGY_vxWzsNaPQNJ2cLUDRZPS70i79EhyA9OkA7qLaUQQ%40mail.gmail.com

```
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, 2014-11-18 06:20

Subject: Re: ag, **, and the GPL
Message-ID: <CACsJy8CBUmfD9RotMzy=8FdMzetV01WQmgNgLvOhTFs86Z98wg@mail.gmail.com>
URL: https://gitlist.dev/e/CACsJy8CBUmfD9RotMzy%3D8FdMzetV01WQmgNgLvOhTFs86Z98wg%40mail.gmail.com
In-Reply-To: <CACr0F2iGY_vxWzsNaPQNJ2cLUDRZPS70i79EhyA9OkA7qLaUQQ@mail.gmail.com>

```
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, 2014-11-18 17:57

Subject: Re: ag, **, and the GPL
Message-ID: <1416333456.27401.1.camel@leckie>
URL: https://gitlist.dev/e/1416333456.27401.1.camel%40leckie
In-Reply-To: <CACr0F2iGY_vxWzsNaPQNJ2cLUDRZPS70i79EhyA9OkA7qLaUQQ@mail.gmail.com>

```
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). 

```

## Jonathan Nieder, 2014-11-18 19:09

Subject: Re: ag, **, and the GPL
Message-ID: <20141118190918.GH6527@google.com>
URL: https://gitlist.dev/e/20141118190918.GH6527%40google.com
In-Reply-To: <CACr0F2iGY_vxWzsNaPQNJ2cLUDRZPS70i79EhyA9OkA7qLaUQQ@mail.gmail.com>

```
Hi,

Matthew Kaniaris wrote:

>                                                                   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, 2014-11-19 00:48

Subject: Re: ag, **, and the GPL
Message-ID: <CACsJy8BYBKMqWiNQ=xFjS8s_6GCeoA+UZ-HQ_V1qnsvQG6jOKA@mail.gmail.com>
URL: https://gitlist.dev/e/CACsJy8BYBKMqWiNQ%3DxFjS8s_6GCeoA%2BUZ-HQ_V1qnsvQG6jOKA%40mail.gmail.com
In-Reply-To: <1416333456.27401.1.camel@leckie>

```
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.
-- 
Duy

```

## Duy Nguyen, 2014-11-19 00:51

Subject: Re: ag, **, and the GPL
Message-ID: <CACsJy8AcS5CJqk5mBNZxcws9PUDdUpPVkoNdQnPsYyQeHTUd6Q@mail.gmail.com>
URL: https://gitlist.dev/e/CACsJy8AcS5CJqk5mBNZxcws9PUDdUpPVkoNdQnPsYyQeHTUd6Q%40mail.gmail.com
In-Reply-To: <20141118190918.GH6527@google.com>

```
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

```

## David Turner, 2014-11-19 01:51

Subject: Re: ag, **, and the GPL
Message-ID: <1416361870.30428.5.camel@leckie>
URL: https://gitlist.dev/e/1416361870.30428.5.camel%40leckie
In-Reply-To: <CACsJy8BYBKMqWiNQ=xFjS8s_6GCeoA+UZ-HQ_V1qnsvQG6jOKA@mail.gmail.com>

```
On Wed, 2014-11-19 at 07:48 +0700, Duy Nguyen wrote:
> 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.  

```
