Go to file
Netscape Navigator 8464c81ecc Give up on `lipmaa` (for now) 2020-11-08 14:55:07 -06:00
.vscode Configuration is evil- lets not make it a public API. 2020-04-26 09:18:30 -05:00
bin Continuing tutorial 2020-06-12 08:37:48 -05:00
lib Give up on `lipmaa` (for now) 2020-11-08 14:55:07 -06:00
spec Give up on `lipmaa` (for now) 2020-11-08 14:55:07 -06:00
.gitignore Minor updates 2020-05-06 07:32:09 -05:00
.map WIP. TODO: Make sure client is ingesting blobs in a bundle 2020-04-23 07:41:47 -05:00
.rspec Coo... coo... 2019-09-21 21:30:03 -05:00
Gemfile Run rubocop 2020-04-25 10:11:25 -05:00
Gemfile.lock Run rubocop 2020-04-25 10:11:25 -05:00
LICENSE Add license, gemspec 2020-04-18 11:12:54 -05:00
README.md Give up on `lipmaa` (for now) 2020-11-08 14:55:07 -06:00
a.gif WIP. TODO: Make sure client is ingesting blobs in a bundle 2020-04-23 07:41:47 -05:00
b.gif WIP. TODO: Make sure client is ingesting blobs in a bundle 2020-04-23 07:41:47 -05:00
c.gif WIP. TODO: Make sure client is ingesting blobs in a bundle 2020-04-23 07:41:47 -05:00
db.pigeon 🎉 v0.1.0 - minimally feature complete 2020-04-22 08:44:12 -05:00
kitchen_sink.sh Update kitchen_sink.sh to use new format 2020-06-06 15:33:49 -05:00
logo.png Add logo 2019-10-09 19:32:54 -05:00
pigeon.gemspec Run rubocop 2020-04-25 10:11:25 -05:00
ruby_tutorial.md Give up on `lipmaa` (for now) 2020-11-08 14:55:07 -06:00
scratchpad.jpg Cleanup and test scripts. TODO: Why does blocking not delete previous peers? 2019-09-24 20:19:25 -05:00

README.md

Pigeon Ruby

A Pigeon Protocol client written in Ruby.

Email contact at vaporsoft.xyz to ask questions or get involved. Your feedback is solicited and appreciated. Seriously, send us an email! We look forward to hearing from you.

Features

  • CLI (docs via pigeon-cli help) and Ruby API available (docs here)
  • Minimal dependencies - only outside deps are thor (for CLI) and ed25519 (for signatures).
  • Thoroughly unit tested.

Caveats

  • Implementation is assumed to be stable, but does not have much production use.
  • Windows support is unknown (and unlikely to work in current state). Please report bugs.
  • Single threaded use is assumed. Built for a single user per OS process. Many design tradeoffs were made around that use case.
  • Bundling operations need performance tuning. Optimizations are planned and help is welcome.

Installation - Bundler (Easy)

Add this to you Gemfile:

gem "pigeon",
  git: "https://tildegit.org/PigeonProtocolConsortium/pigeon_ruby",
  tag: "v0.2.0"

Then run

bundle install

Usage: CLI

See pigeon-cli help for documentation. See kitchen_sink.sh examples.

Usage: Ruby Lib

Docs available here

TODO Items

  • Stop using old nested blob bundles. Start using "flat" blobs.
  • Ability to unblock someone.
  • Ability to delete a key from a draft.
  • 100% class / module documentation
  • Run a terminology extraction tool on the documentation and write a glossary of terms.
  • Ability to list all blocked users.
  • Ability to unblock a user.

"Nice to Have"

  • Add --since=/--until= args to bundle create for sending partial / "slice" bundles.
  • Interest and Disinterest Signalling for document routing: Create a $blob_status message to express have, want signalling. This can steer bundle creation and an eventual --for flag at bundle creation time to customize a bundle to a particular user.
  • Add a schema for $peer_status. Eg: block, unblock, follow, unfollow.

Idea Bin

  • Ability to add map/reduce plugins to support custom indices?
  • Bundling via Optar or Colorsafe
  • Ability to add map/reduce plugins to support custom indices?
  • Ability to add a blob in one swoop using File objects and Message#[]=, maybe?
  • Bundling via Optar or Colorsafe