<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.8.1 
 | Rendered using Apache Maven Fluido Skin 1.6
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Apache Hivemall &#x2013; How to build</title>
    <link rel="stylesheet" href="./css/apache-maven-fluido-1.6.min.css" />
    <link rel="stylesheet" href="./css/site.css" />
    <link rel="stylesheet" href="./css/print.css" media="print" />
      <script type="text/javascript" src="./js/apache-maven-fluido-1.6.min.js"></script>
      </head>
    <body class="topBarEnabled">
                      <a href="https://github.com/apache/incubator-hivemall">
      <img style="position: absolute; top: 0; right: 0; border: 0; z-index: 10000;"
        src="https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png"
        alt="Fork me on GitHub">
    </a>
      <div id="topbar" class="navbar navbar-fixed-top navbar-inverse">
      <div class="navbar-inner">
            <div class="container"><div class="nav-collapse">
            <ul class="nav">
        <li class="dropdown">
        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project <b class="caret"></b></a>
        <ul class="dropdown-menu">
            <li><a href="index.html" title="Home">Home</a></li>
            <li><a href="download.html" title="Download">Download</a></li>
            <li><a href="licenses.html" title="Licenses">Licenses</a></li>
            <li><a href="team.html" title="Team">Team</a></li>
            <li><a href="poweredby.html" title="Powered By">Powered By</a></li>
            <li><a href="http://incubator.apache.org/projects/hivemall.html" title="Incubation Status">Incubation Status</a></li>
        </ul>
      </li>
        <li class="dropdown">
        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Documentation <b class="caret"></b></a>
        <ul class="dropdown-menu">
            <li><a href="userguide/index.html" title="User Guide">User Guide</a></li>
            <li><a href="overview.html" title="Overview">Overview</a></li>
            <li><a href="https://cwiki.apache.org/confluence/display/HIVEMALL" target="_blank" title="Wiki">Wiki</a></li>
            <li><a href="faq.html" title="FAQ">FAQ</a></li>
        </ul>
      </li>
        <li class="dropdown">
        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Get Involved <b class="caret"></b></a>
        <ul class="dropdown-menu">
            <li><a href="mailing-lists.html" title="Mailing Lists">Mailing Lists</a></li>
            <li><a href="https://issues.apache.org/jira/browse/HIVEMALL" target="_blank" title="Issues (Jira)">Issues (Jira)</a></li>
            <li><a href="repository.html" title="Source (Git)">Source (Git)</a></li>
            <li><a href="https://travis-ci.org/apache/incubator-hivemall" target="_blank" title="Travis CI">Travis CI</a></li>
            <li><a href="contributing.html" title="Contributing">Contributing</a></li>
            <li><a href="release-guide.html" title="Release Guide">Release Guide</a></li>
        </ul>
      </li>
        <li class="dropdown">
        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
        <ul class="dropdown-menu">
            <li><a href="http://www.apache.org/foundation/how-it-works.html" target="_blank" title="How Apache Works">How Apache Works</a></li>
            <li><a href="http://www.apache.org/foundation/" target="_blank" title="Foundation">Foundation</a></li>
            <li><a href="http://www.apache.org/foundation/sponsorship.html" target="_blank" title="Sponsoring Apache">Sponsoring Apache</a></li>
            <li><a href="http://www.apache.org/foundation/thanks.html" target="_blank" title="Thanks">Thanks</a></li>
        </ul>
      </li>
              </ul>
                              <ul class="nav pull-right"><li>
        <a href="https://twitter.com/ApacheHivemall" class="twitter-follow-button" data-show-count="false" data-align="right" data-size="large" data-show-screen-name="true" data-lang="en">Follow ApacheHivemall</a>
    <script type="text/javascript">!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
        </li></ul>
                    </div>
        </div>
      </div>
    </div>
    <div class="container">
      <div id="banner">
        <div class="pull-left"><div id="bannerLeft"><h2>Apache Hivemall</h2>
</div>
</div>
        <div class="pull-right"></div>
        <div class="clear"><hr/></div>
      </div>

      <div id="breadcrumbs">
        <ul class="breadcrumb">
        <li id="publishDate">Last Published: 2019-10-31<span class="divider">|</span>
</li>
          <li id="projectVersion">Version: 0.6.0-incubating-SNAPSHOT</li>
        </ul>
      </div>
        <div id="bodyColumn" >
<!--
  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.
--><h1>How to build</h1>
<div class="section">
<div class="section">
<div class="section">
<h4><a name="Prerequisites"></a>Prerequisites</h4>

<ul>
  
<li>Maven 3.x</li>
  
<li>JDK 1.7 or later</li>
</ul>

<div class="source">
<div class="source"><pre class="prettyprint">$ cd hivemall

# This is a workaround for resolving xgboost dependencies.
$ mvn validate -Pcompile-xgboost
 
$ mvn clean package
</pre></div></div>
<h1>Contribution guideline</h1>
<p>This guide documents the best way to make various types of contribution to Apache Hivemall, including what is required before submitting a code change.</p>
<p>Contributing to Hivemall doesn&#x2019;t just mean writing code. Helping new users on the <a href="/mail-lists.html">mailing list</a>, testing releases, and improving documentation are also welcome. In fact, proposing significant code changes usually requires first gaining experience and credibility within the community by helping in other ways. This is also a guide to becoming an effective contributor. So, this guide organizes contributions in order that they should probably be considered by new contributors who intend to get involved long-term. Build some track record of helping others, rather than just open pull requests.</p></div></div></div>
<div class="section">
<h2><a name="Preparing_to_contribute_code_changes"></a>Preparing to contribute code changes</h2>
<p>Before proceeding, contributors should evaluate if the proposed change is likely to be relevant, new and actionable:</p>

<ul>
  
<li>Is it clear that code must change? Proposing a <a class="externalLink" href="https://issues.apache.org/jira/browse/HIVEMALL">JIRA</a> and pull request is appropriate only when a clear problem or change has been identified. If simply having trouble using Hivemall, use the <a href="/mail-lists.html">mailing lists</a> first, rather than consider filing a JIRA or proposing a change. When in doubt, email <a class="externalLink" href="mailto:user@hivemall.incubator.apache.org">user@hivemall.incubator.apache.org</a> first about the possible change</li>
  
<li>Search the <a class="externalLink" href="mailto:user@hivemall.incubator.apache.org">user@hivemall.incubator.apache.org</a> and <a class="externalLink" href="mailto:dev@hivemall.incubator.apache.org">dev@hivemall.incubator.apache.org</a> mailing list archives for related discussions. Often, the problem has been discussed before, with a resolution that doesn&#x2019;t require a code change, or recording what kinds of changes will not be accepted as a resolution.</li>
  
<li>Search JIRA for existing issues: <a class="externalLink" href="https://issues.apache.org/jira/browse/HIVEMALL">https://issues.apache.org/jira/browse/HIVEMALL</a> . Please search by typing keyword in search box.</li>
</ul>
<p><b>When you contribute code, you affirm that the contribution is your original work and that you license the work to the project under the project&#x2019;s open source license. Whether or not you state this explicitly, by submitting any copyrighted material via pull request, email, or other means you agree to license the material under the project&#x2019;s open source license and warrant that you have the legal authority to do so.</b></p>
<div class="section">
<h3><a name="JIRA"></a>JIRA</h3>
<p>Generally, Hivemall uses JIRA to track logical issues, including bugs and improvements, and uses Github pull requests to manage the review and merge of specific code changes. That is, JIRAs are used to describe what should be fixed or changed, and high-level approaches, and pull requests describe how to implement that change in the project&#x2019;s source code. For example, major design decisions are discussed in JIRA.</p>

<ol style="list-style-type: decimal">
  
<li>Find the existing <a class="externalLink" href="https://issues.apache.org/jira/browse/HIVEMALL">Hivemall</a> JIRA that the change pertains to.
  
<ul>
    
<li>Do not create a new JIRA if creating a change to address an existing issue in JIRA; add to the existing discussion and work instead</li>
    
<li>Look for existing pull requests that are linked from the JIRA, to understand if someone is already working on the JIRA</li>
  </ul></li>
  
<li>If the change is new, then it usually needs a new JIRA. However, trivial changes, where the what should change is virtually the same as the how it should change do not require a JIRA. Example: &#x201c;Fix typos in Foo scaladoc&#x201d;</li>
  
<li>If required, create a new JIRA:
  
<ul>
    
<li>Provide a descriptive Title. &#x201c;Update web UI&#x201d; or &#x201c;Problem in scheduler&#x201d; is not sufficient. &#x201c;Inject the Hivemall aggregate functionality in RelationalGroupedDataset&#x201d; is good.</li>
    
<li>Write a detailed Description. For bug reports, this should ideally include a short reproduction of the problem. For new features, it may include a design document.</li>
    
<li>Set required fields:
    
<ul>
      
<li><i>Issue Type</i>. Generally, Bug, Improvement and Test are the only types used in Hivemall.</li>
      
<li><i>Affects Version</i>. For Bugs, assign at least one version that is known to exhibit the problem or need the change</li>
      
<li>Do not set the following fields:
      
<ul>
        
<li><i>Fix Version</i>. This is assigned by committers only when resolved.</li>
        
<li><i>Target Version</i>. This is assigned by committers to indicate a PR has been accepted for possible fix by the target version.</li>
      </ul></li>
    </ul></li>
  </ul></li>
  
<li>If the change is a large change, consider inviting discussion on the issue at <a class="externalLink" href="mailto:dev@hivemall.incubator.apache.org">dev@hivemall.incubator.apache.org</a> first before proceeding to implement the change.</li>
</ol></div>
<div class="section">
<h3><a name="Pull_Request"></a>Pull Request</h3>

<ol style="list-style-type: decimal">
  
<li>Fork the Github repository at <a class="externalLink" href="http://github.com/apache/incubator-hivemall">http://github.com/apache/incubator-hivemall</a> if you haven&#x2019;t already</li>
  
<li>Clone your fork, create a new branch, push commits to the branch.</li>
  
<li>Consider whether documentation or tests need to be added or updated as part of the change, and add them as needed.</li>
  
<li>Run all tests with <tt>mvn test</tt> to verify that the code still compiles, passes tests, and passes style checks.</li>
  
<li>Open a pull request against the master branch of <a class="externalLink" href="https://github.com/apache/incubator-hivemall">apache/incubator-hivemall</a>. (Only in special cases would the PR be opened against other branches.)
  
<ul>
    
<li>The PR title should be of the form [HIVEMALL-xxxx] Title, where HIVEMALL-xxxx is the relevant JIRA number, Title may be the JIRA&#x2019;s title or a more specific title describing the PR itself.</li>
    
<li>If the pull request is still a work in progress, and so is not ready to be merged, but needs to be pushed to Github to facilitate review, then add [WIP] head of the title.</li>
    
<li>Consider identifying committers or other contributors who have worked on the code being changed. Find the file(s) in Github and click &#x201c;Blame&#x201d; to see a line-by-line annotation of who changed the code last. You can add @username in the PR description to ping them immediately.</li>
    
<li>Please state that the contribution is your original work and that you license the work to the project under the project&#x2019;s open source license.</li>
    
<li>The related JIRA, if any, will be marked as &#x201c;In Progress&#x201d; and your pull request will automatically be linked to it. There is no need to be the Assignee of the JIRA to work on it, though you are welcome to comment that you have begun work.</li>
  </ul></li>
  
<li>The Jenkins automatic pull request builder will test your changes</li>
  
<li>After about some minutes, Jenkins will post the results of the test to the pull request, along with a link to the full results on Jenkins.</li>
  
<li>Watch for the results, and investigate and fix failures promptly
  
<ul>
    
<li>Fixes can simply be pushed to the same branch from which you opened your pull request</li>
    
<li>Jenkins will automatically re-test when new commits are pushed</li>
    
<li>If the tests failed for reasons unrelated to the change (e.g. Jenkins outage), then a committer can request a re-test with &#x201c;Jenkins, retest this please&#x201d;. Ask if you need a test restarted.</li>
  </ul></li>
</ol></div></div>
<div class="section">
<h2><a name="The_Review_Process"></a>The Review Process</h2>

<ul>
  
<li>Other reviewers, including committers, may comment on the changes and suggest modifications. Changes can be added by simply pushing more commits to the same branch.</li>
  
<li>Lively, polite, rapid technical debate is encouraged from everyone in the community. The outcome may be a rejection of the entire change.</li>
  
<li>Reviewers can indicate that a change looks suitable for merging with a comment such as: &#x201c;I think this patch looks good&#x201d;. Hivemall uses the LGTM convention for indicating the strongest level of technical sign-off on a patch: simply comment with the word &#x201c;LGTM&#x201d;. It specifically means: &#x201c;I&#x2019;ve looked at this thoroughly and take as much ownership as if I wrote the patch myself&#x201d;. If you comment LGTM you will be expected to help with bugs or follow-up issues on the patch. Consistent, judicious use of LGTMs is a great way to gain credibility as a reviewer with the broader community.</li>
  
<li>Sometimes, other changes will be merged which conflict with your pull request&#x2019;s changes. The PR can&#x2019;t be merged until the conflict is resolved. This can be resolved with &#x201c;git fetch origin&#x201d; followed by &#x201c;git merge origin/master&#x201d; and resolving the conflicts by hand, then pushing the result to your branch.</li>
  
<li>Try to be responsive to the discussion rather than let days pass between replies</li>
</ul></div>
<div class="section">
<h2><a name="Closing_your_pull_request__JIRA"></a>Closing your pull request / JIRA</h2>

<ul>
  
<li>If a change is accepted, it will be merged and the pull request will automatically be closed, along with the associated JIRA if any
  
<ul>
    
<li>Note that in the rare case you are asked to open a pull request against a branch besides master, that you will actually have to close the pull request manually</li>
    
<li>The JIRA will be Assigned to the primary contributor to the change as a way of giving credit. If the JIRA isn&#x2019;t closed and/or Assigned promptly, comment on the JIRA.</li>
  </ul></li>
  
<li>If your pull request is ultimately rejected, please close it promptly</li>
  
<li>If a pull request has gotten little or no attention, consider improving the description or the change itself and ping likely reviewers again after a few days. Consider proposing a change that&#x2019;s easier to include, like a smaller and/or less invasive change.</li>
  
<li>If it has been reviewed but not taken up after weeks, after soliciting review from the most relevant reviewers, or, has met with neutral reactions, the outcome may be considered a &#x201c;soft no&#x201d;. It is helpful to withdraw and close the PR in this case.</li>
  
<li>If a pull request is closed because it is deemed not the right approach to resolve a JIRA, then leave the JIRA open. However if the review makes it clear that the issue identified in the JIRA is not going to be resolved by any pull request (not a problem, won&#x2019;t fix) then also resolve the JIRA.</li>
</ul>
<p><a class="externalLink" href="http://www.apache.org/foundation/getinvolved.html">Here</a> is a general guide for contributing to Apache Project.</p></div>
        </div>
    </div>
    <hr/>
    <footer>
      <div class="container">
        <div class="row">
<p>
			  <small>
                Apache Hivemall is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by <a href="http://incubator.apache.org/">the Apache Incubator</a>.
                Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, 
                and decision making process have stabilized in a manner consistent with other successful ASF projects. 
                While incubation status is not necessarily a reflection of the completeness or stability of the code, 
                it does indicate that the project has yet to be fully endorsed by the ASF.
			  </small>
			</p>
        </div>
        <p id="poweredBy" class="pull-right">  <a href="http://incubator.apache.org/projects/hivemall.html" title="Apache Incubator" class="builtBy"><img class="builtBy"  alt="Apache Incubator" src="images/apache-incubator-logo.png"    /></a>
  </p>
        </div>
    </footer>
    </body>
</html>
