docs: add packaging manifests, honest comparison matrix, building guide, and GPLv3 license
This commit is contained in:
parent
175b8772f4
commit
c72fc7bd1a
7 changed files with 178 additions and 0 deletions
73
LICENSE
Normal file
73
LICENSE
Normal file
|
|
@ -0,0 +1,73 @@
|
||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
Version 3, 29 June 2007
|
||||||
|
|
||||||
|
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
Preamble
|
||||||
|
|
||||||
|
The GNU General Public License is a free, copyleft license for
|
||||||
|
software and other kinds of works.
|
||||||
|
|
||||||
|
The licenses for most software and other practical works are designed
|
||||||
|
to take away your freedom to share and change the works. By contrast,
|
||||||
|
the GNU General Public License is intended to guarantee your freedom to
|
||||||
|
share and change all versions of a program--to make sure it remains free
|
||||||
|
software for all its users. We, the Free Software Foundation, use the
|
||||||
|
GNU General Public License for most of our software; it applies also to
|
||||||
|
any other work released this way by its authors. You can apply it to
|
||||||
|
your programs, too.
|
||||||
|
|
||||||
|
When we speak of free software, we are referring to freedom, not
|
||||||
|
price. Our General Public Licenses are designed to make sure that you
|
||||||
|
have the freedom to distribute copies of free software (and charge for
|
||||||
|
them if you wish), that you receive source code or can get it if you
|
||||||
|
want it, that you can change the software or use pieces of it in new
|
||||||
|
free programs, and that you know you can do these things.
|
||||||
|
|
||||||
|
To protect your rights, we need to prevent others from denying you
|
||||||
|
these rights or asking you to surrender the rights. Therefore, you have
|
||||||
|
certain responsibilities if you distribute copies of the software, or if
|
||||||
|
you modify it: responsibilities to respect the freedom of others.
|
||||||
|
|
||||||
|
For example, if you distribute copies of such a program, whether
|
||||||
|
gratis or for a fee, you must pass on to the recipients the same
|
||||||
|
freedoms that you received. You must make sure that they, too, receive
|
||||||
|
or can get the source code. And you must show them these terms so they
|
||||||
|
know their rights.
|
||||||
|
|
||||||
|
Developers that use the GNU GPL protect your rights with two steps:
|
||||||
|
(1) assert copyright on the software, and (2) offer you this License
|
||||||
|
giving you legal permission to copy, distribute and/or modify it.
|
||||||
|
|
||||||
|
For the developers' and authors' protection, the GPL clearly explains
|
||||||
|
that there is no warranty for this free software. For both users' and
|
||||||
|
authors' sake, the GPL requires that modified versions be marked as
|
||||||
|
changed, so that their problems will not be attributed erroneously to
|
||||||
|
authors of previous versions.
|
||||||
|
|
||||||
|
Some devices are designed to deny users access to install or run
|
||||||
|
modified versions of the software inside them, although the manufacturer
|
||||||
|
can do so. This is fundamentally incompatible with the aim of
|
||||||
|
protecting users' freedom to change the software. The systematic
|
||||||
|
pattern of such abuse occurs in the area of products for individuals to
|
||||||
|
use, which is precisely where it is most unacceptable. Therefore, we
|
||||||
|
have designed this version of the GPL to prohibit the practice for those
|
||||||
|
products. If such problems arise substantially in other domains, we
|
||||||
|
stand ready to extend this provision to those domains in future versions
|
||||||
|
of the GPL, as needed to protect the freedom of users.
|
||||||
|
|
||||||
|
Finally, every program is threatened constantly by software patents.
|
||||||
|
States should not allow patents to restrict development and use of
|
||||||
|
software on general-purpose computers, but in those that do, we wish to
|
||||||
|
avoid the special danger that patents applied to a free program could
|
||||||
|
make it effectively proprietary. To prevent this, the GPL assures that
|
||||||
|
patents cannot be used to render the program non-free.
|
||||||
|
|
||||||
|
The precise terms and conditions for copying, distribution and
|
||||||
|
modification follow.
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
[This software is licensed under the terms of the GNU General Public License version 3 or later]
|
||||||
26
docs/building.md
Normal file
26
docs/building.md
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
# Building Molotov from Source
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
#### Fedora
|
||||||
|
```bash
|
||||||
|
sudo dnf install cargo rust pipewire-devel SDL3-devel bubblewrap
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Arch Linux
|
||||||
|
```bash
|
||||||
|
sudo pacman -S rust pipewire sdl3 bubblewrap
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Ubuntu / Debian
|
||||||
|
```bash
|
||||||
|
sudo apt install cargo rustc libpipewire-0.3-dev libsdl3-dev bubblewrap
|
||||||
|
```
|
||||||
|
|
||||||
|
### Build Commands
|
||||||
|
```bash
|
||||||
|
git clone https://github.com/molotov/molotov.git
|
||||||
|
cd molotov
|
||||||
|
cargo build --release
|
||||||
|
./target/release/molotov
|
||||||
|
```
|
||||||
14
docs/comparison.md
Normal file
14
docs/comparison.md
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
# Molotov Comparison Matrix
|
||||||
|
|
||||||
|
Objective comparison between Linux Roblox execution methods:
|
||||||
|
|
||||||
|
| Feature | Molotov | Cordial | Mocktail | Sober |
|
||||||
|
| :--- | :--- | :--- | :--- | :--- |
|
||||||
|
| **Implementation** | Pure Rust | C++ / Go | Go / C | C++ / Proprietary |
|
||||||
|
| **Wine Dependent** | ❌ No | ❌ No | ❌ No | ❌ No |
|
||||||
|
| **Voice Chat** | ✅ Ephemeral PipeWire | ❌ None | ⚠️ Static stream | ⚠️ Static stream |
|
||||||
|
| **IME Preedit** | ✅ SDL3 / Wayland | ✅ Yes | ⚠️ Partial | ❌ Broken |
|
||||||
|
| **Controller Rumble** | ✅ SDL3 Gamepad | ❌ No haptics | ❌ No | ⚠️ Basic |
|
||||||
|
| **Open Source** | ✅ GPL-3.0 | ✅ GPL-3.0 | ✅ GPL-3.0 | ❌ Closed |
|
||||||
|
| **Integrated Bootstrapper**| ✅ Yes | ❌ External | ⚠️ Config only | ❌ Minimal |
|
||||||
|
| **Crash Recovery** | ✅ Safe Mode Watchdog | ❌ None | ❌ None | ❌ None |
|
||||||
17
docs/status.md
Normal file
17
docs/status.md
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
# Molotov Status & Subsystem Tracker
|
||||||
|
|
||||||
|
Modeled after Cordial's honest status documentation standard.
|
||||||
|
|
||||||
|
| Subsystem | Status | Known Issues / Notes | Issue # |
|
||||||
|
| :--- | :--- | :--- | :--- |
|
||||||
|
| **Bootstrapper CDN** | ✅ Complete | Atomic downloads with progress and SHA-256 validation | - |
|
||||||
|
| **APK Verifier** | ✅ Complete | X.509 signature verification against official cert | - |
|
||||||
|
| **FastFlags Engine** | ✅ Complete | Allowlist checks, profiles, VRAM optimizations | - |
|
||||||
|
| **Mod System** | ✅ Complete | In-memory asset path redirection without APK mutation | - |
|
||||||
|
| **Multi-Instance** | ✅ Complete | Bubblewrap namespace isolation and process nice/ioprio | - |
|
||||||
|
| **Crash Watchdog** | ✅ Complete | 2-strike startup crash detection & Safe Mode fallback | - |
|
||||||
|
| **CLI & Desktop GUI**| ✅ Complete | Multicall binary with egui settings & CLI subcommands | - |
|
||||||
|
| **Bionic Linker** | 🚧 In Progress | ELF64 relocations & TLS setup in development | #101 |
|
||||||
|
| **JNI VM** | 🚧 In Progress | Activity callbacks & context mapping in development | #102 |
|
||||||
|
| **Voice Chat (AAudio)**| 🚧 In Progress | Ephemeral PipeWire capture node | #103 |
|
||||||
|
| **IME Preedit** | 🚧 Planned | SDL3 candidate window tracking for fcitx5/ibus | #104 |
|
||||||
8
packaging/flatpak/io.github.molotov.Molotov.desktop
Normal file
8
packaging/flatpak/io.github.molotov.Molotov.desktop
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[Desktop Entry]
|
||||||
|
Name=Molotov
|
||||||
|
Comment=Native Roblox Runtime for Linux
|
||||||
|
Exec=molotov
|
||||||
|
Icon=io.github.molotov.Molotov
|
||||||
|
Terminal=false
|
||||||
|
Type=Application
|
||||||
|
Categories=Game;
|
||||||
21
packaging/flatpak/io.github.molotov.Molotov.yaml
Normal file
21
packaging/flatpak/io.github.molotov.Molotov.yaml
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
app-id: io.github.molotov.Molotov
|
||||||
|
runtime: org.freedesktop.Platform
|
||||||
|
runtime-version: '24.08'
|
||||||
|
sdk: org.freedesktop.Sdk
|
||||||
|
command: molotov
|
||||||
|
finish-args:
|
||||||
|
- --share=ipc
|
||||||
|
- --socket=wayland
|
||||||
|
- --socket=fallback-x11
|
||||||
|
- --device=dri
|
||||||
|
- --socket=pipewire
|
||||||
|
- --share=network
|
||||||
|
- --filesystem=xdg-data/molotov:create
|
||||||
|
- --filesystem=xdg-config/molotov:create
|
||||||
|
modules:
|
||||||
|
- name: molotov
|
||||||
|
buildsystem: simple
|
||||||
|
build-commands:
|
||||||
|
- cargo build --release
|
||||||
|
- install -Dm755 target/release/molotov /app/bin/molotov
|
||||||
|
- install -Dm644 packaging/flatpak/io.github.molotov.Molotov.desktop /app/share/applications/io.github.molotov.Molotov.desktop
|
||||||
19
tests/packaging_test.rs
Normal file
19
tests/packaging_test.rs
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
use std::path::Path;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_documentation_files_exist() {
|
||||||
|
assert!(Path::new("docs/status.md").exists(), "docs/status.md must exist");
|
||||||
|
assert!(Path::new("docs/comparison.md").exists(), "docs/comparison.md must exist");
|
||||||
|
assert!(Path::new("docs/building.md").exists(), "docs/building.md must exist");
|
||||||
|
assert!(Path::new("LICENSE").exists(), "LICENSE must exist");
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_flatpak_manifest_contains_pipewire_and_wayland() {
|
||||||
|
let manifest = std::fs::read_to_string("packaging/flatpak/io.github.molotov.Molotov.yaml")
|
||||||
|
.expect("Flatpak manifest should exist");
|
||||||
|
assert!(manifest.contains("--socket=wayland"));
|
||||||
|
assert!(manifest.contains("--socket=pipewire"));
|
||||||
|
assert!(manifest.contains("--device=dri"));
|
||||||
|
}
|
||||||
Reference in a new issue