add version, license, and readme

This commit is contained in:
Joe Ardent 2023-08-01 14:59:21 -07:00
parent 3d8b8040ab
commit 02eed74c51
4 changed files with 74 additions and 0 deletions

5
LICENSE.md Normal file
View File

@ -0,0 +1,5 @@
# The Chaos License (GLP)
This software is released under the terms of the Chaos License. In cases where the terms of the
license are unclear, refer to the [Fuck Around and Find Out
License](https://git.sr.ht/~boringcactus/fafol/tree/master/LICENSE-v0.2.md).

36
README.md Normal file
View File

@ -0,0 +1,36 @@
# Godiva, a flasher with a message
Godiva is a desktop application for transfering data from one computer to another by displaying a [possibly
endless] stream of [QR encoded](https://en.wikipedia.org/wiki/QR_code) [Raptor
codes](https://en.wikipedia.org/wiki/Raptor_code), and then on the receiving side, a camera to read
the QR codes and turn them back into the original content.
## what?
Raptor codes are a type of [fountain code](https://en.wikipedia.org/wiki/Fountain_code); fountain
codes are a way to encode data as a stream of error-correcting pieces of that data; as long as you
can read some number of pieces, you can reconstruct the original data. They're named like that
because you can think of them as like a fountain of water that is just pouring out. Anyone can come
drink from it, and then they'll have the water. So something can just be transmitting fountain codes
and not care if anyone is receiving, and receivers don't have to worry about missing something they
needed; they're guaranteed to get everything they need as long as they listen long enough. I think
that's pretty cool!
So the idea here is to give it a file (or short string of text) you want transferred to a different
machine (probably a mobile phone running a little app I'll be writing), and it will start producing
raptor codes for that file. Each piece of raptor code then gets encoded as a QR code, and then
displayed for a period of time on the screen. The user then holds up the receiving computer's camera
in order to receive the QR encoded raptor codes, and, *voila*, the file has been transferred!
# status
I literally just started this today, and currently it will produce a single QR code for a given
input string, and display that. Honestly, this is already genuinely useful to me; sometimes I want
to look at a url on my phone, and the camera app will let me look at a QR code and interpret text as
a link. But I hope to have a quick and dirty mobile app soon that will let me test streaming codes.
# about the name
[Lady Godiva](https://en.wikipedia.org/wiki/Lady_Godiva), in legend, rode naked through her town in
order to send a message to her husband about the plight of the downtrodden under his
landlordship.

1
VERSION Normal file
View File

@ -0,0 +1 @@
1

32
VERSIONING.md Normal file
View File

@ -0,0 +1,32 @@
# Golden Versioning
This software is versioned under a scheme I call "goldver", as an homage to the
vastly inferior [semver](https://semver.org).
## What does "goldver" mean?
When projects are versioned with goldver, the first version is "1". Note that it
is not "1.0", or, "1.0-prealpha-release-preview", or anything nonsensical like
that. As new versions are released, decimals from *phi*, the [Golden
Ratio](https://en.wikipedia.org/wiki/Golden_ratio), are appended after an
initial decimal point. So the second released version will be "1.6", the third
would be "1.61", etc., and on until perfection is asymptotically approached as
the number of released versions goes to infinity.
## Wait, didn't Donald Knuth do this?
No! He uses [pi for TeX and e for MetaFont](https://texfaq.org/FAQ-TeXfuture),
obviously COMPLETELY different.
## Ok.
Cool.
## What version is Godiva now?
Canonically, see the `VERSION` file. Heretically, once there have been
at least three releases, the version string in the `Cargo.toml` file will
always be of the form "1.6.x", where *x* is at least one digit long, starting
with "1". Each subsequent release will append the next digit of *phi* to
*x*. The number of releases can be calculated by counting the number of digits
in *x* and adding 2 to that.