Title: Apache Community Development - Welcome
Notice:    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.

<div class="hero-unit">
<h2>Apache Community Development!</h2>
<br>

<p>This website is designed to <em><a href="/newcomers/">help newcomers</a></em> to The Apache Software Foundation (ASF)
and to our many Apache projects take their first steps towards being a <em>part of our community</em>.</p>

<p>We provide signposts to information about
the ASF as an organization, as well as about the over <a href="https://projects.apache.org/">200 different Apache software project
communities</a> that provide free software for the public benefit.</p>

<p>We do not focus on
specific projects here, but rather on the common processes and policies
called The Apache Way found in most Apache projects. Our goal is to help you
<em>understand how the ASF works</em> and give you the confidence to participate
more directly in the specific Apache projects that interest you.</p>
</div>

<a name="Index-Startingpoints"></a>


<!-- Headers -->
<div class="row">
  <div class="span4">
    <h3>New to Apache</h3>
  </div>
  <div class="span4">
    <h3>Events & Mentoring</h3>
  </div>
  <div class="span4">
    <h3>The Apache Way</h3>
  </div>
</div>

<!-- Row 1 -->
<div class="row">
    <div class="span4">
        <h4>Newcomers to Apache</h4>
        <p>If you are new to open source, our <a href="newcomers/index.html"><b>newcomers section</b></a> explains basic concepts, first steps to get started, and places to ask for help.</p>
        <p>To get our software, see our <a href="https://projects.apache.org/projects.html?category">categorized listing of all Apache projects</a>, which are <a href="http://www.apache.org/free/"><b>always free</b> to download and use</a>.</p>
        <p>The ASF is a large organization made up of many separate projects: each community may have different ways of working, while still following the basic Apache Way process.</p>
    </div>
    <div class="span4">
        <h4>Event Organizers and Speakers</h4>
        <p>We have a <a href="speakers/index.html">list of speaker resources</a> for conference organizers and speakers, including some useful Apache slides.</p>
        <p>Producers should read our <a href="http://www.apache.org/foundation/marks/events">Event Branding Policy</a> for ticketed events, and we have some <a href="events/small-events.html">tips for organizing small, community events</a> about Apache projects.</p>
        <p>The <a href="calendars/index.html">event calendar</a> contains an aggregation of many different Apache-related events, including ApacheCon, BarCamps, and more.</p>
    </div>
    <div class="span4">
        <h4>The Foundation</h4>
        <p>The Apache Software Foundation (ASF) is a <a href="http://www.apache.org/foundation/">US 501(c)3 non-profit public charity</a>.  The Foundation is <a href="http://www.apache.org/foundation/governance/">governed by a Board of Directors</a>, elected by our Membership, and we publish our <a href="http://www.apache.org/foundation/board/calendar.html">monthly board meeting minutes</a>.</p>
        <p>Our mission is to create software for the public good that we <a href="http://www.apache.org/free/">give away for free</a>.  You can read how <a href="http://www.apache.org/foundation/governance/">ASF and Apache projects are governed</a>; we <a href="http://www.apache.org/foundation/contributing.html">welcome your support to Apache in other ways</a>.</p>
    </div>
</div>

<!-- Row 2 -->
<div class="row">
    <div class="span4">
        <h4>Open Source Contributors</h4>
        <p>If you know a little about open source and want to understand how the ASF works our <a href="contributors/index.html">contributors section</a> is for you.</p>
        <p>We also have a collection of <a href="links.html">links</a> to relevant information.</p>
        <p>Apache Committers should read our <a href="committers/index.html">committers section</a> and see the <a href="http://www.apache.org/dev/">Developer Information site</a>.</p>
    </div>
    <div class="span4">
          <h4>Pilot Mentoring Programme with India ICFOSS</h4>
          <p>The Apache Software Foundation is now participating in a pilot project with India ICFOSS to provide mentoring for undergraduate and graduate students that have interest in learning how to participate in open source communities at ASF.
          <br/><br/>
          More information available at the <a href="mentoringprogramme-icfoss-pilot.html">Pilot Mentoring Programme</a> page.</p>
    </div>
    <div class="span4">
        <h4>How Apache works</h4>
        <p>Our <a href="apache-way/apache-project-maturity-model.html">Apache Project Maturity Model</a> defines a structure for evaluating our projects (communities & technology), that can serve as an example for other communities as well.</p>
        <p>Interested in learning how the ASF works as a Foundation? Our <a href="http://www.apache.org/foundation/how-it-works.html">how Apache works guide</a>
        talks about the difference between ASF Members and project committers, who decides things (voting), how elections take place, how our infrastructure is setup, what is the board, what is a PMC, what's the philosophy behind the incubator.</p>
    </div>
</div>

<!-- Row 3 -->
<div class="row">
    <div class="span4">
        <h4>How To Ask Questions</h4>
        <p>All Apache projects use <a href="https://lists.apache.org/">publicly archived mailing lists</a> that anyone may subscribe
           to and/or ask questions related to that Apache project.  Most projects have a
           dev@project.apache.org mailing list for technical discussions about the code, and a
           user@ or users@ mailing list for questions about the product or features.
           <br/><br/>
           We have a <a href="http://community.apache.org/contributors/etiquette">Code of Conduct and Etiquette guidelines</a> to help you write good emails.
           <br/><br/>
           The ComDev project has our own mailing list where you can ask general questions
           about Apache at <a href="https://lists.apache.org/list.html?dev@community.apache.org:lte=3M:">dev@community.apache.org</a>.</p>
    </div>
    <div class="span4">
          <h4>Google Summer of Code program (GSoC)</h4>
          <p>The Community Development project also manages the <a href="gsoc.html">ASF's participation in the Google Summer of Code program</a>. Each year, since 2005, we've taken on between 30 and 45 students. Many of these have gone on to be long term committers and even members of the foundation.
          <br/><br/>
          Read about a few of our <a href="mentoring/experiences.html">GSoC successes</a>. </p>
        <!--
        <h4>Project Ideas</h4>
        <p>If you are looking for specific areas to get started contributing to open source, see our <a href="https://helpwanted.apache.org">Help Wanted site</a>, or the collection of <a href="http://s.apache.org/gsoc2013ideas">project ideas</a> created by GSoC mentors.</p>
        -->
    </div>
    <div class="span4">
          <h4>FAQ & Code of Conduct</h4>
          <p>Please be nice!  The ASF has a <a href="https://www.apache.org/foundation/policies/conduct">Code of Conduct</a> that we expect participants in our mailing lists and projects to abide by.</p>
          <p>If you still haven't found what you are looking for, try our <a href="newbiefaq.html">FAQ</a>, send us an e-mail at dev@community.apache.org, or read the <a href="https://lists.apache.org/list.html?dev@community.apache.org:lte=3M:">Community mail archives</a>.</p>
    </div>
</div>

<div style="width: 700px;" type="helpwanted" project="comdev"  description="Community Development"></div>
<script src="https://helpwanted.apache.org/widget.js" type="text/javascript"></script>
