= Development Process =
One of the chief differences between ROS and ROS-Industrial is the level of code quality and reliability expected by users. ROS-I targets factory automation, where reliability and ease of use are paramount. As such, ROS-I has a more rigorous software development process that we expect contributors to follow. Similar to ROS, this process begins with [[http://www.ros.org/reps/rep-0001.html|ROS Enhancement Proposals (REP)]], followed by REP Reviews, refinement, and the launch of an official project. Once a project is under way, programmers are expected to use best coding practices which include:

    *Architecting/encapsulating code to make it reusable
    *Creating unit test code that runs at every build to detect breaking changes
    *Documenting code internally with [[http://wiki.ros.org/Doxygen|Doxygen]]
    *Documenting code externally with wiki pages and tutorials
    *Following a style guide, which makes code easier for others to interpret
         * [[QAProcess|Quality assurance process]]
         * [[CppStyleGuide|ROS C++ Style Guide]]
         * [[PyStyleGuide|ROS Python Style Guide]]
         * [[JavaScriptStyleGuide|ROS Javascript Style Guide]]
         * [[ROS/Patterns/Conventions#Naming_ROS_Resources|Naming Conventions]]
         * CommonProcedures
         * More information can be found in the [[DevelopersGuide|ROS Developers Guide]].
    *Using a [[http://raesjenkins.datasys.swri.edu/|continuous integration build server]] to detect broken dependencies
    *Writing code that passes code quality analysis thresholds (implementation still pending)
    *Subjecting code to peer review
    *Labelling code with [[http://wiki.ros.org/Industrial/Software_Status|status indicators]]