spa/README.md

46 lines
2.4 KiB
Markdown
Raw Permalink Normal View History

2022-03-04 22:37:21 +00:00
# spa - a Spartan Client powered by HorseWare
2022-03-05 17:41:13 +00:00
WIP! BSD 3-clause license.
2022-03-04 22:37:21 +00:00
`spa` is an experimental, terminal, client for the [Spartan Protocol](https://portal.mozz.us/spartan/spartan.mozz.us/), 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.
2022-03-04 22:45:41 +00:00
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:
2022-03-04 22:46:06 +00:00
`=> gemini://gemini.ctrl-c.club/~stack/whinam/index.gmi`
2022-03-04 22:44:31 +00:00
2022-03-04 22:37:21 +00:00
## Usage
`spa <url>` to visit a spartan URL
2022-03-04 22:44:31 +00:00
2022-03-04 22:37:21 +00:00
`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.
2022-03-05 17:41:13 +00:00
### Building
`make` to build spa
2022-03-04 22:37:21 +00:00
### Installing
2022-03-05 17:41:13 +00:00
Copy `spa` to somewhere in your path.
2022-03-04 22:37:21 +00:00
2022-03-05 17:41:13 +00:00
`make wipe` to create a `~/.spa` directory and initialize the database. If you ever need to wipe the database clean, use this command.
2022-03-04 22:37:21 +00:00
2022-03-05 17:41:13 +00:00
# Work In Progress
2022-03-04 22:37:21 +00:00
2022-03-05 17:41:13 +00:00
This is pre-alpha software, created for the purposes of research. No warranties of any sort, express or implied, are provided.