<!DOCTYPE html>

<!---
  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.
-->

<html lang=" en"><head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link href="https://raw.githubusercontent.com/dmlc/web-data/master/mxnet/image/mxnet-icon.png" rel="icon" type="image/png"><!-- Begin Jekyll SEO tag v2.6.1 -->
<title>Perform Code Reviews | Apache MXNet</title>
<meta name="generator" content="Jekyll v4.0.0" />
<meta property="og:title" content="Perform Code Reviews" />
<meta property="og:locale" content="en_US" />
<meta name="description" content="A flexible and efficient library for deep learning." />
<meta property="og:description" content="A flexible and efficient library for deep learning." />
<link rel="canonical" href="https://mxnet.apache.org/versions/master/community/code_review" />
<meta property="og:url" content="https://mxnet.apache.org/versions/master/community/code_review" />
<meta property="og:site_name" content="Apache MXNet" />
<script type="application/ld+json">
{"url":"https://mxnet.apache.org/versions/master/community/code_review","headline":"Perform Code Reviews","description":"A flexible and efficient library for deep learning.","@type":"WebPage","@context":"https://schema.org"}</script>
<!-- End Jekyll SEO tag -->
<script src="https://medium-widget.pixelpoint.io/widget.js"></script>
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
  <link rel="stylesheet" href="/versions/master/assets/main.css"><link type="application/atom+xml" rel="alternate" href="https://mxnet.apache.org/versions/master/feed.xml" title="Apache MXNet" /><script>
if(!(window.doNotTrack === "1" || navigator.doNotTrack === "1" || navigator.doNotTrack === "yes" || navigator.msDoNotTrack === "1")) {
  (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','https://www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-96378503-1', 'auto');
  ga('send', 'pageview');
}
</script>
  
<script src="/versions/master/assets/js/jquery-3.3.1.min.js"></script><script src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js" defer></script>
  <script src="/versions/master/assets/js/globalSearch.js" defer></script>
  <script src="/versions/master/assets/js/clipboard.js" defer></script>
  <script src="/versions/master/assets/js/copycode.js" defer></script></head>
<body><header class="site-header" role="banner">

  <script>
    $(document).ready(function () {

      // HEADER OPACITY LOGIC

      function opacity_header() {
        var value = "rgba(4,140,204," + ($(window).scrollTop() / 300 + 0.4) + ")"
        $('.site-header').css("background-color", value)
      }

      $(window).scroll(function () {
        opacity_header()
      })
      opacity_header();

      // MENU SELECTOR LOGIC
      $('.page-link').each( function () {
        if (window.location.href.includes(this.href)) {
          $(this).addClass("page-current");
        }
      });
    })
  </script>
  <div class="wrapper">
    <a class="site-title" rel="author" href="/versions/master/"><img
            src="/versions/master/assets/img/mxnet_logo.png" class="site-header-logo"></a>
    <nav class="site-nav">
      <input type="checkbox" id="nav-trigger" class="nav-trigger"/>
      <label for="nav-trigger">
          <span class="menu-icon">
            <svg viewBox="0 0 18 15" width="18px" height="15px">
              <path d="M18,1.484c0,0.82-0.665,1.484-1.484,1.484H1.484C0.665,2.969,0,2.304,0,1.484l0,0C0,0.665,0.665,0,1.484,0 h15.032C17.335,0,18,0.665,18,1.484L18,1.484z M18,7.516C18,8.335,17.335,9,16.516,9H1.484C0.665,9,0,8.335,0,7.516l0,0 c0-0.82,0.665-1.484,1.484-1.484h15.032C17.335,6.031,18,6.696,18,7.516L18,7.516z M18,13.516C18,14.335,17.335,15,16.516,15H1.484 C0.665,15,0,14.335,0,13.516l0,0c0-0.82,0.665-1.483,1.484-1.483h15.032C17.335,12.031,18,12.695,18,13.516L18,13.516z"/>
            </svg>
          </span>
      </label>
      <div class="gs-search-border">
        <div id="gs-search-icon"></div>
        <form id="global-search-form">
          <input id="global-search" type="text" title="Search" placeholder="Search" />
          <div id="global-search-dropdown-container">
            <button class="gs-current-version btn" type="button" data-toggle="dropdown">
                <span id="gs-current-version-label">master</span>
                <svg class="gs-dropdown-caret" viewBox="0 0 32 32" class="icon icon-caret-bottom" aria-hidden="true">
                    <path class="dropdown-caret-path" d="M24 11.305l-7.997 11.39L8 11.305z"></path>
                </svg>
            </button>
            <ul class="gs-opt-group gs-version-dropdown">
              
                
                  <li class="gs-opt gs-versions active">master</li>
                
              
                
                  <li class="gs-opt gs-versions">1.8.0</li>
                
              
                
                  <li class="gs-opt gs-versions">1.7.0</li>
                
              
                
                  <li class="gs-opt gs-versions">1.6.0</li>
                
              
                
                  <li class="gs-opt gs-versions">1.5.0</li>
                
              
                
                  <li class="gs-opt gs-versions">1.4.1</li>
                
              
                
                  <li class="gs-opt gs-versions">1.3.1</li>
                
              
                
                  <li class="gs-opt gs-versions">1.2.1</li>
                
              
                
                  <li class="gs-opt gs-versions">1.1.0</li>
                
              
                
                  <li class="gs-opt gs-versions">1.0.0</li>
                
              
                
                  <li class="gs-opt gs-versions">0.12.1</li>
                
              
                
                  <li class="gs-opt gs-versions">0.11.0</li>
                
              
            </ul>
        </div>
          <span id="global-search-close">x</span>
        </form>
      </div>
      <div class="trigger">
        <div id="global-search-mobile-border">
          <div id="gs-search-icon-mobile"></div>
          <input id="global-search-mobile" placeholder="Search..." type="text"/>
          <div id="global-search-dropdown-container-mobile">
            <button class="gs-current-version-mobile btn" type="button" data-toggle="dropdown">
                <svg class="gs-dropdown-caret" viewBox="0 0 32 32" class="icon icon-caret-bottom" aria-hidden="true">
                    <path class="dropdown-caret-path" d="M24 11.305l-7.997 11.39L8 11.305z"></path>
                </svg>
            </button>
            <ul class="gs-opt-group gs-version-dropdown-mobile">
              
                
                  <li class="gs-opt gs-versions active">master</li>
                
              
                
                  <li class="gs-opt gs-versions">1.8.0</li>
                
              
                
                  <li class="gs-opt gs-versions">1.7.0</li>
                
              
                
                  <li class="gs-opt gs-versions">1.6.0</li>
                
              
                
                  <li class="gs-opt gs-versions">1.5.0</li>
                
              
                
                  <li class="gs-opt gs-versions">1.4.1</li>
                
              
                
                  <li class="gs-opt gs-versions">1.3.1</li>
                
              
                
                  <li class="gs-opt gs-versions">1.2.1</li>
                
              
                
                  <li class="gs-opt gs-versions">1.1.0</li>
                
              
                
                  <li class="gs-opt gs-versions">1.0.0</li>
                
              
                
                  <li class="gs-opt gs-versions">0.12.1</li>
                
              
                
                  <li class="gs-opt gs-versions">0.11.0</li>
                
              
            </ul>
        </div>
        </div>
        <a class="page-link" href="/versions/master/get_started">Get Started</a>
        <a class="page-link" href="/versions/master/blog">Blog</a>
        <a class="page-link" href="/versions/master/features">Features</a>
        <a class="page-link" href="/versions/master/ecosystem">Ecosystem</a>
        <a class="page-link" href="/versions/master/api">Docs & Tutorials</a>
        <a class="page-link" href="https://github.com/apache/incubator-mxnet">GitHub</a>
        <div class="dropdown">
          <span class="dropdown-header">master
            <svg class="dropdown-caret" viewBox="0 0 32 32" class="icon icon-caret-bottom" aria-hidden="true"><path class="dropdown-caret-path" d="M24 11.305l-7.997 11.39L8 11.305z"></path></svg>
          </span>
          <div class="dropdown-content">
            
              
                <a class="dropdown-option-active" href="/">master</a>
              
            
              
                <a href="/versions/1.8.0/">1.8.0</a>
              
            
              
                <a href="/versions/1.7.0/">1.7.0</a>
              
            
              
                <a href="/versions/1.6.0/">1.6.0</a>
              
            
              
                <a href="/versions/1.5.0/">1.5.0</a>
              
            
              
                <a href="/versions/1.4.1/">1.4.1</a>
              
            
              
                <a href="/versions/1.3.1/">1.3.1</a>
              
            
              
                <a href="/versions/1.2.1/">1.2.1</a>
              
            
              
                <a href="/versions/1.1.0/">1.1.0</a>
              
            
              
                <a href="/versions/1.0.0/">1.0.0</a>
              
            
              
                <a href="/versions/0.12.1/">0.12.1</a>
              
            
              
                <a href="/versions/0.11.0/">0.11.0</a>
              
            
          </div>
        </div>
      </div>
    </nav>
  </div>
</header>
<main class="page-content" aria-label="Content">
    <script>

</script>
<article class="post">

    <header class="post-header wrapper">
        <h1 class="post-title">Perform Code Reviews</h1>
        <h3>General guideline for code reviewers.</h3><a style="float:left; margin-top:20px" href="/versions/master/community/index" class="btn btn-action">Contribute
            <span class="span-accented">›</span></a></header>

    <div class="post-content">
        <div class="wrapper">
            <!--- 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 id="perform-code-reviews">Perform Code Reviews</h1>

<p>This is a general guideline for code reviewers. First of all, while it
is great to add new features to a project, we must also be aware that
each line of code we introduce also brings <strong>technical debt</strong> that we
may have to eventually pay.</p>

<p>Open source code is maintained by a community with diverse background,
and hence it is even more important to provide clear, documented and
maintainable code. Code reviews are a shepherding process to spot
potential problems, improve quality of the code. We should, however, not
rely on the code review process to get the code into a ready state.
Contributors are encouraged to polish the code to a ready state before
requesting reviews. This is especially expected for code owner and
committer candidates.</p>

<p>Here are some checklists for code reviews, it is also helpful reference
for contributors.</p>

<h2 id="hold-the-highest-standard">Hold the Highest Standard</h2>

<p>The first rule for code reviewers is to always keep the highest
standard, and do not approve code just to “be friendly”. Good,
informative critics each other learn and prevent technical debt in early
stages.</p>

<h2 id="deliberate-on-api-and-data-structures">Deliberate on API and Data Structures</h2>

<p>A minimum and stable API is critical to the project’s life. A good API
makes a huge difference. Always think very carefully about all the
aspects including naming, argument definitions and behavior.</p>

<p>When possible, pay more attention still to the proposed API design
during code reviews. Remember, it is easier to improve code
implementation, but it is extremely hard to change an API once accepted.
We should treat data structures that are shared across modules(e.g. AST)
in the same way. If/when uncertain, start a conversation with more
developers before committing.</p>

<p>Here are some useful principles for designing APIs:</p>

<ul>
  <li>Be consistent with existing well-known package’s APIs if the
features overlap. For example, tensor operation APIs should always
be consistent with the numpy API.</li>
  <li>Be consistent with existing APIs in the same project. For example,
we should use the same argument ordering across all the optimization
passes, so there is no “surprise” when using them.</li>
  <li>Think about whether the API will change in the future. For example,
we will have more options like loop_unrolling and device placement
policy as we add more optimizations in build. We can package
optimization knobs into a build configuration object. In this way,
the build API is stable over time, even though it may be enriched.</li>
  <li>Write documentation. Documentation is mandatory for APIs and
sometimes writing documents helps us to think further about the
design as well as whether we need to add further clarifications.</li>
  <li>Minimum. Think about how many lines of code a user has to write to
use the API. Remove layers of abstraction when possible.</li>
</ul>

<h2 id="ensure-test-coverage">Ensure Test Coverage</h2>

<p>Each new change of features should introduce test cases. Bug fixes
should include regression tests that prevent the problem from happening
again.</p>

<h2 id="documentation-is-mandatory">Documentation is Mandatory</h2>

<p>Documentation is often overlooked. When adding new functions or changing
an existing function, the documentation should be directly updated. A
new feature is meaningless without documentation to make it accessible.
See more at <a href="/versions/master/community/document">Write Document and Tutorials</a>.</p>

<h2 id="minimum-dependency">Minimum Dependency</h2>

<p>Always be cautious in introducing dependencies. While it is important to
reuse code and avoid reinventing the wheel, dependencies can increase
burden of users in deployment. A good design principle is that a feature
or function should only have a dependency if/when a user actually use it.</p>

<h2 id="ensure-readability">Ensure Readability</h2>

<p>While it is hard to implement a new feature, it is even harder to make
others understand and maintain the code you wrote. It is common for a
PMC or committer to not be able to understand certain contributions. In
such case, a reviewer should say “I don’t understand” and ask the
contributor to clarify. We highly encourage code comments which explain
the code logic along with the code.</p>

<h2 id="concise-implementation">Concise Implementation</h2>

<p>Some basic principles applied here: favor vectorized array code over
loops, use existing APIs that solve the problem.</p>

<h2 id="document-lessons-in-code-reviews">Document Lessons in Code Reviews</h2>

<p>When you find there are some common or recurring lessons that can be
summarized, add it to the <a href="/versions/master/community/code_guide">Code Guide and Tips</a>.
It is always good to refer to the guideline document when requesting
changes, so the lessons can be shared to all the community.</p>

<h2 id="respect-each-other">Respect each other</h2>

<p>The code reviewers and contributors are paying the most precious
currency in the world -- time. We are volunteers in the community to
spend the time to build good code, help each other, learn and have fun
hacking.</p>

<h2 id="learn-from-other-code-reviews">Learn from other Code Reviews</h2>

<p>There can be multiple reviewers reviewing the same changes. Many times
other reviewers may spot things you did not find. Try to learn from
other code reviews, when possible, document these lessons.</p>

<h2 id="approve-and-request-changes-explicitly">Approve and Request Changes Explicitly</h2>

<p>The contributor and code owner can request code reviews from multiple
reviewers. Remember to approve changes when your comments are addressed
in a code review. To do so -- please click on changes tab in the pull
request, then select approve, or comment on the code and click request
changes. Code owner can decide if the code can be merged in case by case
if some of the reviewers did not respond in time(e.g. a week) and
existing reviews are sufficient.</p>

<h2 id="get-started">Get Started</h2>

<p>Checkout the following <a href="https://github.com/apache/mxnet/labels/pr-awaiting-review">PRs that need review</a>”</p>

<script async="" defer="" src="https://buttons.github.io/buttons.js"></script>

<script src="https://apis.google.com/js/platform.js"></script>


        </div>
    </div>

</article>

</main><footer class="site-footer h-card">
    <div class="wrapper">
        <div class="row">
            <div class="col-4">
                <h4 class="footer-category-title">Resources</h4>
                <ul class="contact-list">
                    <li><a href="/versions/master/community#stay-connected">Mailing lists</a></li>
                    <li><a href="https://discuss.mxnet.io">MXNet Discuss forum</a></li>
                    <li><a href="/versions/master/community#github-issues">Github Issues</a></li>
                    <li><a href="https://github.com/apache/incubator-mxnet/projects">Projects</a></li>
                    <li><a href="https://cwiki.apache.org/confluence/display/MXNET/Apache+MXNet+Home">Developer Wiki</a></li>
                    <li><a href="/versions/master/community">Contribute To MXNet</a></li>

                </ul>
            </div>

            <div class="col-4"><ul class="social-media-list"><li><a href="https://github.com/apache/incubator-mxnet"><svg class="svg-icon"><use xlink:href="/versions/master/assets/minima-social-icons.svg#github"></use></svg> <span class="username">apache/incubator-mxnet</span></a></li><li><a href="https://www.twitter.com/apachemxnet"><svg class="svg-icon"><use xlink:href="/versions/master/assets/minima-social-icons.svg#twitter"></use></svg> <span class="username">apachemxnet</span></a></li><li><a href="https://youtube.com/apachemxnet"><svg class="svg-icon"><use xlink:href="/versions/master/assets/minima-social-icons.svg#youtube"></use></svg> <span class="username">apachemxnet</span></a></li></ul>
</div>

            <div class="col-4 footer-text">
                <p>A flexible and efficient library for deep learning.</p>
            </div>
        </div>
    </div>
</footer>
<footer class="site-footer2">
    <div class="wrapper">
        <div class="row">
            <div class="col-3">
                <img src="/versions/master/assets/img/apache_incubator_logo.png" class="footer-logo col-2">
            </div>
            <div class="footer-bottom-warning col-9">
                <p>Apache MXNet is an effort undergoing incubation at The Apache Software Foundation (ASF), <span
                        style="font-weight:bold">sponsored by the <i>Apache Incubator</i></span>. 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.
                </p><p>"Copyright © 2017-2018, The Apache Software Foundation Apache MXNet, MXNet, Apache, the Apache
                    feather, and the Apache MXNet project logo are either registered trademarks or trademarks of the
                    Apache Software Foundation."</p>
            </div>
        </div>
    </div>
</footer>




</body>

</html>
