


<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
  <meta charset="utf-8">
  
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  
  <title>How to Contribute to SINGA &mdash; incubator-singa 0.3.0 documentation</title>
  

  
  

  

  
  
    

  

  
  
    <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
  

  

  
    <link rel="top" title="incubator-singa 0.3.0 documentation" href="../index.html"/>
        <link rel="next" title="How to Contribute Code" href="contribute-code.html"/>
        <link rel="prev" title="Development Schedule" href="schedule.html"/> 

  
  <script src="../_static/js/modernizr.min.js"></script>

</head>

<body class="wy-body-for-nav" role="document">

  <div class="wy-grid-for-nav">

    
    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
      <div class="wy-side-scroll">
        <div class="wy-side-nav-search">
          

          
            <a href="../index.html" class="icon icon-home"> incubator-singa
          

          
            
            <img src="../_static/singa.png" class="logo" />
          
          </a>

          
            
            
              <div class="version">
                0.3.0
              </div>
            
          

          
<div role="search">
  <form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
    <input type="text" name="q" placeholder="Search docs" />
    <input type="hidden" name="check_keywords" value="yes" />
    <input type="hidden" name="area" value="default" />
  </form>
</div>

          
        </div>

        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
          
            
            
                <ul>
<li class="toctree-l1"><a class="reference internal" href="../downloads.html">Download SINGA</a></li>
<li class="toctree-l1"><a class="reference internal" href="../docs/index.html">Documentation</a></li>
</ul>
<p class="caption"><span class="caption-text">Development</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="schedule.html">Development Schedule</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">How to Contribute to SINGA</a></li>
<li class="toctree-l1"><a class="reference internal" href="contribute-code.html">How to Contribute Code</a></li>
<li class="toctree-l1"><a class="reference internal" href="contribute-docs.html">How to Contribute Documentation</a></li>
</ul>
<p class="caption"><span class="caption-text">Community</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../community/source-repository.html">Source Repository</a></li>
<li class="toctree-l1"><a class="reference internal" href="../community/mail-lists.html">Project Mailing Lists</a></li>
<li class="toctree-l1"><a class="reference internal" href="../community/issue-tracking.html">Issue Tracking</a></li>
<li class="toctree-l1"><a class="reference internal" href="../community/team-list.html">The SINGA Team</a></li>
</ul>

            
          
        </div>
      </div>
    </nav>

    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">

      
      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
        <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
        <a href="../index.html">incubator-singa</a>
      </nav>


      
      <div class="wy-nav-content">
        <div class="rst-content">
          

 



<div role="navigation" aria-label="breadcrumbs navigation">
  <ul class="wy-breadcrumbs">
    <li><a href="../index.html">Docs</a> &raquo;</li>
      
    <li>How to Contribute to SINGA</li>
      <li class="wy-breadcrumbs-aside">
        
          
        
      </li>
  </ul>
  <hr/>
</div>
          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
           <div itemprop="articleBody">
            
  <div class="section" id="how-to-contribute-to-singa">
<span id="how-to-contribute-to-singa"></span><h1>How to Contribute to SINGA<a class="headerlink" href="#how-to-contribute-to-singa" title="Permalink to this headline">¶</a></h1>
<hr class="docutils" />
<p>As with any open source project, there are several ways you can help:</p>
<ul class="simple">
<li>Join the <a class="reference external" href="../community/mail-lists.html">mailing list</a> and answer other user&#8217;s questions.</li>
<li><a class="reference external" href="../quick-start.html">Build Singa</a> for yourself, in order to fix bugs.</li>
<li>Report bugs, feature requests and other issues in the <a class="reference external" href="../community/issue-tracking.html">issue tracking</a> application.</li>
<li>Check SINGA&#8217;s <a class="reference external" href="schedule.html">development schedule</a> and <a class="reference external" href="contribute-code.html">contribute code</a> by providing patches.</li>
<li><a class="reference external" href="contribute-docs.html">Help with the documentation</a> by updating webpages that are lacking or unclear.</li>
</ul>
</div>


           </div>
          </div>
          <footer>
  
    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
      
        <a href="contribute-code.html" class="btn btn-neutral float-right" title="How to Contribute Code" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a>
      
      
        <a href="schedule.html" class="btn btn-neutral" title="Development Schedule" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a>
      
    </div>
  

  <hr/>

  <div role="contentinfo">
    <p>
        &copy; Copyright 2016 The Apache Software Foundation. All rights reserved. Apache Singa, Apache, the Apache feather logo, and the Apache Singa project logos are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners..

    </p>
  </div>
  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 

</footer>

        </div>
      </div>

    </section>

  </div>
  


  

    <script type="text/javascript">
        var DOCUMENTATION_OPTIONS = {
            URL_ROOT:'../',
            VERSION:'0.3.0',
            COLLAPSE_INDEX:false,
            FILE_SUFFIX:'.html',
            HAS_SOURCE:  true
        };
    </script>
      <script type="text/javascript" src="../_static/jquery.js"></script>
      <script type="text/javascript" src="../_static/underscore.js"></script>
      <script type="text/javascript" src="../_static/doctools.js"></script>

  

  
  
    <script type="text/javascript" src="../_static/js/theme.js"></script>
  

  
  
  <script type="text/javascript">
      jQuery(function () {
          SphinxRtdTheme.StickyNav.enable();
      });
  </script>
  


<div class="rst-versions shift-up" data-toggle="rst-versions" role="note" aria-label="versions">
    <img src="../_static/apache.jpg">

    <span class="rst-current-version" data-toggle="rst-current-version">
    <span class="fa fa-book"> incubator-singa </span>
    v: 0.3.0
    <span class="fa fa-caret-down"></span>
  </span>
    <div class="rst-other-versions">
        <dl>
            <dt>Languages</dt>
            <dd><a href="../../en/index.html">English</a></dd>
            <dd><a href="../../zh/index.html">中文</a></dd>
            <dd><a href="../../jp/index.html">日本語</a></dd>
            <dd><a href="../../kr/index.html">한국어</a></dd>
        </dl>
    </div>
</div>

<a href="https://github.com/apache/incubator-singa">
    <img style="position: absolute; top: 0; right: 0; border: 0; z-index: 10000;"
         src="https://s3.amazonaws.com/github/ribbons/forkme_right_orange_ff7600.png"
         alt="Fork me on GitHub">
</a>

 


</body>
</html>