1Snippets Design 2############### 3 4This page documents design goals for the snippets feature. 5Further information can be found in `Issue #51834`_. 6 7.. _Issue #51834: https://github.com/zephyrproject-rtos/zephyr/issues/51834 8 9- **extensible**: for example, it is possible to add board support for an 10 existing built-in snippet without modifying the zephyr repository 11 12- **composable**: it is possible to use multiple snippets at once, for example 13 using: 14 15 .. code-block:: console 16 17 west build -S <snippet1> -S <snippet2> ... 18 19- **able to combine multiple types of configuration**: snippets make it possible 20 to store multiple different types of build system settings in one place, and 21 apply them all together 22 23- **specializable**: for example, it is possible to customize a snippet's 24 behavior for a particular board, or board revision 25 26- **future-proof and backwards-compatible**: arbitrary future changes to the 27 snippets feature will be possible without breaking backwards compatibility 28 for older snippets 29 30- **applicable to purely "software" changes**: unlike the shields feature, 31 snippets do not assume the presence of a "daughterboard", "shield", "hat", or 32 any other type of external assembly which is connected to the main board 33 34- **DRY** (don't repeat yourself): snippets allow you to skip unnecessary 35 repetition; for example, you can apply the same board-specific configuration 36 to boards ``foo`` and ``bar`` by specifying ``/(foo|bar)/`` as a regular 37 expression for the settings, which will then apply to both boards 38