= 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]]