summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/docs/dev-clean-room.md29
-rw-r--r--docs/sidebars.js2
2 files changed, 30 insertions, 1 deletions
diff --git a/docs/docs/dev-clean-room.md b/docs/docs/dev-clean-room.md
new file mode 100644
index 0000000..7ca0b25
--- /dev/null
+++ b/docs/docs/dev-clean-room.md
@@ -0,0 +1,29 @@
+---
+id: dev-clean-room
+title: Clean Room Implementation
+sidebar_label: Clean Room
+---
+
+:::warning
+
+Anyone wanting to contribute code to ZMK _must_ read this, and adhere to the steps outlines in order to not violate any licenses/copyright of other projects
+
+:::
+
+ZMK Firmware is a [clean room design](https://en.wikipedia.org/wiki/Clean_room_design) keyboard firmware, that
+borrows/implements a lot of the features found in popular keyboard firmwares projects like [QMK](https://qmk.fm)
+and [TMK](https://github.com/tmk/tmk_keyboard). However, in order for ZMK to use the Apache 2.0, it _must_ not
+incorporate any of the GPL licensed code from those projects.
+
+In order to achieve this, all code for ZMK has been implemented completely fresh, _without_ referencing, copying,
+or duplicating any of the GPL code found in those other projects, even though they are open source software.
+
+## Contributor Requirements
+
+Contributors to ZMK must adhere to the following standard.
+
+- Implementations of features for ZMK _MUST_ not reuse any existing code from any projects not licensed with the Apache 2.0 license.
+- Contributors _MUST_ not study or refer to any GPL licensed source code while working on ZMK.
+- Contributors _MAY_ read the documentation from other GPL licensed projects, to gain a broad understanding of the behavior of certain features in order to implement equivalent features for ZMK.
+- Contributors _MAY_ refer to the [QMK Configurator](https://config.qmk.fm/) to inspect existing layouts/keymaps for
+ keyboards, and re-implement them for ZMK.
diff --git a/docs/sidebars.js b/docs/sidebars.js
index 79ab916..131d256 100644
--- a/docs/sidebars.js
+++ b/docs/sidebars.js
@@ -1,6 +1,6 @@
module.exports = {
someSidebar: {
Basics: ["intro", "hardware"],
- Development: ["dev-setup", "dev-posix-board"],
+ Development: ["dev-setup", "dev-clean-room", "dev-posix-board"],
},
};