Skip to content

Commit 4625f97

Browse files
committed
README: Add a section describing MicroPython's values.
This commit adds a section to the top-level README describing MicroPython's general design philosophy and core values. Thanks to @projectgus who suggested I add this. Signed-off-by: Damien George <damien@micropython.org>
1 parent fc5195b commit 4625f97

1 file changed

Lines changed: 38 additions & 0 deletions

File tree

README.md

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,44 @@ the officially supported board from the
5050
see the [schematics and pinouts](http://github.com/micropython/pyboard) and
5151
[documentation](https://docs.micropython.org/en/latest/pyboard/quickref.html).
5252

53+
MicroPython design values
54+
-------------------------
55+
56+
"Perfection is achieved, not when there is nothing more to add, but when there
57+
is nothing left to take away." ―- Antoine de Saint-Exupéry.
58+
59+
For its design and implementation, MicroPython aims to follow a set of values.
60+
Although not a strict set of rules, these values and principles serve as a
61+
useful guide for new and seasoned contributors, as well as maintainers.
62+
63+
MicroPython is at heart a combination of "Micro" and "Python": it's about
64+
resource constrained systems running the Python programming language. Both of
65+
these concepts balance off against each other in all parts of MicroPython's
66+
design and implementation.
67+
68+
The key concepts that focus the development of MicroPython are:
69+
- Minimalism: do lots with little.
70+
- Efficiency: engineering, build, execution, storage, power consumption.
71+
- Consistency: the whole system feels like it was designed at once.
72+
73+
When using MicroPython, the Python language is used as the human interface to a
74+
system, giving fine control over the entities attached to that system.
75+
In a hardware setting, MicroPython aims to give the user a bare-metal feeling:
76+
one should feel like they have complete control over the system, with very
77+
little between the programmer and the physical world.
78+
79+
MicroPython recognises that systems can be very complex. The existing Python
80+
libraries in combination with the MicroPython-specific libraries provide a
81+
user-friendly way to harness the complexity of a system.
82+
83+
Python language compatibility is very important to MicroPython, and at first
84+
glance MicroPython should look just like regular Python. In the first instance,
85+
most Python scripts should run unchanged on MicroPython, even on devices with very
86+
tight resources. Beyond that, there are ways to extend MicroPython if needed to
87+
better match Python. The provided built-in modules are an efficient subset of
88+
the corresponding Python ones, without duplication of functionality, and allow
89+
extension in Python if needed.
90+
5391
Contributing
5492
------------
5593

0 commit comments

Comments
 (0)