blob: 67b66c25d5b42560eb04dce75aad208860374073 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<title>Distribution Guidelines</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="">
<meta name="author" content="">
<meta name="keywords" content="">
<meta name="generator" content="JBake">
<!-- Le styles -->
<link href="../css/incubator.css" rel="stylesheet">
<link href="../css/bootstrap.css" rel="stylesheet">
<link href="../css/asciidoctor.css" rel="stylesheet">
<link href="../css/base.css" rel="stylesheet">
<link href="../css/prettify.css" rel="stylesheet">
<!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
<!--[if lt IE 9]>
<script src="../js/html5shiv.min.js"></script>
<![endif]-->
<!-- Fav and touch icons -->
<!--<link rel="apple-touch-icon-precomposed" sizes="144x144" href="../assets/ico/apple-touch-icon-144-precomposed.png">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="../assets/ico/apple-touch-icon-114-precomposed.png">
<link rel="apple-touch-icon-precomposed" sizes="72x72" href="../assets/ico/apple-touch-icon-72-precomposed.png">
<link rel="apple-touch-icon-precomposed" href="../assets/ico/apple-touch-icon-57-precomposed.png">-->
<link rel="shortcut icon" href="https://www.apache.org/favicon.ico">
</head>
<body onload="prettyPrint()">
<div id="wrap">
<!-- Fixed navbar -->
<div class="navbar navbar-default navbar-fixed-top" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="/"><i class="icon-home"></i>Apache Incubator</a>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Policies <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="/policy/incubation.html">Incubation Policy</a></li>
<li><a href="/ip-clearance/">Intellectual Property Clearance</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Proposals <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="/guides/proposal.html">A Guide To Proposal Creation</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Podling Guides <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="/cookbook">Cookbook</a></li>
<li><hr><a href="/guides/roles_and_responsibilities.html">Roles and Responsibilities</a></li>
<li><a href="/guides/committer.html">Committers</a></li>
<li><a href="/guides/ppmc.html">Podling Project Management Committee</a></li>
<li><a href="/guides/community.html">Guide to Successful Community Building</a></li>
<li><hr><a href="/guides/branding.html">Incubator Branding Guide</a></li>
<li><a href="/guides/publicity.html">Podling Publicity/Media Guidelines</a></li>
<li><a href="/guides/press-kit.html">Podling Press Kit</a></li>
<li><hr><a href="/guides/transitioning_asf.html">Initial Code Import</a></li>
<li><a href="/guides/names.html">Podling Name Search Guide</a></li>
<li><a href="/guides/ip_clearance.html">Podling IP Clearance</a></li>
<li><hr><a href="/guides/sites.html">Podling Websites</a></li>
<li><a href="/guides/podling_sourcecontrol.html">Podling Source Control</a></li>
<li><hr><a href="/guides/releasemanagement.html">Release Management</a></li>
<li><a href="/guides/distribution.html">Release Distribution</a></li>
<li><hr><a href="/guides/graduation.html">Guide to Successful Graduation</a></li>
<li><a href="/guides/retirement.html">Guide to Retirement</a></li>
<li><a href="/guides/transferring.html">Transferring Resources out of the Incubator</a></li>
<li><hr><a href="/projects/#current">Current Podlings</a></li>
<li><a href="/clutch/">Clutch Report</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">PMC Guides <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="/guides/participation.html">Guide to Participation</a></li>
<li><a href="/guides/lists.html">Incubator Mailing Lists Guide</a></li>
<li><a href="/guides/chair.html">Incubator Chair Guide</a></li>
<li><a href="/guides/mentor.html">Mentors' Guide</a></li>
<li><hr><a href="/guides/website.html">Updating the top-level Incubator website</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="https://www.apache.org/foundation/how-it-works.html">How Apache Works</a></li>
<li><a href="https://www.apache.org/dev/">Developer Documentation</a></li>
<li><a href="https://www.apache.org/foundation/">Foundation</a></li>
<li><a href="https://www.apache.org/legal/">Legal</a></li>
<li><hr><a href="https://www.apache.org/licenses/">License</a></li>
<li><a href="https://www.apache.org/security/">Security</a></li>
<li><a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
<li><a href="https://www.apache.org/foundation/thanks.html">Thanks</a></li>
<li><a href="https://www.apache.org/events/current-event">Current Events</a></li>
</ul>
</li>
<li><a href="/faq.html">FAQs</a></li>
</ul>
</div><!--/.nav-collapse -->
</div>
</div>
<div class="container">
<div class="row">
<div class="col-md-4 vcenter"><a href="https://www.apache.org/"><img src="https://www.apache.org/img/asf_logo.png" alt="The Apache Software Foundation" border="0" style="margin-top: 2px" width="200"></a></div>
<div class="col-md-4 vcenter"><a href="/"><img src="https://incubator.apache.org/images/incubator_feather_egg_logo_sm.png" alt="The Apache Software Foundation Incubator" border="0" style="margin-top: 2px" width="256"></a></div>
<div class="col-md-4 vcenter"><a href="https://www.apache.org/foundation/contributing.html"><img src="https://www.apache.org/images/SupportApache-small.png" style="margin-left: 92px" height="64" width="64"></a></div>
</div>
</div>
<div class="top-container container">
<div class="page-header">
<h1>Guide :: Distribution Guidelines</h1>
</div>
<div class="article-body">
Estimated Reading Time: <span class="eta"></span>
<p><div id="toc" class="toc">
<div id="toctitle">Table of Contents</div>
<ul class="sectlevel1">
<li><a href="#motivation">Motivation</a></li>
<li><a href="#release_platforms">Release Platforms</a></li>
<li><a href="#maven_distribution">Maven distribution</a></li>
<li><a href="#github">GitHub</a></li>
<li><a href="#docker">Docker</a></li>
<li><a href="#npm">NPM</a></li>
<li><a href="#pypi">PyPI</a></li>
</ul>
</div>
<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>Guidelines to help you comply with the ASF distribution policies</p>
</div>
<div class="paragraph">
<p>One of the goals of incubation is to teach podling communities how to build and distribute ASF-compliant releases. A podling community should begin to familiarise themselves with the ASF policies for distribution. Those policies can be found at <a href="https://infra.apache.org/release-distribution">https://infra.apache.org/release-distribution</a>. The following will help you comply with current policy.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="motivation">Motivation</h2>
<div class="sectionbody">
<div class="paragraph">
<p>The ASF is responsible for providing software which can be used in accordance with our license. Code or artifacts built from code without clean intellectual property can mean that code that doesn&#8217;t belong to us slips into users projects. This would expose our users and the ASF to the risk of lawsuit. One purpose of the incubating process and its release process is to ensure that our users can trust our projects. Releasing artifacts built from code that hasn&#8217;t been approved by the IPMC circumvents this process. It robs the PPMC of learning opportunities. It increases the likelihood that we might accidentally betray the trust of our users.
At the same time binary artifacts on distribution platforms are important to our users for a wide variety of reasons. This document is intended to balance these priorities. If you believe you have a case in which this document is inadequate to your situation please bring this to our attention by mailing either <a href="mailto:general@incubator.apache.org">general@incubator.apache.org</a> or <a href="mailto:private@incubator.apache.org">private@incubator.apache.org</a></p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="release_platforms">Release Platforms</h2>
<div class="sectionbody">
<div class="paragraph">
<p>In addition to the Apache mirror system incubating projects may distribute artifacts on other platforms as long as they follow these general guidelines:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Source releases must be placed in the Apache mirror system.</p>
</li>
<li>
<p>Apache projects are always released in source form, but additionally can make convenience binaries for end users.</p>
</li>
<li>
<p>Convenience binaries must be made from IPMC approved ASF releases.</p>
</li>
<li>
<p>Convenience binaries need to follow licensing policy and not include any category X licensed software.</p>
</li>
<li>
<p>Convenience binaries should be signed and have hashes to verify their contents.</p>
</li>
<li>
<p>Release candidates, nightlys and snapshots must not be advertised to the general public.</p>
</li>
<li>
<p>Apache project branding and naming needs to be respected.</p>
</li>
<li>
<p>It should be clear that the artifacts are under the ALv2 license.</p>
</li>
<li>
<p>An incubating disclaimer must be clearly displayed where the artifacts are made available.</p>
</li>
<li>
<p>All PPMC members must have access to administer the platform and the credentials recorded where any PPMC member can access them.</p>
</li>
<li>
<p>Where possible these artifacts should not be referred to as releases.</p>
</li>
<li>
<p>Where possible use platforms officially supported by Infra.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>All of the above SHOULD be followed. The podling can ask the IPMC for permission to do otherwise.</p>
</div>
<div class="paragraph">
<p><strong>Currently only Github, Dockerhub, and Maven are officially supported by Infra.</strong></p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="maven_distribution">Maven distribution</h2>
<div class="sectionbody">
<div class="paragraph">
<p>To comply with ASF release and distributions please ensure the following:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>The project description should include the incubator disclaimer.</p>
</li>
<li>
<p>Artifacts should be under the groupId of <strong>org.apache.&lt;project&gt;</strong>.</p>
</li>
<li>
<p>The official release artifacts should not contain unapproved code.</p>
</li>
<li>
<p>Release candidates, nightlys or snapshots need to be clearly marked by adding suffix in its version, like <strong>org.apache.&lt;project&gt;.&lt;component&gt;:0.1-SNAPSHOT</strong></p>
</li>
<li>
<p>The POM file should set the ALv2 license as its license, Apache &lt;project&gt; as its developer name, and proper source control information.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Additional guidelines and process for releasing Maven components can be found <a href="https://infra.apache.org/publishing-maven-artifacts.html">on this infra page</a>.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="github">GitHub</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Artifacts show up on <strong><a href="https://github.com/apache/incubator-&lt;project&gt;/releases" class="bare">https://github.com/apache/incubator-&lt;project&gt;/releases</a></strong>.
To comply with ASF release and distributions please ensure the following:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Any releases need to include the text of the incubation disclaimer.</p>
</li>
<li>
<p>The release page must not contain release candidates, nightly or snapshots releases that have not been tagged as prereleases. (Ignoring that GitHub also displays tags on the release page.)</p>
</li>
<li>
<p>Any releases that exist before coming into incubation need to be clearly described on the release page and tagged as such on <strong><a href="https://github.com/apache/incubator-&lt;project&gt;/tags" class="bare">https://github.com/apache/incubator-&lt;project&gt;/tags</a></strong>.</p>
</li>
<li>
<p>Release candidates, nightlys or snapshots releases can be tagged and appear on <strong><a href="https://github.com/apache/incubator-&lt;project&gt;/tags" class="bare">https://github.com/apache/incubator-&lt;project&gt;/tags</a></strong>.</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="docker">Docker</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Artifacts need to be placed in <strong><a href="https://hub.docker.com/r/apache/&lt;project&gt" class="bare">https://hub.docker.com/r/apache/&lt;project&gt</a>;</strong> or <strong><a href="https://hub.docker.com/u/apache&lt;project&gt;/&lt;project&gt" class="bare">https://hub.docker.com/u/apache&lt;project&gt;/&lt;project&gt</a>;</strong>.
To comply with ASF release and distributions please ensure the following:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>The overview should include the incubator disclaimer.</p>
</li>
<li>
<p>The docker file (if it exists) should include an ASF header.</p>
</li>
<li>
<p>The docker file (if it exists) should include the incubator disclaimer.</p>
</li>
<li>
<p>docker pull apache/&lt;project&gt; should not install an artifact containing unapproved code.</p>
</li>
<li>
<p>Release candidates, nightlys or snapshots need to be clearly tagged.</p>
</li>
<li>
<p>The latest tag should not point to an artifact containing unapproved code e.g. to master or dev branches or to a RC or snapshot.</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="npm">NPM</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Artifacts show up on <strong><a href="https://www.npmjs.com/package/apache-&lt;project&gt" class="bare">https://www.npmjs.com/package/apache-&lt;project&gt</a>;</strong> version page.</p>
</div>
<div class="ulist">
<ul>
<li>
<p>To comply with ASF release and distributions please ensure the following:</p>
</li>
<li>
<p>The readme tab needs to include the text of the incubation disclaimer.</p>
</li>
<li>
<p>npm install apache&lt;project&gt; should not install an artifact containing unapproved code.</p>
</li>
<li>
<p>The latest release should not point to an artifact containing unapproved code e.g. a release candidate or snapshot.</p>
</li>
<li>
<p>Release candidates, nightlys or snapshots need to be clearly tagged.</p>
</li>
<li>
<p>The license field should display the ALv2 license.</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="pypi">PyPI</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Artifacts need to be placed in <strong><a href="https://pypi.org/project/apache-&lt;project&gt" class="bare">https://pypi.org/project/apache-&lt;project&gt</a>;</strong>.
To comply with ASF release and distributions please ensure the following:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>The project description should include the incubator disclaimer.</p>
</li>
<li>
<p>pip install apache&lt;project&gt; should not install an artifact containing unapproved code.</p>
</li>
<li>
<p>Release candidates, nightlys or snapshots need to be clearly tagged as pre-release on <strong><a href="https://pypi.org/project/apache-&lt;project&gt;/#history" class="bare">https://pypi.org/project/apache-&lt;project&gt;/#history</a></strong></p>
</li>
<li>
<p>The latest version should not point to an artifact containing unapproved code e.g. to a release candidate or snapshot</p>
</li>
<li>
<p>The meta license field should display the ALv2 license.</p>
</li>
</ul>
</div>
</div>
</div></p>
</div>
</div>
<div id="push"></div>
</div>
<div id="footer">
<div class="container">
<p class="muted credit">&copy; 2021 The Apache Software Foundation | Licensed under the Apache License, Version 2.0.<br/>
Apache Incubator, Apache, the Apache feather logo, and the Apache Incubator project logo are trademarks or registered trademarks of The Apache Software Foundation.</p>
</div>
</div>
<script src="../js/jquery-1.11.1.min.js"></script>
<script src="../js/bootstrap.min.js"></script>
<script src="../js/prettify.js"></script>
<script src="../js/readingTime.js"></script>
<script src="../js/incubator.js"></script>
</body>
</html>