> The Java Git library (also known as "jgit"[*1*]) is a 100% pure Java
> implementation of a data access library for the Git on-disk data
> structures, as well as a re-implementation of some commonly used
> application functions such as history graph traversal/visualization
> and network transport (fetch).
>
> Since its inception on March 6, 2006 jgit has been under the
> GPLv2 license. To make the library available to a wider audience
> (including but not limited to the Eclipse Git plugin, numerous
> Apache projects such as Ant/Maven, the Netbeans IDE, etc.) we are
> switching to a dual license between a 3-clause BSD (the EDL[*2*])
> and the EPL[*3*].
>
> As of the bleeding edge (40c5c6cb11b8cc6caf3ea6a681caf0a6b8d66f36
> [*4*]) the ownership of all currently surviving lines of code is
> broken down as follows:
>
> $ sh owner.sh
> 78% 27607 Shawn O. Pearce
> 17% 6061 Robin Rosenberg
> 4% 1518 Dave Watson
> 0% 4 Thad Hughes
> 0% 2 Roger C. Soares
> ------------------------------
> 100% 35192 total
>
> Robin and Dave:
>
> With 17% and 4% ownership, can you please reply to verify
> this license change will be permitted for your contributions?
> Please note this change is _only_ to jgit, and not to the egit
> (Eclipse plugin) code.
>
> Nico, Linus, Junio, Daniel, Dscho, et.al.:
>
> We would appreciate it if you could provide a statement saying
> you have no current copyright ownership interest in jgit, and that
> you do not currently own nor invented any patents related to the
> "Git technology" that this code might need to use to function as
> a Git implementation.
>
> Part of the application process for EGit to become a project
> under the umbrella of the Eclipse Foundation[*5*] requires us
> to be reasonably certain the source code we are contributing is
> free of claims that could be brought by a 3rd party. A statement
> from major contributors to C Git (those who created much of the
> C implementation) would show those individuals have no claims
> to bring against the current version of jgit, and that jgit is
> therefore likely to be free of any IP claims.
>
> There are three particular sections of jgit code that I would
> like to bring to your attention before you respond:
>
> * BinaryDelta[*6*] bears a striking simiarlity to patch-delta.c.
> * PackFetchConnection[*7*] does what builtin-fetch-pack.c does.
> * IndexPack[*8*] does what index-pack.c does.
>
> Here (and everywhere else in jgit) we have tried to avoid directly
> translating C->Java, but sometimes things just come out in a
> similar way once expressed in source form. Knowing both the jgit
> and C git code well I think these are the closest sections where
> someone might suspect jgit copied code from C git. The attached
> owner.sh script applied to those three files in C git came up
> with the following major contributors:
>
> 33% 616 Nicolas Pitre
> 16% 304 Junio C Hamano
> 13% 241 Johannes Schindelin
> 10% 197 Sergey Vlasov
> 5% 107 Linus Torvalds
> 5% 105 Shawn O. Pearce
> 5% 94 Martin Koegler
> 3% 71 Daniel Barkalow
> 2% 40 Johannes Sixt
> 1% 36 Geert Bosch
>
>
> *1*
http://repo.or.cz/w/egit.git
> *2*
http://www.eclipse.org/org/documents/edl-v10.php
> *3*
http://www.eclipse.org/org/documents/epl-v10.php
> *4*
http://repo.or.cz/w/egit/spearce.git
> *5*
http://wiki.eclipse.org/EGit/Proposal
>
> *6*
http://repo.or.cz/w/egit/spearce.git?a=blob;f=org.spearce.jgit/src/org/spearce/jgit/li...
> *7*
http://repo.or.cz/w/egit/spearce.git?a=blob;f=org.spearce.jgit/src/org/spearce/jgit/tr...
> *8*
http://repo.or.cz/w/egit/spearce.git?a=blob;f=org.spearce.jgit/src/org/spearce/jgit/tr...
>
> --8< owner.sh --
> #!/bin/sh
>
> for f in $(git ls-files \
> jgit \
> org.spearce.jgit \
> org.spearce.jgit.test \
> | egrep -v '.(launch|pack|idx)$' \
> | egrep -v ^org.spearce.jgit/lib/ \
> )
> do
> git blame -C -C --whitespace "$f"
> done | perl -e '
> $total = 0;
> while (<>) {
> die "$_\n" unless
> /^[0-9a-f]+ (?:[^)]+)?\((.*?) \d{4}-\d{2}-\d{2} /;
> $n = ;
> $n =~ s/^\s+//;
> $n =~ s/\s+$//;
> $who{$n}++;
> $total++;
> }
> @own = map {[$_, $who{$_}, $who{$_} * 100 / $total]} keys %who;
> $fnd = 0;
> foreach (sort {$b->[2] <=> $a->[2]} @own) {
> $fnd += $_->[1];
> printf "%3i%% %7i %s\n", $_->[2], $_->[1], $_->[0];
> }
> $unk = $total - $fnd;
> print "-" x 30, "\n";
> if ($unk > 0) {
> printf "%3i%% %7i (unknown)\n", $unk * 100 / $total, $unk;
> }
> printf "%3i%% %7i total\n", 100, $total;
> '
>
> --
> Shawn.