an experimental Spartan Protocol client, introducing sigils - 4-character site-local mnemonics for Spartan URLS. Whinam Inside
Go to file
stacksmith bc309e2410 removed debugging output 2022-03-08 09:35:27 -05:00
Makefile installer 2022-03-05 12:41:13 -05:00
README.md installer 2022-03-05 12:41:13 -05:00
comm.c initial 2022-03-04 17:37:21 -05:00
db.c lookup goes both ways now 2022-03-07 17:04:22 -05:00
db.h lookup goes both ways now 2022-03-07 17:04:22 -05:00
gemtext.c lookup goes both ways now 2022-03-07 17:04:22 -05:00
global.h initial 2022-03-04 17:37:21 -05:00
license.txt installer 2022-03-05 12:41:13 -05:00
log.c removed debugging output 2022-03-08 09:35:27 -05:00
log.h initial 2022-03-04 17:37:21 -05:00
lookup.c lookup goes both ways now 2022-03-07 17:04:22 -05:00
main.c removed debugging output 2022-03-08 09:35:27 -05:00
sigil.c initial 2022-03-04 17:37:21 -05:00
sigil.h initial 2022-03-04 17:37:21 -05:00
url.c initial 2022-03-04 17:37:21 -05:00
url.h initial 2022-03-04 17:37:21 -05:00

README.md

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.