Thursday, 26 March 2009

A question of IP

My post about the lack of an open specification for Java SE 7 raised some eyebrows yesterday. One point I wanted to clarify in a little more detail is how the JCP treats IP.

Warning! I am not a lawyer. This is written to the best of my knowledge, but I may well have something messed up. Feel free to tell me I'm wrong, but please provide a link explaining why!

The JCP and IP

IP (Intellectual Property) is one of the aspects which any good specification needs to define. For example, here are the relevant terms for the W3C. Put simply, the IP, and associated, restrictions describe what rights you are granted.

For the JCP (Java Community Process), the relevant document is the JSPA. I'm going to try and outline some key sections here.

4. Intellectual Property; In-Bound.
A. Contributions to the Spec Lead. You hereby grant to each Spec Lead ... with respect to the Output of the JSR ... a perpetual, non-exclusive, worldwide, royalty-free, fully paid-up ... irrevocable, license, with the right to sublicense:
- Copyrights and Trade Secrets ....
- Patents ....
B. Grants to Other Expert Group Members. You hereby grant to Member represented on any Expert Group ... Your applicable patents, copyrights and trade secret rights which You currently have or may acquire in the future a perpetual, non-exclusive, worldwide, royalty free, fully paid-up, irrevocable license to use Your Contributions for research and development purposes related to the activities of such Expert Group. Similarly, Sun makes the same grant to You with respect to its Contributions concerning Expert Groups on which You are represented. These grants, from You to other Members and from Sun to You, shall not include distribution to third parties of early access implementations of the Spec under development by Your Expert Group until the draft Spec has been released for Public Review.
C. Contributions from Sun and Ex-Spec Leads. For Contributions from Sun under JSRs for which You are the Spec Lead, Sun hereby grants to You the same license with respect to Sun’s Contributions ...

This refers to expert group members contributing to the JSR. I've snipped quite a bit to avoid too much legality. The key elements are:

  • the members of each JSR license their IP (copyrights, trade secrets, patents) primarily to the spec lead
  • the same grant is also made to other JSR expert group members, for R&D prior to the JSR being finalised
  • the granted rights cannot be used publicly until the JSR is in public review
  • Sun grants the same

One thing to note is that Sun's participation is explicit in the JSPA. Sun is not "just another participant" in the JCP - it has special rights.


The next section is an interesting revoke section:

D. Withdrawal of Contributions due to Change in Announced License Terms. If the Spec Lead for an Expert Group in which You are participating makes significant changes to the terms and conditions of any license granted pursuant to Sections 5.B or 5.F below after those terms and conditions are first disclosed pursuant to the Process, then You may, upon giving notice to the Specification Lead and the PMO, withdraw any copyright or patent licenses concerning Your Contributions granted pursuant to Section 4.A.I or 4.A.II above (but not patent licenses granted by You pursuant to Section 6 below).

Put simply, if any spec lead breaks the license terms that they have already agreed to, then the granted IP from other expert group members can be revoked.


The next section is about what happens when the spec is published:

Intellectual Property; Out-Bound.
A. Ownership; Obligation to Publish Spec.
... the Spec Lead(s) for a particular JSR at the time of the final release of the Specification shall own the copyright to the final Spec generated pursuant to that JSR under United States copyright law. Promptly after its completion ... such Spec will be published by the PMO at the JCP Web Site.

For example, for the Java SE specs, Sun owns the copyright, as it is the spec lead.


B. License to Create Independent Implementations.
... the Spec Lead for such JSR shall offer to grant a perpetual, non-exclusive, worldwide, fully paid-up, royalty free, irrevocable license under its licensable copyrights in and patent claims covering the Specification (including rights licensed to the Spec Lead pursuant to Section 4.A and 4.C) to anyone who wishes to create and/or distribute an Independent Implementation of the Spec. Such license will authorize the creation and distribution of Independent Implementations provided such Independent Implementations:
(a) fully implement the Spec(s) including all its required interfaces and functionality;
(b) do not modify, subset, superset or otherwise extend the Licensor Name Space, or include any public or protected packages, classes, Java interfaces, fields or methods within the Licensor Name Space other than those required/authorized by the Spec or Specs being implemented; and
(c) pass the TCK for such Spec.
...

Here is the key part! The spec lead grants the IP to everyone that implements the spec. But only if they meet the three criteria.

  • the implementation must fully implement the spec
  • the implementation must not modify the spec
  • the implementation must pass the testing kit

So, everyone grants their IP to the spec lead. And then the spec lead grants that IP to the implementor once the three conditions are met. Of course, to meet the three conditions, you have to have access to the testing kit...

Since Apache Harmony is prevented from passing the Java SE specification testing kit, it cannot meet the three criteria. Since it cannot meet the three criteria, it cannot receive the IP grants of copyrights, trade secrets and patents.

And as a not-for-profit, there is no way for Apache to take any legal risks. It certainly can't just assume that there is no IP to be granted (there almost certainly is).


A section on licensing of the testing kit:

F. Licensing of RI and TCK.
I. The Spec Lead (including Sun) for a JSR approved by the JCP shall offer to any interested party licenses concerning the RI and TCK -- and also the TCK separately when developed under any JSR submitted hereafter -- on terms and conditions that are non-discriminatory, fair and reasonable. Except as otherwise set forth in this Section 5.F, such terms and conditions shall be determined by the Spec Lead in its reasonable discretion.

So, the testing kit (TCK) has to be licensed in a "non-discriminatory, fair and reasonable" manner.

III. With respect to the TCK when licensed separately from the RI, for a Qualified Not-for- Profit or Qualified Individual there shall be no charge for the license offered by the Spec Lead.

The JSPA is clear that "Qualified Not-for-Profit" groups, like Apache, are fully entitled to the testing kit free of charge. Sun haven't disputed that.

V. No provision of this Section 5.F shall be understood to require that the Spec Lead license the RI (or TCK) in source code form...

The JSPA is clear that the testing kit does not need to be open source, or even source code available. Thats not in question by Apache or Sun.


Finally, a section on trademarks:

8. Use of Trademarks. Subject to any other rights and obligations ... You may refer to Sun's Java technology or programming language to the same extent as the general public, provided that such reference is not misleading or likely to cause confusion....

Thus, the JSPA grants no special privileges with respect to trademarks. Apache and Sun agree on this. Apache isn't seeking to use the Java trademark.


Another (simpler) summary is the original Apache FAQ on the JSPA and associated issues. Take a read if you're still confused.

Summary

All legal agreements are complex, and this is no exception. But the principle is simple.

Each Expert Group member licenses their IP (copyrights, trade secrets and patents) to the spec lead. The spec lead then licenses that 'collective IP' to anyone that successfully implements the specification.

In the case of Apache Harmony, because Sun is preventing Apache from receiving the testing kit under an appropriate license (see the Apache FAQ), it is impossible for Apache to verify that the Java SE specification has been met. As such, Sun cannot and will not provide the required IP grant to Apache, and thus Apache cannot release Harmony.

As I said yesterday, for Java 7, the easy solution for Sun may well be to simply not have an open Java SE 7 specification.

16 comments:

  1. "As such, Sun cannot and will not provide the required IP grant to Apache, and thus Apache cannot release Harmony."

    Out of curiosity, what constitutes a release? If I go to Harmony's home page, I see:

    "Apache Harmony 5.0 M8 now available

    The Apache Harmony team are pleased to announce the immediate availability of Apache Harmony 5.0M8."

    Best,
    Ismael

    ReplyDelete
  2. Stephen Colebourne26 March 2009 23:46

    @Ismael, A 'release' is a final release that is tested and has had IP granted. A milestone isn't a release, its a milestone!

    ReplyDelete
  3. Is that true legally speaking? In other words, if Sun wanted to sue because Apache it's using Sun's IP, would it be unable to do so because it's a milestone instead of a final release?

    Ismael

    ReplyDelete
  4. Patrick Wright27 March 2009 09:27

    Personally, I think it's unhelpful to have a discussion around the particulars of an issue where none of us, outside of the parties involved, has access to either the specific contracts in question (which in this case are private), nor access to the discussions between the parties. This is like speculating on how White House policy was really made by reading a book by a (possible embittered) insider, or a journalist who talked to an insider.

    As far as I know, Apache can release Harmony, they just can't call if Java. Sun has never, to my knowledge, threatened to sue either the GNU Classpath project or the Apache Harmony project, in all the years they have been around. What evidence do you have that they could or would sue? As far as I recall, the only stance Sun has ever taken related to these projects is that they can't call themselves "Java" until they have passed the TCK. Other than that, the projects can, and in the case of GNU Classpath, have been, very widely distributed and used.

    It's unfortunate that due to the nature of the legal documents in question, we can't see what the real legal issues are.


    Patrick

    ReplyDelete
  5. Stephen Colebourne27 March 2009 12:48

    @Ismael, Apache implements 25 other JSRs. Many of those have milestone releases. Your concern isn't a problem, and the JSPA specifically recognises open source implementations of JSRs, implying a recognition of continual open development. What matters is that the final release can only be made once certified.

    @Patrick, The key legal agreement is the JSPA which is discussed in this blog and is public. The main (only?) private item in question is the detailed terms that Sun offered Apache for the testing kit (which were different to the terms offered for the other 25 JSRs implemented by Apache).

    If you read the blog again you'll see that Apache can't release Harmony - as it has no rights WHATSOEVER to any of the IP within the Java SE specification that has been implemented. While you may believe that Sun won't sue, legally they can.

    Apache defends the safety of the code it releases very carefully - its one of the key features that makes Apache different to other Open Source groups, and why it is so widely trusted.

    ReplyDelete
  6. "If you read the blog again you'll see that Apache can't release Harmony - as it has no rights WHATSOEVER to any of the IP within the Java SE specification that has been implemented."

    Sun owns the spec, but of course anyone is allowed to implement it.

    "While you may believe that Sun won't sue, legally they can."

    Of course anyone "can" sue anyone about anything, so I assume you mean that Sun actually would have a reasonable case. But they wouldn't. No one is misusing Sun's IP by implementing a spec. As Patrick points out, the only legal issue is that Sun owns the "Java" trademark and has chosen to only allow its use if you pass the TCK.

    ReplyDelete
  7. Patrick Wright27 March 2009 16:45

    @Stephen: I don't see what the specification, as defined by the JDK APIs, have to do with Sun's intellectual property. Presumably, if they did their homework, the implementation of those APIs by Harmony and Classpath developers is their own intellectual property. If Apache or someone else actually took code from OpenJDK, that sounds like it would raise intellectual property issues. I haven't heard anyone argue that merely writing an API is creating intellectual property, but IANAL.

    Secondly, I don't understand what you mean by "Apache can't release Harmony". It's available for download worldwide, and has been since the project was opened up. Ditto for Classpath. I assume that whatever part of Sun's IP you believe Apache would be violating if they declared version 1.0 of Harmony as a "release" is the same IP that's available today. What am I missing? What magic happens when they flip the switch from "beta" to "release"? What is the violation created in that situation?

    I think we all realize that Sun owns the 'Java' and related trademarks. But that's a trademark issue, not related to intellectual property. From what I understand, the dispute between Sun and Apache has to do with licensing the JCK and thus earning the right to call Harmony a 'Java' distribution. But as we both noted, that issue is tied up with private documents and discussions we don't have access to and can only speculate on.

    Regards
    Patrick

    ReplyDelete
  8. Stephen Colebourne27 March 2009 17:32

    @Andy, Patrick, Perhaps my blog isn't clear enough to explain how IP grants work in the JCP, so I'll say it again.

    4A. Each member of the expert group grants a license to use their IP to the spec lead (Sun in this case).

    5B. The spec lead grants the collective total of that IP to anyone that fully implements the spec according to the 3 criteria.

    If you don't implement the spec according to the 3 criteria (including passing the testing kit) then you don't get the IP grant. Without the IP grant, you can't claim to be an implementation of the spec. Period.

    Bear in mind that the IP concerned here isn't necessarily just from Sun. It could be from anyone that has ever contributed to the Java SE specification. While you might not think of Sun as evil, are you sure that there is no IP (copyrights/patents) in the Java SE spec that couldn't be used in an evil manner by one of the non-Sun contributors? Apache won't take that risk.

    Remember also that the IP is the IP of the specification, not the IP of the implementation, (which is completely different).

    Projects, like Apache Harmony (and any other open source implementation of any other JSR) are permitted to develop openly, but they can only release once they pass the testing kit and gain the IP. Passing the 3 criteria is what "flicks the switch" and permits a release as a compliant implementation of the JSR.

    ReplyDelete
  9. @Patrick IANAL, but trademark law is considered part of the Intellectual Property arena, along with copyrights and patents.

    ReplyDelete
  10. Stephen Colebourne28 March 2009 17:07

    @Nathan, In the JSPA, trademarks are explicitly covered in a separate section to IP (copyrights, trade secrets and patents). Trademarks haven't been an issue at any stage in the debate.

    ReplyDelete
  11. "A 'release' is a final release that is tested and has had IP granted"

    Circular definition, please try again.

    Whether you want to call it a "release" or not, Harmony can and will continue to do what they're doing now: making their software available for download and testing it as best they can.

    ReplyDelete
  12. Stephen Colebourne30 March 2009 22:25

    @Andy, I'm not sure what I need to say. Yes, anyone can freely download Harmony today. They can choose to run it if they want.

    But the code downloaded is not a compatible implementation of the Java SE platform specification (because it hasn't passed the process for becoming one, including the testing kit). And because it isn't a compatible implementation, there has been no grant of IP from Sun and the other expert group members (via Sun) to Harmony. As such, you would be running the code without the necessary IP grant. (Whether that bothers you depends on many factors I suspect, but it IS the legal position)

    To simplify this complex process for users, Apache Harmony will only be formally released when the process is complete and the IP is granted.

    ReplyDelete
  13. Here's a quote from the Apache FAQ: "'Necessary IP' is the IP - usually patents - that cannot be technically avoided when implementing the specification."

    So presumably Harmony may be infringing patents (or other IP) because it hasn't been granted the IP. That would be true of the milestones as well. Does that mean Apache feels that a final release has to be free of such IP encumbrances but a milestone doesn't have to be?

    ReplyDelete
  14. Stephen Colebourne2 April 2009 11:56

    @Tim, Necessary IP in this case explicitly means copyrights, trade secrets and patents, and no one really knows Sun is holding on behalf of the Java SE expert groups. Thus, Harmony has this disclaimer besides its milestones: "These are builds of the most recent tested code provided for your convenience. They have been declared best-so-far but they are not official releases of the Apache Harmony project or the Apache Software Foundation.". So, yes. Don't expect a Harmony 1.0 until it is an official implementation of the Java SE platform spec.

    ReplyDelete
  15. "..Apache Harmony will only be formally released..."

    My point is that the term "release" is meaningless for a product like Harmony. There's no magical point at which it becomes a "release". If Sun at some point feels wants to sue, they can argue that it's already "released". But for you to assert "Apache can't release..." has no meaning. It's available for download now.

    ReplyDelete
  16. Stephen Colebourne3 April 2009 23:53

    "There's no magical point at which it becomes a 'release'." Yes there is - please read my blogs. I'm surprised that the point is hard to grasp here. Apache is following the rules, as laid out in the JSPA legal agreement. That says no releases that claim to be a compliant implementation of the Java SE spec are possible until the full process is complete. What you are downloading are alphas/betas, in the original sense of the word before Web 2.0 corrupted it. They are categorically not releases, and that is explicitly stated beside the download link. Just because I can download something doesn't make it a release.

    ReplyDelete