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

7 messages, 6 authors, 2016-06-15 · open the first message on its own page

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

From: Shawn O. Pearce <hidden>
Date: 2016-06-15 22:44:35

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.

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

From: Dave Watson <hidden>
Date: 2016-06-15 22:44:35

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" [off-list ref]  
wrote:
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.

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

From: Daniel Barkalow <hidden>
Date: 2016-06-15 22:44:35

On Thu, 8 May 2008, Shawn O. Pearce wrote:
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.
No current copyright ownership or related patents for me. (And if I had 
copyright ownership, I'd be fine with the relicense anyway.)

	-Daniel
*This .sig left intentionally blank*

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

From: Robin Rosenberg <hidden>
Date: 2016-06-15 22:44:35

fredagen den 9 maj 2008 04.11.58 skrev Shawn O. Pearce:
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*].
I confirm this is fine with me.

-- robin

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

From: Johannes Schindelin <hidden>
Date: 2016-06-15 22:44:35

Hi,

On Thu, 8 May 2008, Shawn O. Pearce wrote:
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.
I confirm that if there is any copyright attributable to me, that I am 
excited to relicense with whatever license, at the discretion of Shawn O. 
Pearce.

Thanks,
Dscho

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

From: Nicolas Pitre <hidden>
Date: 2016-06-15 22:44:35

On Thu, 8 May 2008, Shawn O. Pearce wrote:
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.
I do not have any such copyright nor patent claims for the jgit code.

As long as the C version remains the authoritative reference 
implementation for protocol and data format, and any algorithmic 
improvements made to the jgit source can be merged back into the C 
version using the GPL, then I have no issue with the license used by 
jgit either.


Nicolas

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

From: Shawn O. Pearce <hidden>
Date: 2016-06-15 22:44:35

Nicolas Pitre [off-list ref] wrote:
On Thu, 8 May 2008, Shawn O. Pearce wrote:
quoted
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.
I do not have any such copyright nor patent claims for the jgit code.

As long as the C version remains the authoritative reference 
implementation for protocol and data format,
I don't think anyone is going to argue with that.  Its very unlikey
that jgit would unseat C git as the Git implementation used by
everyone.  But I do hope that jgit grows more in popularity as more
people come to Git, especially Java users/developers.
and any algorithmic 
improvements made to the jgit source can be merged back into the C 
version using the GPL, then I have no issue with the license used by 
jgit either.
This shouldn't be a problem.  We're moving to a 3-clause BSD.  As I
understand it, anyone can take code under a 3-clause BSD license,
make a few changes, and release the modified version under the GPL,
and the original BSD project can't take those changes back in due
to the changes being licensed under the GPL.  From what I have
read this has happened several times in the Linux kernel with code
obtained from *BSD.

So long as someone is willing to port the improved algorithm across
langauges from Java->C, even if it is a direct translation, it can
still be included in C Git.

Thanks for the reply Nico (and everyone else), it is most appreciated.

-- 
Shawn.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help