git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Java Git (aka jgit) library switching license to BSD/EPL

From
DWDave Watson <dwatson@mimvista.com>
Date
May 9, 2008, 02:29 UTC
Message-ID
<1CC65F01-3F34-4DE9-9AB8-BAB2F1C22723@mimvista.com>
In-Reply-To
<20080509021158.GA29038@spearce.org>
I have no objection to the relicense, if it will help things out.

-- Dave Watson Director of Software Development MIMvista Corp.

On May 8, 2008, at 10:11 PM, "Shawn O. Pearce" <spearce@spearce.org> wrote:

Show 126 quoted lines
> 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/lib/BinaryDelta.java;h=bba6b19a4000923abfe57b844bae17e7a03e0419;hb=40c5c6cb11b8cc6caf3ea6a681caf0a6b8d66f36
> *7*  http://repo.or.cz/w/egit/spearce.git?a=blob;f=org.spearce.jgit/src/org/spearce/jgit/transport/PackFetchConnection.java;h=c7fa66c0654eaf84c143e61ee4d11b74d73db28f;hb=40c5c6cb11b8cc6caf3ea6a681caf0a6b8d66f36
> *8*  http://repo.or.cz/w/egit/spearce.git?a=blob;f=org.spearce.jgit/src/org/spearce/jgit/transport/IndexPack.java;h=b6e5956f62fa8cb60770c991699ae7b457d8954f;hb=40c5c6cb11b8cc6caf3ea6a681caf0a6b8d66f36
>
> --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 = $1;
>        $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.
Previous: Shawn O. PearceNext: Daniel Barkalow
Message 2 of 7 in “Java Git (aka jgit) library switching license to BSD/EPL”
  1. Shawn O. PearceMay 9, 2008
  2. Dave WatsonMay 9, 2008
  3. Daniel BarkalowMay 9, 2008
  4. Robin RosenbergMay 9, 2008
  5. Johannes SchindelinMay 9, 2008
  6. Nicolas PitreMay 9, 2008
  7. Shawn O. PearceMay 9, 2008

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.