Yet Another Piper Toolbox
This project contains a few tools for working with Piper, a new document-oriented and binary-based network protocol. Due to the "strict" rules imposed by working with raw binary data with defined characteristics it's a simpler alternative to other protocols like Gopher, Gemini, or HTTP.
Currently the package includes four tools:
- Rover: A graphical Piper client with Gemtext support.
- Ares: A simple proof-of-concept server with PCGI support.
- PCGI: A simple protocol and library to build CGI-like applications on top of Piper.
libterra
: A (dynamic and static) library to access the self-contained components of the other tools. This currently includes a Piper client with both a low-level and higher-level interface, Piper path resolution, a Gemtext parser, dynamic strings and arrays, and anepoll
-based event loop.
To build the package you'll need a GNU-compatible make
and a C11/17 compiler.
Additionally, to build Rover, you'll have to install the libX11
development
files from your distribution.
Simply clone the project and execute make
in its root directory:
git clone https://github.com/RandomSoup/terra.git && cd terra
make -j$(nproc)
That will place build files under the build/
directory.
All programs and libraries are prepared to work under Linux systems, but
won't work on other systems like MacOS or Windows, since they make use
of Linux-specific systems call like epoll
.
Rover doesn't implement raw file downloads yet.
Terra is licensed under a permissive ISC-like license. See LICENSE
for more info.
Rover's design was inspired by Castor9, a Plan 9 Gemini browser, and
uses the Spleen font, that is licensed under a Simplified BSD License.
The original relative URL resolution code was adapted from libpiper
's,
with permission.