<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <meta name="description" content="Home page of The Apache Software Foundation">
  <link rel="apple-touch-icon" sizes="57x57" href="/favicons/apple-touch-icon-57x57.png">
  <link rel="apple-touch-icon" sizes="60x60" href="/favicons/apple-touch-icon-60x60.png">
  <link rel="apple-touch-icon" sizes="72x72" href="/favicons/apple-touch-icon-72x72.png">
  <link rel="apple-touch-icon" sizes="76x76" href="/favicons/apple-touch-icon-76x76.png">
  <link rel="apple-touch-icon" sizes="114x114" href="/favicons/apple-touch-icon-114x114.png">
  <link rel="apple-touch-icon" sizes="120x120" href="/favicons/apple-touch-icon-120x120.png">
  <link rel="apple-touch-icon" sizes="144x144" href="/favicons/apple-touch-icon-144x144.png">
  <link rel="apple-touch-icon" sizes="152x152" href="/favicons/apple-touch-icon-152x152.png">
  <link rel="apple-touch-icon" sizes="180x180" href="/favicons/apple-touch-icon-180x180.png">
  <link rel="icon" type="image/png" href="/favicons/favicon-32x32.png" sizes="32x32">
  <link rel="icon" type="image/png" href="/favicons/favicon-194x194.png" sizes="194x194">
  <link rel="icon" type="image/png" href="/favicons/favicon-96x96.png" sizes="96x96">
  <link rel="icon" type="image/png" href="/favicons/android-chrome-192x192.png" sizes="192x192">
  <link rel="icon" type="image/png" href="/favicons/favicon-16x16.png" sizes="16x16">
  <link rel="manifest" href="/favicons/manifest.json">
  <link rel="shortcut icon" href="/favicons/favicon.ico">
  <meta name="msapplication-TileColor" content="#603cba">
  <meta name="msapplication-TileImage" content="/favicons/mstile-144x144.png">
  <meta name="msapplication-config" content="/favicons/browserconfig.xml">
  <meta name="theme-color" content="#282661">

  <title>FAQ - Open Letter to Sun Microsystems - JCK</title>
  <link href="/css/Montserrat-300-600.css" rel="stylesheet">
  <link href="/css/min.bootstrap.css" rel="stylesheet">
  <link href="/css/styles.css" rel="stylesheet">
  <style>
.headerlink {
  visibility: hidden;
}
dt:hover > .headerlink, p:hover > .headerlink, td:hover > .headerlink, h1:hover > .headerlink, h2:hover > .headerlink, h3:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, h6:hover > .headerlink {
  visibility: visible
}  </style>

<!-- https://www.apache.org/licenses/LICENSE-2.0 -->
</head>

<body >
  <!-- Navigation -->
  <header>
	<div id="skiptocontent">
		<a href="#maincontent">Skip to Main Content</a>
	</div>
    <nav class="navbar navbar-inverse navbar-fixed-top mainmenu">
      <div class="container">
        <div class="navbar-header">
          <button class="navbar-toggle" type="button" data-toggle="collapse" data-target="#mainnav-collapse">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
        </div>
        <div class="collapse navbar-collapse" id="mainnav-collapse">
          <ul class="nav navbar-nav navbar-justified">
            <li><a href="/index.html#news">News</a></li>
            <li class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">About&nbsp;<span class="caret"></span></a>
              <ul class="dropdown-menu" role="menu">
                <li><a href="/foundation">Overview</a></li>
                <li><a href="/foundation/how-it-works.html">Process</a></li>
                <li><a href="/foundation/governance/">Governance</a></li>
                <li><a href="/theapacheway/index.html">The Apache Way</a></li>
                <li><a href="/foundation/governance/members.html">Membership</a></li>
                <li><a href="https://community.apache.org/">Community</a></li>
                <li><a href="https://diversity.apache.org/">Diversity & Inclusion</a></li>
                <li><a href="/foundation/policies/conduct">Code of Conduct</a></li>
                <li><a href="/foundation/glossary.html">Glossary</a></li>
				  <li><a href="/apache-name">About Our Name</a></li>
                <li><a href="/foundation/preFAQ.html">FAQ</a></li>
                <li><a href="/foundation/contributing.html">Support Apache</a></li>
                <li><a href="/press/">Media/Analysts</a></li>
                <li><a href="/foundation/contact.html">Contact</a></li>
              </ul>
            </li>
            <li class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Make a Donation&nbsp;<span class="caret"></span></a>
              <ul class="dropdown-menu" role="menu">
                <li><a href="/foundation/contributing.html">Donate Now</a></li>
                <li><a href="https://donate.apache.org/">&nbsp;&nbsp;Via Credit Card</a></li>
                <li><a href="https://donate.apache.org/">&nbsp;&nbsp;Via ACH</a></li>
                <li><a href="https://donate.apache.org/">&nbsp;&nbsp;Via PayPal</a></li>
                <li><a href="https://www.redbubble.com/people/comdev">Buy Swag</a></li>
                <li><a href="https://smile.amazon.com/gp/chpf/homepage/ref=smi_se_scyc_srch_stsr?q=apache+software+foundation&orig=%2F">Shop smile.amazon.com</a></li>
                <li><a href="/foundation/sponsorship.html">ASF Sponsorship</a></li>
                <li><a href="/foundation/thanks#targeted-sponsors">Targeted Sponsorship</a></li>
                <li><a href="/foundation/contributing.html#CorporateGiving">Corporate Giving</a></li>
              </ul>
            </li>
            <li class="dropdown">
              <a href="#" class="dropdopwn-toggle" data-toggle="dropdown">The Apache Way&nbsp;<span class="caret"></span></a>
              <ul class="dropdown-menu" role="menu">
                <li><a href="/theapacheway/index.html">The Apache Way</a></li>
                <li><a href="https://s.apache.org/GhnI">Sustainable Open Source</a></li>
                <li><a href="/foundation/how-it-works.html">How it Works</a></li>
                <li><a href="/foundation/how-it-works.html#meritocracy">Merit</a></li>
                <li><a href="https://blogs.apache.org/foundation/category/SuccessAtApache">Success at Apache</a></li>
              </ul>
            </li>
            <li class="dropdown">
              <a href="#" class="dropdopwn-toggle" data-toggle="dropdown">Join Us&nbsp;<span class="caret"></span></a>
              <ul class="dropdown-menu" role="menu">
                <li><a href="https://community.apache.org/gettingStarted/101.html">Getting Started</a></li>
                <li><a href="https://helpwanted.apache.org/">Help Wanted</a></li>
                <li><a href="https://www.apachecon.com/">ApacheCon</a></li>
                <li><a href="http://community.apache.org/calendars/">Community Events</a></li>
                <li><a href="/travel/">Travel Assistance</a></li>
                <li><a href="https://community.apache.org/gsoc.html">Summer of Code</a></li>
                <li><a href="/foundation/policies/conduct">Code of Conduct</a></li>
                <li><a href="https://community.apache.org/contributors/etiquette">Etiquette</a></li>
                <li class="dropdown dropdown-submenu visible-xs">
                  <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Projects&nbsp;<span class="caret"></span></a>
                  <ul class="dropdown-menu" role="menu">
                    <li><a href="/index.html#projects-list">Project List</a></li>
                    <li><a href="/foundation/how-it-works.html#management">How they work</a></li>
                    <li><a href="https://community.apache.org/projectIndependence.html">Independence</a></li>
                    <li><a href="https://projects.apache.org/committees.html?date">Date Founded</a></li>
                    <li><a href="https://projects.apache.org/projects.html?name">Names</a></li>
                    <li><a href="https://projects.apache.org/projects.html?category">Categories</a></li>
                    <li><a href="https://projects.apache.org/projects.html?language">Languages</a></li>
                    <li><a href="https://projects.apache.org/statistics.html">Statistics</a></li>
                    <li><a href="https://incubator.apache.org/">Apache Incubator</a></li>
                    <li><a href="https://helpwanted.apache.org/">Help Wanted</a></li>
                    <li><a href="/foundation/marks/">Brand Management</a></li>
                  </ul>
                </li>
                <li class="dropdown dropdown-submenu visible-xs">
                  <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">People&nbsp;<span class="caret"></span></a>
                  <ul class="dropdown-menu" role="menu">
                    <li><a href="/foundation/how-it-works.html#roles">Roles</a></li>
                    <li><a href="/foundation/members.html">Members</a></li>
                    <li><a href="https://community.apache.org/contributors/">Committers</a></li>
                    <li><a href="/foundation/#who-runs-the-asf">Board of Directors</a></li>
                    <li><a href="/foundation/#who-runs-the-asf">Officers  &amp; Project VPs</a></li>
                    <li><a href="https://community.zones.apache.org/map.html">Location Map</a></li>
                    <li><a href="/foundation/policies/conduct">Code of Conduct</a></li>
                    <li><a href="https://people.apache.org/">Committer Directory</a></li>
                  </ul>
                </li>
                <li class="dropdown dropdown-submenu visible-xs">
                  <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Community&nbsp;<span class="caret"></span></a>
                  <ul class="dropdown-menu" role="menu">
                    <li><a href="https://community.apache.org/about/">Community Development</a></li>
                    <li><a href="/foundation/policies/conduct">Code of Conduct</a></li>
                    <li><a href="https://community.apache.org/">Get Involved</a></li>
                    <li><a href="https://community.apache.org/mentoringprogramme.html">Mentoring</a></li>
                    <li><a href="https://helpwanted.apache.org/">Help Wanted</a></li>
                    <li><a href="https://community.apache.org/calendars/">Community Events</a></li>
                    <li><a href="https://community.apache.org/newbiefaq.html">FAQ</a></li>
                    <li><a href="https://community.apache.org/lists.html">Mailing Lists</a></li>
                  </ul>
                </li>
                <li class="dropdown dropdown-submenu visible-xs">
                  <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Infrastructure&nbsp;<span class="caret"></span></a>
                  <ul class="dropdown-menu" role="menu">
                    <li><a href="/dev/infrastructure.html">Infra overview</a></li>
                    <li><a href="https://infra.apache.org/" target="_blank">Policies and Tools</a></li>
                    <li><a href="https://cwiki.apache.org/confluence/display/INFRA/Index" target="_blank">CWiki</a></li>
                  </ul>
                </li>
                <li class="dropdown dropdown-submenu visible-xs">
                  <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">License&nbsp;<span class="caret"></span></a>
                  <ul class="dropdown-menu" role="menu">
                    <li><a href="/licenses/LICENSE-2.0">Apache License 2.0</a></li>
                    <li><a href="/foundation/license-faq.html">Licensing FAQ</a></li>
                    <li><a href="/licenses/contributor-agreements.html">Contributor License Agreements</a></li>
                    <li><a href="/licenses/contributor-agreements.html#grants">Software Grants</a></li>
                    <li><a href="/foundation/marks/list/">Trademarks</a></li>
					<li><a href="/licenses/exports/">Exports</a></li>
                  </ul>
                </li>
                <li class="dropdown dropdown-submenu visible-xs">
                  <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Sponsors&nbsp;<span class="caret"></span></a>
                  <ul class="dropdown-menu" role="menu">
                    <li><a href="/foundation/sponsorship.html">Sponsor the ASF</a></li>
                    <li><a href="/foundation/thanks">Sponsor Thanks</a></li>
                    <li><a href="/foundation/contributing.html#CorporateGiving">Corporate Giving</a></li>
                    <li><a href="/foundation/contributing.html">Individual Donations</a></li>
                    <li><a href="https://www.redbubble.com/people/comdev/">Buy Stuff</a></li>
                  </ul>
                </li>
              </ul>
            </li>
            <li class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Downloads&nbsp;<span class="caret"></span></a>
              <ul class="dropdown-menu" role="menu">
                <li><a href="https://downloads.apache.org/">Distribution</a></li>
                <li><a href="https://projects.apache.org/releases.html">Releases</a></li>
                <li><a href="https://status.apache.org/">Infrastructure Status</a></li>
                <li><a href="/uptime/">Infrastructure Statistics</a></li>
              </ul>
            </li>
            <li class="dropdown hidden-xs">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button"><span class="glyphicon glyphicon-search"
                  aria-hidden="true"></span><span class="sr-only">Search</span></a>
              <ul class="dropdown-menu search-form" role="search">
                <li>
                  <div class="input-group" style="width: 100%; padding: 0 5px;">
                    <script async src="https://cse.google.com/cse.js?cx=cb41d2753d228d8b7"></script>
                    <div class="gcse-search"></div>
                  </div>
                </li>
              </ul>
            </li>
          </ul>
        </div>
      </div>
    </nav>
  </header>
  <!-- / Navigation -->
  <header id="main-header" class="container">
    <div class="sideImg">
          <a class="visible-home" href="https://events.apache.org/x/current-event.html">
            <img class="img-responsive" style="width: 125px;" src="/events/current-event-125x125.png" alt="Apache Events"/>
<!-- STALE: <img class="img-responsive" style="width: 125px;" src="https://www.apachecon.com/event-images/default-square-light.png" alt="ApacheCon 2021 Coming Soon!" /> -->
          </a>
      <a class="hidden-home" href="/"><img class="img-responsive" src="/img/asf-estd-1999-logo.jpg" alt="The Apache Software Foundation"></a>
    </div>
    <div class="main">
      <img class="img-responsive center-block visible-home" src="/img/asf-estd-1999-logo.jpg" alt="Apache 20th Anniversary Logo">
      <h2 class="text-center">Community-led development "The&nbsp;Apache&nbsp;Way"</h2>
      <ul class="nav navbar-nav navbar-justified">
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Projects&nbsp;<span class="caret hidden-sm"></span></a>
          <ul class="dropdown-menu" role="menu">
            <li><a href="/index.html#projects-list">Project List</a></li>
            <li><a href="/foundation/how-it-works.html#management">How they work</a></li>
            <li><a href="https://community.apache.org/projectIndependence.html">Independence</a></li>
            <li><a href="https://projects.apache.org/committees.html?date">Date Founded</a></li>
            <li><a href="https://projects.apache.org/projects.html?name">Names</a></li>
            <li><a href="https://projects.apache.org/projects.html?category">Categories</a></li>
            <li><a href="https://projects.apache.org/projects.html?language">Languages</a></li>
            <li><a href="https://projects.apache.org/statistics.html">Statistics</a></li>
            <li><a href="https://incubator.apache.org/">Apache Incubator</a></li>
            <li><a href="https://helpwanted.apache.org/">Help Wanted</a></li>
            <li><a href="/foundation/marks/">Brand Management</a></li>
            <li><a href="/foundation/glossary.html">Glossary of Terms</a></li>
          </ul>
        </li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">People&nbsp;<span class="caret hidden-sm"></span></a>
          <ul class="dropdown-menu" role="menu">
            <li><a href="/foundation/how-it-works.html#roles">Roles</a></li>
            <li><a href="/foundation/members.html">Members</a></li>
            <li><a href="https://community.apache.org/contributors/">Committers</a></li>
            <li><a href="/foundation/#who-runs-the-asf">Board of Directors</a></li>
            <li><a href="/foundation/#who-runs-the-asf">Officers &amp; Project VPs</a></li>
            <li><a href="https://diversity.apache.org/">Diversity & Inclusion</a></li>
            <li><a href="/foundation/policies/conduct">Code of Conduct</a></li>
            <li><a href="https://people.apache.org/">Committer Directory</a></li>
            <li><a href="https://community.zones.apache.org/map.html">Heat Map</a></li>
          </ul>
        </li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Community&nbsp;<span class="caret hidden-sm"></span></a>
          <ul class="dropdown-menu" role="menu">
            <li><a href="https://community.apache.org/about/">Community Development</a></li>
            <li><a href="/foundation/policies/conduct">Code of Conduct</a></li>
            <li><a href="https://community.apache.org/">Get Involved</a></li>
            <li><a href="https://community.apache.org/mentoringprogramme.html">Mentoring</a></li>
            <li><a href="https://helpwanted.apache.org/">Help Wanted</a></li>
            <li><a href="https://community.apache.org/calendars/">Community Events</a></li>
            <li><a href="https://community.apache.org/newbiefaq.html">FAQ</a></li>
            <li><a href="https://community.apache.org/lists.html">Mailing Lists</a></li>
          </ul>
        </li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Infrastructure&nbsp;<span class="caret"></span></a>
          <ul class="dropdown-menu" role="menu">
              <li><a href="/dev/infrastructure.html">Infra overview</a></li>
              <li><a href="https://infra.apache.org/" target="_blank">Policies and Tools</a></li>
              <li><a href="https://cwiki.apache.org/confluence/display/INFRA/Index" target="_blank">CWiki</a></li>
          </ul>
        </li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">License&nbsp;<span class="caret hidden-sm"></span></a>
          <ul class="dropdown-menu" role="menu">
            <li><a href="/licenses/LICENSE-2.0">Apache License 2.0</a></li>
            <li><a href="/foundation/license-faq.html">Licensing FAQ</a></li>
            <li><a href="/licenses/contributor-agreements.html">Contributor License Agreements</a></li>
            <li><a href="/licenses/contributor-agreements.html#grants">Software Grants</a></li>
            <li><a href="/foundation/marks/list/">Trademarks</a></li>
			<li><a href="/licenses/exports/">Exports</a></li>
          </ul>
        </li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button">Sponsors&nbsp;<span class="caret hidden-sm"></span></a>
          <ul class="dropdown-menu" role="menu">
            <li><a href="/foundation/sponsorship.html">Sponsor the ASF</a></li>
            <li><a href="/foundation/thanks">Sponsor Thanks</a></li>
            <li><a href="/foundation/contributing.html#CorporateGiving">Corporate Giving</a></li>
            <li><a href="/foundation/contributing.html">Individual Donations</a></li>
            <li><a href="https://www.redbubble.com/people/comdev/">Buy Stuff</a></li>
          </ul>
        </li>
      </ul>
    </div>
    <div class="sideImg">
      <a href="/foundation/contributing.html"><img class="img-responsive" src="/img/support-apache.jpg" alt="Apache Support Logo" /></a>
    </div>
  </header>
  <main id="maincontent">
<div class="container">    <h1 id="faq-open-letter-to-sun-microsystems-jck">FAQ - Open Letter to Sun Microsystems - JCK<a class="headerlink" href="#faq-open-letter-to-sun-microsystems-jck" title="Permalink">&para;</a></h1>
<h1 id="faq-open-letter-to-sun-microsystems">FAQ Open Letter to Sun Microsystems<a class="headerlink" href="#faq-open-letter-to-sun-microsystems" title="Permalink">&para;</a></h1>
<p>We have created the following FAQ to provide background information on the
<a href="sunopenletter.html">open letter to Sun microsystems.</a></p>
<pre><code>Q : What is the Apache Software Foundation?
A : The Apache Software Foundation - or ASF - is a 501(c)3 public
    charity that, among other things, provides a foundation for
    open, collaborative software development projects by supplying
    hardware, communication, and business infrastructure.  The
    Foundation website is http://www.apache.org and you can read
    more about the Foundation at
    http://www.apache.org/foundation/faq.html

Q : What is the Apache Harmony project?
A : Apache Harmony is a project of the Apache Software Foundation
    focused on creating an independent, compatible implementation
    of Java SE.  That means we're writing the whole implementation
    from scratch, or incorporating software from other open source
    projects.  You can read more about the Apache Harmony project
    at its website http://harmony.apache.org

Q : Why was Harmony created?
A : Harmony was created for many reasons.  The fundamental reason is the same as
    other projects in the open source / free software space working Java (such as
    GNU Classpath, Kaffe, GCJ, etc) - we wanted to do an implementation of a
    complete, compatible Java SE runtime environment,  including virtual machine,
    class library and tools under a FLOSS license.

Q : What does "FLOSS" mean?
A : It refers to a license being either "Free", "Libre" or "Open
    Source".

Q : What is the Java Community Process?
A : The Java Community Process (or JCP) is the governing
    organization for Java.  Initially created by Sun, it includes
    an Executive Committee composed of 32 representatives from
    corporations, individuals and academics representing thousands
    of members.  The JCP is the organization through which new
    specifications for Java technology are created.

Q : How long has the JCP existed?
A : After an initial draft of the process was crafted and
    distributed on October 8, 1998, the JCP was introduced on
    December 8, 1998 and was announced by Sun at the 1998 Java
    Business Expo Conference.

Q : What is the JSPA?
A : The JSPA is the "Java Specification Participation Agreement",
    the governing document of the JCP.  Among other things, it
    specifies how IP is managed in an expert group, how it is
    licensed to independent implementations, and how the TCK and
    RI can be licensed.

Q : What is a JSR?
A : A JSR is a "Java Specification Request", the formal vehicle
    through which Java technologies are created or updated.  A JSR
    is proposed by any JCP member, who is then known as the
    "specification lead" or "spec lead" for that JSR.  The spec
    lead organizes an "expert group" and that expert group works
    to create the specification.  The expert group must also
    create a "reference implementation" or "RI", as well as a
    "technology compatibility kit" or "TCK".

Q : What is an expert group?
A : An expert group is a group of people, organized by a spec lead
    for a JSR, with appropriate expertise in the area of the JSR.

Q : How many JSRs has the ASF participated in?
A : Many - the ASF has had representation in JSRs since the modern
    JCP was formed.

Q : How many JSRs has the ASF implemented as open source software?
A : Many. For example, Apache Tomcat, Apache Geronimo, Apache
    Harmony, Apache MyFaces, Apache Scout, Apache ActiveMQ, Apache
    ServiceMix, Apache Jackrabbit, Apache Portals, Apache
    WebServices and Apache XML are all projects that implement one
    or more JSRs.

Q : What is a TCK?
A : The Technology Compatibility Kit, a test framework produced by
    the spec lead to be used by independent implementations to
    demonstrate compatibility (and therefore get the grant of
    necessary IP).

Q : Why is the TCK useful?
A : It allows independent implementations to demonstrate that they
    are compatible with the specification, and as a result,
    receive all the "necessary IP" from expert group members.

Q : What is "necessary IP" and why is this important that
    compatible implementations receive it?
A : "Necessary IP" is the IP - usually patents - that cannot be
    technically avoided when implementing the specification.  This
    is important because it prevents anyone from joining an expert
    group and gaining the ability to demand royalties from
    implementors or users of the specification.  This is one of
    the main features of the JCP that makes the specs the JCP
    produces "open specifications".

Q : You talk about the JCK in the letter.  Is the JCK a TCK?
A : It is, actually.  The JCK is the name Sun gave the TCK for the
    Java SE specification.  While it has a different name, it's a
    TCK for the purposes of JCP process discussion.

Q : Who owns the JCK?
A : Sun owns the JCK, as they created it as part of their
    obligation as a spec lead.  The JSPA requires the spec lead
    for every JSR to deliver a TCK (which Sun calls the JCK for
    the Java SE spec) when a given spec is completed to allow
    independent implementations to demonstrate compatibility and
    receive the necessary IP grant.

Q : Was it always possible to create and distribute
    implementations of JSRs under free and open source licenses?
A : No, but the ASF was instrumental in making this possible.  In
    2002, the Apache Software Foundation, working with other
    members of the Java community, led the effort to change the
    JCP governance document - the "Java Specification
    Participation Agreement" or JSPA.  These changes finally made
    it possible to create independent implementations of Java
    specification under free and open source licenses.  Before
    these changes, it was impossible to do so.

Q : What is the "Apache Compromise"?
A : As part of the process that led to changes in the JSPA, Sun
    Microsystems made a public commitment to the Java community
    that Sun-led specifications would be implementable in free and
    open source software.  That commitment can be found here :
    http://jcp.org/aboutJava/communityprocess/announce/LetterofIntent.html

Q : Is it true that Java SE 5 was the first of the Java SE JSRs to
    be released under the above-mentioned FOSS-friendly JCP terms?
A : Yes.  Some Java specifications take years to complete, and one
    was in progress at the time of the JSPA changes.  So we had to
    wait until the next JSR for Java SE was complete, which was
    Java SE 5.

Q : I see you refer to "necessary IP" in your open letter.  Is Sun
    the only owner of the necessary intellectual property that the
    Java SE JSR contains?
A : No.  There probably is "necessary IP" from all members of the
    Java SE expert group.  The JSPA requires expert group members
    to license their necessary IP to the spec lead, who in turn is
    obligated to license all necessary IP to any compatible
    implementation that passes the TCK (or in this case, the JCK).

Q : Who was the spec lead for the Java SE 5 JSR?
A : Sun.  See http://jcp.org/en/jsr/detail?id=176

Q : Is Apache the first to ask for a JCK license?
A : No.  There are many JCK licensees.  It is our understanding
    that we are the first non-profit with no commercial ties to
    Sun to attempt to license the JCK.  We know about a JCK
    licensing discussion between Sun and some in the free software
    community, but we don't believe that led to a successful
    resolution.

Q : Is Apache against Sun earning money out of licensing the JCK
    to commercial entities?
A : Of course not.  The ASF is a public charity and as such,
    doesn't compete in the commercial marketplace.  We take a
    completely neutral position regarding legal commercial
    activity.

Q : What is a "field of use" restriction?
A : A "field of use" restriction is a restriction that limits how
    a user can use a given piece of software, either directly or
    indirectly.  To give a concrete example from the Sun / Apache
    dispute, if Apache accepted Sun's terms, then users of a
    standard, tested build of Apache Harmony for Linux on a
    standard general purpose x86-based computer (for example, a
    Dell desktop) would be prevented from freely using that
    software and that hardware in any application where the
    computer was placed in an enclosed cabinet, like an
    information kiosk at a shopping mall, or an X-ray machine at
    an airport.

Q : Is a "field of use" restriction incompatible with both open
    source and free software principles?
A : Yes, both.  See the Open Source Initiative's open source
    definition (http://www.opensource.org/docs/osd), most notably
    section 6 and 10 and the Free Software Foundation's free
    software definition
    (http://www.gnu.org/philosophy/free-sw.html) most notably
    freedom #0.

Q : Would the ASF be satisfied with a TCK license that removed the
    field of use restriction if used only on Apache Licensed code?
A : No.  Looking at the broader picture, the ASF has worked for
    years to ensure that the JCP creates "open specifications",
    specs that are freely implementable under free and open source
    licenses.  If the field of use restriction was lifted only for
    the Apache License (or only the GPL, or only the MPL, or...)
    then it still would be discriminatory and contrary to the
    terms of the JSPA.  The resulting specs still wouldn't be open
    specifications.  In addition to that, the Apache License 2.0
    grants everybody who follows the terms of the license "a
    perpetual, worldwide, non-exclusive, no-charge, royalty-free,
    irrevocable copyright license to reproduce, prepare Derivative
    Works of, publicly display, publicly perform, sublicense, and
    distribute the Work and such Derivative Works in Source or
    Object form."  In particular, note the word "sublicense" in
    that quote - it's not possible for an "Apace License
    carve-out" here as people can sublicense our software.  (Note
    that it's still true that if someone makes a derivative work
    of Apache Harmony, they are still obligated to secure their
    own JCK license and test their derivative if they wish to call
    their work compatible).

Q : What is an acceptable JCK license for Apache?
A : Simply put, we're asking Sun to make it like the other 15+ TCK
    licenses - including other major platform JSRs like Java EE -
    we have executed with them over the years, all of which have
    no "field of use" limitations.  We are asking that Sun drops
    the "field of use" limitation, therefore allowing freedom of
    use, in accordance with their obligations under the JSPA.

Q : Why does Apache think it's entitled to such a license while
    others have to pay for it?
A : This isn't a debate about the cost - Sun agrees that it should
    be available to Apache at no cost.  The important issue is
    lack of a field of use limitation.  The JSPA mandates is that
    everyone is entitled to a TCK license free of field of use
    limitations - whether or not they pay for the license - and
    that is what makes the specs created by the JCP open
    specifications.  Now, as to the issue of paying for the TCK,
    the JSPA requires that TCKs are made available to qualified
    not-for-profits, individuals and academics.  As Apache is a
    501(c)3 public charity - aka "non-profit" - we therefore would
    receive the JCK at no cost.

Q : Does Apache think that Harmony could be used by commercial
    entities to avoid paying JCK licensing fees to Sun?
A : No.  The only way that could happen is if a commercial entity
    stopped shipping their own software and started shipping the
    tested binaries that were created by the Harmony project.
    Even then, they would still need to license the Java branding
    rights from Sun, as Apache does not pass those rights
    downstream to users or redistributors of our software.  Note
    that if an entity made a derivative work, or used only part of
    Harmony's source code in building their implementation, they
    would still be obligated to obtain their own JCK license for,
    and test the software themselves.  Apache does not make its
    TCKs available for use outside of our projects.

Q : Is Apache trying to damage Sun's business?
A : No.  Apache is a non-profit and does not engage in any
    commercial activity.  We're trying to build our own
    independent implementation of Java, and create a community of
    users and developers around that software, and need the JCK to
    do so.

Q : What about OpenJDK?  Sun has indicated their intention to
    release the source code of their implementation of Java SE
    under a modified version of the GPLv2.  Would OpenJDK be
    allowed to ship without passing the JCK?
A : Good question, and a complicated one.  We think the answer is
    "no".  While Sun was the spec lead of the Java SE JSR and
    therefore had all the "necessary IP" licensed to them by all
    the expert group members, by simply placing their own
    implementation under the GPLv2, not all of the necessary IP is
    automatically granted.  If OpenJDK users are to receive the
    benefits of compatibility, the project will need to ship a
    binary that has passed the JCK.  It is worth noting that if
    Sun placed "field of use" limitations in the certified
    releases of OpenJDK, that would be in violation of its own
    license, the GPLv2.  If Sun added a "GPL-only carve-out" to
    the field of use, that would be problematic in the same way
    that an "Apache License-only carve-out" would be problematic,
    as we discussed above.

Q : Why doesn't Apache simply ignore this and ships Harmony
    without passing the JCK?
A : We can ship Harmony without passing the JCK - it's our source
    code to do with what we wish - and we will with milestone
    releases as we progress towards completion.  However, we could
    never claim to be Java compatible, which is something very
    important to Java users, and is the stated goal of the
    project.  Also, users wouldn't be assured that they had all
    necessary IP rights from the spec's contributors. Compatibility
    is important to us as is not putting users in IP jeopardy, as
    it has been for every JSR the ASF has ever implemented.  We have
    no interest in forking the technology.

Q : Why is Apache resorting to this public "open letter"?
A : Apache has tried since August of 2006 to get this license.
    There has been quite a bit of effort put into this to achieve
    a private resolution, including private appeals to officers of
    Sun, including Jonathan Schwartz, Sun's CEO.  We even brought
    the issue up to the JCP Executive Committee.  But to this point,
    Sun has continued to be unyielding.  We really did hope to resolve this
    peacefully and privately, and continue to hope that we can
    resolve this peacefully.  But we owe answers to our
    communities as to why we haven't been able to secure the JCK,
    and we feel that at this point, it is Sun's question to answer
    given their contractual obligations in the JSPA, and their
    past and current promises to the open and free software
    communities.

Q : Would Apache send such an open letter if it wasn't Sun the
    spec lead of the Java 5 JSR?
A : Absolutely, if we ever got to an equivalent stage with another
    spec lead.  JCP openness is a necessary requirement for a
    healthy and diverse java ecosystem and has nothing to do with
    the identity of the spec lead or their company affiliation.
</code></pre>

</div>  </main>

  <!-- Footer -->
  <footer class="bg-primary">
    <div class="container">
      <div class="row">
        <br />
        <div class="col-sm-1">

        </div>
        <div class="col-sm-2">
          <h5 class="white">Community</h5>
          <ul class="list-unstyled white" role="menu">
            <li><a href="http://community.apache.org/">Overview</a></li>
            <li><a href="/foundation/conferences.html">Conferences</a></li>
            <li><a href="http://community.apache.org/gsoc.html">Summer of Code</a></li>
            <li><a href="http://community.apache.org/newcomers/">Getting Started</a></li>
            <li><a href="/foundation/how-it-works.html">The Apache Way</a></li>
            <li><a href="/travel/">Travel Assistance</a></li>
            <li><a href="/foundation/getinvolved.html">Get Involved</a></li>
            <li><a href="/foundation/policies/conduct.html">Code of Conduct</a></li>
            <li><a href="http://community.apache.org/newbiefaq.html">Community FAQ</a></li>
            <li><a href="/memorials/">Memorials</a></li>
          </ul>
        </div>

        <div class="col-sm-2">
          <h5 class="white">Innovation</h5>
          <ul class="list-unstyled white" role="menu">
            <li><a href="http://incubator.apache.org/">Incubator</a></li>
            <li><a href="http://labs.apache.org/">Labs</a></li>
            <li><a href="/licenses/">Licensing</a></li>
            <li><a href="/foundation/license-faq.html">Licensing FAQ</a></li>
            <li><a href="/foundation/marks/">Trademark Policy</a></li>
            <li><a href="/foundation/contact.html">Contacts</a></li>
          </ul>
        </div>

        <div class="col-sm-2">
          <h5 class="white">Tech Operations</h5>
          <ul class="list-unstyled white" role="menu">
            <li><a href="/dev/">Developer Information</a></li>
            <li><a href="/dev/infrastructure.html">Infrastructure</a></li>
            <li><a href="/security/">Security</a></li>
            <li><a href="http://status.apache.org">Status</a></li>
            <li><a href="/foundation/contact.html">Contacts</a></li>
          </ul>
        </div>

        <div class="col-sm-2">
          <h5 class="white">Press</h5>
          <ul class="list-unstyled white" role="menu">
            <li><a href="/press/">Overview</a></li>
            <li><a href="https://blogs.apache.org/">ASF News</a></li>
            <li><a href="https://blogs.apache.org/foundation/">Announcements</a></li>
            <li><a href="https://twitter.com/TheASF">Twitter Feed</a></li>
            <li><a href="/press/#contact">Contacts</a></li>
          </ul>
        </div>

        <div class="col-sm-2">
          <h5 class="white">Legal</h5>
          <ul class="list-unstyled white" role="menu">
            <li><a href="/legal/">Legal Affairs</a></li>
            <li><a href="/legal/dmca.html">DMCA</a></li>
            <li><a href="/licenses/">Licensing</a></li>
            <li><a href="/foundation/marks/">Trademark Policy</a></li>
            <li><a href="/foundation/records/">Public Records</a></li>
            <li><a href="/foundation/policies/privacy.html">Privacy Policy</a></li>
            <li><a href="/licenses/exports/">Export Information</a></li>
            <li><a href="/foundation/license-faq.html">Licensing FAQ</a></li>
            <li><a href="/foundation/contact.html">Contacts</a></li>
          </ul>
        </div>

        <div class="col-sm-1">
        </div>

      </div>
      <hr class="col-lg-12 hr-white" />
      <div class="row">
        <div class="col-lg-12">
          <p class="text-center">Copyright &#169; 2023 The Apache Software Foundation, Licensed under the <a class="white" href="/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
          <p class="text-center">Apache and the Apache feather logo are trademarks of The Apache Software Foundation. </p>
        </div>
      </div>
    </div>

  </footer>

  <!-- / Footer -->

  <script src="/js/jquery-2.1.1.min.js"></script>
  <script src="/js/bootstrap.js"></script>
  <script src="/js/slideshow.js"></script>
  <script>
    (function($){
    $(document).ready(function(){
    $('ul.dropdown-menu [data-toggle=dropdown]').on('click', function(event) {
    event.preventDefault();
    event.stopPropagation();
    $(this).parent().siblings().removeClass('open');
    $(this).parent().toggleClass('open');
    console.log('WOrked');
    });
    });
    })(jQuery);
  </script>
</body>
</html>