<!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">

      <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>
 
  </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>