{"thread":{"id":"13444","subject":"Java Git (aka jgit) library switching license to BSD/EPL","startedAt":"2008-05-09T02:11:58Z","lastAt":"2008-05-09T23:38:28Z","messageCount":7,"participants":["Shawn O. Pearce","Dave Watson","Daniel Barkalow","Robin Rosenberg","Johannes Schindelin","Nicolas Pitre"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"76428","messageId":"20080509021158.GA29038@spearce.org","threadId":"13444","inReplyTo":null,"subject":"Java Git (aka jgit) library switching license to BSD/EPL","fromName":"Shawn O. Pearce","fromEmail":"spearce@spearce.org","sentAt":"2008-05-09T02:11:58Z","receivedAt":"2008-05-09T02:11:58Z","isPatch":false,"sender":{"key":"spearce@spearce.org","avatar":"https://avatars.githubusercontent.com/u/34844?v=4"},"body":"The Java Git library (also known as \"jgit\"[*1*]) is a 100% pure Java\nimplementation of a data access library for the Git on-disk data\nstructures, as well as a re-implementation of some commonly used\napplication functions such as history graph traversal/visualization\nand network transport (fetch).\n\nSince its inception on March 6, 2006 jgit has been under the\nGPLv2 license.  To make the library available to a wider audience\n(including but not limited to the Eclipse Git plugin, numerous\nApache projects such as Ant/Maven, the Netbeans IDE, etc.) we are\nswitching to a dual license between a 3-clause BSD (the EDL[*2*])\nand the EPL[*3*].\n\nAs of the bleeding edge (40c5c6cb11b8cc6caf3ea6a681caf0a6b8d66f36\n[*4*]) the ownership of all currently surviving lines of code is\nbroken down as follows:\n\n   $ sh owner.sh \n    78%   27607 Shawn O. Pearce\n    17%    6061 Robin Rosenberg\n     4%    1518 Dave Watson    \n     0%       4 Thad Hughes    \n     0%       2 Roger C. Soares\n   ------------------------------\n   100%   35192 total\n\nRobin and Dave:\n\n  With 17% and 4% ownership, can you please reply to verify\n  this license change will be permitted for your contributions?\n  Please note this change is _only_ to jgit, and not to the egit\n  (Eclipse plugin) code.\n\nNico, Linus, Junio, Daniel, Dscho, et.al.:\n\n  We would appreciate it if you could provide a statement saying\n  you have no current copyright ownership interest in jgit, and that\n  you do not currently own nor invented any patents related to the\n  \"Git technology\" that this code might need to use to function as\n  a Git implementation.\n\n  Part of the application process for EGit to become a project\n  under the umbrella of the Eclipse Foundation[*5*] requires us\n  to be reasonably certain the source code we are contributing is\n  free of claims that could be brought by a 3rd party.  A statement\n  from major contributors to C Git (those who created much of the\n  C implementation) would show those individuals have no claims\n  to bring against the current version of jgit, and that jgit is\n  therefore likely to be free of any IP claims.\n\n  There are three particular sections of jgit code that I would\n  like to bring to your attention before you respond:\n\n    * BinaryDelta[*6*] bears a striking simiarlity to patch-delta.c.\n    * PackFetchConnection[*7*] does what builtin-fetch-pack.c does.\n    * IndexPack[*8*] does what index-pack.c does.\n\n  Here (and everywhere else in jgit) we have tried to avoid directly\n  translating C->Java, but sometimes things just come out in a\n  similar way once expressed in source form.  Knowing both the jgit\n  and C git code well I think these are the closest sections where\n  someone might suspect jgit copied code from C git.  The attached\n  owner.sh script applied to those three files in C git came up\n  with the following major contributors:\n\n       33%     616 Nicolas Pitre\n       16%     304 Junio C Hamano\n       13%     241 Johannes Schindelin\n       10%     197 Sergey Vlasov\n        5%     107 Linus Torvalds\n        5%     105 Shawn O. Pearce\n        5%      94 Martin Koegler\n        3%      71 Daniel Barkalow\n        2%      40 Johannes Sixt\n        1%      36 Geert Bosch\n  \n\n*1*  http://repo.or.cz/w/egit.git\n*2*  http://www.eclipse.org/org/documents/edl-v10.php\n*3*  http://www.eclipse.org/org/documents/epl-v10.php\n*4*  http://repo.or.cz/w/egit/spearce.git\n*5*  http://wiki.eclipse.org/EGit/Proposal\n\n*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\n*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\n*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\n\n--8< owner.sh --\n#!/bin/sh\n\nfor f in $(git ls-files \\\n\tjgit \\\n\torg.spearce.jgit \\\n\torg.spearce.jgit.test \\\n\t| egrep -v '.(launch|pack|idx)$' \\\n\t| egrep -v ^org.spearce.jgit/lib/ \\\n\t)\ndo\n\tgit blame -C -C --whitespace \"$f\"\ndone | perl -e '\n\t$total = 0;\n\twhile (<>) {\n\t\tdie \"$_\\n\" unless\n\t\t/^[0-9a-f]+ (?:[^)]+)?\\((.*?) \\d{4}-\\d{2}-\\d{2} /;\n\t\t$n = $1;\n\t\t$n =~ s/^\\s+//;\n\t\t$n =~ s/\\s+$//;\n\t\t$who{$n}++;\n\t\t$total++;\n\t}\n\t@own = map {[$_, $who{$_}, $who{$_} * 100 / $total]} keys %who;\n\t$fnd = 0;\n\tforeach (sort {$b->[2] <=> $a->[2]} @own) {\n\t\t$fnd += $_->[1];\n\t\tprintf \"%3i%% %7i %s\\n\", $_->[2], $_->[1], $_->[0];\n\t}\n\t$unk = $total - $fnd;\n\tprint \"-\" x 30, \"\\n\";\n\tif ($unk > 0) {\n\t\tprintf \"%3i%% %7i (unknown)\\n\", $unk * 100 / $total, $unk;\n\t}\n\tprintf \"%3i%% %7i total\\n\", 100, $total;\n'\n\n-- \nShawn.\n"},{"id":"76437","messageId":"1CC65F01-3F34-4DE9-9AB8-BAB2F1C22723@mimvista.com","threadId":"13444","inReplyTo":"20080509021158.GA29038@spearce.org","subject":"Re: Java Git (aka jgit) library switching license to BSD/EPL","fromName":"Dave Watson","fromEmail":"dwatson@mimvista.com","sentAt":"2008-05-09T02:29:37Z","receivedAt":"2008-05-09T02:29:37Z","isPatch":false,"sender":{"key":"dwatson@mimvista.com","avatar":null},"body":"I have no objection to the relicense, if it will help things out.\n\n--\nDave Watson\nDirector of Software Development\nMIMvista Corp.\n\nOn May 8, 2008, at 10:11 PM, \"Shawn O. Pearce\" <spearce@spearce.org>  \nwrote:\n\n> The Java Git library (also known as \"jgit\"[*1*]) is a 100% pure Java\n> implementation of a data access library for the Git on-disk data\n> structures, as well as a re-implementation of some commonly used\n> application functions such as history graph traversal/visualization\n> and network transport (fetch).\n>\n> Since its inception on March 6, 2006 jgit has been under the\n> GPLv2 license.  To make the library available to a wider audience\n> (including but not limited to the Eclipse Git plugin, numerous\n> Apache projects such as Ant/Maven, the Netbeans IDE, etc.) we are\n> switching to a dual license between a 3-clause BSD (the EDL[*2*])\n> and the EPL[*3*].\n>\n> As of the bleeding edge (40c5c6cb11b8cc6caf3ea6a681caf0a6b8d66f36\n> [*4*]) the ownership of all currently surviving lines of code is\n> broken down as follows:\n>\n>   $ sh owner.sh\n>    78%   27607 Shawn O. Pearce\n>    17%    6061 Robin Rosenberg\n>     4%    1518 Dave Watson\n>     0%       4 Thad Hughes\n>     0%       2 Roger C. Soares\n>   ------------------------------\n>   100%   35192 total\n>\n> Robin and Dave:\n>\n>  With 17% and 4% ownership, can you please reply to verify\n>  this license change will be permitted for your contributions?\n>  Please note this change is _only_ to jgit, and not to the egit\n>  (Eclipse plugin) code.\n>\n> Nico, Linus, Junio, Daniel, Dscho, et.al.:\n>\n>  We would appreciate it if you could provide a statement saying\n>  you have no current copyright ownership interest in jgit, and that\n>  you do not currently own nor invented any patents related to the\n>  \"Git technology\" that this code might need to use to function as\n>  a Git implementation.\n>\n>  Part of the application process for EGit to become a project\n>  under the umbrella of the Eclipse Foundation[*5*] requires us\n>  to be reasonably certain the source code we are contributing is\n>  free of claims that could be brought by a 3rd party.  A statement\n>  from major contributors to C Git (those who created much of the\n>  C implementation) would show those individuals have no claims\n>  to bring against the current version of jgit, and that jgit is\n>  therefore likely to be free of any IP claims.\n>\n>  There are three particular sections of jgit code that I would\n>  like to bring to your attention before you respond:\n>\n>    * BinaryDelta[*6*] bears a striking simiarlity to patch-delta.c.\n>    * PackFetchConnection[*7*] does what builtin-fetch-pack.c does.\n>    * IndexPack[*8*] does what index-pack.c does.\n>\n>  Here (and everywhere else in jgit) we have tried to avoid directly\n>  translating C->Java, but sometimes things just come out in a\n>  similar way once expressed in source form.  Knowing both the jgit\n>  and C git code well I think these are the closest sections where\n>  someone might suspect jgit copied code from C git.  The attached\n>  owner.sh script applied to those three files in C git came up\n>  with the following major contributors:\n>\n>       33%     616 Nicolas Pitre\n>       16%     304 Junio C Hamano\n>       13%     241 Johannes Schindelin\n>       10%     197 Sergey Vlasov\n>        5%     107 Linus Torvalds\n>        5%     105 Shawn O. Pearce\n>        5%      94 Martin Koegler\n>        3%      71 Daniel Barkalow\n>        2%      40 Johannes Sixt\n>        1%      36 Geert Bosch\n>\n>\n> *1*  http://repo.or.cz/w/egit.git\n> *2*  http://www.eclipse.org/org/documents/edl-v10.php\n> *3*  http://www.eclipse.org/org/documents/epl-v10.php\n> *4*  http://repo.or.cz/w/egit/spearce.git\n> *5*  http://wiki.eclipse.org/EGit/Proposal\n>\n> *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\n> *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\n> *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\n>\n> --8< owner.sh --\n> #!/bin/sh\n>\n> for f in $(git ls-files \\\n>    jgit \\\n>    org.spearce.jgit \\\n>    org.spearce.jgit.test \\\n>    | egrep -v '.(launch|pack|idx)$' \\\n>    | egrep -v ^org.spearce.jgit/lib/ \\\n>    )\n> do\n>    git blame -C -C --whitespace \"$f\"\n> done | perl -e '\n>    $total = 0;\n>    while (<>) {\n>        die \"$_\\n\" unless\n>        /^[0-9a-f]+ (?:[^)]+)?\\((.*?) \\d{4}-\\d{2}-\\d{2} /;\n>        $n = $1;\n>        $n =~ s/^\\s+//;\n>        $n =~ s/\\s+$//;\n>        $who{$n}++;\n>        $total++;\n>    }\n>    @own = map {[$_, $who{$_}, $who{$_} * 100 / $total]} keys %who;\n>    $fnd = 0;\n>    foreach (sort {$b->[2] <=> $a->[2]} @own) {\n>        $fnd += $_->[1];\n>        printf \"%3i%% %7i %s\\n\", $_->[2], $_->[1], $_->[0];\n>    }\n>    $unk = $total - $fnd;\n>    print \"-\" x 30, \"\\n\";\n>    if ($unk > 0) {\n>        printf \"%3i%% %7i (unknown)\\n\", $unk * 100 / $total, $unk;\n>    }\n>    printf \"%3i%% %7i total\\n\", 100, $total;\n> '\n>\n> -- \n> Shawn.\n"},{"id":"76438","messageId":"alpine.LNX.1.00.0805082243060.19665@iabervon.org","threadId":"13444","inReplyTo":"20080509021158.GA29038@spearce.org","subject":"Re: Java Git (aka jgit) library switching license to BSD/EPL","fromName":"Daniel Barkalow","fromEmail":"barkalow@iabervon.org","sentAt":"2008-05-09T03:05:37Z","receivedAt":"2008-05-09T03:05:37Z","isPatch":false,"sender":{"key":"barkalow@iabervon.org","avatar":"https://avatars.githubusercontent.com/u/55364219?v=4"},"body":"On Thu, 8 May 2008, Shawn O. Pearce wrote:\n\n> Nico, Linus, Junio, Daniel, Dscho, et.al.:\n> \n>   We would appreciate it if you could provide a statement saying\n>   you have no current copyright ownership interest in jgit, and that\n>   you do not currently own nor invented any patents related to the\n>   \"Git technology\" that this code might need to use to function as\n>   a Git implementation.\n\nNo current copyright ownership or related patents for me. (And if I had \ncopyright ownership, I'd be fine with the relicense anyway.)\n\n\t-Daniel\n*This .sig left intentionally blank*\n"},{"id":"76447","messageId":"200805090920.50718.robin.rosenberg@dewire.com","threadId":"13444","inReplyTo":"20080509021158.GA29038@spearce.org","subject":"Re: Java Git (aka jgit) library switching license to BSD/EPL","fromName":"Robin Rosenberg","fromEmail":"robin.rosenberg@dewire.com","sentAt":"2008-05-09T07:20:49Z","receivedAt":"2008-05-09T07:20:49Z","isPatch":false,"sender":{"key":"robin.rosenberg@dewire.com","avatar":"https://avatars.githubusercontent.com/u/46357?v=4"},"body":"fredagen den 9 maj 2008 04.11.58 skrev Shawn O. Pearce:\n> The Java Git library (also known as \"jgit\"[*1*]) is a 100% pure Java\n> implementation of a data access library for the Git on-disk data\n> structures, as well as a re-implementation of some commonly used\n> application functions such as history graph traversal/visualization\n> and network transport (fetch).\n>\n> Since its inception on March 6, 2006 jgit has been under the\n> GPLv2 license.  To make the library available to a wider audience\n> (including but not limited to the Eclipse Git plugin, numerous\n> Apache projects such as Ant/Maven, the Netbeans IDE, etc.) we are\n> switching to a dual license between a 3-clause BSD (the EDL[*2*])\n> and the EPL[*3*].\n\nI confirm this is fine with me.\n\n-- robin\n"},{"id":"76453","messageId":"alpine.DEB.1.00.0805091055450.30431@racer","threadId":"13444","inReplyTo":"20080509021158.GA29038@spearce.org","subject":"Re: Java Git (aka jgit) library switching license to BSD/EPL","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2008-05-09T09:57:05Z","receivedAt":"2008-05-09T09:57:05Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Thu, 8 May 2008, Shawn O. Pearce wrote:\n\n> Nico, Linus, Junio, Daniel, Dscho, et.al.:\n> \n>   We would appreciate it if you could provide a statement saying\n>   you have no current copyright ownership interest in jgit, and that\n>   you do not currently own nor invented any patents related to the\n>   \"Git technology\" that this code might need to use to function as\n>   a Git implementation.\n\nI confirm that if there is any copyright attributable to me, that I am \nexcited to relicense with whatever license, at the discretion of Shawn O. \nPearce.\n\nThanks,\nDscho\n"},{"id":"76465","messageId":"alpine.LFD.1.10.0805091214170.23581@xanadu.home","threadId":"13444","inReplyTo":"20080509021158.GA29038@spearce.org","subject":"Re: Java Git (aka jgit) library switching license to BSD/EPL","fromName":"Nicolas Pitre","fromEmail":"nico@cam.org","sentAt":"2008-05-09T16:26:39Z","receivedAt":"2008-05-09T16:26:39Z","isPatch":false,"sender":{"key":"nico@fluxnic.net","avatar":"https://avatars.githubusercontent.com/u/702790?v=4"},"body":"On Thu, 8 May 2008, Shawn O. Pearce wrote:\n\n> Nico, Linus, Junio, Daniel, Dscho, et.al.:\n> \n>   We would appreciate it if you could provide a statement saying\n>   you have no current copyright ownership interest in jgit, and that\n>   you do not currently own nor invented any patents related to the\n>   \"Git technology\" that this code might need to use to function as\n>   a Git implementation.\n\nI do not have any such copyright nor patent claims for the jgit code.\n\nAs long as the C version remains the authoritative reference \nimplementation for protocol and data format, and any algorithmic \nimprovements made to the jgit source can be merged back into the C \nversion using the GPL, then I have no issue with the license used by \njgit either.\n\n\nNicolas\n"},{"id":"76478","messageId":"20080509233828.GE29038@spearce.org","threadId":"13444","inReplyTo":"alpine.LFD.1.10.0805091214170.23581@xanadu.home","subject":"Re: Java Git (aka jgit) library switching license to BSD/EPL","fromName":"Shawn O. Pearce","fromEmail":"spearce@spearce.org","sentAt":"2008-05-09T23:38:28Z","receivedAt":"2008-05-09T23:38:28Z","isPatch":false,"sender":{"key":"spearce@spearce.org","avatar":"https://avatars.githubusercontent.com/u/34844?v=4"},"body":"Nicolas Pitre <nico@cam.org> wrote:\n> On Thu, 8 May 2008, Shawn O. Pearce wrote:\n> \n> > Nico, Linus, Junio, Daniel, Dscho, et.al.:\n> > \n> >   We would appreciate it if you could provide a statement saying\n> >   you have no current copyright ownership interest in jgit, and that\n> >   you do not currently own nor invented any patents related to the\n> >   \"Git technology\" that this code might need to use to function as\n> >   a Git implementation.\n> \n> I do not have any such copyright nor patent claims for the jgit code.\n> \n> As long as the C version remains the authoritative reference \n> implementation for protocol and data format,\n\nI don't think anyone is going to argue with that.  Its very unlikey\nthat jgit would unseat C git as the Git implementation used by\neveryone.  But I do hope that jgit grows more in popularity as more\npeople come to Git, especially Java users/developers.\n\n> and any algorithmic \n> improvements made to the jgit source can be merged back into the C \n> version using the GPL, then I have no issue with the license used by \n> jgit either.\n\nThis shouldn't be a problem.  We're moving to a 3-clause BSD.  As I\nunderstand it, anyone can take code under a 3-clause BSD license,\nmake a few changes, and release the modified version under the GPL,\nand the original BSD project can't take those changes back in due\nto the changes being licensed under the GPL.  From what I have\nread this has happened several times in the Linux kernel with code\nobtained from *BSD.\n\nSo long as someone is willing to port the improved algorithm across\nlangauges from Java->C, even if it is a direct translation, it can\nstill be included in C Git.\n\nThanks for the reply Nico (and everyone else), it is most appreciated.\n\n-- \nShawn.\n"}]}