{"thread":{"id":"16334","subject":"git to libgit2 code relicensing","startedAt":"2008-11-14T20:59:56Z","lastAt":"2008-11-25T15:19:21Z","messageCount":33,"participants":["Andreas Ericsson","Martin Koegler","Sverre Rabbelier","Linus Torvalds","Shawn O. Pearce","David Brown","Nicolas Pitre","Pau Garcia i Quiles","Miklos Vajna","Junio C Hamano","Pierre Habouzit","Daniel Barkalow","Johannes Schindelin","René Scharfe","Kristian Høgsberg"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"95827","messageId":"491DE6CC.6060201@op5.se","threadId":"16334","inReplyTo":null,"subject":"git to libgit2 code relicensing","fromName":"Andreas Ericsson","fromEmail":"ae@op5.se","sentAt":"2008-11-14T20:59:56Z","receivedAt":"2008-11-14T20:59:56Z","isPatch":false,"sender":{"key":"ae@op5.se","avatar":"https://gravatar.com/avatar/426e89595c75a8f5252dd0c989e5fabe5bcac616e68557427ad9aef6b0ca342a?d=mp&s=160"},"body":"I've been working quite a lot on git -> libgit2 code moving,\nbut the licensing stuff is a bit depressing, as I can't know\nif the work I'm doing is for nothing or not.\n\nThe license decided for libgit2 is \"GPL with gcc exception\".\nThose who are OK with relicensing their contributions under\nthat license for the purpose of libgit2, can you please say\nso?\n\nI'm planning on writing a tool for this that will have \"ok\",\n\"not ok\" and \"ask-each-patch\" as options.\n\nThe list of people whose position I know is rather short.\nPlease correct me if you're on it and would like not to be.\nJunio C. Hamano\t\task\nJohannes Schindelin\tok\nShawn O. Pearce\t\tok\nAndreas Ericsson\tok\nPierre Habouzit\t\tok\nBrian Gernhardt\t\tok\n\n\nI've put everyone who \"owns\" more than 500 lines of code\non the bcc list, figuring your permission is important\nbut that you don't want the hundreds (well, one can hope)\nof emails from people saying \"ok\". The list of major owners\nwas generated with \"git showners *.c\" in a worktree from\nthe next branch of git.git.\n\n-- \nAndreas Ericsson                   andreas.ericsson@op5.se\nOP5 AB                             www.op5.se\nTel: +46 8-230225                  Fax: +46 8-230231\n\n\n#!/bin/sh\n\ntest \"$#\" -gt 0 || { echo \"Usage: $0 <file>\"; exit 1; }\ncombined=t\nwhile test \"$#\" -gt 0\ndo\n\tcase \"$1\" in\n\t-c|--combined)\n\t\tcombined=t\n\t;;\n\t-i|--individual)\n\t\tcombined=\n\t;;\n\t--)\n\t\tshift\n\t\tbreak\n\t;;\n\t*)\n\t\tbreak\n\t;;\n\tesac\n\tshift\ndone\n\nsort_enumerate ()\n{\n\tsed -e 's/[^(]*(\\([^0-9]*\\).*/\\1/' -e 's/[\\t ]*$//' \\\n\t\t| sort | uniq -c | sort -nr\n}\n\nshow_owners ()\n{\n\tfor f in \"$@\"; do\n\t\ttest -d \"$f\" && { show_owners \"$f\"/*; continue; }\n\n\t\tgit blame -C -C -M \"$f\"\n\tdone\n}\n\nif test \"$combined\" = t; then\n\techo \"$@\"\n\tshow_owners \"$@\" | sort_enumerate\nelse\n\techo \"Showing one-at-a-time ownership\"\n\tfor f in \"$@\"; do\n\t\techo \"$f\"\n\t\tshow_owners \"$f\" | sort_enumerate\n\tdone\nfi\n"},{"id":"95829","messageId":"20081114213352.GA12134@auto.tuwien.ac.at","threadId":"16334","inReplyTo":"491DE6CC.6060201@op5.se","subject":"Re: git to libgit2 code relicensing","fromName":"Martin Koegler","fromEmail":"mkoegler@auto.tuwien.ac.at","sentAt":"2008-11-14T21:33:52Z","receivedAt":"2008-11-14T21:33:52Z","isPatch":false,"sender":{"key":"mkoegler@auto.tuwien.ac.at","avatar":null},"body":"On Fri, Nov 14, 2008 at 09:59:56PM +0100, Andreas Ericsson wrote:\n> I've put everyone who \"owns\" more than 500 lines of code\n> on the bcc list, figuring your permission is important\n> but that you don't want the hundreds (well, one can hope)\n> of emails from people saying \"ok\". The list of major owners\n> was generated with \"git showners *.c\" in a worktree from\n> the next branch of git.git.\n\nI don't think, that your way for relicensing is bullet proof:\n\nI consider many of my GIT patches as derived work from other parts of\nGIT, even if git blame is stating me as author. I can gurantee you,\nthat I comply with the \"Developer's Certificate of Origin 1.1\" point\nb, as its based on code out of git.git. But I can't tell you, from\nwhich files I reused code anymore.\n\nProbably other people did the same.\n\nYour method is ignoring such derived code.\n\nmfg Martin Kögler\n"},{"id":"95831","messageId":"bd6139dc0811141346w194ae4c5m9f7b0fdb106108fc@mail.gmail.com","threadId":"16334","inReplyTo":"20081114213352.GA12134@auto.tuwien.ac.at","subject":"Re: git to libgit2 code relicensing","fromName":"Sverre Rabbelier","fromEmail":"alturin@gmail.com","sentAt":"2008-11-14T21:46:31Z","receivedAt":"2008-11-14T21:46:31Z","isPatch":false,"sender":{"key":"alturin@gmail.com","avatar":null},"body":"On Fri, Nov 14, 2008 at 22:33, Martin Koegler\n<mkoegler@auto.tuwien.ac.at> wrote:\n> On Fri, Nov 14, 2008 at 09:59:56PM +0100, Andreas Ericsson wrote:\n>> I've put everyone who \"owns\" more than 500 lines of code\n>> on the bcc list, figuring your permission is important\n>> but that you don't want the hundreds (well, one can hope)\n>> of emails from people saying \"ok\". The list of major owners\n>> was generated with \"git showners *.c\" in a worktree from\n>> the next branch of git.git.\n>\n> I don't think, that your way for relicensing is bullet proof:\n>\n> I consider many of my GIT patches as derived work from other parts of\n> GIT, even if git blame is stating me as author. I can gurantee you,\n> that I comply with the \"Developer's Certificate of Origin 1.1\" point\n> b, as its based on code out of git.git. But I can't tell you, from\n> which files I reused code anymore.\n>\n> Probably other people did the same.\n>\n> Your method is ignoring such derived code.\n\nPerhaps git stats can be of assistance here, it can summarize how much\nlines a person changed (per file, or in total), that should be a\nbetter metric (at least for code reused from within git.git, ofcourse\nGPL-ed code taken from somewhere else is not covered).\n\n-- \nCheers,\n\nSverre Rabbelier\n"},{"id":"95836","messageId":"491E021E.5020104@op5.se","threadId":"16334","inReplyTo":"20081114213352.GA12134@auto.tuwien.ac.at","subject":"Re: git to libgit2 code relicensing","fromName":"Andreas Ericsson","fromEmail":"ae@op5.se","sentAt":"2008-11-14T22:56:30Z","receivedAt":"2008-11-14T22:56:30Z","isPatch":false,"sender":{"key":"ae@op5.se","avatar":"https://gravatar.com/avatar/426e89595c75a8f5252dd0c989e5fabe5bcac616e68557427ad9aef6b0ca342a?d=mp&s=160"},"body":"Martin Koegler wrote:\n> On Fri, Nov 14, 2008 at 09:59:56PM +0100, Andreas Ericsson wrote:\n>> I've put everyone who \"owns\" more than 500 lines of code\n>> on the bcc list, figuring your permission is important\n>> but that you don't want the hundreds (well, one can hope)\n>> of emails from people saying \"ok\". The list of major owners\n>> was generated with \"git showners *.c\" in a worktree from\n>> the next branch of git.git.\n> \n> I don't think, that your way for relicensing is bullet proof:\n> \n\nI know that it's not, which is why I'm doing research to take care\nof the pieces interesting for libgit2 that could possibly have\nbeen derived from elsewhere. Reading and filling structures specific\nto git is something I'd be surprised if they originated outside of\ngit though.\n\n> I consider many of my GIT patches as derived work from other parts of\n> GIT, even if git blame is stating me as author. I can gurantee you,\n> that I comply with the \"Developer's Certificate of Origin 1.1\" point\n> b, as its based on code out of git.git.\n\nRight, but if we can never re-use code from git.git, libgit will never\nfly. It's unfortunately as simple as that. So perhaps we're left with\nthe option of writing a GPL'd library or just go hang.\n\n> But I can't tell you, from which files I reused code anymore.\n> \n\nTo a certain point, \"git blame\" can.\n\n> Probably other people did the same.\n> \n> Your method is ignoring such derived code.\n> \n\nRight. If possible, I'd still like an OK from you though. If nothing\nelse, it'll make it possible to re-use code that originated from\nsomeone else and that you changed, assuming that \"someone else\" also\nagree to relicensing their code. With 100% of the authors agreeing\nto that, we could have a libified git flying in a matter of months\ninstead of never.\n\nIt's unfortunate if the letter of the law pertaining to a particular\nlicense should prevent the copyright owners from doing whatever\nthey want with the code, but perhaps that's the world we live in.\n\n-- \nAndreas Ericsson                   andreas.ericsson@op5.se\nOP5 AB                             www.op5.se\nTel: +46 8-230225                  Fax: +46 8-230231\n"},{"id":"95837","messageId":"491E023F.9030605@op5.se","threadId":"16334","inReplyTo":"bd6139dc0811141346w194ae4c5m9f7b0fdb106108fc@mail.gmail.com","subject":"Re: git to libgit2 code relicensing","fromName":"Andreas Ericsson","fromEmail":"ae@op5.se","sentAt":"2008-11-14T22:57:03Z","receivedAt":"2008-11-14T22:57:03Z","isPatch":false,"sender":{"key":"ae@op5.se","avatar":"https://gravatar.com/avatar/426e89595c75a8f5252dd0c989e5fabe5bcac616e68557427ad9aef6b0ca342a?d=mp&s=160"},"body":"Sverre Rabbelier wrote:\n> On Fri, Nov 14, 2008 at 22:33, Martin Koegler\n> <mkoegler@auto.tuwien.ac.at> wrote:\n>> On Fri, Nov 14, 2008 at 09:59:56PM +0100, Andreas Ericsson wrote:\n>>> I've put everyone who \"owns\" more than 500 lines of code\n>>> on the bcc list, figuring your permission is important\n>>> but that you don't want the hundreds (well, one can hope)\n>>> of emails from people saying \"ok\". The list of major owners\n>>> was generated with \"git showners *.c\" in a worktree from\n>>> the next branch of git.git.\n>> I don't think, that your way for relicensing is bullet proof:\n>>\n>> I consider many of my GIT patches as derived work from other parts of\n>> GIT, even if git blame is stating me as author. I can gurantee you,\n>> that I comply with the \"Developer's Certificate of Origin 1.1\" point\n>> b, as its based on code out of git.git. But I can't tell you, from\n>> which files I reused code anymore.\n>>\n>> Probably other people did the same.\n>>\n>> Your method is ignoring such derived code.\n> \n> Perhaps git stats can be of assistance here, it can summarize how much\n> lines a person changed (per file, or in total), that should be a\n> better metric (at least for code reused from within git.git, ofcourse\n> GPL-ed code taken from somewhere else is not covered).\n> \n\nThat will almost certainly not be a problem. I'm working on reading stuff\ninto git-specific structures and then updating those structures. I doubt\nany such code exists outside git. If it does, it's more likely derived\nfrom git than the other way around.\n\nIt's also worth noting that I'm aiming for the really low-level core\nstuff at first. It would be beneficial to get such simple things going\nas updating the index (with an entire file) and then creating a commit\nfrom that index. Such a thing would definitely be enough for (very basic)\nIDE integration, and then we can build further on that but utilizing\ndevelopers from other projects than the git developer community.\n\n-- \nAndreas Ericsson                   andreas.ericsson@op5.se\nOP5 AB                             www.op5.se\nTel: +46 8-230225                  Fax: +46 8-230231\n"},{"id":"95839","messageId":"alpine.LFD.2.00.0811141512480.3468@nehalem.linux-foundation.org","threadId":"16334","inReplyTo":"491DE6CC.6060201@op5.se","subject":"Re: git to libgit2 code relicensing","fromName":"Linus Torvalds","fromEmail":"torvalds@linux-foundation.org","sentAt":"2008-11-14T23:13:29Z","receivedAt":"2008-11-14T23:13:29Z","isPatch":false,"sender":{"key":"torvalds@linux-foundation.org","avatar":"https://avatars.githubusercontent.com/u/1024025?v=4"},"body":"\n\nOn Fri, 14 Nov 2008, Andreas Ericsson wrote:\n> \n> The license decided for libgit2 is \"GPL with gcc exception\".\n\nWhat's the exact language? \n\nI'm likely ok with GPLv2 + libgcc-like exception, but I'd like to see the \nexact one. I haven't followed the discussions much..\n\n\t\tLinus\n"},{"id":"95847","messageId":"20081114234658.GA2932@spearce.org","threadId":"16334","inReplyTo":"alpine.LFD.2.00.0811141512480.3468@nehalem.linux-foundation.org","subject":"Re: git to libgit2 code relicensing","fromName":"Shawn O. Pearce","fromEmail":"spearce@spearce.org","sentAt":"2008-11-14T23:46:58Z","receivedAt":"2008-11-14T23:46:58Z","isPatch":false,"sender":{"key":"spearce@spearce.org","avatar":"https://avatars.githubusercontent.com/u/34844?v=4"},"body":"Linus Torvalds <torvalds@linux-foundation.org> wrote:\n> On Fri, 14 Nov 2008, Andreas Ericsson wrote:\n> > \n> > The license decided for libgit2 is \"GPL with gcc exception\".\n> \n> What's the exact language? \n> \n> I'm likely ok with GPLv2 + libgcc-like exception, but I'd like to see the \n> exact one. I haven't followed the discussions much..\n\nThe language we are using in libgit2 is taken from libgcc, and is\nas follows:\n\n--8<--\n\n Note that the only valid version of the GPL as far as this project\n is concerned is _this_ particular version of the license (ie v2, not\n v2.2 or v3.x or whatever), unless explicitly otherwise stated.\n\n In addition to the permissions in the GNU General Public License,\n the authors give you unlimited permission to link the compiled\n version of this file into combinations with other programs,\n and to distribute those combinations without any restriction\n coming from the use of this file.  (The General Public License\n restrictions do apply in other respects; for example, they cover\n modification of the file, and distribution when not linked into\n a combined executable.)\n\n----------------------------------------------------------------------\n\n\t\t    GNU GENERAL PUBLIC LICENSE\n\t\t       Version 2, June 1991\n\n(... the rest of GPL v2 as it appears in git.git ...)\n\n-- \nShawn.\n"},{"id":"95856","messageId":"20081115043051.GA21608@linode.davidb.org","threadId":"16334","inReplyTo":"20081114234658.GA2932@spearce.org","subject":"Re: git to libgit2 code relicensing","fromName":"David Brown","fromEmail":"git@davidb.org","sentAt":"2008-11-15T04:30:52Z","receivedAt":"2008-11-15T04:30:52Z","isPatch":false,"sender":{"key":"git@davidb.org","avatar":"https://gravatar.com/avatar/94c86a2938470a74c2eac5e2b69afc0871f79a660295c02219597aba8cb101c1?d=mp&s=160"},"body":"On Fri, Nov 14, 2008 at 03:46:58PM -0800, Shawn O. Pearce wrote:\n\n> In addition to the permissions in the GNU General Public License,\n> the authors give you unlimited permission to link the compiled\n> version of this file into combinations with other programs,\n> and to distribute those combinations without any restriction\n> coming from the use of this file.  (The General Public License\n> restrictions do apply in other respects; for example, they cover\n> modification of the file, and distribution when not linked into\n> a combined executable.)\n\nIs this license intended to allow static linking but forbid dynamic\nlinking into a non-GPL program?  It depends on how you interpret\n\"linked into a combined executable\", but that sounds like it\nintentionally excludes the dynamic case.\n\nDavid\n"},{"id":"95857","messageId":"20081115050039.GC2932@spearce.org","threadId":"16334","inReplyTo":"20081115043051.GA21608@linode.davidb.org","subject":"Re: git to libgit2 code relicensing","fromName":"Shawn O. Pearce","fromEmail":"spearce@spearce.org","sentAt":"2008-11-15T05:00:39Z","receivedAt":"2008-11-15T05:00:39Z","isPatch":false,"sender":{"key":"spearce@spearce.org","avatar":"https://avatars.githubusercontent.com/u/34844?v=4"},"body":"David Brown <git@davidb.org> wrote:\n> On Fri, Nov 14, 2008 at 03:46:58PM -0800, Shawn O. Pearce wrote:\n>\n>> In addition to the permissions in the GNU General Public License,\n>> the authors give you unlimited permission to link the compiled\n>> version of this file into combinations with other programs,\n>> and to distribute those combinations without any restriction\n>> coming from the use of this file.  (The General Public License\n>> restrictions do apply in other respects; for example, they cover\n>> modification of the file, and distribution when not linked into\n>> a combined executable.)\n>\n> Is this license intended to allow static linking but forbid dynamic\n> linking into a non-GPL program?  It depends on how you interpret\n> \"linked into a combined executable\", but that sounds like it\n> intentionally excludes the dynamic case.\n\nI don't know.  When I read it myself I assumed dynamic linking\nwould also be OK.  This is why I prefer programs; I don't read\nlegalese so I can't quite figure out what the statement means.\nAt least with C its a little less vague.  ;-)\n\n-- \nShawn.\n"},{"id":"95865","messageId":"alpine.LFD.2.00.0811150256140.27509@xanadu.home","threadId":"16334","inReplyTo":"20081115050039.GC2932@spearce.org","subject":"Re: git to libgit2 code relicensing","fromName":"Nicolas Pitre","fromEmail":"nico@cam.org","sentAt":"2008-11-15T08:04:29Z","receivedAt":"2008-11-15T08:04:29Z","isPatch":false,"sender":{"key":"nico@fluxnic.net","avatar":"https://avatars.githubusercontent.com/u/702790?v=4"},"body":"On Fri, 14 Nov 2008, Shawn O. Pearce wrote:\n\n> David Brown <git@davidb.org> wrote:\n> > On Fri, Nov 14, 2008 at 03:46:58PM -0800, Shawn O. Pearce wrote:\n> >\n> >> In addition to the permissions in the GNU General Public License,\n> >> the authors give you unlimited permission to link the compiled\n> >> version of this file into combinations with other programs,\n> >> and to distribute those combinations without any restriction\n> >> coming from the use of this file.  (The General Public License\n> >> restrictions do apply in other respects; for example, they cover\n> >> modification of the file, and distribution when not linked into\n> >> a combined executable.)\n> >\n> > Is this license intended to allow static linking but forbid dynamic\n> > linking into a non-GPL program?  It depends on how you interpret\n> > \"linked into a combined executable\", but that sounds like it\n> > intentionally excludes the dynamic case.\n> \n> I don't know.  When I read it myself I assumed dynamic linking\n> would also be OK.\n\nlibgcc is a dynamic library on most modern systems these days. Yet they \nroutinely execute non-GPL programs. If that text intentionally excluded \nthe dynamic case then every non-GPL applications on such systems would \nhave been breaking the license for a long time.  So I don't think anyone \ncould have substance for such a claim.\n\n\nNicolas\n"},{"id":"95868","messageId":"491EA1CC.9020605@op5.se","threadId":"16334","inReplyTo":"alpine.LFD.2.00.0811141512480.3468@nehalem.linux-foundation.org","subject":"Re: git to libgit2 code relicensing","fromName":"Andreas Ericsson","fromEmail":"ae@op5.se","sentAt":"2008-11-15T10:17:48Z","receivedAt":"2008-11-15T10:17:48Z","isPatch":false,"sender":{"key":"ae@op5.se","avatar":"https://gravatar.com/avatar/426e89595c75a8f5252dd0c989e5fabe5bcac616e68557427ad9aef6b0ca342a?d=mp&s=160"},"body":"Linus Torvalds wrote:\n> \n> On Fri, 14 Nov 2008, Andreas Ericsson wrote:\n>> The license decided for libgit2 is \"GPL with gcc exception\".\n> \n> What's the exact language? \n> \n> I'm likely ok with GPLv2 + libgcc-like exception, but I'd like to see the \n> exact one. I haven't followed the discussions much..\n> \n\nShawn posted the exact text. The spirit of that license is that anyone can\nuse an unmodified version of the library for whatever they want, but it's\nillegal to link non-GPL software to an altered version of the library. That\nis, the git community will get all changes back while other projects can\nuse the official version of the library without having to worry about\nlicensing issues. EvilCompany cannot make changes to the library and then\nlink non-GPL'd software to their changed version. They can do that if they\nsend their library changes upstream and then only use them once they're\nconsidered \"official\" though.\n\nAs the original author, you sort of have veto here since everything core-ish\nis derived from what you wrote. Iow, if you say nay, libgit2 with a non-GPL\nlicense will only fly if index, tree, commit, ref, etc... manipulation is\nrewritten from scratch. That will be hard, given that it can fairly easily\nbe claimed that the people most likely to do it are so heavily influenced by\nthe current code that it's impossible for them not to make a derivative work.\n\n-- \nAndreas Ericsson                   andreas.ericsson@op5.se\nOP5 AB                             www.op5.se\nTel: +46 8-230225                  Fax: +46 8-230231\n"},{"id":"95869","messageId":"3af572ac0811150228k291b8850idc34cb474f455aa7@mail.gmail.com","threadId":"16334","inReplyTo":"491EA1CC.9020605@op5.se","subject":"Re: git to libgit2 code relicensing","fromName":"Pau Garcia i Quiles","fromEmail":"pgquiles@elpauer.org","sentAt":"2008-11-15T10:28:39Z","receivedAt":"2008-11-15T10:28:39Z","isPatch":false,"sender":{"key":"pgquiles@elpauer.org","avatar":null},"body":"> Shawn posted the exact text. The spirit of that license is that anyone can\n> use an unmodified version of the library for whatever they want, but it's\n> illegal to link non-GPL software to an altered version of the library. That\n> is, the git community will get all changes back while other projects can\n> use the official version of the library without having to worry about\n> licensing issues. EvilCompany cannot make changes to the library and then\n> link non-GPL'd software to their changed version. They can do that if they\n> send their library changes upstream and then only use them once they're\n> considered \"official\" though.\n\nDo you mean if I write a patch to libgit2, send it upstream and make\nit public on my website but it is not accepted upstream, I cannot link\nmy modified libgit2 version (i. e. libgit2 + my patch) to my non-GPL\nsoftware? It looks insane to me: I wrote the patch and made it public\nbut you guys did not accept it!\n\n--\nPau Garcia i Quiles\nhttp://www.elpauer.org\n(Due to my workload, I may need 10 days to answer)\n"},{"id":"95870","messageId":"491EACFA.9040604@op5.se","threadId":"16334","inReplyTo":"3af572ac0811150228k291b8850idc34cb474f455aa7@mail.gmail.com","subject":"Re: git to libgit2 code relicensing","fromName":"Andreas Ericsson","fromEmail":"ae@op5.se","sentAt":"2008-11-15T11:05:30Z","receivedAt":"2008-11-15T11:05:30Z","isPatch":false,"sender":{"key":"ae@op5.se","avatar":"https://gravatar.com/avatar/426e89595c75a8f5252dd0c989e5fabe5bcac616e68557427ad9aef6b0ca342a?d=mp&s=160"},"body":"Pau Garcia i Quiles wrote:\n>> Shawn posted the exact text. The spirit of that license is that anyone can\n>> use an unmodified version of the library for whatever they want, but it's\n>> illegal to link non-GPL software to an altered version of the library. That\n>> is, the git community will get all changes back while other projects can\n>> use the official version of the library without having to worry about\n>> licensing issues. EvilCompany cannot make changes to the library and then\n>> link non-GPL'd software to their changed version. They can do that if they\n>> send their library changes upstream and then only use them once they're\n>> considered \"official\" though.\n> \n> Do you mean if I write a patch to libgit2, send it upstream and make\n> it public on my website but it is not accepted upstream, I cannot link\n> my modified libgit2 version (i. e. libgit2 + my patch) to my non-GPL\n> software?\n\nI think that's the case, yes.\n\n> It looks insane to me: I wrote the patch and made it public\n> but you guys did not accept it!\n> \n\nWell, if you wrote a patch that uses a closed-source database library\nto store git objects in, how would that benefit the community even if\nyou published the patch?\n\nYou could ofcourse fork the library, but then you'd have to take care\nof namespace conflicts and such things. The fork would naturally have\nto be licensed GPL + gcc-exception too, since it's a derivative work.\n\n-- \nAndreas Ericsson                   andreas.ericsson@op5.se\nOP5 AB                             www.op5.se\nTel: +46 8-230225                  Fax: +46 8-230231\n"},{"id":"95871","messageId":"3af572ac0811150333p28546975m9cf3ad73e62eb97@mail.gmail.com","threadId":"16334","inReplyTo":"491EACFA.9040604@op5.se","subject":"Re: git to libgit2 code relicensing","fromName":"Pau Garcia i Quiles","fromEmail":"pgquiles@elpauer.org","sentAt":"2008-11-15T11:33:10Z","receivedAt":"2008-11-15T11:33:10Z","isPatch":false,"sender":{"key":"pgquiles@elpauer.org","avatar":null},"body":"On Sat, Nov 15, 2008 at 12:05 PM, Andreas Ericsson <ae@op5.se> wrote:\n\n>> Do you mean if I write a patch to libgit2, send it upstream and make\n>> it public on my website but it is not accepted upstream, I cannot link\n>> my modified libgit2 version (i. e. libgit2 + my patch) to my non-GPL\n>> software?\n>\n> I think that's the case, yes.\n>\n>> It looks insane to me: I wrote the patch and made it public\n>> but you guys did not accept it!\n>>\n>\n> Well, if you wrote a patch that uses a closed-source database library\n> to store git objects in, how would that benefit the community even if\n> you published the patch?\n\nThe case I had in mind is not that but this: say I write a patch which\nis totally open-source and uses only open-source software to add some\nfeature to libgit2 but I want to link that libgit2 + mypatch to a\nclosed source application (say, for instance, software for military\nuse, which I'm not allowed to open source). To state it clearly:\n- My contribution is 100% open source\n- My contribution is 100% towards libgit2\n- In fact, I could add that very feature to my application instead of\nlibgit2 but as I'm open-source-friendly, I decide to contribute that\npatch to libgit2.\n\nFor some reason, that patch:\n- Is not accepted for some time (for instance, I'm thinking in that\ntcl/tk limitation which is preventing Junio from merging a patch, it's\nbeen in the \"what's cooking\" for some weeks now)\n- Or is not accepted at all\n\nAccording to what you said, I only have two options:\n- Either I fork libgit2, or\n- I keep my feature in my application and do not contribute my feature\nto libgit2\n\nIt looks even more insane now!\n\nWhat about rephrasing the libgcc exception to something like: \"if you\nhave a patch, and sent us that patch, but we put the patch in stand-by\nor declided the patch, you are still allowed to combine libgit2 with\nyour closed-source application\". After all, the fault is not in the\nclosed-source part (I contributed the patch, it is 100% open-source\nand only uses 100% open-source) but in the libgit2 part (patch is on\nhold or not accepted at all).\n\n--\nPau Garcia i Quiles\nhttp://www.elpauer.org\n(Due to my workload, I may need 10 days to answer)\n"},{"id":"95872","messageId":"491EB812.7040808@op5.se","threadId":"16334","inReplyTo":"3af572ac0811150333p28546975m9cf3ad73e62eb97@mail.gmail.com","subject":"Re: git to libgit2 code relicensing","fromName":"Andreas Ericsson","fromEmail":"ae@op5.se","sentAt":"2008-11-15T11:52:50Z","receivedAt":"2008-11-15T11:52:50Z","isPatch":false,"sender":{"key":"ae@op5.se","avatar":"https://gravatar.com/avatar/426e89595c75a8f5252dd0c989e5fabe5bcac616e68557427ad9aef6b0ca342a?d=mp&s=160"},"body":"Pau Garcia i Quiles wrote:\n> On Sat, Nov 15, 2008 at 12:05 PM, Andreas Ericsson <ae@op5.se> wrote:\n> \n>>> Do you mean if I write a patch to libgit2, send it upstream and make\n>>> it public on my website but it is not accepted upstream, I cannot link\n>>> my modified libgit2 version (i. e. libgit2 + my patch) to my non-GPL\n>>> software?\n>> I think that's the case, yes.\n>>\n>>> It looks insane to me: I wrote the patch and made it public\n>>> but you guys did not accept it!\n>>>\n>> Well, if you wrote a patch that uses a closed-source database library\n>> to store git objects in, how would that benefit the community even if\n>> you published the patch?\n> \n> The case I had in mind is not that but this: say I write a patch which\n> is totally open-source and uses only open-source software to add some\n> feature to libgit2 but I want to link that libgit2 + mypatch to a\n> closed source application (say, for instance, software for military\n> use, which I'm not allowed to open source). To state it clearly:\n> - My contribution is 100% open source\n> - My contribution is 100% towards libgit2\n> - In fact, I could add that very feature to my application instead of\n> libgit2 but as I'm open-source-friendly, I decide to contribute that\n> patch to libgit2.\n> \n> For some reason, that patch:\n> - Is not accepted for some time (for instance, I'm thinking in that\n> tcl/tk limitation which is preventing Junio from merging a patch, it's\n> been in the \"what's cooking\" for some weeks now)\n> - Or is not accepted at all\n> \n> According to what you said, I only have two options:\n> - Either I fork libgit2, or\n> - I keep my feature in my application and do not contribute my feature\n> to libgit2\n> \n> It looks even more insane now!\n> \n\nNo, it's still sane. You can keep the code in your application until\nthat patch is applied upstream. Besides, given the nature of shared\nlibraries you'd probably have to fall back to the version in your\napp for quite some time anyways.\n\n> What about rephrasing the libgcc exception to something like: \"if you\n> have a patch, and sent us that patch, but we put the patch in stand-by\n> or declided the patch, you are still allowed to combine libgit2 with\n> your closed-source application\". After all, the fault is not in the\n> closed-source part (I contributed the patch, it is 100% open-source\n> and only uses 100% open-source) but in the libgit2 part (patch is on\n> hold or not accepted at all).\n> \n\nRephrasing an existing license is really, really stupid, as it means\ncompanies that want to build stuff on top of it will have to do the\nlegal procedure all over again.\n\n-- \nAndreas Ericsson                   andreas.ericsson@op5.se\nOP5 AB                             www.op5.se\nTel: +46 8-230225                  Fax: +46 8-230231\n"},{"id":"95879","messageId":"20081115123916.GN24201@genesis.frugalware.org","threadId":"16334","inReplyTo":"20081114234658.GA2932@spearce.org","subject":"Re: git to libgit2 code relicensing","fromName":"Miklos Vajna","fromEmail":"vmiklos@frugalware.org","sentAt":"2008-11-15T12:39:16Z","receivedAt":"2008-11-15T12:39:16Z","isPatch":false,"sender":{"key":"vmiklos@frugalware.org","avatar":"https://gravatar.com/avatar/401c1cbbb3a5d13e650c691a2c71d6fd0b80df1a01bc74d9f1972675dd58f2bd?d=mp&s=160"},"body":"On Fri, Nov 14, 2008 at 03:46:58PM -0800, \"Shawn O. Pearce\" <spearce@spearce.org> wrote:\n>  Note that the only valid version of the GPL as far as this project\n>  is concerned is _this_ particular version of the license (ie v2, not\n>  v2.2 or v3.x or whatever), unless explicitly otherwise stated.\n> \n>  In addition to the permissions in the GNU General Public License,\n>  the authors give you unlimited permission to link the compiled\n>  version of this file into combinations with other programs,\n>  and to distribute those combinations without any restriction\n>  coming from the use of this file.  (The General Public License\n>  restrictions do apply in other respects; for example, they cover\n>  modification of the file, and distribution when not linked into\n>  a combined executable.)\n\nIANAL - what is the difference between this and the LGPL?\n\nThanks.\n"},{"id":"95880","messageId":"7vk5b55ekb.fsf@gitster.siamese.dyndns.org","threadId":"16334","inReplyTo":"20081115123916.GN24201@genesis.frugalware.org","subject":"Re: git to libgit2 code relicensing","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2008-11-15T13:00:52Z","receivedAt":"2008-11-15T13:00:52Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Miklos Vajna <vmiklos@frugalware.org> writes:\n\n> On Fri, Nov 14, 2008 at 03:46:58PM -0800, \"Shawn O. Pearce\" <spearce@spearce.org> wrote:\n>>  Note that the only valid version of the GPL as far as this project\n>>  is concerned is _this_ particular version of the license (ie v2, not\n>>  v2.2 or v3.x or whatever), unless explicitly otherwise stated.\n>> \n>>  In addition to the permissions in the GNU General Public License,\n>>  the authors give you unlimited permission to link the compiled\n>>  version of this file into combinations with other programs,\n>>  and to distribute those combinations without any restriction\n>>  coming from the use of this file.  (The General Public License\n>>  restrictions do apply in other respects; for example, they cover\n>>  modification of the file, and distribution when not linked into\n>>  a combined executable.)\n>\n> IANAL - what is the difference between this and the LGPL?\n\nUnder LGPL, you must provide linkable object files to your (possibly\nclosed source) program, so that people who made changes to (or obtained an\nupdated version of) a LGPL'ed library can re-link your program and use the\nupdated library.  The above does not ask you to do so.\n\nThe way I read LGPL is that \"We deeply care about our LGPL library and any\nimprovements to it.  Although we do not care at all about how your crappy\nclosed source program is written, we want to make sure that the users can\nkeep using your program after improvements are made to our library.\".  I\ndo not think it makes a practical difference when your program uses the\nLGPL library as a shard library from that point of view.\n"},{"id":"95889","messageId":"alpine.LFD.2.00.0811150838450.3468@nehalem.linux-foundation.org","threadId":"16334","inReplyTo":"20081114234658.GA2932@spearce.org","subject":"Re: git to libgit2 code relicensing","fromName":"Linus Torvalds","fromEmail":"torvalds@linux-foundation.org","sentAt":"2008-11-15T16:39:27Z","receivedAt":"2008-11-15T16:39:27Z","isPatch":false,"sender":{"key":"torvalds@linux-foundation.org","avatar":"https://avatars.githubusercontent.com/u/1024025?v=4"},"body":"\nOn Fri, 14 Nov 2008, Shawn O. Pearce wrote:\n> \n> The language we are using in libgit2 is taken from libgcc, and is\n> as follows:\n\nOk, I'm fine with this. \n\n\t\t\tLinus\n"},{"id":"95890","messageId":"20081115171338.GA19259@auto.tuwien.ac.at","threadId":"16334","inReplyTo":"491E021E.5020104@op5.se","subject":"Re: git to libgit2 code relicensing","fromName":"Martin Koegler","fromEmail":"mkoegler@auto.tuwien.ac.at","sentAt":"2008-11-15T17:13:39Z","receivedAt":"2008-11-15T17:13:39Z","isPatch":false,"sender":{"key":"mkoegler@auto.tuwien.ac.at","avatar":null},"body":"Andreas Ericsson wrote:\n> Shawn posted the exact text. The spirit of that license is that anyone can\n> use an unmodified version of the library for whatever they want, but it's\n> illegal to link non-GPL software to an altered version of the library. That\n> is, the git community will get all changes back while other projects can\n> use the official version of the library without having to worry about\n> licensing issues. EvilCompany cannot make changes to the library and then\n> link non-GPL'd software to their changed version. They can do that if they\n> send their library changes upstream and then only use them once they're\n> considered \"official\" though.\n\nI would not interpret the license this way. Lets look at the text:\n\n|  In addition to the permissions in the GNU General Public License,\n|  the authors give you unlimited permission to link the compiled\n|  version of this file into combinations with other programs,\n|  and to distribute those combinations without any restriction\n|  coming from the use of this file.  (The General Public License\n|  restrictions do apply in other respects; for example, they cover\n|  modification of the file, and distribution when not linked into\n|  a combined executable.)\n\nIt's an additional permission, which allows linking into binaries and\ndistributing them. \n\nModification is still covered by the GPL text, 2b:\n\n|  You must cause any work that you distribute or publish, that in\n|  whole or in part contains or is derived from the Program or any\n|  part thereof, to be licensed as a whole at no charge to all third\n|  parties under the terms of this License.\n\nSo a patched version must be available unter the \"this\" license. In my\noption, this must be GPLv2+addition permission. GPLv3 explicitly talks\nabout additional terms, so its clear, that they propagate. GPLv2\ndoesn't do this, but additional terms, like OpenSSL linkage exceptions\nare usually propagated.\n\nSo EvilCompany can create their own, modified GPL+GCC exception\nlibgit2 version behind their doors.\n\nThen they link it into their non-GPL software and can distribute the\nresulting binary without any GPL restriction. As the exception states,\nthat the binary can be distributed without any restrictions coming\nfrom the GPL+GCC exception code, this COULD mean, that clause 3 of the\nGPL does not apply too (ship binary without source code).\n\nI'm only a programmer, so you should ask people with better\nunderstanding of legal things.\n\nYour interpretation of the GCC exception would render it useless for\nthe Debian probject [and probably other projects too], which means,\nthat they can use/distribute libgit2 only the GPL. If you don't want\nthat, you should consider posting to Debian Legal\n(http://lists.debian.org/debian-legal/) for advice.\n\nmfg Martin Kögler\nPS: \nHave you looked at the Classpath exception:\n\n|  Linking this library statically or dynamically with other modules is\n|  making a combined work based on this library.  Thus, the terms and\n|  conditions of the GNU General Public License cover the whole\n|  combination.\n|  \n|  As a special exception, the copyright holders of this library give you\n|  permission to link this library with independent modules to produce an\n|  executable, regardless of the license terms of these independent\n|  modules, and to copy and distribute the resulting executable under\n|  terms of your choice, provided that you also meet, for each linked\n|  independent module, the terms and conditions of the license of that\n|  module.  An independent module is a module which is not derived from\n|  or based on this library.  If you modify this library, you may extend\n|  this exception to your version of the library, but you are not\n|  obligated to do so.  If you do not wish to do so, delete this\n|  exception statement from your version. \n"},{"id":"95895","messageId":"20081115183948.GA22714@linode.davidb.org","threadId":"16334","inReplyTo":"alpine.LFD.2.00.0811150256140.27509@xanadu.home","subject":"Re: git to libgit2 code relicensing","fromName":"David Brown","fromEmail":"git@davidb.org","sentAt":"2008-11-15T18:39:48Z","receivedAt":"2008-11-15T18:39:48Z","isPatch":false,"sender":{"key":"git@davidb.org","avatar":"https://gravatar.com/avatar/94c86a2938470a74c2eac5e2b69afc0871f79a660295c02219597aba8cb101c1?d=mp&s=160"},"body":"On Sat, Nov 15, 2008 at 03:04:29AM -0500, Nicolas Pitre wrote:\n\n>libgcc is a dynamic library on most modern systems these days. Yet they \n>routinely execute non-GPL programs. If that text intentionally excluded \n>the dynamic case then every non-GPL applications on such systems would \n>have been breaking the license for a long time.  So I don't think anyone \n>could have substance for such a claim.\n\nSure they can.  Lack of enforcement doesn't dilute copyright like it\ndoes trademark.\n\nIt may be that the gcc authors intend for it to be allowed for dynamic\nlibraries, and therefore wouldn't sue for that usage, but that's not\nwhat they're saying in their license.\n\nWhat I'm saying is that if I was in a position to review the license\nand determine what was permitted, this license with exception does not\nappear to allow dynamic linking against the library.  It doesn't\nexplicitly forbid this, but it is ambiguous about it.\n\nDavid\n"},{"id":"95896","messageId":"20081115184925.GB22714@linode.davidb.org","threadId":"16334","inReplyTo":"20081115123916.GN24201@genesis.frugalware.org","subject":"Re: git to libgit2 code relicensing","fromName":"David Brown","fromEmail":"git@davidb.org","sentAt":"2008-11-15T18:49:25Z","receivedAt":"2008-11-15T18:49:25Z","isPatch":false,"sender":{"key":"git@davidb.org","avatar":"https://gravatar.com/avatar/94c86a2938470a74c2eac5e2b69afc0871f79a660295c02219597aba8cb101c1?d=mp&s=160"},"body":"On Sat, Nov 15, 2008 at 01:39:16PM +0100, Miklos Vajna wrote:\n>On Fri, Nov 14, 2008 at 03:46:58PM -0800, \"Shawn O. Pearce\" <spearce@spearce.org> wrote:\n>>  Note that the only valid version of the GPL as far as this project\n>>  is concerned is _this_ particular version of the license (ie v2, not\n>>  v2.2 or v3.x or whatever), unless explicitly otherwise stated.\n>> \n>>  In addition to the permissions in the GNU General Public License,\n>>  the authors give you unlimited permission to link the compiled\n>>  version of this file into combinations with other programs,\n>>  and to distribute those combinations without any restriction\n>>  coming from the use of this file.  (The General Public License\n>>  restrictions do apply in other respects; for example, they cover\n>>  modification of the file, and distribution when not linked into\n>>  a combined executable.)\n>\n>IANAL - what is the difference between this and the LGPL?\n\nThis clause allows static linking, and distribution of only the final\nbinary.  The LGPL always requires source to be made available to the\nlibaray.  This clause does not require that source to be distributed.\n\nIn other words, it allows libgit2 to be linked into a proprietary\nprogram and the distributor of that program to _not_ include the\nsource of libgit2.  It is not clear if they have to provide source to\nmodifications that they have made, or if making those modifications\nunder the exception is even allowed.\n\nThere are numerous other versions of this exception, some of which\nmight be better worded than this.\n\nDavid\n"},{"id":"95897","messageId":"20081115185318.GC22714@linode.davidb.org","threadId":"16334","inReplyTo":"3af572ac0811150228k291b8850idc34cb474f455aa7@mail.gmail.com","subject":"Re: git to libgit2 code relicensing","fromName":"David Brown","fromEmail":"git@davidb.org","sentAt":"2008-11-15T18:53:19Z","receivedAt":"2008-11-15T18:53:19Z","isPatch":false,"sender":{"key":"git@davidb.org","avatar":"https://gravatar.com/avatar/94c86a2938470a74c2eac5e2b69afc0871f79a660295c02219597aba8cb101c1?d=mp&s=160"},"body":"On Sat, Nov 15, 2008 at 11:28:39AM +0100, Pau Garcia i Quiles wrote:\n>> Shawn posted the exact text. The spirit of that license is that anyone can\n>> use an unmodified version of the library for whatever they want, but it's\n>> illegal to link non-GPL software to an altered version of the library. That\n>> is, the git community will get all changes back while other projects can\n>> use the official version of the library without having to worry about\n>> licensing issues. EvilCompany cannot make changes to the library and then\n>> link non-GPL'd software to their changed version. They can do that if they\n>> send their library changes upstream and then only use them once they're\n>> considered \"official\" though.\n>\n>Do you mean if I write a patch to libgit2, send it upstream and make\n>it public on my website but it is not accepted upstream, I cannot link\n>my modified libgit2 version (i. e. libgit2 + my patch) to my non-GPL\n>software? It looks insane to me: I wrote the patch and made it public\n>but you guys did not accept it!\n\nThe license is not clear on this, at all.  Since under the GPLv2, you\nare allowed to make a derivative work, and distribute that, you are\nthen basing your binary off of your particular distribution.  The\nlicense does not have a notion of an \"official\" version.  So, it might\nbe satisfied as long as you base it off of something that is\ndistributed.\n\nBut, yes, it is vaguely worded and unclear in it's intent.\n\nDavid\n"},{"id":"95900","messageId":"20081115193327.GS24201@genesis.frugalware.org","threadId":"16334","inReplyTo":"7vk5b55ekb.fsf@gitster.siamese.dyndns.org","subject":"Re: git to libgit2 code relicensing","fromName":"Miklos Vajna","fromEmail":"vmiklos@frugalware.org","sentAt":"2008-11-15T19:33:27Z","receivedAt":"2008-11-15T19:33:27Z","isPatch":false,"sender":{"key":"vmiklos@frugalware.org","avatar":"https://gravatar.com/avatar/401c1cbbb3a5d13e650c691a2c71d6fd0b80df1a01bc74d9f1972675dd58f2bd?d=mp&s=160"},"body":"On Sat, Nov 15, 2008 at 05:00:52AM -0800, Junio C Hamano <gitster@pobox.com> wrote:\n> Under LGPL, you must provide linkable object files to your (possibly\n> closed source) program, so that people who made changes to (or obtained an\n> updated version of) a LGPL'ed library can re-link your program and use the\n> updated library.  The above does not ask you to do so.\n> \n> The way I read LGPL is that \"We deeply care about our LGPL library and any\n> improvements to it.  Although we do not care at all about how your crappy\n> closed source program is written, we want to make sure that the users can\n> keep using your program after improvements are made to our library.\".  I\n> do not think it makes a practical difference when your program uses the\n> LGPL library as a shard library from that point of view.\n\nAh, I see - so this is a \"Lesser LGPL\". :)\n\nThank you both Junio and David.\n"},{"id":"95904","messageId":"20081115221212.GC11895@artemis.corp","threadId":"16334","inReplyTo":"20081115193327.GS24201@genesis.frugalware.org","subject":"Re: git to libgit2 code relicensing","fromName":"Pierre Habouzit","fromEmail":"madcoder@debian.org","sentAt":"2008-11-15T22:12:12Z","receivedAt":"2008-11-15T22:12:12Z","isPatch":false,"sender":{"key":"madcoder@debian.org","avatar":"https://avatars.githubusercontent.com/u/44708?v=4"},"body":"On Sat, Nov 15, 2008 at 07:33:27PM +0000, Miklos Vajna wrote:\n> On Sat, Nov 15, 2008 at 05:00:52AM -0800, Junio C Hamano <gitster@pobox.com> wrote:\n> > Under LGPL, you must provide linkable object files to your (possibly\n> > closed source) program, so that people who made changes to (or obtained an\n> > updated version of) a LGPL'ed library can re-link your program and use the\n> > updated library.  The above does not ask you to do so.\n> > \n> > The way I read LGPL is that \"We deeply care about our LGPL library and any\n> > improvements to it.  Although we do not care at all about how your crappy\n> > closed source program is written, we want to make sure that the users can\n> > keep using your program after improvements are made to our library.\".  I\n> > do not think it makes a practical difference when your program uses the\n> > LGPL library as a shard library from that point of view.\n> \n> Ah, I see - so this is a \"Lesser LGPL\". :)\n\nLGPL also has a clause that allow the user to make it become GPLv2 or\nlater, even if you chose LGPL v2.1 *only* (as in not LGPL v2.1 or later).\n\nSeeing how the FSF has just decided to use those upgrade clauses with\nthe GFDL, I'm not really likely to fancy the use of any license that\nforces me to accept an \"or later\" clause. I would be _really_ against\nthe LGPL FWIW.\n\n\n-- \n·O·  Pierre Habouzit\n··O                                                madcoder@debian.org\nOOO                                                http://www.madism.org\n"},{"id":"95921","messageId":"alpine.LNX.1.00.0811152030000.19665@iabervon.org","threadId":"16334","inReplyTo":"491DE6CC.6060201@op5.se","subject":"Re: git to libgit2 code relicensing","fromName":"Daniel Barkalow","fromEmail":"barkalow@iabervon.org","sentAt":"2008-11-16T01:30:43Z","receivedAt":"2008-11-16T01:30:43Z","isPatch":false,"sender":{"key":"barkalow@iabervon.org","avatar":"https://avatars.githubusercontent.com/u/55364219?v=4"},"body":"On Fri, 14 Nov 2008, Andreas Ericsson wrote:\n\n> I've been working quite a lot on git -> libgit2 code moving,\n> but the licensing stuff is a bit depressing, as I can't know\n> if the work I'm doing is for nothing or not.\n> \n> The license decided for libgit2 is \"GPL with gcc exception\".\n> Those who are OK with relicensing their contributions under\n> that license for the purpose of libgit2, can you please say\n> so?\n\nI'm fine with it for all my code.\n\n\t-Daniel\n*This .sig left intentionally blank*\n"},{"id":"95934","messageId":"49200914.6090506@op5.se","threadId":"16334","inReplyTo":"200811151615.42345.chriscool@tuxfamily.org","subject":"Re: git to libgit2 code relicensing","fromName":"Andreas Ericsson","fromEmail":"ae@op5.se","sentAt":"2008-11-16T11:50:44Z","receivedAt":"2008-11-16T11:50:44Z","isPatch":false,"sender":{"key":"ae@op5.se","avatar":"https://gravatar.com/avatar/426e89595c75a8f5252dd0c989e5fabe5bcac616e68557427ad9aef6b0ca342a?d=mp&s=160"},"body":"Christian Couder wrote:\n> Hi Andreas,\n> \n> Le vendredi 14 novembre 2008, Andreas Ericsson a écrit :\n>> I've been working quite a lot on git -> libgit2 code moving,\n> \n> It would be nice if there was somewhere on the web where your work could be \n> seen. If there is already, could you send (or resend) the URL? This way \n> people might have look and perhaps even help you. (Though I don't promise \n> anything as I have already a lot of things on my TODO list.) Thanks in \n> advance.\n> \n\nWhen I was about to, I realized these licensing issues actually made it\nillegal to do so without getting the permissions from the involved authors.\nNow that Linus and a lot of other core contributors have given their consent,\nI'll be able to start re-ordering the commits so I can publish those parts\noriginating from consenting authors while holding off on those that I can't\ntell for sure are ok with it. Legal issues are no fun what so ever.\n\n>> but the licensing stuff is a bit depressing, as I can't know\n>> if the work I'm doing is for nothing or not.\n>>\n>> The license decided for libgit2 is \"GPL with gcc exception\".\n>> Those who are OK with relicensing their contributions under\n>> that license for the purpose of libgit2, can you please say\n>> so?\n> \n> It's ok to relicense my git related work under the \"GPL with gcc exception\" \n> license.\n> \n\nThank you. With the current list of ok's 73.09% of the code in git.git\nseems to be relicenseable for the purpose of libgit2. That will provide\nquite a kickstart.\n\n-- \nAndreas Ericsson                   andreas.ericsson@op5.se\nOP5 AB                             www.op5.se\nTel: +46 8-230225                  Fax: +46 8-230231\n"},{"id":"95969","messageId":"alpine.DEB.1.00.0811162159280.30769@pacific.mpi-cbg.de","threadId":"16334","inReplyTo":"49200914.6090506@op5.se","subject":"Re: git to libgit2 code relicensing","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2008-11-16T21:00:32Z","receivedAt":"2008-11-16T21:00:32Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Sun, 16 Nov 2008, Andreas Ericsson wrote:\n\n> With the current list of ok's 73.09% of the code in git.git seems to be \n> relicenseable for the purpose of libgit2. That will provide quite a \n> kickstart.\n\nI doubt it.  Most of that code was written with the execute-once \nmentality.  And with the we-have-posix mentality.\n\nTwo things we do not _want_ in libgit2.\n\nCiao,\nDscho\n"},{"id":"95972","messageId":"bd6139dc0811161309t652d3ed2gb9aaae637ee91504@mail.gmail.com","threadId":"16334","inReplyTo":"alpine.DEB.1.00.0811162159280.30769@pacific.mpi-cbg.de","subject":"Re: git to libgit2 code relicensing","fromName":"Sverre Rabbelier","fromEmail":"alturin@gmail.com","sentAt":"2008-11-16T21:09:25Z","receivedAt":"2008-11-16T21:09:25Z","isPatch":false,"sender":{"key":"alturin@gmail.com","avatar":null},"body":"On Sun, Nov 16, 2008 at 22:00, Johannes Schindelin\n<Johannes.Schindelin@gmx.de> wrote:\n> I doubt it.  Most of that code was written with the execute-once\n> mentality.  And with the we-have-posix mentality.\n>\n> Two things we do not _want_ in libgit2.\n\nBut at least with permission from the authors we're allowed to look at\nthe original code without preventing us from licensing the new code as\nGPL+exception ;).\n\n-- \nCheers,\n\nSverre Rabbelier\n"},{"id":"96010","messageId":"49211C19.5010409@op5.se","threadId":"16334","inReplyTo":"alpine.DEB.1.00.0811162159280.30769@pacific.mpi-cbg.de","subject":"Re: git to libgit2 code relicensing","fromName":"Andreas Ericsson","fromEmail":"ae@op5.se","sentAt":"2008-11-17T07:24:09Z","receivedAt":"2008-11-17T07:24:09Z","isPatch":false,"sender":{"key":"ae@op5.se","avatar":"https://gravatar.com/avatar/426e89595c75a8f5252dd0c989e5fabe5bcac616e68557427ad9aef6b0ca342a?d=mp&s=160"},"body":"Johannes Schindelin wrote:\n> Hi,\n> \n> On Sun, 16 Nov 2008, Andreas Ericsson wrote:\n> \n>> With the current list of ok's 73.09% of the code in git.git seems to be \n>> relicenseable for the purpose of libgit2. That will provide quite a \n>> kickstart.\n> \n> I doubt it.  Most of that code was written with the execute-once \n> mentality.  And with the we-have-posix mentality.\n> \n\n\"Copy-rewrite\", naturally. Being able to lift much of the data-munging code\nis a great benefit. It's basically just the revision traversal (which is\nheavy on state-dependant code) that I haven't quite figured out how to do\nyet, but I believe Shawn's idea of using revision pools is most likely the\nway to go. Each application has to make sure a pool isn't modified by more\nthan one thread, but each application can have as many pools as it likes.\n\n-- \nAndreas Ericsson                   andreas.ericsson@op5.se\nOP5 AB                             www.op5.se\nTel: +46 8-230225                  Fax: +46 8-230231\n"},{"id":"96039","messageId":"20081117154040.GO2932@spearce.org","threadId":"16334","inReplyTo":"49211C19.5010409@op5.se","subject":"Re: git to libgit2 code relicensing","fromName":"Shawn O. Pearce","fromEmail":"spearce@spearce.org","sentAt":"2008-11-17T15:40:40Z","receivedAt":"2008-11-17T15:40:40Z","isPatch":false,"sender":{"key":"spearce@spearce.org","avatar":"https://avatars.githubusercontent.com/u/34844?v=4"},"body":"Andreas Ericsson <ae@op5.se> wrote:\n>\n> \"Copy-rewrite\", naturally. Being able to lift much of the data-munging code\n> is a great benefit. It's basically just the revision traversal (which is\n> heavy on state-dependant code) that I haven't quite figured out how to do\n> yet, but I believe Shawn's idea of using revision pools is most likely the\n> way to go. Each application has to make sure a pool isn't modified by more\n> than one thread, but each application can have as many pools as it likes.\n\nI also like Pierre's idea of using annotation data in different\nannotation pools, and storing the rewritten parents in such a pool.\nThen an application can more easily reuse a revision pool, by just\ntossing the rewritten parent pool, or any other annotations it\nwants to recompute.\n\nIt may still be important to have revision pools and make them\nnot thread-safe, so we can void fine-grained locking costs in\nthe library during the tight revision traversal loops.\n\n-- \nShawn.\n"},{"id":"96058","messageId":"4921E5C7.5030203@op5.se","threadId":"16334","inReplyTo":"20081117154040.GO2932@spearce.org","subject":"Re: git to libgit2 code relicensing","fromName":"Andreas Ericsson","fromEmail":"ae@op5.se","sentAt":"2008-11-17T21:44:39Z","receivedAt":"2008-11-17T21:44:39Z","isPatch":false,"sender":{"key":"ae@op5.se","avatar":"https://gravatar.com/avatar/426e89595c75a8f5252dd0c989e5fabe5bcac616e68557427ad9aef6b0ca342a?d=mp&s=160"},"body":"Shawn O. Pearce wrote:\n> Andreas Ericsson <ae@op5.se> wrote:\n>> \"Copy-rewrite\", naturally. Being able to lift much of the data-munging code\n>> is a great benefit. It's basically just the revision traversal (which is\n>> heavy on state-dependant code) that I haven't quite figured out how to do\n>> yet, but I believe Shawn's idea of using revision pools is most likely the\n>> way to go. Each application has to make sure a pool isn't modified by more\n>> than one thread, but each application can have as many pools as it likes.\n> \n> I also like Pierre's idea of using annotation data in different\n> annotation pools, and storing the rewritten parents in such a pool.\n> Then an application can more easily reuse a revision pool, by just\n> tossing the rewritten parent pool, or any other annotations it\n> wants to recompute.\n> \n> It may still be important to have revision pools and make them\n> not thread-safe, so we can void fine-grained locking costs in\n> the library during the tight revision traversal loops.\n> \n\nWell, since git_revpool (I've renamed it in my tree, as I had a hard\ntime not pronouncing it \"rev pointer\" in my head) is a variable the\nuser gets back from us, it's about as thread-safe as the various IO\ninterfaces. That is, if several threads try to write at once, weird\nthings happen. That's just something the application writer has to\ntake care of though, and we should make sure to mark the revpool as\n\"const\" in functions that will only read from it without modifying\nit.\n\nSpeaking of threads though; I think I've solved the thread-local\nstorage problem for libgit. At least for pretty much all compilers\nwe care about (gcc, Intel C, MSVC, MSVC++) and a slew of others,\nwhich means we can probably use a saner error-handling now. Personally\nI think that's something we can benefit greatly from, as many functions\nreturn \"int\" where they should return a pointer, only to accommodate\nerror handling.\n\nI'll get those commits reordered and publish what I've got right now.\nhttp://git.op5.org/git/?p=git/libgit2.git;a=summary will have most of\nthe stuff in an hour or so.\n\n-- \nAndreas Ericsson                   andreas.ericsson@op5.se\nOP5 AB                             www.op5.se\nTel: +46 8-230225                  Fax: +46 8-230231\n"},{"id":"96274","messageId":"4925A131.9020209@lsrfire.ath.cx","threadId":"16334","inReplyTo":"491DE6CC.6060201@op5.se","subject":"Re: git to libgit2 code relicensing","fromName":"René Scharfe","fromEmail":"rene.scharfe@lsrfire.ath.cx","sentAt":"2008-11-20T17:41:05Z","receivedAt":"2008-11-20T17:41:05Z","isPatch":false,"sender":{"key":"l.s.r@web.de","avatar":"https://avatars.githubusercontent.com/u/26122331?v=4"},"body":"Andreas Ericsson schrieb:\n> The license decided for libgit2 is \"GPL with gcc exception\".\n> Those who are OK with relicensing their contributions under\n> that license for the purpose of libgit2, can you please say\n> so?\n\nFine with me.\n\nThanks,\nRené\n"},{"id":"96475","messageId":"1227626361.4612.4.camel@gaara.bos.redhat.com","threadId":"16334","inReplyTo":"491DE6CC.6060201@op5.se","subject":"Re: git to libgit2 code relicensing","fromName":"Kristian Høgsberg","fromEmail":"krh@redhat.com","sentAt":"2008-11-25T15:19:21Z","receivedAt":"2008-11-25T15:19:21Z","isPatch":false,"sender":{"key":"krh@redhat.com","avatar":"https://gravatar.com/avatar/763dee6f9594ac474f725b137a39565792928e583ddf59b32befc2907409027e?d=mp&s=160"},"body":"On Fri, 2008-11-14 at 21:59 +0100, Andreas Ericsson wrote:\n> I've been working quite a lot on git -> libgit2 code moving,\n> but the licensing stuff is a bit depressing, as I can't know\n> if the work I'm doing is for nothing or not.\n> \n> The license decided for libgit2 is \"GPL with gcc exception\".\n> Those who are OK with relicensing their contributions under\n> that license for the purpose of libgit2, can you please say\n> so?\n> \n> I'm planning on writing a tool for this that will have \"ok\",\n> \"not ok\" and \"ask-each-patch\" as options.\n> \n> The list of people whose position I know is rather short.\n> Please correct me if you're on it and would like not to be.\n> Junio C. Hamano\t\task\n> Johannes Schindelin\tok\n> Shawn O. Pearce\t\tok\n> Andreas Ericsson\tok\n> Pierre Habouzit\t\tok\n> Brian Gernhardt\t\tok\n> \n> \n> I've put everyone who \"owns\" more than 500 lines of code\n> on the bcc list, figuring your permission is important\n> but that you don't want the hundreds (well, one can hope)\n> of emails from people saying \"ok\". The list of major owners\n> was generated with \"git showners *.c\" in a worktree from\n> the next branch of git.git.\n\nYou're welcome to use any of the code I've written under the GPL +\nexception license, though most of it is probably not that useful, as\nit's mostly porting shell commands to builtins.  I'm very happy to see\nthis effort start up, as I've been tempted to do something similar\nmyself :)\n\ncheers,\nKristian\n"}]}