1The Inviolable Principles of Nuttx 2================================== 3 4These are properties of NuttX that we can be certain of for all time: 5 6Definition 7---------- 8 9*in·vi·o·la·ble* 10/inˈvīələbəl/ 11 12adjective 13adjective: inviolable 14 15 never to be broken, infringed, or dishonored. 16 17 "an inviolable rule of chastity" 18 19 synonyms: inalienable, absolute, untouchable, unalterable, 20 unchallengeable, unbreakable, impregnable; sacrosanct, 21 sacred, holy, hallowed; rare intemerate 22 23 "the inviolable right to life" 24 25Source: Oxford Dictionary of the English Language 26 27Strict POSIX compliance 28----------------------- 29 30 o Strict conformance to the portable standard OS interface as defined at 31 OpenGroup.org. 32 o A deeply embedded system requires some special support. Special 33 support must be minimized. 34 o The portable interface must never be compromised only for the sake of 35 expediency. 36 o Expediency or even improved performance are not justifications for 37 violation of the strict POSIX interface 38 39Modular Architecture 40-------------------- 41 42 o The internal modular architecture of the OS must maintained. 43 o This means formalizing and documenting all internal interfaces (in the 44 porting guide), minimal use of global variables at the interface, and 45 only well defined functional interfaces. 46 47Clear, Consistent, Standardized Coding Style 48-------------------------------------------- 49 50 o Strict conformance to the NuttX coding style. No "revolutionary" 51 changes to the coding standard (but perhaps some "evolutionary" 52 changes). 53 o Personal or organizational preference is not a justification for a 54 coding style change. 55 o Nothing can come into NuttX that does not follow the coding standard. 56 o Expediency is not a justification for violating the coding standard. 57 58 The NuttX coding standard can be found here: 59 http://www.nuttx.org/doku.php?id=documentation:codingstandard 60 61Open and Unencumbered License 62----------------------------- 63 64 o Currently BSD 3-clause or compatible: BSD 3-clause with constraints, 65 BSD 3 and 4 clause, MIT, public domain 66 o Other unencumbered licenses such as Apache may be considered 67 NuttX will never be licensed under a restrictive, "Copyleft" license. 68 69All Users Matter 70---------------- 71 72 o All support must apply equally to all supported platforms. At present 73 this includes Linux, Windows MSYS, Windows Cygwin, Windows Ubuntu, 74 Windows native, macOS, Solaris, and FreeBSD. No tool/environment 75 solutions will be considered that limit the usage of NuttX on any of 76 the supported platforms. 77 o Inclusive rather than exclusive 78 o Hobbyists are valued users of the OS including retro computing hobbyists 79 * and DIY “Maker” hobbyists. 80 o Supported toolchains: GCC, Clang, SDCC, ZiLOG ZDS-II (c89), IAR. 81 Others? 82 o No changes to build system should limit use of NuttX by any user. 83 o Simplifying things for one user does not justify excluding another user. 84 o We should seek to expand the the NuttX user base, not to limit it for 85 reasons of preference or priority. 86 o We must resist the pull to make NuttX into a Linux-only, GCC-only, and 87 ARM-only solution. 88 89NuttX Branding 90-------------- 91 92 o The official name of authentic Nuttx will always be "NuttX" 93 o This name is trademarked and may not be used by other OSs or forks of 94 NuttX 95 96The Enemies 97=========== 98 99No Short Cuts 100------------- 101 102 o Doing things the easy way instead of the correct way. 103 o Reducing effort at the expense of Quality, Portability, or 104 Consistency 105 o Focus on the values of the organization, not the values of the Open 106 Source project. Need to support both. 107 o It takes work to support the Inviolables. There are no shortcuts. 108 109Sometimes Code Duplication is OK 110-------------------------------- 111 112 o Sometimes is better to duplicate some logic than to introduce coupling 113 114Keep the Big Picture 115-------------------- 116 117 o Too much focus on solving the problem in hand, loss of the Big Picture 118 o Insufficient understanding of the architectural principles. 119 120Conform to Standards 121-------------------- 122 123 o Changing things only to suite a personal or organizational preference 124 o Inflexibility, Inability to adapt 125 o Not Invented Here (NIH) syndrome 126