blob: 8fea150a0f47e0ef50e797d0f2e560c736165a5a [file] [log] [blame]
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
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.
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Development Workflow &mdash; NuttX latest documentation</title>
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/sphinx_tabs/semantic-ui-2.4.1/segment.min.css" type="text/css" />
<link rel="stylesheet" href="../_static/sphinx_tabs/semantic-ui-2.4.1/menu.min.css" type="text/css" />
<link rel="stylesheet" href="../_static/sphinx_tabs/semantic-ui-2.4.1/tab.min.css" type="text/css" />
<link rel="stylesheet" href="../_static/sphinx_tabs/tabs.css" type="text/css" />
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
<link rel="shortcut icon" href="../_static/favicon.ico"/>
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/language_data.js"></script>
<script type="text/javascript" src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="Making Changes Using Git" href="making-changes.html" />
<link rel="prev" title="Contributing" href="index.html" />
<body class="wy-body-for-nav">
<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"> NuttX
<img src="../_static/NuttX.png" class="logo" alt="Logo"/>
<!-- this version selector is quite ugly, should be probably replaced by something
more modern -->
<div class="version-selector">
<select onchange="javascript:location.href = this.value;">
<option value="../../latest" selected="selected">latest</option>
<option value="../../10.0.0" >10.0.0</option>
<option value="../../10.0.1" >10.0.1</option>
<option value="../../10.1.0" >10.1.0</option>
<option value="../../10.2.0" >10.2.0</option>
<option value="../../10.3.0" >10.3.0</option>
<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" />
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<p class="caption"><span class="caption-text">Table of Contents</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../index.html">Home</a></li>
<li class="toctree-l1"><a class="reference internal" href="../introduction/index.html">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../introduction/inviolables.html">The Inviolable Principles of NuttX</a></li>
<li class="toctree-l1"><a class="reference internal" href="../quickstart/index.html">Getting Started</a></li>
<li class="toctree-l1"><a class="reference internal" href="../components/index.html">OS Components</a></li>
<li class="toctree-l1"><a class="reference internal" href="../applications/index.html">Applications</a></li>
<li class="toctree-l1"><a class="reference internal" href="../boards/index.html">Supported Boards</a></li>
<li class="toctree-l1"><a class="reference internal" href="../reference/index.html">API Reference</a></li>
<li class="toctree-l1"><a class="reference internal" href="../guides/index.html">Guides</a></li>
<li class="toctree-l1"><a class="reference internal" href="../releases/index.html">Releases</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">Contributing</a><ul class="current">
<li class="toctree-l2 current"><a class="current reference internal" href="#">Development Workflow</a></li>
<li class="toctree-l2"><a class="reference internal" href="making-changes.html">Making Changes Using Git</a></li>
<li class="toctree-l2"><a class="reference internal" href="coding_style.html">C Coding Standard</a></li>
<li class="toctree-l2"><a class="reference internal" href="documentation.html">Documentation</a></li>
<li class="toctree-l1"><a class="reference internal" href="../glossary.html">Glossary</a></li>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">NuttX</a>
<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" class="icon icon-home"></a> &raquo;</li>
<li><a href="index.html">Contributing</a> &raquo;</li>
<li>Development Workflow</li>
<li class="wy-breadcrumbs-aside">
<a href="../_sources/contributing/workflow.rst.txt" rel="nofollow"> View page source</a>
<div role="main" class="document" itemscope="itemscope" itemtype="">
<div itemprop="articleBody">
<div class="admonition-todo admonition" id="id1">
<p class="admonition-title">Todo</p>
<p>update when workflow is settled</p>
<div class="section" id="development-workflow">
<h1>Development Workflow<a class="headerlink" href="#development-workflow" title="Permalink to this headline"></a></h1>
<p>NuttX development workflow is based around contributions submitted in the form of GitHub Pull Requests (PR). This is true both for external contributors and NuttX maintainers, as direct pushes to the repository are not allowed as a general rule. Once submitted, your PR
will be reviewed and checked using Continuous Integration (CI) practices.</p>
<p>You should be aware of the following:</p>
<li><p>All contributions must adhere to the <a class="reference internal" href="coding_style.html"><span class="doc">Coding Standard</span></a>. You can check your files using <code class="docutils literal notranslate"><span class="pre">nxstyle</span></code>
or complete patchsets using <code class="docutils literal notranslate"><span class="pre">checkpatch</span></code> script (both found in <code class="docutils literal notranslate"><span class="pre">tools</span></code> subdirectory of NuttX repository). This check will also run
automatically during CI to ensure conformance.</p>
<p>Note that not all existing files in the repository are already adapted to conform to the standard as this is an ongoing effort. Thus,
if you’re submitting a patch to an existing file you may have to make the file conform to the standard, even if you are not reponsible
for those standard violations.</p>
<p>It is also appreciated that you separate any styling fixes in a separate commit from the functional changes so that these are more
easily readable during review.</p>
<li><p>Before starting work on any given non trivial contribution, do subscribe to the mailing list and ask about your idea to avoid
wasted effort by going the wrong-route.</p></li>
<li><p>If you are submitting an original contribution (you wrote the code yourself from scratch) it will have to be submitted under
the terms of the Apache 2.0 License using the corresponding <a class="reference internal" href="coding_style.html#appendix"><span class="std std-ref">header</span></a>.</p>
<p>Note that if you are working as an employee in a company, usually copyright belongs to the company and thus this means the company
will have to authorize this and submit the appropriate license agreements.</p>
<li><p>If you are submitting third-party code:</p>
<li><p>Code from actively developed projects is not accepted to be included in NuttX (i.e.: creating a fork). It is expected that
changes required in third-party code for NuttX support are to be implemented in these projects. As an intermediate solution,
it is acceptable to include a patch to be applied to this third-party code, which will be pulled during built.</p></li>
<li><p>If this is from an inactive project, it may be considered for inclusion in NuttX, provided that licensing terms allow to do so
and it is deemed of sufficient value to be included, considering that this code will have to be maintained in NuttX afterwards.</p>
<p>Note that it is undesireable to included non Apache 2.0 Licensed code inside the repository, even if the license itself allows it
(for example BSD License).</p>
<div role="contentinfo">
&copy; Copyright 2020, The Apache Software Foundation
<script type="text/javascript">
jQuery(function () {