﻿<!DOCTYPE html>
<!--[if IE]><![endif]-->
<html>
  
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title>Lucene.Net project contributing guide | Apache Lucene.NET 4.8.0 </title>
    <meta name="viewport" content="width=device-width">
    <meta name="title" content="Lucene.Net project contributing guide | Apache Lucene.NET 4.8.0 ">
    <meta name="generator" content="docfx 2.38.1.0">
    
    <link rel="shortcut icon" href="../logo/favicon.ico">
    <link rel="stylesheet" href="../styles/docfx.vendor.css">
    <link rel="stylesheet" href="../styles/docfx.css">
    <link rel="stylesheet" href="../styles/main.css">
    <meta property="docfx:navrel" content="../toc.html">
    <meta property="docfx:tocrel" content="toc.html">
    
    
    
  
    <link rel="stylesheet" href="//fonts.googleapis.com/css?family=Lato:400,700%7CMerriweather%7CRoboto+Mono">
    <link rel="stylesheet" href="/styles/site.css">
  
  </head>
  <body data-spy="scroll" data-target="#affix" data-offset="120">
    <div id="wrapper">
      <header>
        
        <nav id="autocollapse" class="navbar ng-scope" role="navigation">
          <div class="container">
            <div class="navbar-header">
              <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
              </button>
              
              <a class="navbar-brand" href="../index.html">
                <img id="logo" class="svg" src="../logo/lucene-net-color.png" alt="">
              </a>
            </div>
            <div class="collapse navbar-collapse" id="navbar">
              <form class="navbar-form navbar-right" role="search" id="search">
                <div class="form-group">
                  <input type="text" class="form-control" id="search-query" placeholder="Search" autocomplete="off">
                </div>
              </form>
            </div>
          </div>
        </nav>
        
        <div class="subnav navbar navbar-default">
          <div class="container hide-when-search" id="breadcrumb">
            <ul class="breadcrumb">
              <li></li>
            </ul>
          </div>
        </div>
      </header>
      <div role="main" class="container body-content hide-when-search">
        
        <div class="sidenav hide-when-search">
          <a class="btn toc-toggle collapse" data-toggle="collapse" href="#sidetoggle" aria-expanded="false" aria-controls="sidetoggle">Show / Hide Table of Contents</a>
          <div class="sidetoggle collapse" id="sidetoggle">
            <div id="sidetoc"></div>
          </div>
        </div>
        <div class="article row grid-right">
          <div class="col-md-10">
            <article class="content wrap" id="_content" data-uid="contributing">
<h1 id="lucenenet-project-contributing-guide">Lucene.Net project contributing guide</h1>

<hr>
<h2 id="getting-involved">Getting involved</h2>
<p><em>There are lots ways to help contribute to the Lucene.Net project!</em></p>
<p>Lucene.Net is a very large project (over 400,000 executable lines of code and nearly 1,000,000 lines of text total) and we welcome any and all help to maintain such an effort.</p>
<h3 id="ask-a-question">Ask a Question</h3>
<p>If you have a general how-to question or need help from the Lucene.Net community, please email the Apache Lucene.Net-User mailing list by sending a message to:</p>
<p><a href="mailto:user@lucenenet.apache.org">user@lucenenet.apache.org</a></p>
<p>We recommend you join the <a href="https://cwiki.apache.org/confluence/display/LUCENENET/Mailing+Lists">user mailing list</a> to stay looped into all user discussions.</p>
<p>Alternatively, you can get help via <a href="https://stackoverflow.com/questions/tagged/lucene.net">StackOverflow</a>.</p>
<p>Please do not submit general how-to questions to JIRA, use JIRA for bug reports/tasks only.</p>
<p>see <strong><a class="xref" href="mailing-lists.html">mailing lists</a></strong></p>
<h3 id="start-a-discussion">Start a Discussion</h3>
<p>To start a development discussion regarding technical features of Lucene.Net, please email the Apache Lucene.Net-Developer mailing list by sending a message to:</p>
<p><a href="mailto:dev@lucenenet.apache.org">dev@lucenenet.apache.org</a></p>
<p>We recommend you join both the <a href="https://cwiki.apache.org/confluence/display/LUCENENET/Mailing+Lists">user and dev mailing lists</a> to stay looped in to all user and developer discussions.</p>
<p>see <strong><a class="xref" href="mailing-lists.html">mailing lists</a></strong></p>
<h3 id="website-and-documentation">Website and Documentation</h3>
<p>Help with keeping this website and documentation up to date would be a great help. It would be great to migrate/consolidate a lot of the important information from the wiki to this website. See <strong><a class="xref" href="documentation.html">website and documentation</a></strong> for more information about contributing to this area.</p>
<h3 id="report-a-bug">Report a Bug</h3>
<p>To report a bug, please use the <a class="xref" href="issue-tracker.html">JIRA issue tracker</a>. You can signup for a JIRA account <a href="https://cwiki.apache.org/confluence/signup.action">here</a> (it just takes a minute).</p>
<h3 id="submit-a-pull-request">Submit a Pull Request</h3>
<p>First have a look at the <strong><a class="xref" href="current-status.html">Current Status</a></strong> of the project to see where things are at.</p>
<p>There's a <a href="https://github.com/apache/lucenenet/blob/master/CONTRIBUTING.md">detailed contribution guide here</a>. <em>(it would be good to migrate this guide to this website)</em></p>
<p>And another guide is here about all the basics of getting started with the repo and how we prefer to receive pull requests <a href="https://cwiki.apache.org/confluence/display/LUCENENET/Git+Setup+and+Pull+Requests">Git Setup and Pull Requests</a></p>
</article>
          </div>
          
          <div class="hidden-sm col-md-2" role="complementary">
            <div class="sideaffix">
              <div class="contribution">
                <ul class="nav">
                  <li>
                    <a href="https://github.com/Shazwazza/lucenenet/blob/docfx-apidocs/websites/site/contributing/index.md/#L1" class="contribution-link">Improve this Doc</a>
                  </li>
                </ul>
              </div>
              <nav class="bs-docs-sidebar hidden-print hidden-xs hidden-sm affix" id="affix">
              <!-- <p><a class="back-to-top" href="#top">Back to top</a><p> -->
              </nav>
            </div>
          </div>
        </div>
      </div>
      
      <footer>
        <div class="grad-bottom"></div>
        <div class="footer">
          <div class="container">
            <span class="pull-right">
              <a href="#top">Back to top</a>
            </span>
            Copyright © 2019 The Apache Software Foundation, Licensed under the <a href='http://www.apache.org/licenses/LICENSE-2.0' target='_blank'>Apache License, Version 2.0</a><br> <small>Apache Lucene.Net, Lucene.Net, Apache, the Apache feather logo, and the Apache Lucene.Net project logo are trademarks of The Apache Software Foundation. <br>All other marks mentioned may be trademarks or registered trademarks of their respective owners.</small>
            
          </div>
        </div>
      </footer>
    </div>
    
    <script type="text/javascript" src="../styles/docfx.vendor.js"></script>
    <script type="text/javascript" src="../styles/docfx.js"></script>
    <script type="text/javascript" src="../styles/main.js"></script>
  </body>
</html>
