On 17 July 2013 09:09, Emmanuel Lécharny <elecha...@gmail.com> wrote: > Le 7/17/13 1:11 AM, sebb a écrit : >> On 16 July 2013 23:09, Emmanuel Lécharny <elecha...@gmail.com> wrote: >>> Le 7/16/13 11:34 PM, sebb a écrit : >>>> On 16 July 2013 18:34, Emmanuel Lécharny <elecha...@gmail.com> wrote: >>>>> The N&L files only depend on what is in the archives. >>>>> It's just a question of checking that everything that is included in >>>>> the bundles is covered in the N&L files. >>>>> The contents should be obvious from the assembly files; if not, just >>>>> build the bundles and see what they contain. >>>>> Sorry, but I don't see what's your point is here... Why should I build a >>>>> bundle for a dependency I'm downloading from maven ? >>>>> >>>> I don't know how many different ways I can say this: >>>> The N&L files need to agree with whatever the PMC releases or >>>> distributes - i.e. the source and binary archives, and the Maven jars. >>> And we now are so far ok regarding those three components. But still, >>> it's in no way connected to the point I raised : what are those bloody >>> transitive dependencies that are mentionned on >>> http://www.apache.org/dev/licensing-howto.html : >>> >>> " Dependencies of Dependencies >>> >>> Dependencies of dependencies (including so-called "transitive >>> dependencies") are no different from first-order dependencies for the >>> purposes of assembling |LICENSE| and |NOTICE|: |LICENSE| and |NOTICE| >>> need only be modified to accommodate them /if and only if their bits are >>> bundled/." >> As I keep saying - what's important is whether the bits are bundled or not: >> >> /if and only if their bits are bundled/ > > Bits of the original dependency, or bits of the transitive dependencies ?
> For instance, let's say I bundle A, which depends on B > > 1) As I bundle A which depends on B, I must comply to A *and* B N&L > rules (ie, include them if required by them) No; only A was bundled, so only A's license counts. > 2) As I bundle A, I have to comply to its N&L requirement, but for B, I > do nithing if I don't *explicitely* bundle it... Yes. > > To me, (2) is not covered by the rules in the apache page. Or if it is, > then the semantic of the text on the ASF page s really fuzzy. What's wrong with the phrase: /if and only if their bits are bundled/ >> >>> I don't know if I should un-jar the bundles I include into my >>> distribution to check if the included dependency requires some >>> NOTICE/LICENSE to be added in my own N&L file. >> For anything that is bundled, you need to establish the N&L requirements. >> >> One way to do so might be to extract the L&N(if it exists) from the jar. >> Or for some dependencies you might have to look at the website. >> Whatever is needed to establish the licensing requirements. > > That's fine for direct dependencies. >> >> If you want to include an external jar in the archive, you have to >> make sure that you abide by its licensing requirements. > Sure. >> >> And remember that some licenses (e.g. GPL/LGPL) are not compatible >> with the AL so such jars cannot be included in any ASF distributions. > > Yes, that at least has been clarified years ago (and it was a very long > discussion...). >> >>> You are answering a different question here - in many different ways, >>> but still, this was not my question -. >> I don't think I am. > > See my first comment... > >> >>>> The SCM (SVN/Git) counts as a distribution since it is generally >>>> published to all (it's not reserved to developers) so it's important >>>> that users see the N&L files at the published URL(s) >>> SCM has to be kept out of the equation. What is in the SCM is *not* >>> subject to NOTICE or LICENSE - except that we need to be able to >>> generate the correct N&L files from what is in the SCM (just because >>> anyone grabbing a tag should be able to regenerate everything, including >>> the package itself, with the correct N&L. >> On the contrary, the SCM is very important. >> It counts as a distribution > > No, no, no. And no. A SCM is just a repository, it's certainly not a > distribution. A distribution *has* to be voted by the PMC. No, a release has to be voted on by the PMC. > The fact that it's public does not make it any special : it's just > convenient. The fact that it is public is important. That's why snapshots must not be promoted on non-developer pages. > This is the reason we have all this release process. > > One of the reason for the SCM not to be seen as a distribution is that > this is the place where we *collaboratively* clean up the IP when some > code is pushed. If you are to consider a SCM as a distribution, then you > are requiring it to be visible to a restricted set of people, until you > are sure you are complying to any kind of legal rules that applies to > source (IP, copyright, etc). That generally only happens in Incubator projects. > >> - so the N&L files should be prominent at >> the top level - and it acts as a check list of files that have been >> approved. > > This is a consequence of the fact that we have to include them in a > distribution, not the opposite. They may perfectly be stored anywhere > else but at the top level in the SCM, as soon as they are present in the > package we release. There is no rule that forces you to have them at the > top level. I disagree; since SCM is published, its N&L need to be visible. >> When a committer adds a file, they need to be sure it has the >> appropriate license. > *we*, collectively, as the PMC. The committer may make a mistake, or may > intentionally commit a file without the appropriate licence, as soon as > it's added before the release. No - that's a very bad idea. >>>> So the N&L files in SVN/Git must relate to the files in the SCM tree; >>> You mean : what is in SCM must be equal to what is in SCM here ??? >>> That's quite idempotent... You probably wanted to say something like : >>> "the tarball contains the same N&L than the tagged version in the SCM" ? >>> >>> Am I correct ? >> No, I wrote that the N&L files which are at the top of SCM must be >> appropriate for the files in SCM. > This is wrong. The N&L (whatever the place they can be put in the SCM) > are just there to guarantee that the release complies with the bundled > components. They are *not* related to what is in the SCM (of course, > here, I'm pulling hairs, but I want to insist on teh fact that N&L are > *just* present for being included into the release). > > To be clear, we can perfectly imagine that a project goes on and commit > many files, including many dependencies, up to a poit where a release is > due. This is the last opportunity for the PMC to check that the N&L are > compliant. Up to this point, the N&L files *may* be missing or inacurate. Well yes, it's good to check the N&L at that point. But how do they know what needs to be added if some files were added a while ago? > Of course, it would be better for the committers to try to update the > N&L file son the fly... But committers should not knowingly commit infringing code. That is part of the CLA that they sign. >> For example, the SCM may contain some icons which don't have the AL >> license; in that case the LICENSE file must contain - or point to a >> copy of - their license file. Even if the icons are AL licensed, it's >> sensible to add a note to the LICENSE file to say so. > If the SCM icons aren't bundled into the releases, then this is > certainly not required. >> >> So the N&L files in SCM must be kept up to date as files are added. > No, they must not. They *should*. This is really a big difference with > what you say. I don't see how you can keep track of source files that need changes to the N&L unless you do it at the time. > Bottom line, SCM != release. I never said that; it is a distribution. >>>> almost always the source bundle is created from SCM so the same N&L >>>> files will be suitable for the source bundle as well. >>> Only for tags (but basically, the N&L files present in the tagged >>> version *must* be the same that what we find in the tarball). >> Yes, we create releases from tags. >> But tags are created from trunk, generally with very few changes (just >> some versions/URLs) so if the N&L files in trunk are OK they will be >> OK in the tag. > Agreed. But that does not imply that the N&L in trunk are correct at any > time. They just have to be correct when you cut the release. And of > course, when they aren't, then -1 will be raised ;-) How does the reviewer know that there are additions to SCM that need changes to N&L? >> >>>> The binary bundle normally consists of the compiled source, maybe plus >>>> Javadoc, maybe with some example sources. >>>> All that is derived from the SCM source so the same N&L applies. >>> No. >> The compiled source/javadoc and source examples are derived directly >> from source, so have the same N&L. > What I meant is that the N&L may differ from a source release and a > binary release. > > I read you as "the binary N&L in the tag are equals to the N&L in the > release", and I agree. > >> >>> There is no guarantee that the N&L files applies for a binary package. >> For what I wrote above, they do apply. >> Some projects release binaries that are only derived from the project >> source - no extra jars are included. >> That's what I was saying. > > Understood. >> >>>> However, some projects include other items that are needed at run-time >>>> - e.g. jars or DLLs. >>>> The N&L must be updated to take account of any of these items that are >>>> actually included in the binary archive. >>>> If they are other Apache products, probably nothing needs to be added to >>>> N&L >>> Agreed. >>> >>>> If they are external products - e.g. JUnit - then their LICENSE must >>>> be included and if necessary the NOTICE must be updated. >>> Agreed. >>>> Is that clear now? >>> On the bits you are rehashing, yes. But I still don't get what we should >>> do with transitive dependencies, and it was what I pointed out. >> Forget whether a file is a dependency or a transitive dependency or whatever. >> >> Are the bits included in the archive? >> Yes or no? > > This is where it gets complicated : when I include A which depends on B, > should I consider that B is bundled in the archive ? It's not complicated. The question to answer is: Are B's bits included in the archive? > Seems to be a clear yes. Are you sure? > SO now, I have to dig into A archive, checking > for all it's dependencies, verify that it correctly includ ethe correct > N&L for each of those dependencies etc... That is not the case. > > By enforcing that, you are trying to make the ASF to behave like what > The Eclipse foundation is doing. > > I'm not sure this is the spirit of the Asf page describing how to comply > with teh N&L requirements. No, it's not; you are drawing an incorrect conclusion from an incorrect premise. > Or may be The ASF must go there, but then, we are far from being able to > do that atm !!! But this is another story. > > I think we went way to far in this matter on this dev list, but many > very valid points where raised. I'd like to have this conversation on > the legal/trademarks mailing list later, when I'll be less loaded. Please try and understand the following first: Dependencies of dependencies (including so-called "transitive dependencies") are no different from first-order dependencies for the purposes of assembling |LICENSE| and |NOTICE|: |LICENSE| and |NOTICE| need only be modified to accommodate them /if and only if their bits are bundled/." For the purpose of creating the N&L files, it is only the bits that are actually bundled that matter. As I keep repeating: "Is it in the archive bundle or not?" That is the question. That is the ONLY question that matters as far as the N&L file contents are concerned. > Thanks sebb ! > > -- > Regards, > Cordialement, > Emmanuel Lécharny > www.iktek.com >