spa/README.md

2.4 KiB

spa - a Spartan Client powered by HorseWare

WIP! BSD 3-clause license.

spa is an experimental, terminal, client for the Spartan Protocol, a minimized, unencrypted version of the Gemini protocol.

spa is built as a proof of concept and a testbed for a slightly off-the-beaten path technology inspired by Whinam methodologies.

On the surface it is just a simplistic browser. Internally, an immutable logbase tracks every spartan URL ever encountered, assigning 4-character sigils for display and access. Sigils may be used instead of the URLs they represent, and are much easier to memorize, type in, or otherwise keep track of. The database acts as a URL-shortener, a bookmark system, and a history log.

This project is built around the principles of Whinam software: an immutable datalog with indices. For more information about Whinam technologies and practices, visit the Gemini Whinam Archive at:

=> gemini://gemini.ctrl-c.club/~stack/whinam/index.gmi

Usage

spa <url> to visit a spartan URL

spa <sigil> to visit a sigil

Currently, the output is sent to the terminal, after generating appropriate sigils. Further navigation using sigils is now possible by re-invoking spa.

Sigils

Sigils are 4-character mnemonics assigned for each URL visited or rendered by spa. Each character may be an uppercase alpha character (but not 'O' or 'I') or a digit (but not '0' or '1'). This allows for 32 possibilities representing 5 bits; 4 such characters provide for 20 bits, or 1M (1048576) possible URLs (sufficient for Spartan!)

Requirements

A linux machine with a GCC compiler.

Resources

The compiled binary is < 20K. Upon installation, a db.log file is created in the .spa directory. It will contain every spartan URL seen by the system. Each url is stored once and only once. In addition, db.map20 file is created containing an index for fast lookup (hashtable). The file is fixed at 4MB, but it is a sparse file and will generally take up substantially less (and never more) space.

Building

make to build spa

Installing

Copy spa to somewhere in your path.

make wipe to create a ~/.spa directory and initialize the database. If you ever need to wipe the database clean, use this command.

Work In Progress

This is pre-alpha software, created for the purposes of research. No warranties of any sort, express or implied, are provided.