xref: /aosp_15_r20/external/pigweed/docs/glossary.rst (revision 61c4878ac05f98d0ceed94b57d316916de578985)
1.. _docs-glossary:
2
3========
4Glossary
5========
6This glossary defines terms that have specific meanings in the context of
7Pigweed.
8
9.. _docs-glossary-facade:
10
11------
12Facade
13------
14A facade is an API contract of a module that must be satisfied at compile-time,
15i.e. a swappable dependency that changes the implementation of an API at
16compile-time.
17
18Learn more:
19
20* :ref:`docs-facades`
21
22.. _docs-glossary-module:
23
24------
25Module
26------
27A Pigweed module is an open source library that addresses a common need for
28embedded software developers. For example, :ref:`module-pw_string` provides
29an API for string operations that is both safe and suitable for
30resource-constrained embedded systems.
31
32Modules are Pigweed's core products. Every directory that starts with ``pw_``
33in the `root directory of the upstream Pigweed repository
34<https://cs.opensource.google/pigweed/pigweed>`_ represents a single module.
35
36Modules are modular in the sense that you can use one module in your project
37without always needing to depend on the rest of the entire Pigweed codebase.
38Some modules may depend on other modules, however. The key idea of their
39modularity is that they're not tied to any "core" or platform layer.
40
41Other general rules about modules:
42
43* They strive to minimize policy decisions such as whether or not allocation
44  is required, buffer sizing limits, etc. Projects have control over these
45  decisions.
46* They don't instantiate any static objects.
47
48Learn more:
49
50* :ref:`List of modules <docs-module-guides>`
51* :ref:`docs-module-structure`
52* :ref:`docs-concepts-embedded-development-libraries`
53