From 749df61a2e1ebf3983f4c31140841fa6556d63b9 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Sun, 31 May 2020 10:54:14 -0400 Subject: [PATCH] Add docs about clean room design. --- docs/docs/dev-clean-room.md | 29 +++++++++++++++++++++++++++++ docs/sidebars.js | 2 +- 2 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 docs/docs/dev-clean-room.md diff --git a/docs/docs/dev-clean-room.md b/docs/docs/dev-clean-room.md new file mode 100644 index 00000000..7ca0b256 --- /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 79ab9167..131d256c 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"], }, };