blob: 20fd005ac48c46cda475db85b87d6ac0de3f872b [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Apache James Project guidelines :: Apache James</title>
<meta name="generator" content="Antora 3.1.2">
<link rel="stylesheet" href="../../../_/css/site.css">
</head>
<body class="article">
<header class="header">
<nav class="navbar">
<div class="navbar-brand">
<a class="navbar-item" href="https://james.apache.org"><img src="/_/img/james.svg" alt="james logo"> Apache James</a>
<button class="navbar-burger" data-target="topbar-nav">
<span></span>
<span></span>
<span></span>
</button>
</div>
<div id="topbar-nav" class="navbar-menu">
<div class="navbar-end">
<a class="navbar-item" href="#">Home</a>
<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link" href="#">Products</a>
<div class="navbar-dropdown">
<div class="navbar-item"><strong>James server</strong></div>
<a class="navbar-item" href="https://github.com/apache/james-project">Repository</a>
<a class="navbar-item" href="https://issues.apache.org/jira/projects/JAMES/issues">Issue Tracker</a>
<hr class="navbar-divider">
<a class="navbar-item" href="https://james.apache.org/mime4j/index.html">Mime4J</a>
<a class="navbar-item" href="https://james.apache.org/jsieve/index.html">jSieve</a>
<a class="navbar-item" href="https://james.apache.org/jspf/index.html">jSPF</a>
<a class="navbar-item" href="https://james.apache.org/jdkim/index.html">jDKIM</a>
<a class="navbar-item" href="https://james.apache.org/hupa/index.html">HUPA</a>
</div>
</div>
<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link" href="#">Community</a>
<div class="navbar-dropdown">
<!-- Not ideal but dropping the version in the href requires tweaking james-projet docs module first -->
<a class="navbar-item" href="/james-project/3.6.0/community/mailing-lists.html">Mailing lists</a>
<a class="navbar-item" href="https://gitter.im/apache/james-project"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32" class="logo-gitter-sign" data-v-44ebcb1a=""><rect x="15" y="5" width="2" height="10"></rect> <rect x="10" y="5" width="2" height="20"></rect> <rect x="5" y="5" width="2" height="20"></rect> <rect width="2" height="15"></rect></svg> Gitter</a>
<a class="navbar-item" href="https://twitter.com/ApacheJames">
<span class="icon">
<svg aria-hidden="true" data-icon="twitter" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
<path fill="#57aaee" d="M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"></path>
</svg>
</span> Twitter
</a>
<a class="navbar-item" href="#"> <svg class="octicon octicon-mark-github v-align-middle" viewBox="0 0 16 16" version="1.1" aria-hidden="true"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"></path></svg> Github</a>
</div>
</div>
<!-- <div class="navbar-item">
<span class="control">
<a class="button is-primary" href="#">Download</a>
</span>
</div> -->
</div>
</div>
</nav>
</header>
<div class="body">
<div class="nav-container" data-component="james-project" data-version="3.6.0">
<aside class="nav">
<div class="panels">
<div class="nav-panel-menu is-active" data-panel="menu">
<nav class="nav-menu">
<button class="nav-menu-toggle" aria-label="Toggle expand/collapse all" style="display: none"></button>
<h3 class="title"><a href="../index.html">Apache James Server</a></h3>
<ul class="nav-list">
<li class="nav-item" data-depth="0">
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../concepts/index.html">Concepts</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../concepts/user/index.html">User Model</a>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../concepts/mail/index.html">Emails</a>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="#mail/messages/index.adoc">mail/messages/index.adoc</a>
<ul class="nav-list">
<li class="nav-item" data-depth="4">
<a class="nav-link" href="#mail/messages/imf.adoc">mail/messages/imf.adoc</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="#mail/messages/mime.adoc">mail/messages/mime.adoc</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../concepts/protocols/index.html">Protocols</a>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../concepts/protocols/smtp.html">SMTP</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../concepts/protocols/pop.html">POP</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../concepts/protocols/imap.html">IMAP</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../concepts/protocols/jmap.html">JMAP</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../concepts/protocols/esmtp.html">ESMTP</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../concepts/protocols/lmtp.html">LMTP</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../concepts/storage/index.html">Storage</a>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../concepts/storage/mailbox.html">Mailboxes</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../concepts/storage/users.html">Users</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../concepts/processing/index.html">Processing</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../concepts/configuration.html">Configuration</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../concepts/glossary.html">Glossary</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="nav-item" data-depth="0">
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../servers/index.html">Servers</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../servers/demo.html">Demo</a>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../servers/5-minute-demo.html">Short Demo</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../servers/15-minute-demo.html">Long Demo</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../servers/basic/index.html">Basic</a>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../servers/basic/context.html">Context</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../servers/basic/objectives.html">Objectives</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../servers/basic/concepts.html">Concepts</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../servers/basic/architecture.html">Architecture</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../servers/basic/conf/index.html">Configuration</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../servers/basic/help.html">Help</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../servers/extendable.html">Extendable</a>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../servers/distributed.html">Distributed</a>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../servers/distributed/objectives.html">Objectives and motivation</a>
</li>
<li class="nav-item" data-depth="3">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../servers/distributed/architecture/index.html">Architecture</a>
<ul class="nav-list">
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../servers/distributed/architecture/consistency-model.html">Consistency Model</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../servers/distributed/architecture/specialized-instances.html">Specialized instances</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../servers/distributed/run.html">Run</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../servers/distributed/run-docker.html">Run with docker</a>
</li>
<li class="nav-item" data-depth="3">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../servers/distributed/configure/index.html">Configuration</a>
<ul class="nav-list">
<li class="nav-item" data-depth="4">
<button class="nav-item-toggle"></button>
<span class="nav-text">Protocols</span>
<ul class="nav-list">
<li class="nav-item" data-depth="5">
<a class="nav-link" href="../servers/distributed/configure/imap.html">imapserver.xml</a>
</li>
<li class="nav-item" data-depth="5">
<a class="nav-link" href="../servers/distributed/configure/jmap.html">jmap.properties</a>
</li>
<li class="nav-item" data-depth="5">
<a class="nav-link" href="../servers/distributed/configure/jmx.html">jmx.properties</a>
</li>
<li class="nav-item" data-depth="5">
<a class="nav-link" href="../servers/distributed/configure/smtp.html">smtpserver.xml &amp; lmtpserver.xml</a>
</li>
<li class="nav-item" data-depth="5">
<a class="nav-link" href="../servers/distributed/configure/smtp-hooks.html">Packaged SMTP hooks</a>
</li>
<li class="nav-item" data-depth="5">
<a class="nav-link" href="../servers/distributed/configure/pop3.html">pop3server.xml</a>
</li>
<li class="nav-item" data-depth="5">
<a class="nav-link" href="../servers/distributed/configure/webadmin.html">webadmin.properties</a>
</li>
<li class="nav-item" data-depth="5">
<a class="nav-link" href="../servers/distributed/configure/ssl.html">SSL &amp; TLS</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="4">
<button class="nav-item-toggle"></button>
<span class="nav-text">Storage dependencies</span>
<ul class="nav-list">
<li class="nav-item" data-depth="5">
<a class="nav-link" href="../servers/distributed/configure/blobstore.html">blobstore.properties</a>
</li>
<li class="nav-item" data-depth="5">
<a class="nav-link" href="../servers/distributed/configure/cassandra.html">cassandra.properties</a>
</li>
<li class="nav-item" data-depth="5">
<a class="nav-link" href="../servers/distributed/configure/elasticsearch.html">elasticsearch.properties</a>
</li>
<li class="nav-item" data-depth="5">
<a class="nav-link" href="../servers/distributed/configure/rabbitmq.html">rabbitmq.properties</a>
</li>
<li class="nav-item" data-depth="5">
<a class="nav-link" href="../servers/distributed/configure/tika.html">tika.properties</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="4">
<button class="nav-item-toggle"></button>
<span class="nav-text">Core components</span>
<ul class="nav-list">
<li class="nav-item" data-depth="5">
<a class="nav-link" href="../servers/distributed/configure/batchsizes.html">batchsizes.properties</a>
</li>
<li class="nav-item" data-depth="5">
<a class="nav-link" href="../servers/distributed/configure/dns.html">dnsservice.xml</a>
</li>
<li class="nav-item" data-depth="5">
<a class="nav-link" href="../servers/distributed/configure/domainlist.html">domainlist.xml</a>
</li>
<li class="nav-item" data-depth="5">
<a class="nav-link" href="../servers/distributed/configure/healthcheck.html">healthcheck.properties</a>
</li>
<li class="nav-item" data-depth="5">
<a class="nav-link" href="../servers/distributed/configure/mailetcontainer.html">mailetcontainer.xml</a>
</li>
<li class="nav-item" data-depth="5">
<a class="nav-link" href="../servers/distributed/configure/mailets.html">Packaged Mailets</a>
</li>
<li class="nav-item" data-depth="5">
<a class="nav-link" href="../servers/distributed/configure/matchers.html">Packaged Matchers</a>
</li>
<li class="nav-item" data-depth="5">
<a class="nav-link" href="../servers/distributed/configure/mailrepositorystore.html">mailrepositorystore.xml</a>
</li>
<li class="nav-item" data-depth="5">
<a class="nav-link" href="../servers/distributed/configure/recipientrewritetable.html">recipientrewritetable.xml</a>
</li>
<li class="nav-item" data-depth="5">
<a class="nav-link" href="../servers/distributed/configure/usersrepository.html">usersrepository.xml</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="4">
<button class="nav-item-toggle"></button>
<span class="nav-text">Extensions</span>
<ul class="nav-list">
<li class="nav-item" data-depth="5">
<a class="nav-link" href="../servers/distributed/configure/vault.html">deletedMessageVault.properties</a>
</li>
<li class="nav-item" data-depth="5">
<a class="nav-link" href="../servers/distributed/configure/extensions.html">extensions.properties</a>
</li>
<li class="nav-item" data-depth="5">
<a class="nav-link" href="../servers/distributed/configure/listeners.html">listeners.xml</a>
</li>
<li class="nav-item" data-depth="5">
<a class="nav-link" href="../servers/distributed/configure/spam.html">Anti-Spam setup</a>
</li>
<li class="nav-item" data-depth="5">
<a class="nav-link" href="../servers/distributed/configure/remote-delivery-error-handling.html">About RemoteDelivery error handling</a>
</li>
<li class="nav-item" data-depth="5">
<a class="nav-link" href="../servers/distributed/configure/collecting-contacts.html">Contact collection</a>
</li>
<li class="nav-item" data-depth="5">
<a class="nav-link" href="../servers/distributed/configure/collecting-events.html">Event collection</a>
</li>
<li class="nav-item" data-depth="5">
<a class="nav-link" href="../servers/distributed/configure/dsn.html">ESMTP DSN support</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="nav-item" data-depth="3">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../servers/distributed/operate/index.html">Operate</a>
<ul class="nav-list">
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../servers/distributed/operate/guide.html">Operator guide</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../servers/distributed/operate/logging.html">Logging</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../servers/distributed/operate/webadmin.html">WebAdmin REST administration API</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../servers/distributed/operate/metrics.html">Metrics</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../servers/distributed/operate/migrating.html">Migrating existing data</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../servers/distributed/operate/cli.html">Command Line Interface</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../servers/distributed/operate/cassandra-migration.html">Cassandra migration</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="3">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../servers/distributed/extending/index.html">Extending server behavior</a>
<ul class="nav-list">
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../servers/distributed/extending/mail-processing.html">Custom mail processing components</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../servers/distributed/extending/mailbox-listeners.html">Custom Mailbox Listeners</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../servers/distributed/extending/smtp-hooks.html">Custom SMTP hooks</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../servers/distributed/extending/webadmin-routes.html">Custom WebAdmin routes</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../servers/test.html">Test</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="nav-item" data-depth="0">
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../customization/index.html">Customization</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="0">
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../development/index.html">Developer Guide</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="0">
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="index.html">Community</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="mailing-lists.html">Mailing lists</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="contributing.html">Contributing</a>
</li>
<li class="nav-item is-current-page" data-depth="2">
<a class="nav-link" href="guidelines.html">Guidelines</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="download.html">Download releases</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="website.html">Building and publishing the website</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="release.html">Creating an official Apache James release</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="support.html">Professional support</a>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<span class="nav-text">Apache Software Foundation</span>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="https://www.apache.org/">ASF</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="https://www.apache.org/foundation/getinvolved.html">Get involved</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="https://www.apache.org/foundation/faq.html">FAQ</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="https://www.apache.org/licenses/">Licenses</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="https://www.apache.org/security/">Security</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="https://www.apache.org/foundation/thanks.html">Thanks</a>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</nav>
</div>
<div class="nav-panel-explore" data-panel="explore">
<div class="context">
<span class="title">Apache James Server</span>
<span class="version">3.6.0 Snapshot</span>
</div>
<ul class="components">
<li class="component">
<div class="title"><a href="../../../james-distributed-app/3.8.1/index.html">Apache James Distributed Server</a></div>
<ul class="versions">
<li class="version is-latest">
<a href="../../../james-distributed-app/3.8.1/index.html">3.8.1 SNAPSHOT</a>
</li>
</ul>
</li>
<li class="component is-current">
<div class="title"><a href="../../3.8.1/index.html">Apache James Server</a></div>
<ul class="versions">
<li class="version is-latest">
<a href="../../3.8.1/index.html">3.8.1 SNAPSHOT</a>
</li>
<li class="version is-current">
<a href="../index.html">3.6.0 Snapshot</a>
</li>
</ul>
</li>
<li class="component">
<div class="title"><a href="../../../james-site/latest/index.html">Apache James Site</a></div>
<ul class="versions">
<li class="version is-latest">
<a href="../../../james-site/latest/index.html">latest</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
</aside>
</div>
<main class="article">
<div class="toolbar" role="navigation">
<button class="nav-toggle"></button>
<a href="../../../james-site/latest/homepage.html" class="home-link"></a>
<nav class="breadcrumbs" aria-label="breadcrumbs">
<ul>
<li><a href="../index.html">Apache James Server</a></li>
<li><a href="index.html">Community</a></li>
<li><a href="guidelines.html">Guidelines</a></li>
</ul>
</nav>
<div class="page-versions">
<button class="version-menu-toggle" title="Show other versions of page">3.6.0 Snapshot</button>
<div class="version-menu">
<a class="version" href="../../3.8.1/community/guidelines.html">3.8.1 SNAPSHOT</a>
<a class="version is-current" href="guidelines.html">3.6.0 Snapshot</a>
</div>
</div>
<div class="edit-this-page"><a href="https://github.com/apache/james-project/blob/james-project-3.6.0/docs/modules/community/pages/guidelines.adoc">Edit this Page</a></div>
</div>
<div class="content">
<aside class="toc sidebar" data-title="Contents" data-levels="2">
<div class="toc-menu"></div>
</aside>
<article class="doc">
<h1 class="page">Apache James Project guidelines</h1>
<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>This document defines the guidelines for the Apache James Project. It includes definitions of how conflict is being
resolved by voting and who is able to vote.</p>
</div>
<div class="paragraph">
<p>The objective here is to avoid unnecessary conflicts over changes and continue to produce a quality system in a timely
manner. Not all conflict can be avoided, but at least we can agree on the procedures for conflicts to be resolved.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_people_places_and_things"><a class="anchor" href="#_people_places_and_things"></a>People, Places, and Things</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_apache_james_project_management_committee"><a class="anchor" href="#_apache_james_project_management_committee"></a>Apache James Project Management Committee</h3>
<div class="paragraph">
<p>The group of volunteers who are responsible for managing the Apache James Project. This includes deciding what is
distributed as products of the Apache James Project, maintaining the Project&#8217;s shared resources, speaking on behalf of
the Project, resolving license disputes regarding Apache James products, nominating new PMC members or committers,
and establishing these guidelines.</p>
</div>
<div class="paragraph">
<p>Membership in the Apache James PMC is by invitation only and must be approved by consensus of the active Apache James
PMC members. A PMC member is considered inactive by their own declaration or by not contributing in any form to the
project for over six months. An inactive member can become active again by reversing whichever condition made them
inactive (i.e., by reversing their earlier declaration or by once again contributing toward the project&#8217;s work).
Membership can be revoked by a unanimous vote of all the active PMC members other than the member in question.</p>
</div>
</div>
<div class="sect2">
<h3 id="_apache_james_committers"><a class="anchor" href="#_apache_james_committers"></a>Apache James Committers</h3>
<div class="paragraph">
<p>The group of volunteers who are responsible for the technical aspects of the Apache James Project. This group has write
access to the appropriate source repositories and these volunteers may cast non-binding votes on any technical discussion.</p>
</div>
<div class="paragraph">
<p>Membership as a Committer is by invitation only and must be approved by consensus of the active Apache James PMC members.
A Committer is considered inactive by their own declaration or by not contributing in any form to the project for over
six months. An inactive member can become active again by reversing whichever condition made them inactive (i.e., by
reversing their earlier declaration or by once again contributing toward the project&#8217;s work). Membership can be revoked
by a unanimous vote of all the active PMC members (except the member in question if they are a PMC member).</p>
</div>
</div>
<div class="sect2">
<h3 id="_mailing_list"><a class="anchor" href="#_mailing_list"></a>Mailing list</h3>
<div class="paragraph">
<p>The Apache committers' primary mailing list for discussion of issues and changes related to the project
(<a href="mailing-lists.html#_server_developer_list" class="xref page"><a href="mailto:server-dev@james.apache.org">server-dev@james.apache.org</a></a>). Subscription to the list is open, but
only subscribers can post directly to the list.</p>
</div>
</div>
<div class="sect2">
<h3 id="_private_list"><a class="anchor" href="#_private_list"></a>Private list</h3>
<div class="paragraph">
<p>The Apache James Project&#8217;s private mailing list for discussion of issues that are inappropriate for public discussion,
such as legal, personal, or security issues prior to a published fix. Subscription to the list is only opened to Apache
James PMC members and Apache Software Foundation Members.</p>
</div>
</div>
<div class="sect2">
<h3 id="_git"><a class="anchor" href="#_git"></a>GIT</h3>
<div class="paragraph">
<p>All of the Apache James products are maintained in shared information repositories using GIT on git-wip-us.apache.org.
The Apache committers have write access to these repositories; everyone has read access via anonymous GIT.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_voting"><a class="anchor" href="#_voting"></a>Voting</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Any of the Apache James Committers may vote on any issue or action item. However, the only binding votes are those cast
by active members of the Apache James PMC; if the vote is about a change to source code or documentation, the primary
author of what is being changed may also cast a binding vote on that issue. All other votes are non-binding. All
committers are encouraged to participate in decisions, but the decision itself is made by those who have been long-time
contributors to the project. In other words, the Apache Project is a minimum-threshold meritocracy.</p>
</div>
<div class="paragraph">
<p>The act of voting carries certain obligations&#8201;&#8212;&#8201;voting members are not only stating their opinion, they are agreeing
to help do the work of the Apache Project. Since we are all volunteers, members often become inactive for periods of
time in order to take care of their "real jobs" or devote more time to other projects. It is therefore unlikely that the
entire group membership will vote on every issue. To account for this, all voting decisions are based on a minimum quorum.</p>
</div>
<div class="paragraph">
<p>Each vote can be made in one of three flavors:</p>
</div>
<div class="paragraph">
<p><strong>+1</strong>
Yes, agree, or the action should be performed. On some issues, this vote is only binding if the voter has tested the
action on their own system(s).</p>
</div>
<div class="paragraph">
<p><strong>+-0</strong>
Abstain, no opinion, or I am happy to let the other group members decide this issue. An abstention may have detrimental
effects if too many people abstain.</p>
</div>
<div class="paragraph">
<p><strong>-1</strong>
No. On issues where consensus is required, this vote counts as a veto. All vetos must include an explanation of why the
veto is appropriate. A veto with no explanation is void. No veto can be overruled. If you disagree with the veto, you
should lobby the person who casts the veto. Voters intending to veto an action item should make their opinions known to
the group immediately, so that the problem can be remedied as early as possible.</p>
</div>
<div class="paragraph">
<p>An action item requiring consensus approval must receive at least 3 binding +1 votes and no vetos. An action item
requiring majority approval must receive at least 3 binding +1 votes and more +1 votes than -1 votes (i.e., a majority
with a minimum quorum of three positive votes). All other action items are considered to have lazy approval until
someone votes -1, after which point they are decided by either consensus or a majority vote, depending upon the type
of action item.</p>
</div>
<div class="paragraph">
<p>All votes must be either sent to the mailing list for that action item.</p>
</div>
<div class="paragraph">
<p>Votes are to remain open for 72 hours after which the developer who put forth the vote should tabulate the result and
send this to the mailing list. A developer should be sensitive to holidays that could dampen participation in the vote.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_types_of_action_items"><a class="anchor" href="#_types_of_action_items"></a>Types of Action Items</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_long_term_plans"><a class="anchor" href="#_long_term_plans"></a>Long Term Plans</h3>
<div class="paragraph">
<p>Long term plans are simply announcements that group members are working on particular issues related to the Apache
software. These are not voted on, but group members who do not agree with a particular plan, or think an alternate plan
would be better, are obligated to inform the group of their feelings. In general, it is always better to hear about
alternate plans prior to spending time on less adequate solutions.</p>
</div>
</div>
<div class="sect2">
<h3 id="_short_term_plans"><a class="anchor" href="#_short_term_plans"></a>Short Term Plans</h3>
<div class="paragraph">
<p>Short term plans are announcements that a developer is working on a particular set of documentation or code files, with
the implication that other committers should avoid them or try to coordinate their changes. This is a good way to
proactively avoid conflict and possible duplication of work.</p>
</div>
</div>
<div class="sect2">
<h3 id="_release_plan"><a class="anchor" href="#_release_plan"></a>Release Plan</h3>
<div class="paragraph">
<p>A release plan is used to keep all the committers aware of when a release is desired, who will be the release manager,
when the repository will be frozen in order to create the release, and assorted other trivia to keep us from tripping
over ourselves during the final moments. Lazy majority decides each issue in the release plan.</p>
</div>
</div>
<div class="sect2">
<h3 id="_release_testing"><a class="anchor" href="#_release_testing"></a>Release Testing</h3>
<div class="paragraph">
<p>After a new release is built, colloquially termed a tarball, it must be tested before being released to the public.
Majority approval is required before the tarball can be publically released.</p>
</div>
</div>
<div class="sect2">
<h3 id="_showstoppers"><a class="anchor" href="#_showstoppers"></a>Showstoppers</h3>
<div class="paragraph">
<p>Showstoppers are issues that require a fix be in place before the next public release.</p>
</div>
</div>
<div class="sect2">
<h3 id="_product_changes"><a class="anchor" href="#_product_changes"></a>Product Changes</h3>
<div class="paragraph">
<p>Changes to the Apache James products, including code and documentation, will appear as action items under several
categories corresponding to the change status:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><strong>Concept/Plan</strong>
An idea or plan for a change. These are represented as ADRs (Architectural Decision Records), stored under the <code>src/adr</code>
folder. Votes are being requested early so as to uncover conflicts before too much work is done. You can find more
information about this <a href="contributing.html#_idea_or_design_proposals" class="xref page">here</a>.</p>
</li>
<li>
<p><strong>Proposed Patch</strong>
A specific set of changes to the current product in the form of input to the patch command (a diff output).</p>
</li>
<li>
<p><strong>Committed Change</strong>
A one-line summary of a change that has been committed to the repository since the last public release.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>All product changes to the currently active repository are subject to lazy consensus. All product changes to a
prior-branch (old version) repository require consensus before the change is committed.</p>
</div>
</div>
</div>
</div>
</article>
</div>
</main>
</div>
<footer class="footer">
<p>This page was built using the Antora default UI.</p>
<p>The source code for this UI is licensed under the terms of the MPL-2.0 license.</p>
</footer>
<script id="site-script" src="../../../_/js/site.js" data-ui-root-path="../../../_"></script>
<script async src="../../../_/js/vendor/highlight.js"></script>
</body>
</html>