From 5b7940dd04e26069fa3230b64ccd4912d06bc4d1 Mon Sep 17 00:00:00 2001 From: boreddevnl Date: Mon, 4 May 2026 19:45:36 +0200 Subject: [PATCH] legal: Add usage policy for current and future commits. Co-authored-by: Copilot --- POLICY.md | 213 ++++++++++++++++++++++++++++++++++++++++++++++++ src/core/main.c | 48 +++++++++++ 2 files changed, 261 insertions(+) create mode 100644 POLICY.md diff --git a/POLICY.md b/POLICY.md new file mode 100644 index 0000000..78be9c6 --- /dev/null +++ b/POLICY.md @@ -0,0 +1,213 @@ +# BoredOS — Usage Policy & Disclaimer + +Version 1.0 | Last updated: May 2026 + +--- + +## 1. Acceptance of Terms + +**By installing, running, copying, modifying, or otherwise using BoredOS, you +acknowledge that you have read this policy, understand it, and agree to be bound +by its terms.** + +If you do not agree to these terms, you must not use, install, or distribute +BoredOS. Where technically feasible (e.g. in installer or first-boot contexts), +an explicit acknowledgment prompt will be presented. Proceeding past that prompt +constitutes acceptance of this policy. + +--- + +## 2. License + +BoredOS is free software released under the **GNU General Public License v3.0 +(GPLv3)**. A full copy of the license is available in the [`LICENSE`](./LICENSE) +file in this repository. + +The GPLv3 governs your rights to copy, modify, and redistribute BoredOS. This +Usage Policy is a **supplementary document** and does not override or modify the +permissions and conditions granted by the GPLv3. In the event of any conflict +between this document and the GPLv3, the GPLv3 takes precedence with respect to +software licensing rights. + +Certain restrictions in this policy (in particular, the jurisdictional +restrictions in Section 3) are incorporated as **additional terms** under +**GPLv3 Section 7**. Violation of those restrictions therefore constitutes a +breach of the copyright license under which BoredOS is distributed, and +automatically terminates your rights under the GPLv3 in accordance with +Section 8 of that license. + +--- + +## 3. Jurisdictional Restrictions + +### 3.1 Age Verification Laws + +BoredOS **does not implement any form of age verification**, and the author has +no plans to add such a mechanism. BoredOS is an operating system and does not +collect user data, connect to external services, or provide online content that +is regulated under age-gating legislation. + +However, certain jurisdictions have enacted laws that impose age verification or +age-appropriate design obligations on software or digital services accessible to +minors, including but not limited to: + +- **California, USA** — California Age-Appropriate Design Code Act (AB 2273) +- **United States (federal)** — Children's Online Privacy Protection Act (COPPA), + as enforced by the FTC +- **United Kingdom** — Children's Code (Age Appropriate Design Code) under the + UK GDPR / Data Protection Act 2018 +- **Any other jurisdiction** that enacts substantially similar legislation + requiring age verification, age-appropriate design assessments, or parental + consent mechanisms for software accessible to users under the age of 16 or 18 + +### 3.2 Prohibited Use in Restricted Jurisdictions + +**If you are located in, or subject to the laws of, any jurisdiction described +in Section 3.1, you are not permitted to use, install, execute, deploy, +distribute, sublicense, or otherwise interact with BoredOS in any form.** + +"Use" for the purposes of this section means: + +- Installing or running BoredOS on any hardware or virtual machine +- Distributing BoredOS or any derivative work to third parties +- Deploying BoredOS in any environment accessible to others +- Incorporating BoredOS or its components into any other software product + +By using BoredOS, you represent and warrant that the laws of your jurisdiction +do not require the operator or distributor of this software to implement age +verification or age-gating controls. This restriction is incorporated as an +additional condition of the copyright license pursuant to **GPLv3 Section 7(e)**. +Breach of this restriction terminates your rights under the GPLv3. + +### 3.3 Permitted Jurisdictions + +In jurisdictions that do not impose age verification or age-gating obligations +on software of this nature — including, at the time of writing, the Netherlands +and many other countries — any person of any age may use BoredOS freely, subject +to the terms of the GPLv3 and this policy. + +### 3.4 No Monitoring of Compliance + +The author does not have the technical means or intent to enforce jurisdictional +restrictions on a per-user basis. These restrictions are stated in good faith to +clarify the intended scope of use and to allocate legal responsibility +appropriately. If you are unsure whether your jurisdiction imposes such +requirements, consult a qualified legal professional before using or distributing +BoredOS. + +--- + +## 4. Privacy & Data Collection + +**BoredOS collects absolutely no data.** + +- No telemetry +- No analytics +- No crash reports +- No user accounts +- No network communication initiated by the OS itself +- No cookies, tracking pixels, or persistent identifiers of any kind + +BoredOS runs entirely on your local hardware. The author has no visibility into +who runs BoredOS, how it is used, or on what hardware it is installed. + +The GitHub repository hosting BoredOS source code is operated by **GitHub, Inc.**, +which may collect data in accordance with +[GitHub's own Privacy Policy](https://docs.github.com/en/site-policy/privacy-policies/github-general-privacy-statement). +The author has no control over and is not responsible for GitHub's data practices. + +--- + +## 5. Disclaimer of Warranties + +BoredOS is provided **"as is"**, without warranty of any kind, express or +implied, including but not limited to the warranties of merchantability, fitness +for a particular purpose, and non-infringement. + +The author makes no representations or warranties that: + +- BoredOS will operate correctly on any given hardware configuration +- BoredOS is free of bugs, security vulnerabilities, or defects +- BoredOS is fit for any production, safety-critical, or mission-critical use + +**Do not use BoredOS in any environment where failure could result in personal +injury, data loss, financial harm, or other significant consequences.** + +To the extent that mandatory provisions of applicable law (including EU consumer +protection law) imply warranties that cannot be excluded, such warranties are +limited in duration and scope to the minimum required by law. + +--- + +## 6. Limitation of Liability + +To the maximum extent permitted by the mandatory laws of your jurisdiction, the +author of BoredOS shall not be liable for any direct, indirect, incidental, +special, exemplary, or consequential damages (including but not limited to loss +of data, loss of profits, hardware damage, or business interruption) arising +out of the use or inability to use BoredOS, even if advised of the possibility +of such damages. + +Nothing in this section limits liability for death or personal injury caused by +negligence, fraud, or any other liability that cannot be excluded under +applicable mandatory law. + +The author is a private individual contributing this project freely to the +open-source community. This project generates no revenue. Any legal claims +should be assessed proportionally to this context. + +--- + +## 7. No Endorsement + +The BoredOS name and branding may not be used to endorse or promote products or +services derived from this software without prior written permission from the +author. This is consistent with, and does not supersede, the terms of the GPLv3. + +--- + +## 8. Governing Law & Jurisdiction + +This policy and any non-contractual obligations arising out of or in connection +with it are governed by the laws of **the Netherlands**, without regard to its +conflict of law provisions. + +Any disputes arising out of or in connection with this policy shall be subject +to the exclusive jurisdiction of the competent courts of **Amsterdam, the +Netherlands**, except where mandatory applicable law requires otherwise. + +--- + +## 9. Severability + +If any provision of this policy is found by a court of competent jurisdiction to +be invalid, unlawful, or unenforceable, that provision shall be deemed modified +to the minimum extent necessary to make it enforceable, or severed if +modification is not possible. The validity and enforceability of the remaining +provisions shall not be affected. + +--- + +## 10. Changes to This Policy + +This policy may be updated from time to time, for example to reflect changes in +applicable law. Each version will carry an updated version number and date. The +most current version will always be available in the +[BoredOS GitHub repository](https://github.com/boreddevnl/BoredOS). Prior +versions will be retained in the repository history. + +Continued use of BoredOS after a policy update constitutes acceptance of the +updated terms. If you do not agree to an updated version, you must cease using +BoredOS. + +--- + +## 11. Contact + +This project is maintained by its author on a best-effort, voluntary basis. +For questions about this policy, open an issue on the +[GitHub repository](https://github.com/boreddevnl/BoredOS). + +--- + +*BoredOS Usage Policy v1.1 — May 2026* \ No newline at end of file diff --git a/src/core/main.c b/src/core/main.c index 578f7e2..122f2f4 100644 --- a/src/core/main.c +++ b/src/core/main.c @@ -33,6 +33,7 @@ #include "sys/module_manager.h" #include "sys/bootfs_state.h" #include "input/keymap.h" +#include "input/keyboard.h" extern void sysfs_init_subsystems(void); @@ -234,6 +235,48 @@ static void fat32_mkdir_recursive(const char *path) { } } +static bool usage_policy_prompt(void) { + kconsole_set_active(true); + serial_write("BoredOS - Please read the Usage Policy provided with this software before continuing.\n"); + serial_write("Do you agree to the terms? [y/N]\n"); + + while (1) { + if ((inb(0x64) & 1) == 0) { + asm volatile("pause"); + continue; + } + + uint8_t scancode = inb(0x60); + keyboard_event_t ev; + if (!keyboard_handle_set1_scancode(scancode, &ev)) { + continue; + } + + if (!ev.pressed) { + continue; + } + + if (ev.keycode == KEY_ENTER || ev.keycode == KEY_KP_ENTER) { + serial_write("\n"); + return false; + } + + if (!ev.is_text) { + continue; + } + + if (ev.codepoint == 'y' || ev.codepoint == 'Y') { + serial_write("\n"); + return true; + } + + if (ev.codepoint == 'n' || ev.codepoint == 'N') { + serial_write("\n"); + return false; + } + } +} + void kmain(void) { init_serial(); vfs_init(); @@ -445,6 +488,11 @@ void kmain(void) { smp_init(NULL); } + if (!usage_policy_prompt()) { + log_fail("Usage policy not accepted, halting"); + hcf(); + } + wm_init(); asm volatile("sti");