<!DOCTYPE html><html lang="en">
<head>
        <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
        <title>Apache Sling :: Project Information</title>
        <link rel="icon" href="/favicon.ico"/>
        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.5/css/bulma.min.css"/>
        <link rel="stylesheet" href="/res/css/site.css"/>
        <script src='https://www.apachecon.com/event-images/snippet.js'></script><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/default.min.css"/>
        <script src='https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js'></script><script>
            hljs.initHighlightingOnLoad();
        </script>
        
	<!-- Matomo Web Analytics -->
	<script>
	var _paq = window._paq = window._paq || [];
	/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
	/* We explicitly disable cookie tracking to avoid privacy issues */
	_paq.push(['disableCookies']); 
	_paq.push(['trackPageView']);
	_paq.push(['enableLinkTracking']);
	(function() {
	  var u="https://matomo.privacy.apache.org/";
	  _paq.push(['setTrackerUrl', u+'matomo.php']);
	  _paq.push(['setSiteId', '6']);
	  var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
	  g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
	})();
	</script>
	<!-- End Matomo Code -->
	<link href='/pagefind/pagefind-ui.css' rel='stylesheet'><script src='/pagefind/pagefind-ui.js' type='text/javascript'></script>
	<script>
    window.addEventListener('DOMContentLoaded', (event) => {
        new PagefindUI({ element: "#searchbox" });
    });
	</script>
	
    </head>    <body>
        <div class="section">
            <div class="level is-marginless">
<div class="logo">
                    <a href="https://sling.apache.org">
                        <img border="0" alt="Apache Sling" src="/res/logos/sling.svg"/>
                    </a>
                </div><div class="header">
                    <a href="https://www.apache.org">
                        <img border="0" alt="Apache" src="/res/logos/apache.png"/>
                    </a>
                </div>                
            </div><section class="searchbox level is-marginless">
                <div id="searchbox"></div>
            </section><div class="columns is-gapless">
                <div class="column is-narrow sidemenu">
<div class="container">
                        <nav class="menu">
                            <ul class="menu-list box is-shadowless is-marginless">
                                <li>
                                    <p class="menu-label">
                                        <strong>Documentation</strong>
                                    </p><ul>
                                        <li><a href="/documentation.html">Overview</a></li><li><a href="/documentation/getting-started.html">Getting Started</a></li><li><a href="/documentation/the-sling-engine.html">The Sling Engine</a></li><li><a href="/documentation/development.html">Development</a></li><li><a href="/documentation/bundles.html">Bundles</a></li><li><a href="/documentation/tutorials-how-tos.html">Tutorials &amp; How-Tos</a></li><li><a href="/components/">Maven Plugins</a></li><li><a href="/documentation/configuration.html">Configuration</a></li>
                                    </ul>
                                </li><li>
                                    <p class="menu-label">
                                        <strong>API Docs</strong>
                                    </p><ul>
                                        <li><a href="/apidocs/sling12/index.html">Sling 12</a></li><li><a href="/apidocs/sling11/index.html">Sling 11</a></li><li><a href="/apidocs/sling10/index.html">Sling 10</a></li><li><a href="/apidocs/sling9/index.html">Sling 9</a></li><li><a href="/documentation/apidocs.html">All versions</a></li>
                                    </ul>
                                </li><li>
                                    <p class="menu-label">
                                        <strong>Support</strong>
                                    </p><ul>
                                        <li><a href="https://s.apache.org/sling.wiki">Wiki</a></li><li><a href="https://s.apache.org/sling.faq">FAQ</a></li><li><a href="/sitemap.html">Sitemap</a></li>
                                    </ul>
                                </li><li>
                                    <p class="menu-label">
                                        <strong>Project Info</strong>
                                    </p><ul>
                                        <li><a href="/downloads.cgi">Downloads</a></li><li><a href="https://www.apache.org/licenses/">License</a></li><li><a href="/news.html">News</a></li><li><a href="/releases.html">Releases</a></li><li><a href="https://issues.apache.org/jira/browse/SLING">Issue Tracker</a></li><li><a href="/links.html">Links</a></li><li><a href="/contributing.html">Contributing</a></li><li><a href="/project-information.html">Project Information</a></li><li><a href="/project-information/security.html">Security</a></li>
                                    </ul>
                                </li><li>
                                    <p class="menu-label">
                                        <strong>Source</strong>
                                    </p><ul>
                                        <li><a href="/repolist.html">Repositories</a></li><li><a href="https://gitbox.apache.org/repos/asf?s=sling">Git at Apache</a></li>
                                    </ul>
                                </li><li>
                                    <p class="menu-label">
                                        <strong>Apache Software<br>Foundation</strong>
                                    </p><ul>
                                        <li><a href="https://www.apache.org/foundation/thanks.html">Thanks!</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html">Become a Sponsor</a></li><li><a href="https://www.apache.org/foundation/buy_stuff.html">Buy Stuff</a></li>
                                    </ul>
                                </li><li>
                                    <a class="acevent" data-format="square" data-event="random"></a>
                                </li><li>
                                    <a href="https://apache.org/foundation/contributing.html" class="column">
                                        <img border="0" alt="Support the Apache Software Foundation!" src="/res/images/SupportApache-small.png" width="125"/>
                                    </a>
                                </li>
                            </ul>
                        </nav>
                    </div>                    
                </div><div class="column main">
                    <div class="box is-shadowless is-marginless">
                        <div class="level">
                            <div class="pagenav">
<div class="breadcrumb">
                                    <ul>
                                        <li>
                                            <a href="/">
                                                Home
                                            </a>
                                        </li>
                                    </ul>
                                </div>                                
                            </div><div class="tags">
                                <span class="tag">
                                    <a href="/tags/mailinglists.html">
                                        mailinglists
                                    </a>
                                </span><span class="tag">
                                    <a href="/tags/issuetracker.html">
                                        issuetracker
                                    </a>
                                </span><span class="tag">
                                    <a href="/tags/sourcecode.html">
                                        sourcecode
                                    </a>
                                </span><span class="tag">
                                    <a href="/tags/git.html">
                                        git
                                    </a>
                                </span><span class="tag">
                                    <a href="/tags/github.html">
                                        github
                                    </a>
                                </span>
                            </div>
                        </div><h1 class="title">
                            Project Information
                        </h1><nav class="menu">
                            <ul class="menu-list box is-shadowless is-paddingless">
                                <li id="generatedToC">
                                    <p class="menu-label">
                                        <strong>Table of Contents</strong>
                                    </p>
                                </li>
                            </ul>
                        </nav><script src='/res/jquery-3.2.1.min.js' type='text/javascript'></script><script src='/res/tocjs-1-1-2.js' type='text/javascript'></script><script type='text/javascript'>$(document).ready(function() { $('#generatedToC').toc({'selector':'h1[class!=title],h2,h3','ulClass':'menu-list'}); } );</script><div class="content is-marginless">
<div class="row" data-pagefind-body="true"><div><section><p>This document provides an overview of the various documents and links that are part of this project's general information:</p>
<ul>
<li><a href="/project-information/apache-sling-community-roles-and-processes.html">Community Roles and Processes</a></li>
<li><a href="/project-information/project-team.html">Project Team</a></li>
<li><a href="#mailing-lists">Mailing Lists</a></li>
<li><a href="#issue-tracking">Issue Tracking</a></li>
<li><a href="#source-repository">Source Repository</a></li>
<li><a href="#continuous-integration">Continuous Integration</a></li>
<li><a href="/project-information/project-license.html">Project License</a></li>
<li><a href="#documentation-repository">Documentation Repository</a></li>
</ul>
<h2><a href="#mailing-lists" id="mailing-lists">Mailing Lists</a></h2>
<p>The following English-speaking mailing lists have been established for this project. For each list, there is a subscribe, unsubscribe, and an archive link.</p>
<p>The Sling Users List is the preferred way of getting help with Sling. However, you can also <a href="http://stackoverflow.com/questions/ask?tags=sling">Ask a Sling question on StackOverflow</a> if you prefer.</p>
<p>Please subscribe before posting messages to these lists. If you don't, your messages are likely to be delayed, as we need to moderate them, or maybe even become lost in the flow of spam that we get from non-subscribed senders.</p>
<table>
<thead>
<tr><th> Name </th><th> Subscribe </th><th> Unsubscribe </th><th> Post </th><th> ASF Archive </th><th> Other Archives </th></tr>
</thead>
<tbody>
<tr><td> Users List </td><td> <a href="mailto:users-subscribe@sling.apache.org">Subscribe</a> </td><td> <a href="mailto:users-unsubscribe@sling.apache.org">Unsubscribe</a> </td><td> users at sling.apache.org </td><td> <a href="https://lists.apache.org/list.html?users@sling.apache.org">lists.apache.org</a> </td><td> <a href="http://www.mail-archive.com/users@sling.apache.org/">www.mail-archive.com</a> </td></tr>
<tr><td> Developers List </td><td> <a href="mailto:dev-subscribe@sling.apache.org">Subscribe</a> </td><td> <a href="mailto:dev-unsubscribe@sling.apache.org">Unsubscribe</a> </td><td> dev at sling.apache.org </td><td> <a href="https://lists.apache.org/list.html?dev@sling.apache.org">lists.apache.org</a> </td><td> <a href="http://www.mail-archive.com/dev@sling.apache.org/">www.mail-archive.com</a> </td></tr>
<tr><td> Commit Events List </td><td> <a href="mailto:commits-subscribe@sling.apache.org">Subscribe</a> </td><td> <a href="mailto:commits-unsubscribe@sling.apache.org">Unsubscribe</a> </td><td> <automated> </td><td> <a href="https://lists.apache.org/list.html?commits@sling.apache.org">lists.apache.org</a> </td><td> <a href="http://www.mail-archive.com/commits@sling.apache.org/">www.mail-archive.com</a> </td></tr>
</tbody>
</table>
<h2><a href="#issue-tracking" id="issue-tracking">Issue Tracking</a></h2>
<p>This project uses JIRA a J2EE-based, issue tracking and project management application. Issues, bugs, and feature requests should be submitted to the following issue tracking system for this project.</p>
<p>The issue tracker can be found at <a href="http://issues.apache.org/jira/browse/SLING">http://issues.apache.org/jira/browse/SLING</a></p>
<h2><a href="#source-repository" id="source-repository">Source Repository</a></h2>
<p>This project uses Git to manage its source code. The source code is hosted on the <a href="https://gitbox.apache.org/repos/asf">ASF GitBox setup</a> and replicated to <a href="https://github.com/apache/">Apache organisation on GitHub</a>. As a developer you may push to either GitBox or GitHub. Note however that for GitHub to work you need to set up your GitHub account with two-factor authentication from <a href="https://gitbox.apache.org/">the main GitBox page</a>.</p>
<p>To check out the Sling source code, see the instructions from  <a href="/documentation/development/getting-and-building-sling.html#getting-the-sling-source">Getting and building Sling</a>.</p>
<p>For additional information see <a href="https://cwiki.apache.org/confluence/display/SLING/Using+Git+with+Sling">Using Git with Sling</a>.</p>
<h3><a href="#web-access" id="web-access">Web Access</a></h3>
<p>The source code can be accessed using either the GitHub or GitBox setup.</p>
<p>To list all modules on GitHub you can use this search query: <a href="https://github.com/apache/?q=sling">https://github.com/apache/?q=sling</a>, or see our <a href="/repolist.html">list of repositories</a> on this website.</p>
<h3><a href="#attic-deprecated-modules" id="attic-deprecated-modules">Attic / deprecated modules</a></h3>
<p>See <a href="/documentation/development/deprecating-sling-modules.html">Deprecating Sling Modules</a> for how we manage module deprecation.</p>
<h2><a href="#continuous-integration" id="continuous-integration">Continuous Integration</a></h2>
<p>The <a href="https://cwiki.apache.org/confluence/display/SLING/Sling+Jenkins+Setup">Sling+Jenkins+Setup</a> wiki page describes the setup that runs Sling builds automatically (triggered by commits) on the <a href="https://builds.apache.org/">ASF's Jenkins instance</a>.</p>
<p>The <a href="https://builds.apache.org/view/Sling-Monitor/">Sling Monitor</a> page lists jobs that need attention.</p>
<p>The <a href="https://builds.apache.org/job/Sling/">Sling Folder</a> page lists all jobs.</p>
<p>In any case you wish to customize the jenkins build of a module, just add a <code>.sling-module.json</code> at the root of your project, with overriden values listed in Jenkins <a href="https://cwiki.apache.org/confluence/display/SLING/Sling+module+descriptor">Sling module descriptor</a>.</p>
<h2><a href="#documentation-repository" id="documentation-repository">Documentation Repository</a></h2>
<p>The documentation website, in fact the very page that you are reading right now, is located at <a href="https://gitbox.apache.org/repos/asf?p=sling-site.git">The Apache Sling Site Project</a>. You can contribute without being an official project committer.</p>
<h3><a href="#submitting-a-patch-to-the-sling-site-project" id="submitting-a-patch-to-the-sling-site-project">Submitting a patch to the Sling Site project</a></h3>
<h4><a href="#create-a-git-patch" id="create-a-git-patch">Create a Git patch:</a></h4>
<ol>
<li>Locally check out the git repository.</li>
<li>Edit the documentation, don't commit.</li>
<li>From the command line <code>git diff &gt; site.patch</code>.</li>
</ol>
<h4><a href="#submit-your-changes" id="submit-your-changes">Submit your changes:</a></h4>
<ol>
<li>Navigate to the <a href="https://issues.apache.org/jira/browse/SLING">Jira issue tracker</a>.</li>
<li>Create an account and/or login.</li>
<li>Create a ticket, enter a description and choose <em>Documentation</em> for <em>Components</em>.</li>
<li>Select the ticket, click <em>more</em>, select <em>attach files</em> and attach your Git patch.</li>
</ol>
<p>Additionally there is a Github hosted <a href="https://github.com/apache/sling-site">Apache Sling Site Project Mirror</a> which can be used to submit changes as well.</p>
<h3><a href="#submitting-a-pull-request-to-the-github-sling-site-mirror" id="submitting-a-pull-request-to-the-github-sling-site-mirror">Submitting a pull request to the GitHub Sling Site mirror</a></h3>
<h4><a href="#create-the-pull-request" id="create-the-pull-request">Create the Pull Request:</a></h4>
<ol>
<li>Navigate to the <a href="https://github.com/apache/sling-site">Apache Sling Site Project Mirror</a>.</li>
<li>Create an account and/or login.</li>
<li>Edit the documentation using the edit icon <em>Fork this project and edit this file</em>.</li>
<li>Once all changes are done click <em>New pull request</em>.</li>
<li>Select <em>base fork:apache/sling-site</em> <em>base:master</em> as the project to push to</li>
</ol>
</section></div></div><div data-pagefind-body="true" data-pagefind-weight="7.0" style="display:none;"> - ( Project Information )</div>                            
                        </div>
                    </div>
                </div>
            </div><footer class="footer">
                <div class="content has-text-centered is-small">
<div class="editpagelink">
                        This page can be edited on GitHub at <a href="https://github.com/apache/sling-site/edit/master/src/main/jbake/content/project-information.md">
                            content/project-information.md
                        </a>
                    </div>                    <div class="revisionInfo">
                        Last modified by <span class="author">Bertrand Delacretaz</span> on <span class="comment">2021-07-07</span>
                    </div><p>
                        Apache Sling, Sling, Apache, the Apache feather logo, and the Apache Sling project
    logo are trademarks of The Apache Software Foundation. All other marks mentioned 
    may be trademarks or registered trademarks of their respective owners.
                    </p><p>
                        Copyright © 2007-2024<a href="https://www.apache.org/">
                            The Apache Software Foundation
                        </a>|<a href="https://privacy.apache.org/policies/privacy-policy-public.html">
                            Privacy Policy
                        </a>
                    </p>
                </div>
            </footer>
        </div>
    </body>
</html>