<!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>Apache Licensing and Distribution FAQ</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">    <p>This page answers most of the common queries that we receive about our
licenses, and about licensing, packaging or redistributing our software. For
non-licensing questions, see our <a href="/foundation/preFAQ.html">General FAQ</a>.</p>
<h1 id="frequent-questions-about-apache-licensing">Frequent Questions about Apache Licensing<a class="headerlink" href="#frequent-questions-about-apache-licensing" title="Permalink">&para;</a></h1>
<ol>
<li>
<p><a href="#License">Where can I find the Apache license?</a></p>
</li>
<li>
<p><a href="#Scope">Why are license files different for different Apache Software Foundation
projects?</a></p>
</li>
<li>
<p><a href="#Marks">Is 'Apache' a trademark?</a></p>
</li>
<li>
<p><a href="#IsItFree">Is software from The Apache Software Foundation free?</a></p>
</li>
<li>
<p><a href="#Export">What are the U.S. Export Classification Control Numbers (ECCNs) for
the various Apache software packages?</a></p>
</li>
<li>
<p><a href="#My-License">May I license my own software under the Apache license?</a></p>
</li>
<li>
<p><a href="#Apply-My-Software">How should I apply the Apache License to my own software?</a></p>
</li>
<li>
<p><a href="#CLA-Usage">May I re-use (and modify) the ASF Contributor License Agreements
(CLAs) for my own purposes?</a></p>
</li>
<li>
<p><a href="#mod-license">May I re-use (and modify) the Apache License 2.0 itself?</a></p>
</li>
<li>
<p><a href="#Distribute-changes">I've made improvements to Apache code; may I distribute
it?</a></p>
</li>
<li>
<p><a href="#Name-changes">May I call my modified code 'Apache'?</a></p>
</li>
<li>
<p><a href="#Must-Contribute">I have made changes to an Apache package and I want to distribute
it. Do I need to contribute the changes to the Apache Software
Foundation?</a></p>
</li>
<li>
<p><a href="#Translation">May I translate the Apache license into my local language for my
redistribution of Apache packages?</a></p>
</li>
<li>
<p><a href="#GPL">Is the Apache license compatible with the GPL (GNU Public
License)?</a></p>
</li>
<li>
<p><a href="#PatentScope">What is the scope of patent grants made to the ASF?</a></p>
</li>
<li>
<p><a href="#licenses">Can ASF PMCs host projects that are not under the Apache License?</a></p>
</li>
<li>
<p><a href="#cclas-not-required">Are contributors' employers required to sign a CCLA?</a></p>
</li>
<li>
<p><a href="#provenance">What is the provenance of source code from the ASF?</a></p>
</li>
</ol>
<p>If none of the above addresses your query, check the <a href="#resources">resources at
the bottom of this page</a> for further information.</p>
<h2 id="License">Where can I find the Apache license?<a class="headerlink" href="#License" title="Permalink">&para;</a></h2>
<p>You can find the Apache License 2.0 (the current version) here: <a href="/licenses/LICENSE-2.0.txt">http://www.apache.org/licenses/LICENSE-2.0.txt</a></p>
<p>These are two older versions that we no longer use:</p>
<ul>
<li>
<p>Apache Software License 1.1:
<a href="/licenses/LICENSE-1.1.txt">http://www.apache.org/licenses/LICENSE-1.1.txt</a></p>
</li>
<li>
<p>Apache Software License 1.0:
<a href="/licenses/LICENSE-1.0.txt">http://www.apache.org/licenses/LICENSE-1.0.txt</a></p>
</li>
</ul>
<h2 id="Scope">Why are license files different for different Apache Software Foundation projects?<a class="headerlink" href="#Scope" title="Permalink">&para;</a></h2>
<p>While the core Apache-developed code will be under one of the Apache
licenses, other third-party works may have been included and their license
text may have been added to the Apache project's LICENSE or NOTICE files.
Alternatively, they may be available separately.</p>
<h2 id="Marks">Is 'Apache' a trademark?<a class="headerlink" href="#Marks" title="Permalink">&para;</a></h2>
<p>'Apache', 'Apache Software Foundation', the multicoloured feather, and the
various Apache project names and logos are either registered trademarks or trademarks of The Apache
Software Foundation in the United States and other countries.
See our <a href="marks/">Trademark Policy</a> for details of how to use Apache project trademarks, and our helpful <a href="marks/resources">site map of trademark resources</a>.</p>
<h2 id="IsItFree">Is software from The Apache Software Foundation free of charge?<a class="headerlink" href="#IsItFree" title="Permalink">&para;</a></h2>
<p>Yes. <strong>All</strong> software developed by <strong>all</strong> projects of The Apache Software
Foundation is freely available without charge from the Foundation's web
sites. This is specified in the Foundation's <a href="records/incorporator.html">Articles of
Incorporation</a> and <a href="/free/">explained in
more detail</a> why our software is always free (no charge).</p>
<p>This is regardless of the use of the software. We do not distinguish between personal, internal, or
commercial use of our software, and we do not charge for any of these uses. A reminder, however, that the terms
of <a href="#License">our license</a> always apply.</p>
<h2 id="Export">What are the U.S. Export Classification Control Numbers (ECCNs) for the various Apache software packages?<a class="headerlink" href="#Export" title="Permalink">&para;</a></h2>
<p>See the <a href="/licenses/exports/">ASF Exports Classifications and Source
Links</a> page.</p>
<h2 id="My-License">May I license my own software under the Apache license?<a class="headerlink" href="#My-License" title="Permalink">&para;</a></h2>
<p>Certainly. Version 2.0 of the license was designed to be reusable, and many parties other than the ASF use it.</p>
<h2 id="Apply-My-Software">How should I apply the Apache License to my own software?<a class="headerlink" href="#Apply-My-Software" title="Permalink">&para;</a></h2>
<p>Include a copy of the Apache License, typically in a file called LICENSE, in your work, and consider also including a NOTICE file.</p>
<p>It is also valuable to tag each of your source-code files in case they become detached from the LICENSE file. To apply the Apache License to your source-code files, one approach is to attach the following notice to as a comment at the top of each file. Replace the copyright templates with your own identifying information:</p>
<pre><code>Copyright [yyyy] [name of copyright owner]

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
</code></pre>
<p>A shorter variant you may wish to use is:</p>
<pre><code>Copyright [yyyy] [name of copyright owner]
SPDX-License-Identifier: Apache-2.0
</code></pre>
<p>Note that the Apache Software Foundation uses a different source header that is related to our use of a CLA. Our instructions for our project's source headers are <a href="/legal/src-headers.html#headers">here</a>.</p>
<h2 id="CLA-Usage">May I re-use (and modify) the ASF Contributor License Agreements (CLAs) for my own purposes?<a class="headerlink" href="#CLA-Usage" title="Permalink">&para;</a></h2>
<p>Yes, you can re-use and modify them; You just can't hold the ASF
legally responsible if these documents are not exactly what you intend them
to be. We recommend that you obtain your own legal advice so you know
exactly what you are getting yourself into.</p>
<p>If you adapt these agreements for your own purposes, make
sure that the phrase 'Apache Software Foundation' and any confusingly
similar references or parts that specifically refer to the Apache
organisation do not appear in your version of the agreements (except to
note that your version is derived and differs from the original provided by
the ASF).</p>
<h2 id="mod-license">May I re-use (and modify) the Apache License 2.0 itself?<a class="headerlink" href="#mod-license" title="Permalink">&para;</a></h2>
<p>You may re-use our license unchanged, and also modify it.</p>
<p>If you modify it, you are on your own from a legal point of view, and the result
is NOT the Apache License, just a new license inspired by ours.</p>
<p>This means that the terms 'Apache License', 'Apache', and any similar references
to the ASF cannot appear in your modified license, other than to state that it differs
from the original.</p>
<p>Also, you cannot use 'Apache' in the name of the modified license.
Names like "Apache License with such-and-such clause", for example, are not acceptable,
as they cause confusion.</p>
<p>Creating a new license is a non-trivial task. If you do that we recommend that you get your own legal advice.</p>
<h2 id="Distribute-changes">I've made improvements to the Apache code; may I distribute the modified result?<a class="headerlink" href="#Distribute-changes" title="Permalink">&para;</a></h2>
<p>Absolutely -- subject to the <a href="/licenses/LICENSE-2.0#redistribution">terms of the Apache license</a>,
of course. You can give your modified code away for free, sell it, keep it to
yourself, or whatever you like. Just remember that the original code is
still covered by the Apache license and you must comply with its terms.
Even if you change every single line of the Apache code you're using, the
result is still based on the Foundation's licensed code. You may distribute
the result under a different license, but you need to acknowledge the use
of the Foundation's software. To do otherwise would be stealing.</p>
<p>If you think others would find your changes useful, though, we <em>do</em>
encourage you to submit them to the appropriate Apache project for possible
inclusion.</p>
<h2 id="Name-changes">May I call my modified code 'Apache'?<a class="headerlink" href="#Name-changes" title="Permalink">&para;</a></h2>
<p><strong>No</strong>. You may, however, use phrasing such as 'based on
Apache', 'powered by Apache', or 'based on Apache technology'. You <strong>must
not</strong> use the Foundation's marks in any way that states or implies, or can
be interpreted as stating or implying, that the Apache Software Foundation endorses or created the final product. For example, it would be
acceptable to use a name like 'SuperWonderServer powered by Apache', but
never a name like 'Apache SuperWonderServer'. This is similar to the
distinction between a product named 'Microsoft Burp' and 'Burp for
Microsoft Windows'.</p>
<p>You may similarly identify the specific Foundation project whose code
you're using, such as with 'based on Apache Xerces' or 'powered by Apache
Tomcat technology'.</p>
<p>If you wish to use a name including any of the Foundation's marks, such as
the word 'Apache', ask our permission first. See our
<a href="foundation/marks/">Trademark Policy</a> for more details.</p>
<h2 id="Must-Contribute">I have made changes to an Apache package and I want to distribute them. Do I need to contribute them to the Apache Software Foundation?<a class="headerlink" href="#Must-Contribute" title="Permalink">&para;</a></h2>
<p>No. You can keep your changes a secret if you like. But please seriously consider contributing your changes to the project from which your got the original code. We all benefit when you do.</p>
<h2 id="Translation">May I translate the Apache license into my local language for my redistribution of Apache packages?<a class="headerlink" href="#Translation" title="Permalink">&para;</a></h2>
<p>Yes, you may translate the license text into your local language.
<strong>However</strong> , any such translated text is only for the convenience of
understanding, and is <em>not</em> legally binding. Only the English-language
version of the license, <em>which you must continue to include in your
packaging</em> , is authoritative and applicable in case legal interpretation
is required.</p>
<h2 id="GPL">Is the Apache license compatible with the GPL (GNU Public License)?<a class="headerlink" href="#GPL" title="Permalink">&para;</a></h2>
<p>From the <a href="http://www.fsf.org/licensing/licenses/#SoftwareLicenses">Free Software
Foundation</a>
website:</p>
<blockquote>
<p><span class="link-external"> <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version
2.0</a> </span></p>
</blockquote>
<p>This is a free software license, compatible with version 3 of the GPL.
Please note that this license is not compatible with GPL version 2, because
it has some requirements that are not in that older version. These include
certain patent termination and indemnification provisions.</p>
<h2 id="PatentScope">What is the scope of patent grants made to the ASF?<a class="headerlink" href="#PatentScope" title="Permalink">&para;</a></h2>
<style>
  dl dt  {float: left}
  dl dd  {margin-left: 3em}
</style>
<p>This is a four part question:</p>
<dl>
<dt>Q1:</dt>
<dd>If I own a patent and contribute to a Work, and, at the time my
contribution is included in that Work, none of my patent's claims are
subject to Apache's Grant of Patent License, is there a way any of
those claims would later become subject to the Grant of Patent License
solely due to subsequent contributions by other parties who are not
licensees of that patent?</dd>
<dt>A1:</dt>
<dd>No.</dd>
<dt>Q2:</dt>
<dd>If at any time after my contribution, I am able to license other
patent claims that would have been subject to Apache's Grant of Patent
License if they were licenseable by me at the time of my contribution,
do those other claims become subject to the Grant of Patent License?</dd>
<dt>A2:</dt>
<dd>Yes.</dd>
<dt>Q3:</dt>
<dd>If I own or control a licensable patent and contribute code to a
specific Apache product, which of my patent claims are subject to
Apache's Grant of Patent License?</dd>
<dt>A3:</dt>
<dd>The only patent claims that are licensed to the ASF are those you own
or have the right to license that read on your contribution or on the
combination of your contribution with the specific Apache product to
which you contributed as it existed at the time of your contribution.
No additional patent claims become licensed as a result of subsequent
combinations of your contribution with any other software. Note,
however, that licensable patent claims include those that you acquire
in the future, as long as they read on your original contribution as
made at the original time. Once a patent claim is subject to Apache's
Grant of Patent License, it is licensed under the terms of that Grant
to the ASF and to recipients of any software distributed by the ASF
for any Apache software product whatsoever.</dd>
<dt>Q4:</dt>
<dd>What is an Apache product?</dd>
<dt>A4:</dt>
<dd>An Apache product is a body of software being developed by the ASF
that the ASF intends to both alter and to publish as a separate line
of releases.</dd>
</dl>
<h2 id="licenses">Can ASF PMCs host projects that are not under the Apache License?<a class="headerlink" href="#licenses" title="Permalink">&para;</a></h2>
<p>No. If you are an ASF PMC with a truly exceptional situation, please create a JIRA issue about it.</p>
<h2 id="cclas-not-required">Are contributors' employers required to sign a CCLA?<a class="headerlink" href="#cclas-not-required" title="Permalink">&para;</a></h2>
<p>Only if their employment situation necessitates that a CCLA be signed.
See section 4 of the ICLA for details.</p>
<p>Committers must sign an ICLA.  They make an individual claim that the code that
they contribute is theirs to license.  Reviewing their ICLA against their
employer's ownership interests, applicable state and national law, and specific
aspects of their employment contract and business policies will reveal that
they can or cannot make that claim regarding any particular commit to whichever
particular project they are committing in.</p>
<p>The CCLA is a backup document that the committer/ICLA signer may use to
eliminate ambiguity between all these conflicting laws, contracts,
policies and job assignments.  We've never required it; many committers
are confident of their individual representations under the ICLA, many other
committers find it reassuring that their company has backed up their own
ICLA with this umbrella document.</p>
<p>It is the ICLA signatory's call if it is required, but it isn't exactly an easy
call for many committers employed in the IT/Software industry.</p>
<p>Finally, see section 8 of the ICLA, which requires signers to notify the
Foundation when their status changes in ways that may require their ICLA to
be reassessed.</p>
<h1 id="provenance">What is the provenance of source code from the ASF?<a class="headerlink" href="#provenance" title="Permalink">&para;</a></h1>
<p>Source code (including machine-readable documentation, release notes, guides,
test cases, run books, and scripts) in Apache repositories falls into three
classifications (solely for the purpose of this discussion):</p>
<h4 id="code-developed-at-apache-under-apache-governance-licensed-to-apache-by-its-developers-under-a-contributor-license-agreement-distributed-by-apache-and-licensed-to-downstream-users-under-the-apache-license">Code developed at Apache under Apache governance, licensed to Apache by its developers under a Contributor License Agreement, distributed by Apache, and licensed to downstream users under the Apache license<a class="headerlink" href="#code-developed-at-apache-under-apache-governance-licensed-to-apache-by-its-developers-under-a-contributor-license-agreement-distributed-by-apache-and-licensed-to-downstream-users-under-the-apache-license" title="Permalink">&para;</a></h4>
<p>This represents most code at Apache. The code contains a standard Apache license
header which refers to the standard Apache license in the distribution.</p>
<h4 id="code-developed-elsewhere-licensed-to-apache-under-a-software-grant-agreement-incorporated-into-apache-projects-distributed-by-apache-and-licensed-to-downstream-users-under-the-apache-license">Code developed elsewhere, licensed to Apache under a Software Grant Agreement, incorporated into Apache projects, distributed by Apache, and licensed to downstream users under the Apache license<a class="headerlink" href="#code-developed-elsewhere-licensed-to-apache-under-a-software-grant-agreement-incorporated-into-apache-projects-distributed-by-apache-and-licensed-to-downstream-users-under-the-apache-license" title="Permalink">&para;</a></h4>
<p>This is code that is brought into Apache for future development as part
of an Apache project. The headers on all files are changed to the standard Apache
header. Most incubator projects start with a repository of externally-developed code and the
Intellectual Property Clearance process is done as part of incubation.</p>
<p>Code that is originally developed elsewhere and is brought into Apache for
future development as part of an existing project must have the Intellectual Property
Clearance process done explicitly by the PMC of the receiving project, under the
auspices of the Incubator PMC, which must approve the process.</p>
<h4 id="code-developed-elsewhere-received-under-a-category-a-license-incorporated-into-apache-projects-distributed-by-apache-and-licensed-to-downstream-users-under-its-original-license">Code developed elsewhere, received under a Category A license, incorporated into Apache projects, distributed by Apache, and licensed to downstream users under its original license<a class="headerlink" href="#code-developed-elsewhere-received-under-a-category-a-license-incorporated-into-apache-projects-distributed-by-apache-and-licensed-to-downstream-users-under-its-original-license" title="Permalink">&para;</a></h4>
<p>This code retains its external identity and is incorporated into an Apache project
for convenience, to avoid referencing an external repository whose contents are not
under control of the project. The code retains its original license, and distribution as
part of the Apache project explicitly calls out the license. The code retains its original
headerm, which refers to its own license in the distribution. If changes are made to the
code while at Apache, the standard Apache header is prepended to each changed
file. Additionally, any legally-required notices related to the code are published in the
distribution.</p>
<h1 id="resources">Another place to Look<a class="headerlink" href="#resources" title="Permalink">&para;</a></h1>
<p>If you have questions about The Apache Software Foundation, its projects,
or its software, we recommend the following link for more information or
assistance:</p>
<ul>
<li>The Foundation pre-FAQ: <a href="/foundation/preFAQ.html">Contact Apache
FAQ</a></li>
</ul>
<p>If you have a question specifically about the Apache license or
distribution of Apache software, and it has not been answered by this page,
<a href="/legal/">contact the Legal Affairs Committee</a>.</p>

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