• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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