diff --git a/.zenodo.json b/.zenodo.json index 857f846..9442a69 100644 --- a/.zenodo.json +++ b/.zenodo.json @@ -1,21 +1,75 @@ { - "creators": [{"name": "devkyato", "affiliation": "MATA Company"}], - "contributors": [{"name": "Cursor Agent", "type": "Other"}], + "creators": [ + { + "name": "@dev.mako (devkyato)", + "affiliation": "MATA Company" + } + ], + "contributors": [ + { + "name": "Cursor Agent", + "type": "Other" + } + ], "title": "OpenNet: typed ONP/1 messaging for ESP32, Raspberry Pi, and Python backends", - "description": "OpenNet is a dependency-free implementation of typed ONP/1 messaging for ESP32 devices, Raspberry Pi systems, and Python backends. It provides inspectable framing, bounded resource use, acknowledgement and retry support, and Arduino and Python implementations for direct reliable streams. Usage: install the Arduino library or Python package, connect a client and host over a trusted stream, then send typed application messages. Applications include classroom IoT systems, embedded telemetry links, Raspberry Pi gateways, and direct device-to-backend communication.", - "version": "0.2.1", - "keywords": ["opennet", "ONP/1", "IoT", "ESP32", "Raspberry Pi", "messaging", "protocol", "embedded", "Arduino", "Python"], + "description": "
OpenNet is a dependency-free implementation of typed ONP/1 messaging for ESP32 devices, Raspberry Pi systems, and Python backends. It provides one inspectable frame format for direct communication over TCP, verified TLS, or another reliable ordered Arduino stream.
python -m pip install https://github.com/devkyato/OpenNet/releases/download/v0.2.2/opennet_protocol-0.2.2-py3-none-any.whl\nopennet --versionArduino IDE users can install the OpenNet-0.2.2.zip asset. Raspberry Pi or Linux service users can extract OpenNet-linux-0.2.2.tar.gz and run the installer shown in the documentation.
opennet serve --echo\nopennet send sensor/temperature 24.7 --type floatVersion 0.2.2 is alpha software. ONP/1 requires a reliable ordered stream and does not provide routing, discovery, durable queues, retained messages, or brokered fleet management. Acknowledgements mean validated transport acceptance, not successful application side effects. Verified TLS is required outside isolated trusted development networks.
Read Getting started, the ONP/1 protocol specification, and the security guide.
@dev.mako (devkyato). (2026). OpenNet: typed ONP/1 messaging for ESP32, Raspberry Pi, and Python backends (Version 0.2.2). Zenodo. https://doi.org/10.5281/zenodo.21853309
", + "version": "0.2.2", + "keywords": [ + "opennet", + "ONP/1", + "IoT", + "ESP32", + "Raspberry Pi", + "messaging", + "protocol", + "embedded", + "Arduino", + "Python" + ], "license": "mit", "upload_type": "software", "access_right": "open", "language": "eng", "related_identifiers": [ - {"identifier": "https://github.com/devkyato/OpenNet", "relation": "isSupplementTo", "resource_type": "software"}, - {"identifier": "https://github.com/devkyato/Datary", "relation": "references", "resource_type": "software"}, - {"identifier": "https://github.com/devkyato/TapAuth", "relation": "references", "resource_type": "software"}, - {"identifier": "https://github.com/devkyato/Lowpack", "relation": "references", "resource_type": "software"}, - {"identifier": "https://github.com/devkyato/Relay", "relation": "references", "resource_type": "software"}, - {"identifier": "https://github.com/devkyato/Custom-Arduino-Libraries", "relation": "references", "resource_type": "software"}, - {"identifier": "https://github.com/devkyato/Arduino-Programs-Guide", "relation": "references", "resource_type": "software"} + { + "identifier": "https://github.com/devkyato/OpenNet", + "relation": "isSupplementTo", + "resource_type": "software" + }, + { + "identifier": "10.5281/zenodo.21853309", + "relation": "isVersionOf", + "scheme": "doi" + }, + { + "identifier": "https://github.com/devkyato/Datary", + "relation": "references", + "resource_type": "software" + }, + { + "identifier": "https://github.com/devkyato/TapAuth", + "relation": "references", + "resource_type": "software" + }, + { + "identifier": "https://github.com/devkyato/Lowpack", + "relation": "references", + "resource_type": "software" + }, + { + "identifier": "https://github.com/devkyato/Relay", + "relation": "references", + "resource_type": "software" + }, + { + "identifier": "https://github.com/devkyato/Custom-Arduino-Libraries", + "relation": "references", + "resource_type": "software" + }, + { + "identifier": "https://github.com/devkyato/Arduino-Programs-Guide", + "relation": "references", + "resource_type": "software" + } ] } diff --git a/CHANGELOG.md b/CHANGELOG.md index 0ba9488..d944e7c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,21 @@ All notable changes are documented here. OpenNet follows ## [Unreleased] +## [0.2.2] - 2026-08-09 + +### Changed + +- Overhaul Zenodo, Citation File Format, README, and release-note presentation for publication + quality without changing ONP/1 or runtime behaviour. +- Identify the creator consistently as `@dev.mako (devkyato)` of MATA Company while retaining + Cursor Agent only as a non-author Zenodo contributor. +- Synchronize version 0.2.2 across Python, Arduino IDE, PlatformIO, archival, citation, and + documentation metadata. +- Update current Python wheel, Arduino ZIP, Linux bundle, PlatformIO tag, and release-process + references to v0.2.2. +- Expand practical output, status, limitations, security, documentation, citation, and + connected-project guidance. + ## [0.2.1] - 2026-08-09 ### Changed @@ -104,7 +119,8 @@ All notable changes are documented here. OpenNet follows - Arduino IDE, PlatformIO, and Python examples. - Cross-platform tests, CI, packaging, and contributor documentation. -[Unreleased]: https://github.com/devkyato/OpenNet/compare/v0.2.1...HEAD +[Unreleased]: https://github.com/devkyato/OpenNet/compare/v0.2.2...HEAD +[0.2.2]: https://github.com/devkyato/OpenNet/compare/v0.2.1...v0.2.2 [0.2.1]: https://github.com/devkyato/OpenNet/compare/v0.2.0...v0.2.1 [0.2.0]: https://github.com/devkyato/OpenNet/compare/v0.1.1...v0.2.0 [0.1.1]: https://github.com/devkyato/OpenNet/compare/v0.1.0...v0.1.1 diff --git a/CITATION.cff b/CITATION.cff index 5ef2dcb..3d39dfb 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -2,18 +2,44 @@ cff-version: 1.2.0 message: "If you use this software, please cite it using the metadata from this file." title: "OpenNet: typed ONP/1 messaging for ESP32, Raspberry Pi, and Python backends" authors: - - family-names: devkyato + - family-names: "@dev.mako (devkyato)" affiliation: "MATA Company" -version: 0.2.1 +version: 0.2.2 +date-released: 2026-08-09 license: MIT repository-code: "https://github.com/devkyato/OpenNet" url: "https://github.com/devkyato/OpenNet" -abstract: "Typed ONP/1 messaging for ESP32, Raspberry Pi, and Python backends." -keywords: [opennet, ONP/1, IoT, ESP32, Raspberry Pi, messaging, protocol, embedded, Arduino, Python] +doi: 10.5281/zenodo.21853309 +identifiers: + - type: doi + value: 10.5281/zenodo.21853309 +abstract: >- + OpenNet is a dependency-free Arduino and Python implementation of typed ONP/1 messaging for + direct links between ESP32 devices, Raspberry Pi systems, and backend services. Its inspectable + framing carries JSON, text, finite numeric values, booleans, null, and binary data over reliable + ordered streams. Bounded resources, CRC-32 checks, acknowledgement retries, duplicate + suppression, verified TLS support, and optional certificate-to-topic authorization make the + protocol suitable for teaching and focused embedded-to-host systems. OpenNet is alpha software: + it does not provide routing, discovery, durable queues, or brokered fleet management. +keywords: + - OpenNet + - ONP/1 + - Internet of Things + - ESP32 + - Raspberry Pi + - embedded systems + - messaging protocol + - Arduino + - Python + - TCP + - TLS preferred-citation: type: software title: "OpenNet: typed ONP/1 messaging for ESP32, Raspberry Pi, and Python backends" authors: - - family-names: devkyato + - family-names: "@dev.mako (devkyato)" affiliation: "MATA Company" - version: 0.2.1 + version: 0.2.2 + doi: 10.5281/zenodo.21853309 + date-released: 2026-08-09 + repository-code: "https://github.com/devkyato/OpenNet" diff --git a/README.md b/README.md index 1a80a6b..c93ed6b 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,7 @@ [](https://github.com/devkyato/OpenNet/releases) [](LICENSE) [](docs/protocol.md) +[](https://doi.org/10.5281/zenodo.21853309) OpenNet is a focused, dependency-free messaging protocol I built for direct links between embedded devices and a Python host—especially an ESP32 talking to @@ -14,7 +15,9 @@ communication layer or a replacement for MQTT, HTTP, or WebSocket. It sends JSON, text, signed integers, finite doubles, booleans, null, and arbitrary binary data over TCP/TLS or another reliable ordered stream. -Version 0.2.1 is an alpha release for real projects and learning. It has a +Version 0.2.2 is an alpha release for real projects and learning. This release +improves publication, documentation, and citation quality without claiming new +protocol or runtime behaviour. OpenNet has a documented wire format, bounded resource use, retries and duplicate suppression, native Arduino protocol tests, Python tests across 3.9–3.14, reproducible release packages, measured local performance, and an optional topic-authorization hook. @@ -56,7 +59,7 @@ Python wheel from the release page: ```sh python -m pip install \ - https://github.com/devkyato/OpenNet/releases/download/v0.2.1/opennet_protocol-0.2.1-py3-none-any.whl + https://github.com/devkyato/OpenNet/releases/download/v0.2.2/opennet_protocol-0.2.2-py3-none-any.whl opennet --version ``` @@ -64,15 +67,15 @@ For an isolated command: ```sh pipx install \ - https://github.com/devkyato/OpenNet/releases/download/v0.2.1/opennet_protocol-0.2.1-py3-none-any.whl + https://github.com/devkyato/OpenNet/releases/download/v0.2.2/opennet_protocol-0.2.2-py3-none-any.whl ``` -For Raspberry Pi/Linux, extract `OpenNet-linux-0.2.1.tar.gz` and run +For Raspberry Pi/Linux, extract `OpenNet-linux-0.2.2.tar.gz` and run `sudo ./install.sh`. It creates a hardened, unprivileged systemd service with a -loopback-only default. For Arduino IDE, install `OpenNet-0.2.1.zip` through +loopback-only default. For Arduino IDE, install `OpenNet-0.2.2.zip` through **Sketch > Include Library > Add .ZIP Library**. -The Python distribution is installable with pip, but v0.2.1 is distributed from +The Python distribution is installable with pip, but v0.2.2 is distributed from GitHub Releases rather than the public PyPI index. ## Five-minute local test @@ -92,6 +95,12 @@ opennet send device/state '{"online":true}' --type json opennet benchmark --count 1000 --payload-size 64 ``` +An acknowledged send returns machine-readable output. On a new connection, the first message is: + +```json +{"status": "acknowledged", "message_id": 1, "topic": "sensor/temperature"} +``` + Python code is equally small: ```python @@ -110,7 +119,8 @@ asyncio.run(main()) The CLI defaults to loopback and refuses remote plaintext unless it is explicitly allowed for a trusted development network. Use verified TLS—and mutual TLS when -device identity matters—outside isolated local testing. +device identity matters—outside isolated local testing. Read the +[security guide](docs/security.md) before exposing a listener. ## Evidence and design @@ -148,7 +158,7 @@ unsafe action. If you use this software in research or teaching, please cite the Zenodo archive / this repository: ```text -devkyato. (2026). OpenNet: typed ONP/1 messaging for ESP32, Raspberry Pi, and Python backends (Version 0.2.1). +@dev.mako (devkyato). (2026). OpenNet: typed ONP/1 messaging for ESP32, Raspberry Pi, and Python backends (Version 0.2.2). https://github.com/devkyato/OpenNet ``` See [CITATION.cff](CITATION.cff) for machine-readable metadata. diff --git a/docs/getting-started.md b/docs/getting-started.md index 0c4d18b..ce82698 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -18,7 +18,7 @@ supported Python version. ```bash python -m pip install \ - https://github.com/devkyato/OpenNet/releases/download/v0.2.0/opennet_protocol-0.2.0-py3-none-any.whl + https://github.com/devkyato/OpenNet/releases/download/v0.2.2/opennet_protocol-0.2.2-py3-none-any.whl opennet serve ``` @@ -52,7 +52,7 @@ For another project: ```ini lib_deps = - https://github.com/devkyato/OpenNet.git#v0.2.0 + https://github.com/devkyato/OpenNet.git#v0.2.2 ``` ## Sending values diff --git a/docs/linux-service.md b/docs/linux-service.md index 48e4b48..93d27a6 100644 --- a/docs/linux-service.md +++ b/docs/linux-service.md @@ -6,9 +6,9 @@ library `venv` module. ## Install ```sh -grep 'OpenNet-linux-0.2.0.tar.gz' SHA256SUMS | sha256sum -c - -tar -xzf OpenNet-linux-0.2.0.tar.gz -cd OpenNet-linux-0.2.0 +grep 'OpenNet-linux-0.2.2.tar.gz' SHA256SUMS | sha256sum -c - +tar -xzf OpenNet-linux-0.2.2.tar.gz +cd OpenNet-linux-0.2.2 sudo ./install.sh ``` diff --git a/docs/release.md b/docs/release.md index 8aa593a..c6afece 100644 --- a/docs/release.md +++ b/docs/release.md @@ -19,12 +19,12 @@ PyPI publication is intentionally not automatic until the owner configures trust publishing. Release assets remain installable and reproducible without a registry credential. -## v0.2.0 assets +## v0.2.2 assets | Asset | Use | |---|---| -| `OpenNet-0.2.0.zip` | Arduino IDE library | -| `opennet_protocol-0.2.0-py3-none-any.whl` | Direct pip/pipx install | -| `opennet_protocol-0.2.0.tar.gz` | Python source distribution | -| `OpenNet-linux-0.2.0.tar.gz` | `sudo` Linux/systemd install | +| `OpenNet-0.2.2.zip` | Arduino IDE library | +| `opennet_protocol-0.2.2-py3-none-any.whl` | Direct pip/pipx install | +| `opennet_protocol-0.2.2.tar.gz` | Python source distribution | +| `OpenNet-linux-0.2.2.tar.gz` | `sudo` Linux/systemd install | | `SHA256SUMS` | Artifact integrity verification | diff --git a/docs/releases/v0.2.2.md b/docs/releases/v0.2.2.md new file mode 100644 index 0000000..298237b --- /dev/null +++ b/docs/releases/v0.2.2.md @@ -0,0 +1,35 @@ +# OpenNet v0.2.2 — publication and documentation quality + +OpenNet v0.2.2 improves release presentation, installation guidance, archival metadata, and +citation quality. It does not claim new ONP/1 framing, transport, reliability, authorization, or +runtime behaviour. + +## What changed + +- Expanded the Zenodo description into sanitizer-safe HTML covering capabilities, installation, + quick start, applications, limitations, documentation, related software, and citation. +- Expanded `CITATION.cff` and synchronized the creator, repository, release date, keywords, and + 0.2.2 version without inventing a DOI or ORCID. +- Synchronized the Python, Arduino IDE, and PlatformIO package versions. +- Updated current install and deployment references across the README, Python package README, + getting-started guide, tutorials, Linux service guide, and release process. + +## Install + +```sh +python -m pip install https://github.com/devkyato/OpenNet/releases/download/v0.2.2/opennet_protocol-0.2.2-py3-none-any.whl +opennet --version +``` + +The expected version output is `opennet 0.2.2`. + +Arduino IDE users can install `OpenNet-0.2.2.zip`. Linux service users can verify and extract +`OpenNet-linux-0.2.2.tar.gz` by following the +[service guide](../linux-service.md). + +## Citation + +Concept DOI: https://doi.org/10.5281/zenodo.21853309 + +See `CITATION.cff` and `.zenodo.json`. Published by @dev.mako (devkyato). Cursor Agent is acknowledged as a non-author contributor. + diff --git a/docs/tutorials.md b/docs/tutorials.md index 21c092c..3af331e 100644 --- a/docs/tutorials.md +++ b/docs/tutorials.md @@ -2,13 +2,13 @@ ## 1. Local Python round trip -Install the v0.2.0 wheel directly from the GitHub release: +Install the v0.2.2 wheel directly from the GitHub release: ```sh python -m venv .venv source .venv/bin/activate python -m pip install \ - https://github.com/devkyato/OpenNet/releases/download/v0.2.0/opennet_protocol-0.2.0-py3-none-any.whl + https://github.com/devkyato/OpenNet/releases/download/v0.2.2/opennet_protocol-0.2.2-py3-none-any.whl ``` Terminal one: @@ -27,7 +27,7 @@ opennet send device/state '{"online":true,"battery":91}' --type json ## 2. Raspberry Pi service -Download and extract `OpenNet-linux-0.2.0.tar.gz`, then: +Download and extract `OpenNet-linux-0.2.2.tar.gz`, then: ```sh sudo ./install.sh @@ -40,7 +40,7 @@ TLS before the first start. See [Security](security.md). ## 3. ESP32 over a trusted development LAN -1. Install `OpenNet-0.2.0.zip` through Arduino IDE's **Add .ZIP Library**. +1. Install `OpenNet-0.2.2.zip` through Arduino IDE's **Add .ZIP Library**. 2. Open **File > Examples > OpenNet > TelemetryClient**. 3. Enter the Wi-Fi details and the server's LAN address. 4. Start a development server with diff --git a/library.json b/library.json index f700921..a53fe59 100644 --- a/library.json +++ b/library.json @@ -1,13 +1,13 @@ { "name": "OpenNet", - "version": "0.2.1", + "version": "0.2.2", "description": "Direct typed ONP/1 messaging between ESP32 devices and Python hosts.", "keywords": ["esp32", "raspberry-pi", "iot", "tcp", "tls", "bluetooth", "messaging"], "repository": { "type": "git", "url": "https://github.com/devkyato/OpenNet.git" }, - "authors": [{"name": "devkyato", "maintainer": true}], + "authors": [{"name": "@dev.mako (devkyato)", "maintainer": true}], "license": "MIT", "frameworks": ["arduino"], "platforms": ["espressif32"], diff --git a/library.properties b/library.properties index b8a7a92..1a5a8d7 100644 --- a/library.properties +++ b/library.properties @@ -1,7 +1,7 @@ name=OpenNet -version=0.2.1 -author=devkyato -maintainer=devkyato +version=0.2.2 +author=@dev.mako (devkyato) +maintainer=@dev.mako (devkyato) sentence=Direct typed ONP/1 messaging between ESP32 devices and Python hosts. paragraph=OpenNet provides a small inspectable frame format for JSON, text, numeric values, and binary data over TCP, TLS, and reliable Arduino streams. category=Communication diff --git a/python/README.md b/python/README.md index 6a9a416..dbd21f7 100644 --- a/python/README.md +++ b/python/README.md @@ -5,7 +5,7 @@ projects. ```bash python -m pip install \ - https://github.com/devkyato/OpenNet/releases/download/v0.2.0/opennet_protocol-0.2.0-py3-none-any.whl + https://github.com/devkyato/OpenNet/releases/download/v0.2.2/opennet_protocol-0.2.2-py3-none-any.whl opennet serve ``` @@ -27,7 +27,7 @@ specification, and security guidance are in the The server also accepts an optional sync or async `authorizer`. It sees the validated frame and the peer's TLS certificate before the handler or ACK, which keeps topic rules in one explicit place. See -[Authorizing topics](https://github.com/devkyato/OpenNet/blob/v0.2.0/docs/authorization.md). +[Authorizing topics](https://github.com/devkyato/OpenNet/blob/v0.2.2/docs/authorization.md). -The wheel is distributed through GitHub Releases for v0.2.0; it is not yet +The wheel is distributed through GitHub Releases for v0.2.2; it is not yet published on the public PyPI index. diff --git a/python/pyproject.toml b/python/pyproject.toml index cb96999..82a1237 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -4,12 +4,12 @@ build-backend = "hatchling.build" [project] name = "opennet-protocol" -version = "0.2.1" +version = "0.2.2" description = "Dependency-free typed ONP/1 messaging for Raspberry Pi, ESP32, and backend systems" readme = "README.md" requires-python = ">=3.9" license = "MIT" -authors = [{name = "devkyato"}] +authors = [{name = "@dev.mako (devkyato)"}] keywords = ["iot", "esp32", "raspberry-pi", "messaging", "tcp"] classifiers = [ "Development Status :: 3 - Alpha", diff --git a/python/src/opennet/__init__.py b/python/src/opennet/__init__.py index 7a3d2ac..f821015 100644 --- a/python/src/opennet/__init__.py +++ b/python/src/opennet/__init__.py @@ -33,4 +33,4 @@ "encode_value", ] -__version__ = "0.2.1" +__version__ = "0.2.2"