<!DOCTYPE html>
<!--[if lt IE 7]>      <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]>         <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]>         <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]--><head>
    <meta charset='utf-8'/><meta http-equiv='X-UA-Compatible' content='IE=edge'/><meta name='viewport' content='width=device-width, initial-scale=1'/><title>The Apache Groovy programming language - Contribute</title><link href='http://groovy-lang.org/img/favicon.ico' type='image/x-ico' rel='icon'/><link rel='stylesheet' type='text/css' href='http://groovy-lang.org/css/bootstrap.css'/><link rel='stylesheet' type='text/css' href='css/font-awesome.min.css'/><link rel='stylesheet' type='text/css' href='http://groovy-lang.org/css/style.css'/>
</head><body>
    <div id='fork-me'>
        <a href='https://github.com/apache/groovy'>
        <img style='position: fixed; top: -14px; right: -14px; border: 0; z-index: 100' src='https://camo.githubusercontent.com/365986a132ccd6a44c23a9169022c0b5c890c387/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f72696768745f7265645f6161303030302e706e67' alt='Fork me on GitHub' data-canonical-src='https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png'/>
        </a>
    </div><div id='st-container' class='st-container st-effect-9'>
        <nav class='st-menu st-effect-9' id='menu-12'>
            <h2 class='icon icon-lab'>Socialize</h2><ul>
                <li>
                    <a href='http://groovy-lang.org/mailing-lists.html' class='icon'><span class='fa fa-envelope'></span> Discuss on the mailing-list</a>
                </li><li>
                    <a href='http://groovy-lang.org/groovy-weekly.html' class='icon'><span class='fa fa-envelope-o'></span> Groovy newsletter</a>
                </li><li>
                    <a href='https://twitter.com/ApacheGroovy' class='icon'><span class='fa fa-twitter'></span> Groovy on Twitter</a>
                </li><li>
                    <a href='http://groovy-lang.org/events.html' class='icon'><span class='fa fa-calendar'></span> Events and conferences</a>
                </li><li>
                    <a href='https://github.com/apache/groovy' class='icon'><span class='fa fa-github'></span> Source code on GitHub</a>
                </li><li>
                    <a href='http://groovy-lang.org/reporting-issues.html' class='icon'><span class='fa fa-bug'></span> Report issues in Jira</a>
                </li><li>
                    <a href='https://google.com/+groovy' class='icon'><span class='fa fa-google-plus'></span> Google+ Groovy Page</a>
                </li><li>
                    <a href='http://bit.ly/g-community' class='icon'><span class='fa fa-google-plus'></span> Google+ Groovy Community</a>
                </li><li>
                    <a href='http://stackoverflow.com/questions/tagged/groovy' class='icon'><span class='fa fa-stack-overflow'></span> Stack Overflow questions</a>
                </li><li>
                    <a href='http://groovycommunity.com/' class='icon'><span class='fa fa-slack'></span> Slack Community</a>
                </li>
            </ul>
        </nav><div class='st-pusher'>
            <div class='st-content'>
                <div class='st-content-inner'>
                    <!--[if lt IE 7]>
                    <p class="browsehappy">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p>
                <![endif]--><div><div class='navbar navbar-default navbar-static-top' role='navigation'>
                            <div class='container'>
                                <div class='navbar-header'>
                                    <button type='button' class='navbar-toggle' data-toggle='collapse' data-target='.navbar-collapse'>
                                        <span class='sr-only'></span><span class='icon-bar'></span><span class='icon-bar'></span><span class='icon-bar'></span>
                                    </button><a class='navbar-brand' href='index.html'>
                                        <i class='fa fa-star'></i> Apache Groovy
                                    </a>
                                </div><div class='navbar-collapse collapse'>
                                    <ul class='nav navbar-nav navbar-right'>
                                        <li class=''><a href='http://groovy-lang.org/learn.html'>Learn</a></li><li class=''><a href='http://groovy-lang.org/documentation.html'>Documentation</a></li><li class=''><a href='http://groovy-lang.org/download.html'>Download</a></li><li class=''><a href='http://groovy-lang.org/support.html'>Support</a></li><li class=''><a href='http://groovy.apache.org'>Contribute</a></li><li class=''><a href='http://groovy-lang.org/ecosystem.html'>Ecosystem</a></li><li>
                                            <a data-effect='st-effect-9' class='st-trigger' href='#'>Socialize</a>
                                        </li><li class=''>
                                            <a href='http://groovy-lang.org/search.html'>
                                                <i class='fa fa-search'></i>
                                            </a>
                                        </li>
                                    </ul>
                                </div>
                            </div>
                        </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-8 col-lg-pull-0'><div id='contribute-btn'>
                                            <button type='button' class='btn btn-default' onclick='window.location.href="https://github.com/groovy/groovy-website/tree/master/site/src/site/pages/contribute.groovy"'>
                                                <i class='fa fa-pencil-square-o'></i> Improve this doc
                                            </button>
                                        </div><h1><i class='fa fa-pencil-square-o'></i> Getting Involved</h1><article><p>
                                    Would you like to help us make the Groovy programming language even better?
                                    There are many ways in which you can get involved, make a difference and help
                                    the Groovy development team to make Groovy even, well, groovier?
                                    We really appreciate and welcome contributions and you can help us by:
                                </p><ul><li>helping other users or discussing future language directions on the <a href='http://groovy-lang.org/mailing-lists.html'>mailing-lists</a></li><li>contribute to discussions on <a href='https://groovycommunity.com/'>Slack</a> - this channel is not endorsed by the Apache Software Foundation, it&apos;s run by Groovy enthusiasts in the community for casual conversations and Q&amp;A,</li><li>reporting or fixing <a href='#reporting-issues'>issues</a> you encounter in our <a href='https://issues.apache.org/jira/browse/GROOVY'>bug tracker</a></li><li><a href='#documenting'>documenting</a> various aspects of the language or its APIs</li><li>improving this <a href='https://github.com/groovy/groovy-website'>website</a></li><li>covering the code base with more tests to avoid future regressions, </li><li>and of course, by <a href='#code'>contributing bug fixes or new features</a></li></ul><hr class='divider'/><h2>Discussing on the mailing-lists and forums</h2><p>
                                        If you encounter a problem, want to discuss a new feature,
                                        share interesting findings, and more, then the <a href='http://groovy-lang.org/mailing-lists.html'>mailing-lists</a>
                                        are the place to go to start a conversation with the Groovy developers
                                        and other Groovy users. Discussions on the mailing list are archived.
                                        It&apos;s the place to go to for all formal discussions or if you want to
                                        search the archives. </p><p>Alternatively, for more casual conversations and Q&amp;A, consider using the <a href='https://groovycommunity.com/'>Slack</a> channel. This channel is not endorsed by the Apache Software Foundation; it&apos;s run by Groovy enthusiasts in the community.</p><hr class='divider'/><a name='reporting-issues'></a><h2>Reporting issues</h2><p>
                                        If you are wanting to search existing issues, raise a new one or are keen
                                        to fix some existing issues, then you should become familiar with Groovy&apos;s <a href='http://groovy-lang.org/reporting-issues.html'>Bug tracker</a>.</p><p><button type='button' class='btn btn-default' onclick='window.location.href="https://issues.apache.org/jira/browse/GROOVY"'>Report an issue</button></p><hr class='divider'/><a name='documenting'></a><h2>Improving the documentation</h2><p>The documentation of the Groovy programming language comes in various forms:</p><ul><li>the <a href='http://groovy-lang.org/single-page-documentation.html'>reference documentation</a> covering the language specification, the user guides, getting started, and more.</li><li>the <a href='http://groovy-lang.org/api.html'>GroovyDoc APIs</a> documenting the classes of the Groovy code base</li><li>the <a href='http://groovy-lang.org/gdk.html'>Groovy GDK</a> documentation, explaining how Groovy enriches the JDK APIs</li><li>this <a href='https://github.com/groovy/groovy-website'>website</a></li></ul><p>To contribute to the Groovy reference documentation, this <a href='http://blog.cacoethes.co.uk/groovyandgrails/contributing-to-the-groovy-documentation'>blog post</a> gives all the details on how you can work on that documentation.</p><p>All the above is stored in our code <a href='https://github.com/groovy'>repositories on Github</a>, so having an account on Github would be ideal.</p><p>
                                    Contributing to this website is fairly easy, if you have a Github account already,
                                    as you can click on the <em>Improve this doc</em> buttons that you can see on all the pages of this website.
                                    So don't hesitate to help us improve it, fix typos, broken language, clarify complicated sections,
                                    add new material, etc.
                                </p><p>Please check the following section for more information on how to contribute to our codebase.</p><hr class='divider'/><a name='code'></a><h2>Contributing code</h2><p>
                                        If you know the area you want to contribute to, this is great, but if you are looking for
                                        some first contributions, the Groovy development team tries to maintain a <a href='https://issues.apache.org/jira/secure/IssueNavigator%21executeAdvanced.jspa?jqlQuery=project%3DGROOVY+and+labels+%3D+contrib+AND+resolution%3DUnresolved&runQuery=true&clear=true'>list of tickets</a>
                                        of possible easy contributions that could get you started on your journey
                                        to become a Groovy committer. Just raise your hand on the Groovy developer <a href='http://groovy-lang.org/mailing-lists.html'>mailing-list</a> to tell us about your desire to work on that ticket.</p><p>
                                    For more complicated tasks, the best approach is also to bring that to the attention of the Groovy developers,
                                    so they can give you some guidance on how best to tackle a particular problem, discuss implementation ideas
                                    and the semantics or scope of the proposed change.
                                </p><h3>Cloning the code base</h3><p>To work on the Groovy code base, you should be proficient enough in <a href='http://git-scm.com/'>git</a> and you should have an account on <a href='https://github.com/'>Github</a> to be able to create <a href='https://help.github.com/articles/creating-a-pull-request'>pull requests</a> with your changes.</p><p>Please fork <a href='https://github.com/apache/groovy'>https://github.com/apache/groovy</a> and create a local clone of your fork as explained in <a href='https://help.github.com/articles/fork-a-repo/'>fork a repo</a>.</p><p>Make sure you configure Git appropriately with the same email that you registered with on Github:</p><pre><code>git config --global user.name "YOUR NAME"
git config --global user.email "YOUR EMAIL"</code></pre><p>You can verify these are configured appropriately by running:</p><pre><code>git config --list</code></pre><h3>Working on the code base</h3><p>If you are working with the IntelliJ IDEA development environment, this <a href='http://melix.github.io/blog/2014/06/contribute-groovy-ide.html'>screencast</a> gives lots of details on how to setup your IDE.</p><p>Then, to work on the Groovy code base, to build and test Groovy, you can follow the <a href='https://github.com/apache/groovy/blob/master/README.adoc'>instructions</a> from the readme file in the Groovy repository.</p><p>The most important command you will have to run before sending your changes is the test command:</p><pre><code>./gradlew test</code></pre><p>For a successful contribution, all tests should be green!</p><h3>Creating a pull request</h3><p>Once you are satisfied with your changes:</p><ul><li>commit your changes in your local branch</li><li>push your changes to your remote branch on Github</li><li>send us a <a href='https://help.github.com/articles/creating-a-pull-request'>pull requests</a></li></ul></article><hr class='divider'/><h2>Build status</h2><p>The Groovy sources are tested thanks to our <a href='http://groovy-lang.org/buildstatus.html'>continuous integration server</a>.</p></div></div></div></div><footer id='footer'>
                            <div class='row'>
                                <div class='colset-3-footer'>
                                    <div class='col-1'>
                                        <h1>Groovy</h1><ul>
                                            <li><a href='http://groovy-lang.org/learn.html'>Learn</a></li><li><a href='http://groovy-lang.org/documentation.html'>Documentation</a></li><li><a href='http://groovy-lang.org/download.html'>Download</a></li><li><a href='http://groovy-lang.org/support.html'>Support</a></li><li><a href='http://groovy.apache.org'>Contribute</a></li><li><a href='http://groovy-lang.org/ecosystem.html'>Ecosystem</a></li>
                                        </ul>
                                    </div><div class='col-2'>
                                        <h1>About</h1><ul>
                                            <li><a href='https://github.com/apache/groovy'>Source code</a></li><li><a href='http://groovy-lang.org/security.html'>Security</a></li><li><a href='http://groovy-lang.org/learn.html#books'>Books</a></li><li><a href='http://groovy-lang.org/thanks.html'>Thanks</a></li><li><a href='http://www.apache.org/foundation/sponsorship.html'>Sponsorship</a></li><li><a href='http://groovy-lang.org/faq.html'>FAQ</a></li><li><a href='http://groovy-lang.org/search.html'>Search</a></li>
                                        </ul>
                                    </div><div class='col-3'>
                                        <h1>Socialize</h1><ul>
                                            <li><a href='http://groovy-lang.org/mailing-lists.html'>Discuss on the mailing-list</a></li><li><a href='http://groovy-lang.org/groovy-weekly.html'>Groovy newsletter</a></li><li><a href='https://twitter.com/ApacheGroovy'>Groovy on Twitter</a></li><li><a href='http://groovy-lang.org/events.html'>Events and conferences</a></li><li><a href='https://github.com/apache/groovy'>Source code on GitHub</a></li><li><a href='http://groovy-lang.org/reporting-issues.html'>Report issues in Jira</a></li><li><a href='https://google.com/+groovy'>Google+ Groovy Page</a></li><li><a href='http://bit.ly/g-community'>Google+ Groovy Community</a></li><li><a href='http://stackoverflow.com/questions/tagged/groovy'>Stack Overflow questions</a></li><li><a href='http://groovycommunity.com/'>Slack Community</a></li>
                                        </ul>
                                    </div><div class='col-right'>
                                        <p>
                                            The Groovy programming language is supported by the <a href='http://www.apache.org'>Apache Software Foundation</a> and the Groovy community
                                        </p><img src='http://groovy-lang.org/img/asf_logo.png' title='The Apache Software Foundation' alt='The Apache Software Foundation' class='img-responsive'/>
                                    </div>
                                </div><div class='clearfix'>&copy; 2003-2017 the Apache Groovy project &mdash; Groovy is Open Source, <a href='http://www.apache.org/licenses/LICENSE-2.0.html'>Apache 2 License</a></div>
                            </div>
                        </footer></div>
                </div>
            </div>
        </div>
    </div><script src='js/vendor/jquery-1.10.2.min.js' defer></script><script src='js/vendor/classie.js' defer></script><script src='js/vendor/bootstrap.js' defer></script><script src='js/vendor/sidebarEffects.js' defer></script><script src='js/vendor/modernizr-2.6.2.min.js' defer></script><script src='js/plugins.js' defer></script><script>
          (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
          (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
          m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
          })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

          ga('create', 'UA-257558-10', 'auto');
          ga('send', 'pageview');
    </script>
</body></html>