<?xml version="1.0" encoding="UTF-8"?>
<!--
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.

-->
<document xmlns="http://maven.apache.org/XDOC/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">

  <properties>
    <title>How to contribute?</title>
    <author email="dev@syncope.apache.org">Apache Syncope Documentation Team</author>
  </properties>

  <body>
   
    <section name="How to contribute?">
      <p>
        The Apache Syncope™ project is actively seeking new contributors to work on all aspects of the project. 
        We need and appreciate all contributions, including documentation help, source code development and feedback.
      </p>

      <subsection name="Looking for ideas?">
        <div style="width: 700px;" type="helpwanted" project="syncope" description="Apache Syncope"></div>
        <script src="https://helpwanted.apache.org/widget.js" type="text/javascript"></script>
      </subsection>

      <subsection name="Code">
        <ul>
          <li>If you have found an issue or you want to propose a new feature, post a message to the 
            <a href="mailing-lists">Syncope Dev list or jump on IRC</a> to discuss it.
          </li>
          <li>Search existing 
            <a href="https://issues.apache.org/jira/secure/IssueNavigator.jspa" rel="nofollow">issues</a> to see 
            whether someone had already encountered the same issue.
          </li>
          <li>If this issue was never encountered before, create a new 
            <a href="https://issues.apache.org/jira/browse/SYNCOPE">JIRA</a> issue.
          </li>
          <li>Get the <a href="source-repository">source code</a></li>
          <li>Develop / describe a test case to demonstrate the issue.</li>
          <li>Review and apply our <a href="https://cwiki.apache.org/confluence/display/SYNCOPE/Git+workflow">Git workflow</a>.</li>
        </ul>
      </subsection>

      <subsection name="Documentation">
        <p>The website is managed via the 
          <a href="https://maven.apache.org/plugins/maven-site-plugin/">maven-site-plugin</a> and the guides are being
          maintained with <a href="https://asciidoctor.org/">Asciidoctor</a>, hence contributing site content or
          guides is similar to contributing <a href="#Code">source code</a>.
        </p>
        <p>The project 
          <a href="https://cwiki.apache.org/confluence/display/SYNCOPE">Wiki</a> is also available to gather any other 
          kind of documentation or contribution you would like to contribute, and does not require any GIT, Maven or 
          other technical skills.
        </p>
      </subsection>    
    </section>
    
    <section name="How do I become a contributor or a committer?">
      <p>Everyone can contribute to Syncope as a contributor; contributors who build up a history of successful 
        contributions over time are invited to become committers. The difference is that committers have direct write 
        access to the project GIT repositories, while contributors post their contributions to JIRA issues where they're
        first reviewed, and then committed by a committer to the project's GIT repository. See 
        <a href="https://www.apache.org/dev/contributors.html">https://www.apache.org/dev/contributors.html</a> for a good
        overview of working as a contributor.
      </p>
      <p>We ask contributors of significant amounts of code to fill out and send into Apache, an 
        <a href="https://www.apache.org/licenses/#clas">Individual Contributors License Agreement (ICLA)</a> 
        (and perhaps also a 
        <a href="https://www.apache.org/licenses/#clas">Corporate Contributors License Agreement (CCLA)</a>).
      </p>
      <p>If you're interested in committing to the project, you need to establish a history over time of successful 
        contributions to the project. After that, you may be invited to become a committer.
      </p>
      <ul>
        <li>
          You'll need to fill out some legal paperwork and go through a process to get an Apache committer account: See 
          <a rel="nofollow" href="https://apache.org/dev/new-committers-guide.html"> New Committers Guide</a>, 
          <a rel="nofollow" href="https://apache.org/dev/contributors.html"> Contributors</a>, and 
          <a rel="nofollow" href="https://apache.org/dev/committers.html"> Committers</a> for more details.
        </li>
        <li>
          After you've received an email from 
          <a href="mailto:root@apache.org">root@apache.org</a> with your committer account information, change your 
          initial password using the 
          <a href="https://id.apache.org">Apache Account Utility</a>. For more details see 
          <a rel="nofollow" href="https://apache.org/dev/version-control.html">Committer GIT Access</a>.
        </li>
      </ul>
      <p>All Committers and Contributors should:</p>
      <ul>
        <li>Sign up for a 
          <a rel="nofollow" href="https://cwiki.apache.org/confluence/signup.action">Wiki</a> account.
        </li>
        <li>Sign up for an 
          <a rel="nofollow" href="https://issues.apache.org/jira/">ASF JIRA</a> account.
        </li>
      </ul>
    </section>
  </body>
</document>
