diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..589cfb6 --- /dev/null +++ b/LICENSE.md @@ -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). diff --git a/README.md b/README.md new file mode 100644 index 0000000..55fdd45 --- /dev/null +++ b/README.md @@ -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. diff --git a/VERSION b/VERSION new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +1 diff --git a/VERSIONING.md b/VERSIONING.md new file mode 100644 index 0000000..454c834 --- /dev/null +++ b/VERSIONING.md @@ -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.