blob: 8cbef02928b0018ff29afc0db7761ad7e6993d4f [file] [log] [blame]
<!DOCTYPE html>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You 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
http://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.
-->
<html lang="en">
<head>
<meta charset="utf-8"/>
<title>Contributing to Apache Shiro | Apache Shiro</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="keywords" content='documentation,overview,features'>
<meta name="generator" content="JBake">
<meta name="google-site-verification" content="QIax6uT5UX3enoU0G8Pz2pXbQ45KaQuHZ3nCh9V27mw">
<meta name="google-site-verification" content="ecFap6dWJgS_GCCtxmJQJ_nFYQhM6EgSpBPZDU7xsCE">
<meta name="google-site-verification" content="gBTYOG8lMfNb_jrWrH3kFbudpEs_WrAJ2lb2-zLRaso"/>
<meta name="msvalidate.01" content="0B57EB46CBFAD8FD45008D2DB6B6C68C">
<meta property="og:title" content="Contributing to Apache Shiro | Apache Shiro"/>
<meta property="og:type" content="article"/>
<meta name="twitter:card" content="summary" />
<meta name="twitter:site" content="@ApacheShiro" />
<meta property="article:modification_time" content="2010-03-18T00:00:00Z"/>
<meta property="article:tag" content='documentation'/>
<meta property="article:tag" content='overview'/>
<meta property="article:tag" content='features'/>
<meta property="og:locale" content="en_US" />
<meta property="og:url" content='https://shiro.apache.org/how-to-contribute.html'/>
<meta property="og:image" content='images/shiro-featured-image.png'/>
<meta property="og:image:width" content='1200'/>
<meta property="og:image:height" content='628'/>
<meta property="og:site_name" content="Apache Shiro"/>
<!-- Le styles -->
<link href="css/bootstrap.min.css" rel="stylesheet">
<link href="bootstrap-icons-1.5.0/bootstrap-icons.css" rel="stylesheet">
<link href="css/asciidoctor.css" rel="stylesheet">
<link href="css/base.css" rel="stylesheet">
<link href="highlight.js-11.2.0/styles/default.min.css" rel="stylesheet">
<link href="css/gh-pages/gh-fork-ribbon.css" rel="stylesheet"/>
<!-- 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="favicon.ico">
<!-- Matomo -->
<script>
var _paq = window._paq = window._paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
_paq.push(['disableCookies']);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="//matomo.privacy.apache.org/";
_paq.push(['setTrackerUrl', u+'matomo.php']);
_paq.push(['setSiteId', '2']);
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 -->
</head>
<body>
<div id="top-bar"></div>
<a class="github-fork-ribbon right-top" href="https://github.com/apache/shiro" title="Fork me on GitHub">Fork me on GitHub</a>
<div id="wrap">
<div class="masthead">
<p class="lead">
<a href="index.html"><img src="images/apache-shiro-logo.png" style="height:100px; width:auto; vertical-align: bottom; margin-top: 20px;" alt="Apache Shiro Logo"></a>
<span class="tagline">Simple. Java. Security.</span>
<a class="pull-right" href="https://www.apache.org/events/current-event.html">
<img style="padding-top: 8px" src="https://www.apache.org/events/current-event-125x125.png" alt="Apache Software Foundation Event Banner"/>
</a>
</p>
</div>
<!-- Fixed navbar -->
<nav class="navbar navbar-expand-lg navbar-light bg-light shadow-sm mb-4">
<div class="container-fluid">
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link" href="get-started.html">Get Started</a>
</li>
<li class="nav-item">
<a class="nav-link" href="documentation.html">Docs</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown-webapps" role="button" data-bs-toggle="dropdown" aria-expanded="false">
Web Apps
</a>
<ul class="dropdown-menu" aria-labelledby="navbarDropdown-webapps">
<li><a class="dropdown-item" href="web.html">General</a></li>
<li><a class="dropdown-item" href="jaxrs.html">JAX-RS</a></li>
<li><a class="dropdown-item" href="jakarta-ee.html">Jakarta EE</a></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item" href="web-features.html">Features</a></li>
</ul>
</li>
<li><a class="nav-link" href="features.html">Features</a></li>
<!-- integrations -->
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown-integrations" role="button" data-bs-toggle="dropdown" aria-expanded="false">
Integrations
</a>
<ul class="dropdown-menu" aria-labelledby="navbarDropdown-integrations">
<li><a class="dropdown-item" href="spring-boot.html">Spring</a></li>
<li><a class="dropdown-item" href="guice.html">Guice</a></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item" href="integration.html">Third-Party Integrations</a></li>
</ul>
</li>
<!-- Community -->
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown-community" role="button" data-bs-toggle="dropdown" aria-expanded="false">
Community
</a>
<ul class="dropdown-menu" aria-labelledby="navbarDropdown-community">
<li><a class="dropdown-item" href="forums.html">Community Forums</a></li>
<li><a class="dropdown-item" href="mailing-lists.html">Mailing Lists</a></li>
<li><a class="dropdown-item" href="articles.html">Articles</a></li>
<li><a class="dropdown-item" href="news.html">News</a></li>
<li><a class="dropdown-item" href="events.html">Events</a></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item" href="community.html">More</a></li>
</ul>
</li>
<!-- About -->
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown-about" role="button" data-bs-toggle="dropdown" aria-expanded="false">
About
</a>
<ul class="dropdown-menu" aria-labelledby="navbarDropdown-about">
<li><a class="dropdown-item" href="about.html">About</a></li>
<li><a class="dropdown-item" href="privacy-policy.html">Privacy Policy</a></li>
<li><a class="dropdown-item" href="security-reports.html">Vulnerability Reports</a></li>
</ul>
</li>
</ul>
<ul class="d-flex justify-content-end navbar-nav mb-2 mb-lg-0">
<!-- The ASF -->
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown-asf" role="button" data-bs-toggle="dropdown" aria-expanded="false">
Apache Software Foundation
</a>
<ul class="dropdown-menu" aria-labelledby="navbarDropdown-asf">
<li><a class="dropdown-item" href="https://www.apache.org/">Apache Homepage</a></li>
<li><a class="dropdown-item" href="https://www.apache.org/licenses/">License</a></li>
<li><a class="dropdown-item" href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
<li><a class="dropdown-item" href="https://www.apache.org/foundation/thanks.html">Thanks</a></li>
<li><a class="dropdown-item" href="https://www.apache.org/security/">Security</a></li>
</ul>
</li>
</ul>
</div>
</div>
</nav>
<div class="page-header">
<h1>Contributing to Apache Shiro</h1>
</div>
<div class="admonitionblock tip">
<table>
<tbody>
<tr>
<td class="icon">
<div class="title">Handy Hint</div>
</td>
<td class="content">
<div class="title">Shiro v1 version notice</div>
<div class="paragraph">
<p>As of 2024-03-01, Shiro v1 will soon be superseded by v2.<p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="toc" class="toc">
<div id="toctitle">Table of Contents</div>
<ul class="sectlevel1">
<li><a href="#introduction">Introduction</a></li>
<li><a href="#help_wanted">Help Wanted</a></li>
<li><a href="#procedure_for_reporting_bugs_and_issues_and_enhancement_suggestions">Procedure for Reporting Bugs and Issues and Enhancement Suggestions</a></li>
<li><a href="#procedure_for_raising_development_issues">Procedure for Raising Development Issues</a>
<ul class="sectlevel2">
<li><a href="#mailing_list">Mailing List</a></li>
<li><a href="#issue_tracker">Issue Tracker</a></li>
<li><a href="#submitting_a_patch_through_github">Submitting a Patch Through GitHub</a></li>
</ul>
</li>
<li><a href="#git_usage">Git Usage</a>
<ul class="sectlevel2">
<li><a href="#getting_started_with_development">Getting Started with Development</a></li>
<li><a href="#getting_started_with_git">Getting Started with Git</a></li>
<li><a href="#review">Review</a></li>
</ul>
</li>
<li><a href="#git_committers">Git Committers</a></li>
<li><a href="#contributing_as_a_non_committer">Contributing as a Non-Committer</a></li>
<li><a href="#contribution_notes_and_tips">Contribution Notes and Tips</a>
<ul class="sectlevel2">
<li><a href="#links">Links</a></li>
<li><a href="#emails">Emails</a></li>
</ul>
</li>
</ul>
</div>
<div class="sect1">
<h2 id="introduction">Introduction</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Apache Shiro is an <a href="https://opensource.org/">Open Source</a> software security framework that performs authentication, authorization, cryptography and session management. The Shiro Project is a volunteer project released under a <a href="license.html">liberal license</a>. Anyone can participate and volunteer. No need to be an experienced developer or have great visions. Roll up your sleeves and come try, help is always welcome, and your input will be appreciated!</p>
</div>
<div class="paragraph">
<p>There are many ways how to contribute to this project, you can participate directly by:
* coding
* documenting
* answering questions
* proposing ideas
* reporting bugs
* suggesting bug-fixes
* etc.</p>
</div>
<div class="paragraph">
<p>Or you can participate with resource donations:
* staff time
* conference presentations
* publicity
* software
* general hardware/money <a href="https://www.apache.org/foundation/thanks.html">donations</a> via the <a href="https://www.apache.org">Apache Software Foundation</a></p>
</div>
<div class="paragraph">
<p>You can get your local working copy of the <a href="download.html">latest and greatest code</a> by following the directions in <a href="download.html">Download</a> page. Review the To Do list in the <a href="https://github.com/apache/shiro/issues">issue tracker</a> and then choose a task that interests you.</p>
</div>
<div class="paragraph">
<p>Perhaps you have noticed something that needs patching or have a new feature to contribute. Make the changes, do the testing, generate a patch, and discuss on the <a href="https://shiro.apache.org/mailing-lists.html">dev mailing list</a>. The process is easy and explained below. Subscribe to the mailing list!</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="help_wanted">Help Wanted</h2>
<div class="sectionbody">
<div class="paragraph">
<p>You can be a huge help by providing extra assistance in any of the following areas:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Assisting to improve documentation and the website.</p>
</li>
<li>
<p>Testing Shiro on various configurations and reporting back, especially Shiro&#8217;s less-frequently-used features.</p>
</li>
<li>
<p>New samples for the 'shiro-sample' to concisely describe and demonstrate features. Such samples can also enable automated testing.</p>
</li>
<li>
<p>Debugging - producing reproducible test cases and/or finding causes of bugs. Most bugs are <a href="#procedure_for_raising_development_issues">recorded as issues</a>.</p>
</li>
<li>
<p>Providing new use-cases and requirements.</p>
<div class="ulist">
<ul>
<li>
<p>If you think that Shiro does not quite meet your needs then tell us about it on the mailing list.</p>
</li>
</ul>
</div>
</li>
<li>
<p>Specifying, analyzing or designing new features - and beyond.</p>
<div class="ulist">
<ul>
<li>
<p>If you wish to get further involved with this, please join the <a href="https://shiro.apache.org/mailing-lists.html"><code>shiro-dev</code> mailing list</a>, install and try out Shiro and read some of the <a href="https://shiro.apache.org/mailing-lists.html">mail archives</a>.</p>
<div class="ulist">
<ul>
<li>
<p>Don&#8217;t just say "it should have XYZ" without reading anything first - because chances are, somebody has already thought of that feature.</p>
</li>
</ul>
</div>
</li>
</ul>
</div>
</li>
<li>
<p>Packaging easy-to-install packages (such as Red Hat Package Managers (RPM)) for the myriad of possible configurations out there.</p>
<div class="ulist">
<ul>
<li>
<p>The project does not maintain anything but the basic .zip and .tar.gz packages, but anyone is welcome to build their own specific packages and announce those on the mailing list.</p>
</li>
</ul>
</div>
</li>
<li>
<p>… and one more thing - don&#8217;t forget to tell everyone, how great Shiro is! The more people that know about and start to use Shiro, the larger the pool of potential contributors will be.</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="procedure_for_reporting_bugs_and_issues_and_enhancement_suggestions">Procedure for Reporting Bugs and Issues and Enhancement Suggestions</h2>
<div class="sectionbody">
<div class="paragraph">
<p>If you think that you have found a bug, or you have a suggestion for improvement, then please discuss it on one of the <a href="https://shiro.apache.org/mailing-lists.html">mailing lists</a>. However, please check our <a href="https://github.com/apache/shiro/issues">issue tracker</a> first as it may be already reported.</p>
</div>
<div class="paragraph">
<p>The <a href="https://github.com/apache/shiro/issues">Apache Shiro Issue Tracker</a> collates our known issues. Obviously not every issue is listed there. Some issues have been discussed on the mailing list but do not yet have an issue recorded.</p>
</div>
<div class="paragraph">
<p>The Roadmap is the best way to get an overview. The Unscheduled list also needs regular review, and committers will schedule some of those for the next release.</p>
</div>
<div class="paragraph">
<p>When creating a new issue, please provide a concise Summary Title and a short Description. Add further information as Comments and include links to the mail archives. The normal procedure is to discuss the issue on the mailing list and then add relevant notes to the issue tracker, otherwise it becomes cluttered.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="procedure_for_raising_development_issues">Procedure for Raising Development Issues</h2>
<div class="sectionbody">
<div class="paragraph">
<p>There are two methods for discussing development and submitting patches. So that everyone can be productive, it is important to know which method is appropriate for a certain situation and how to go about it without confusion.</p>
</div>
<div class="sect2">
<h3 id="mailing_list">Mailing List</h3>
<div class="paragraph">
<p>Research your topic thoroughly before beginning to discuss a new development issue on the <a href="https://shiro.apache.org/mailing-lists.html">mailing list</a>. Search and browse through the email archives - your issue may have been discussed before. Prepare your post clearly and concisely.</p>
</div>
<div class="paragraph">
<p>Most issues will be discovered, resolved, and then patched quickly via the developer mailing list. Larger issues, and ones that are not yet fully understood or are hard to solve, are destined for the issue tracker.</p>
</div>
</div>
<div class="sect2">
<h3 id="issue_tracker">Issue Tracker</h3>
<div class="paragraph">
<p>Experienced developers use the <a href="https://github.com/apache/shiro/issues">issue tracker</a> directly, as they are very sure when they have found a bug and when not. Less experienced users should first discuss it on the user or developer mailing list (as appropriate). Impatient people always enter everything into the issue tracker without caring if it is a bug of Shiro, or their own installation/configuration mistake - please do not do this.</p>
</div>
<div class="paragraph">
<p>Discuss an issue on the developers mailing list first to work out any details. After it is confirmed to be worthwhile, and you are clear about it, then submit the bug description or patch via Bug Tracking.</p>
</div>
<div class="paragraph">
<p>Perhaps you do not get any answer on your first reply, so just post it again until you get one. But please not every hour - allow a few days for the list to deal with it. Bear in mind that other countries will have holidays at different times to your country and that they are in different time zones. You might also consider rewriting your initial posting. It may have not been clear to the readers on the mailing list.</p>
</div>
</div>
<div class="sect2">
<h3 id="submitting_a_patch_through_github">Submitting a Patch Through GitHub</h3>
<div class="paragraph">
<p>While we encourage you to submit your contribution through GitHub pull requests, you can also attach a patch in a GitHub issue. For the purpose of these instructions, we&#8217;ll assume that you already have a system with Git and have found a bug to fix or have a feature that you&#8217;d like to submit, and you&#8217;re willing to contribute that code or documentation under the Apache License 2.0.</p>
</div>
<div class="paragraph">
<p>Further, if you&#8217;re fixing a bug, we&#8217;ll assume that you&#8217;ve either filed a bug report (where you will attach your patch) or are submitting a fix for a known bug. If you find a bug and would like to fix it, that&#8217;s awesome! Please be sure to file the bug too, though.</p>
</div>
<div class="paragraph">
<p>If you want to add a feature, you should bring it up for discussion on the <a href="mailto:&#100;e&#118;&#x40;&#x73;&#x68;&#x69;&#114;&#x6f;&#x2e;a&#112;&#x61;&#99;h&#101;&#46;&#111;r&#103;">&#100;e&#118;&#x40;&#x73;&#x68;&#x69;&#114;&#x6f;&#x2e;a&#112;&#x61;&#99;h&#101;&#46;&#111;r&#103;</a> mailing list before implementing it. This ensures that it meshes with the plans that other contributors have for Apache Shiro, and that you&#8217;re not doing redundant work. Other developers may also have ideas for the feature or suggestions that will help you land the feature without having to re-do the work. More information about our mailing lists can be found here.</p>
</div>
<div class="paragraph">
<p>In short, communication is a vital part of making a contribution to an Apache project.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="git_usage">Git Usage</h2>
<div class="sectionbody">
<div class="paragraph">
<p>An overview of how to use Git to participate in Shiro development. Beginners, don&#8217;t be afraid - you cannot accidentally destroy the actual code repository, because you are working with a local copy as an anonymous user. Therefore, you do not have the system permissions to change anything. You can only update your local repository and compare your revisions with the real repository. The <a href="download.html">Download Shiro</a> page explains how to check out the code base and build your local copy.</p>
</div>
<div class="sect2">
<h3 id="getting_started_with_development">Getting Started with Development</h3>
<div class="paragraph">
<p>Go to <a href="https://github.com/apache/shiro">GitHub</a> and fork the project by pressing the Fork button. Fork makes a copy of an existing repository, and you can start doing new development on your copy.</p>
</div>
</div>
<div class="sect2">
<h3 id="getting_started_with_git">Getting Started with Git</h3>
<div class="paragraph">
<p>Add your name and email to your <code>~/.gitconfig</code>:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">$ git config --global user.name "Your Name"
$ git config --global user.email you@domain.com</code></pre>
</div>
</div>
<div class="paragraph">
<p>Obtain a copy of the Shiro source code:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">$ git clone https://gitbox.apache.org/repos/asf/shiro.git</code></pre>
</div>
</div>
<div class="paragraph">
<p>Make sure you&#8217;re working with the most recent version. Do a <code>git pull</code> if you cloned the source more than a few hours ago.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">$ git checkout -b mybranch</code></pre>
</div>
</div>
<div class="paragraph">
<p>This does two things:
* creates the branch mybranch
* changes your working branch to mybranch.
Running <code>git branch</code> will show you which branch you&#8217;re working on, with an asterisk next to the active branch.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">[user@localhost shiro]$ git branch
main
* mybranch</code></pre>
</div>
</div>
<div class="paragraph">
<p>Use <code>git add</code> to stage the changes. Commit the changes to your working branch:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">git commit -m "Insert a meaningful summary of changes here."</code></pre>
</div>
</div>
<div class="paragraph">
<p>Finally, you can create a patch and attach it to the GitHub issue:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">git format-patch main --stdout &gt; ~/patch-name.patch</code></pre>
</div>
</div>
<div class="ulist">
<ul>
<li>
<p>When sending a patch, you usually do not need to worry about which Git branch it should be applied to. The maintainers of the repository will decide.</p>
</li>
<li>
<p>Every contribution is worthwhile! Even when the code isn&#8217;t perfect, or documentation has typos. Even if you got it wrong the first time around. Any contribution is a start of something special. Through your continued effort and the help of the community, your contribution will evolve.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="review">Review</h3>
<div class="paragraph">
<p>After submitting pull request, you should receive a response within a few days. If you receive no response within a week, please send a message to the shiro-dev mailing list (<a href="mailto:d&#x65;&#118;&#x40;&#x73;&#104;&#105;r&#x6f;&#x2e;a&#112;&#x61;&#x63;&#104;&#101;&#46;&#111;&#114;&#x67;&#x29;">d&#x65;&#118;&#x40;&#x73;&#104;&#105;r&#x6f;&#x2e;a&#112;&#x61;&#x63;&#104;&#101;&#46;&#111;&#114;&#x67;&#x29;</a>.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="git_committers">Git Committers</h2>
<div class="sectionbody">
<div class="paragraph">
<p>After a developer has consistently provided contributions such as code, documentation and discussion, and demonstrated commitment, then the rest of the dev community may vote to grant this developer commit access to the Git repository. See the <a href="https://www.apache.org/dev/">ASF developers resources</a> and especially the <a href="https://www.apache.org/dev/version-control.html">Source code repositories</a>.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="contributing_as_a_non_committer">Contributing as a Non-Committer</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Non-committers have to submit patches for review. Apache Shiro accepts GitHub pull requests.</p>
</div>
<div class="paragraph">
<p>Apache Shiro has a read-only mirror on GitHub that is kept in sync with the canonical Git repo maintained by the Apache Software Foundation. For detailed instructions see the <a href="https://github.com/apache/shiro/blob/master/CONTRIBUTING.md">GitHub Contribution Guidelines</a>.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="contribution_notes_and_tips">Contribution Notes and Tips</h2>
<div class="sectionbody">
<div class="paragraph">
<p>This is a collection of tips for contributing to the project in a manner that is productive for all parties.</p>
</div>
<div class="sect2">
<h3 id="links">Links</h3>
<div class="ulist">
<ul>
<li>
<p><a href="https://www.apache.org/dev/contrib-email-tips.html">Tips for email contributors</a>.</p>
</li>
<li>
<p>Old questions and answers in <a href="https://shiro.apache.org/mailing-lists.html">archives</a>.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>There are no dumb questions. But browse, search and learn from mailing list archives. Research your topic thoroughly before beginning to discuss a new development issue.</p>
</div>
</div>
<div class="sect2">
<h3 id="emails">Emails</h3>
<div class="ulist">
<ul>
<li>
<p>Start new threads with new Subject for new topics, rather than reusing the previous Subject line. Use a descriptive title!</p>
<div class="ulist">
<ul>
<li>
<p>Clearly explain your issue and write a concise email message.</p>
</li>
</ul>
</div>
</li>
<li>
<p>Try to at least offer a partial solution and not just a problem statement.</p>
</li>
<li>
<p>Prepend your email subject line with a marker when that is appropriate, e.g.:</p>
<div class="ulist">
<ul>
<li>
<p>[Proposal]</p>
</li>
<li>
<p>[RT] (Random Thought which quickly blossom into research topics)</p>
</li>
<li>
<p>[STATUS] (development status of a certain facility)</p>
</li>
</ul>
</div>
</li>
</ul>
</div>
<div class="paragraph">
<p>Reduce clutter, don&#8217;t send an e-mail which simply says "thanks". Keep all project-related discussion on the mailing list. It is better to utilize the wider audience, rather than to break off into private discussions. You never know who else will have the answer to your issues, and anyway other people are interested in the outcome.</p>
</div>
</div>
</div>
</div>
<hr />
</div>
<div class="footer-padding"></div>
<div class="container-fluid pt-2 border-top" id="custom-footer">
<footer class="row justify-content-between align-items-center">
<div class=" col-md-5">
<div class="copyright-footer justify-content-start">
<a href="https://www.apache.org/foundation/contributing.html">Donate to the ASF</a>&nbsp;|&nbsp;
<a href="https://www.apache.org/licenses/LICENSE-2.0.html">License</a>&nbsp;
<p class="text-muted">Copyright &copy; 2008-2024 The Apache Software Foundation</p>
</div>
</div>
<div class="d-flex justify-content-center col-md-1">
<a class="btn btn-social"><span class="social-icon social-twitter"><i class="bi bi-twitter"></i></span></a>
<a class="btn btn-social"><span class="social-icon social-facebook"><i class="bi bi-facebook"></i></span></a>
<a class="btn btn-social"><span class="social-icon social-linkedin"><i class="bi bi-linkedin"></i></span></a>
</div>
<div class="d-flex justify-content-end col-md-4" id="editThisPage">
<input type="hidden" id="ghEditPage" value="https://github.com/apache/shiro-site/edit/main/src/site/content/how-to-contribute.adoc"/>
</div>
<div class="d-flex col-md-2 justify-content-end" style="position: relative">
<div class="footer-shield"></div>
</div>
</footer>
</div>
<!-- Le javascript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script src="js/bootstrap.min.js"></script>
<script src="highlight.js-11.2.0/highlight.min.js"></script>
<script src="js/shiro.js"></script>
<script>
docReady(
addPageEditLink()
);
</script>
<script>hljs.highlightAll();</script>
</body>
</html>