Netscape Navigator 8d7d17766d | ||
---|---|---|
.vscode | ||
bin | ||
lib | ||
spec | ||
.gitignore | ||
.map | ||
.rspec | ||
Gemfile | ||
Gemfile.lock | ||
LICENSE | ||
README.md | ||
a.gif | ||
b.gif | ||
c.gif | ||
db.pigeon | ||
kitchen_sink.sh | ||
logo.png | ||
pigeon.gemspec | ||
ruby_tutorial.md | ||
scratchpad.jpg |
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) anded25519
(for signatures). - Thoroughly unit tested.
Caveats
- Current windows support is unknown (and unlikely to work in current state). Please report bugs.
- Not published to RubyGems yet (see installation instructions below)
- 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.
Build From Source
We are not yet on Rubygems. The gem will be released after we are fully compliant with the spec.
In the meantime:
git clone https://tildegit.org/PigeonProtocolConsortium/pigeon_ruby.git
cd pigeon_ruby
gem build pigeon.gemspec
gem install pigeon-0.1.1.gem
pigeon-cli identity new # Should work. Raise issue if not.
pigeon-cli status
pigeon-cli help
Usage: CLI
See pigeon-cli help
for documentation.
See kitchen_sink.sh
examples.
Usage: Ruby Lib
Current Status
- Create a contact email for project outsiders (and maybe a developer email list?)
- Update README.md
- Update Ruby API docs
- Update blobs spec to clear out blob folder every time it runs.
- Oops,
lipmaa
field needs to be a hash, not an integer! - Change
@
,%
,&
tofeed.
,mesg.
,blob.
, respectively. Better readability, easier onboarding, URL friendly. - Change draft and message templates to render headers in this order:
author
,prev
,lipmaa
,depth
,kind
. - Make location of blob folder configurable?
- Update Dev docs in protocol spec to reflect changes to
lipmaa
header. - Update spec document CLI usage examples to reflect API changes in 2020.
- BUG: Keys that start with a carriage return (
\n
) freeze tokenizer. - Convert literals to constants, remove unused locals, reduce duplication, run linter.
- 100% class / module documentation
- Run a terminology extraction tool on the documentation and write a glossary of terms.
- Publish to RubyGems
Optimizations
- add parsers and validators for all CLI inputs
- Make the switch to LevelDB, RocksDB, UNQLite or similar (currently using Ruby PStore).
- Reduce whole darn repo into single module to aide portability.
::Helpers
module is OK. - Update the bundles.md document once
bundle consume
works. - Performance benchmarks (Do this second to last!)
- Performance tuning (Do this last!)
New Features / Road Map
- Support partial verification via
lipmaa
property. - Add
--since=
/--until=
args tobundle create
for sending partial / "slice" bundles. - Interest and Disinterest Signalling for document routing: Create a
$blob_status
message to expresshave
,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
.