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

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