-
+
@@ -126,34 +126,12 @@ Contributions are welcome. Hyper is a technical-first project with a strict
quality gate (`mix check` must pass) and a few Linux/Firecracker prerequisites.
Read [CONTRIBUTING.md](CONTRIBUTING.md) before opening a pull request.
-Note that all contributions are governed by the
-[Contributor License Agreement](CLA.md): by submitting a PR you assign
-copyright in your contribution to the project owner, which keeps Hyper's
-copyright consolidated. If that is a dealbreaker for you, it is better to know
-up front.
+Contributions are accepted under the project's license (MIT): by opening a
+pull request you agree that your contribution is licensed under the same terms,
+and you retain the copyright to your own work. No separate contributor
+agreement is required.
## License
-Hyper is licensed under the GNU Affero General Public License v3.0 or later
-(AGPL-3.0-or-later). See [LICENSE](LICENSE) and [NOTICE](NOTICE). Contributions
-are governed by the [Contributor License Agreement](CLA.md).
-
-### Why AGPL?
-
-Hyper is infrastructure meant to be run as a service. If you modify Hyper and
-offer it to others over a network, we expect you to share your changes
-publicly. The product is built by humans for humans and we want to keep it that
-way -- we don't want anyone taking Hyper closed-source and reselling it. Hyper
-is free of charge, and we expect you to play nicely with that philosophy. In
-practical terms, for most users:
-
-- **Running Hyper as-is internally** imposes no copyleft obligations. You do
- not need to share your source.
-- **The VMs and workloads Hyper runs are yours.** Copyleft covers Hyper itself,
- not the things you orchestrate with it. Your code stays your code.
-- **Modifying Hyper** and offering any form of product built with it as a
- service, however, **requires** that you make your modifications open-source.
- We wish to make Hyper better, and that means you need to be a part of it.
-
-This section is a plain-language summary, not legally binding. For the
-authoritative terms, see [LICENSE](LICENSE).
+Hyper is licensed under the MIT License. See [LICENSE](LICENSE). Contributions
+are accepted under the same license.
diff --git a/mix.exs b/mix.exs
index 0dd99dff..e0ba9b76 100644
--- a/mix.exs
+++ b/mix.exs
@@ -187,7 +187,7 @@ defmodule Hyper.MixProject do
# The OTP app is `:hyper`, but `hyper` is already taken on Hex, so the
# package publishes as `hypervm`. Package name and app name are independent.
name: "hypervm",
- licenses: ["AGPL-3.0-or-later"],
+ licenses: ["MIT"],
# priv/firecracker ships the OpenAPI spec so the `:firecracker_gen` compiler
# can regenerate the bindings in a consumer's build (they are gitignored, so
# not in `lib`).
@@ -204,7 +204,7 @@ defmodule Hyper.MixProject do
# load even for plain `cargo build`.
files: ~w(
lib priv/firecracker priv/repo priv/vmlinux proto config mix.exs
- README.md LICENSE NOTICE CLA.md
+ README.md LICENSE
native/guest-agent/src native/guest-agent/tests native/guest-agent/build.rs
native/guest-agent/Cargo.toml native/guest-agent/Cargo.lock
native/guest-agent/.cargo
diff --git a/native/suidhelper/Cargo.toml b/native/suidhelper/Cargo.toml
index 5d272603..51748e3b 100644
--- a/native/suidhelper/Cargo.toml
+++ b/native/suidhelper/Cargo.toml
@@ -9,7 +9,7 @@ name = "hyper-suidhelper"
version = "0.1.0"
edition = "2021"
description = "Tiny setuid-root helper that runs a whitelisted set of device commands for the unprivileged Hyper node."
-license = "AGPL-3.0-or-later"
+license = "MIT"
repository = "https://github.com/harmont-dev/hyper"
[features]
diff --git a/native/suidhelper/build.rs b/native/suidhelper/build.rs
index c3de1f5d..de04496b 100644
--- a/native/suidhelper/build.rs
+++ b/native/suidhelper/build.rs
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: AGPL-3.0-only
+// SPDX-License-Identifier: MIT
//! Build guard: keep the `insecure_test_seams` feature out of any release
//! artifact. Tests build in the `debug` profile, so they are unaffected.
diff --git a/native/suidhelper/meta/Cargo.toml b/native/suidhelper/meta/Cargo.toml
index 417e5f41..fc180436 100644
--- a/native/suidhelper/meta/Cargo.toml
+++ b/native/suidhelper/meta/Cargo.toml
@@ -2,7 +2,7 @@
name = "hyper-suidhelper-meta"
version = "0.1.0"
edition = "2021"
-license = "AGPL-3.0-or-later"
+license = "MIT"
description = "Shared constants for the hyper-suidhelper checksum section (binary + xtask)."
[dependencies]
diff --git a/native/suidhelper/src/config.rs b/native/suidhelper/src/config.rs
index 09e43c5c..39dd1762 100644
--- a/native/suidhelper/src/config.rs
+++ b/native/suidhelper/src/config.rs
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: AGPL-3.0-only
+// SPDX-License-Identifier: MIT
//! Runtime host configuration, read from a single root-owned TOML file.
//!
//! ## UID/GID range divergence
diff --git a/native/suidhelper/src/security_gate.rs b/native/suidhelper/src/security_gate.rs
index d82caea3..4b361856 100644
--- a/native/suidhelper/src/security_gate.rs
+++ b/native/suidhelper/src/security_gate.rs
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: AGPL-3.0-only
+// SPDX-License-Identifier: MIT
//! Central security gate: the single place that decides whether this process is
//! running in INSECURE TEST MODE, resolved once at startup.
//!
diff --git a/native/suidhelper/src/tools/chroot_jail/grant.rs b/native/suidhelper/src/tools/chroot_jail/grant.rs
index c0c9aab2..d6ccadd8 100644
--- a/native/suidhelper/src/tools/chroot_jail/grant.rs
+++ b/native/suidhelper/src/tools/chroot_jail/grant.rs
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: AGPL-3.0-only
+// SPDX-License-Identifier: MIT
//! Shared grant-socket logic reused by `grant-api` and `grant-vsock`.
//!
//! Both ops chown a jail-confined Unix-domain socket to the helper's caller and
diff --git a/native/suidhelper/src/tools/chroot_jail/grant_api.rs b/native/suidhelper/src/tools/chroot_jail/grant_api.rs
index a554ca8c..8063db77 100644
--- a/native/suidhelper/src/tools/chroot_jail/grant_api.rs
+++ b/native/suidhelper/src/tools/chroot_jail/grant_api.rs
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: AGPL-3.0-only
+// SPDX-License-Identifier: MIT
//! `chroot-jail grant-api`: hand the firecracker API socket to the node user so
//! the unprivileged controller can `connect()` to it.
//!
diff --git a/native/suidhelper/src/tools/chroot_jail/grant_vsock.rs b/native/suidhelper/src/tools/chroot_jail/grant_vsock.rs
index 09cf4a1f..b702af8d 100644
--- a/native/suidhelper/src/tools/chroot_jail/grant_vsock.rs
+++ b/native/suidhelper/src/tools/chroot_jail/grant_vsock.rs
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: AGPL-3.0-only
+// SPDX-License-Identifier: MIT
//! `chroot-jail grant-vsock`: hand the firecracker vsock Unix-domain socket to
//! the node user so the unprivileged controller can connect the guest via AF_VSOCK.
//!
diff --git a/native/suidhelper/src/tools/chroot_jail/mod.rs b/native/suidhelper/src/tools/chroot_jail/mod.rs
index 40fbbfb9..a53665d7 100644
--- a/native/suidhelper/src/tools/chroot_jail/mod.rs
+++ b/native/suidhelper/src/tools/chroot_jail/mod.rs
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: AGPL-3.0-only
+// SPDX-License-Identifier: MIT
//! `chroot-jail`: per-VM chroot/jail lifecycle.
mod grant;
diff --git a/native/suidhelper/src/tools/chroot_jail/prepare.rs b/native/suidhelper/src/tools/chroot_jail/prepare.rs
index b229f6bd..ba4e03dd 100644
--- a/native/suidhelper/src/tools/chroot_jail/prepare.rs
+++ b/native/suidhelper/src/tools/chroot_jail/prepare.rs
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: AGPL-3.0-only
+// SPDX-License-Identifier: MIT
//! `chroot-jail prepare`: stage the kernel file and create the rootfs device node
//! inside a VM chroot, via the [`ChrootJail`] builder.
diff --git a/native/suidhelper/src/tools/chroot_jail/remove.rs b/native/suidhelper/src/tools/chroot_jail/remove.rs
index 7574b364..9d16d474 100644
--- a/native/suidhelper/src/tools/chroot_jail/remove.rs
+++ b/native/suidhelper/src/tools/chroot_jail/remove.rs
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: AGPL-3.0-only
+// SPDX-License-Identifier: MIT
//! `chroot-jail remove`: delete a VM's stale chroot and cgroup leaf before
//! relaunching the jailer.
//!
diff --git a/native/suidhelper/src/tools/jailer.rs b/native/suidhelper/src/tools/jailer.rs
index 78c12b78..db3fcedc 100644
--- a/native/suidhelper/src/tools/jailer.rs
+++ b/native/suidhelper/src/tools/jailer.rs
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: AGPL-3.0-only
+// SPDX-License-Identifier: MIT
//! The `jailer` subcommand: validate the BEAM's arguments, re-acquire root
//! permanently, and `execve` the firecracker jailer in our place.
//!
diff --git a/native/suidhelper/src/tools/network/mod.rs b/native/suidhelper/src/tools/network/mod.rs
index ca2a9007..e1cb94e6 100644
--- a/native/suidhelper/src/tools/network/mod.rs
+++ b/native/suidhelper/src/tools/network/mod.rs
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: AGPL-3.0-only
+// SPDX-License-Identifier: MIT
//! `network`: per-VM egress networking (netns + veth + TAP + NAT).
//!
//! Each op ([`prepare`], [`teardown`], [`host_init`]) derives its `ip`/`nft`
diff --git a/native/suidhelper/src/util/chroot_jail.rs b/native/suidhelper/src/util/chroot_jail.rs
index 22c6523a..d72e6396 100644
--- a/native/suidhelper/src/util/chroot_jail.rs
+++ b/native/suidhelper/src/util/chroot_jail.rs
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: AGPL-3.0-only
+// SPDX-License-Identifier: MIT
//! Declarative builder for a VM's chroot jail contents.
use crate::config::Config;
diff --git a/native/suidhelper/src/util/jailer.rs b/native/suidhelper/src/util/jailer.rs
index 3743f451..74ddc20c 100644
--- a/native/suidhelper/src/util/jailer.rs
+++ b/native/suidhelper/src/util/jailer.rs
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: AGPL-3.0-only
+// SPDX-License-Identifier: MIT
//! Typed invocation of the firecracker jailer: the validated argument newtypes
//! and the `execve` mechanics behind the `jailer` subcommand.
//!
diff --git a/native/suidhelper/src/util/path.rs b/native/suidhelper/src/util/path.rs
index 2422f287..91393136 100644
--- a/native/suidhelper/src/util/path.rs
+++ b/native/suidhelper/src/util/path.rs
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: AGPL-3.0-only
+// SPDX-License-Identifier: MIT
//! Fallible conversion of paths and strings to NUL-terminated C strings, for
//! handing to `execve`-family syscalls.
//!
diff --git a/native/suidhelper/src/util/safe_dev.rs b/native/suidhelper/src/util/safe_dev.rs
index 3c780a61..cc335483 100644
--- a/native/suidhelper/src/util/safe_dev.rs
+++ b/native/suidhelper/src/util/safe_dev.rs
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: AGPL-3.0-only
+// SPDX-License-Identifier: MIT
//! Validated device-name operands.
//!
//! The privileged tools must only ever touch Hyper's own devices, never
diff --git a/native/suidhelper/src/util/safe_dir.rs b/native/suidhelper/src/util/safe_dir.rs
index ccf886d9..515b1e81 100644
--- a/native/suidhelper/src/util/safe_dir.rs
+++ b/native/suidhelper/src/util/safe_dir.rs
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: AGPL-3.0-only
+// SPDX-License-Identifier: MIT
//! Directory handles with fd-relative operations.
//!
//! A [`SafeDir`] owns a directory fd (closed on drop). It is two things at once:
diff --git a/native/suidhelper/src/util/safe_file.rs b/native/suidhelper/src/util/safe_file.rs
index 22744f7a..50b6bf56 100644
--- a/native/suidhelper/src/util/safe_file.rs
+++ b/native/suidhelper/src/util/safe_file.rs
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: AGPL-3.0-only
+// SPDX-License-Identifier: MIT
//! Typestate-validated file descriptors.
//!
//! Each type parameter is an independent axis (file type, ownership, mode); the
diff --git a/native/suidhelper/src/util/safe_path.rs b/native/suidhelper/src/util/safe_path.rs
index 92b90673..6e9955e8 100644
--- a/native/suidhelper/src/util/safe_path.rs
+++ b/native/suidhelper/src/util/safe_path.rs
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: AGPL-3.0-only
+// SPDX-License-Identifier: MIT
//! Typestate-validated filesystem *names*.
use std::marker::PhantomData;