Pigeon-Ruby/README.md

86 lines
3.8 KiB
Markdown
Raw Normal View History

2019-10-10 00:32:54 +00:00
![](logo.png)
2019-09-22 02:30:03 +00:00
# Pigeon Ruby
A [Pigeon Protocol](https://tildegit.org/PigeonProtocolConsortium/protocol_spec) client written in Ruby.
2020-04-27 12:46:36 +00:00
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
2020-05-01 13:25:15 +00:00
* CLI (docs via `pigeon-cli help`) and Ruby API available ([docs here](ruby_tutorial.md))
* Minimal dependencies - only outside deps are `thor` (for CLI) and `ed25519` (for signatures).
* Thoroughly unit tested.
2019-09-22 02:30:03 +00:00
2020-04-19 21:27:09 +00:00
# Caveats
* Current windows support is unknown (and unlikely to work in current state). Please report bugs.
2020-04-19 21:27:09 +00:00
* Not published to RubyGems yet (see installation instructions below)
2020-05-01 13:25:15 +00:00
* Single threaded use is assumed. Built for a single user per OS process. Many design tradeoffs were made around that use case.
2020-04-26 13:51:14 +00:00
* Bundling operations need performance tuning. Optimizations are planned and help is welcome.
2020-04-19 21:27:09 +00:00
# Build From Source
2019-09-22 02:30:03 +00:00
2020-05-01 13:25:15 +00:00
We are not yet on Rubygems. The gem will be released after we are fully compliant with the spec.
2019-09-22 02:30:03 +00:00
2020-04-18 16:05:19 +00:00
In the meantime:
```
git clone https://tildegit.org/PigeonProtocolConsortium/pigeon_ruby.git
cd pigeon_ruby
2020-04-18 18:18:00 +00:00
gem build pigeon.gemspec
gem install pigeon-0.1.1.gem
2020-04-18 18:18:00 +00:00
pigeon-cli identity new # Should work. Raise issue if not.
pigeon-cli status
pigeon-cli help
2020-04-18 16:05:19 +00:00
```
2020-04-18 15:51:08 +00:00
# Usage: CLI
2020-04-18 18:18:00 +00:00
See `pigeon-cli help` for documentation.
See `kitchen_sink.sh` examples.
2019-09-22 02:30:03 +00:00
2020-04-18 15:51:08 +00:00
# Usage: Ruby Lib
2020-04-28 13:41:36 +00:00
[Docs available here](ruby_tutorial.md)
2020-04-18 16:05:19 +00:00
2019-09-22 02:30:03 +00:00
# Current Status
2020-04-27 12:46:36 +00:00
- [X] Create a contact email for project outsiders (and maybe a developer email list?)
2020-05-01 13:25:15 +00:00
- [X] Update README.md
- [X] Update Ruby API docs
2020-05-07 12:33:24 +00:00
- [X] Update blobs spec to clear out blob folder every time it runs.
2020-05-04 13:44:17 +00:00
- [ ] Oops, `lipmaa` field needs to be a hash, not an integer!
2020-05-11 12:44:26 +00:00
- [ ] Change `@`, `%`, `&` to `feed.`, `mesg.`, `blob.`, respectively. Better readability, easier onboarding, URL friendly.
2020-05-11 12:02:40 +00:00
- [ ] Change draft and message templates to render headers in this order: `author`, `prev`, `lipmaa`, `depth`, `kind`.
2020-05-10 22:17:56 +00:00
- [ ] Make location of blob folder configurable?
2020-05-05 12:41:38 +00:00
- [ ] Update Dev docs in protocol spec to reflect changes to `lipmaa` header.
2020-05-01 13:25:15 +00:00
- [ ] Update spec document CLI usage examples to reflect API changes in 2020.
2020-04-27 12:46:36 +00:00
- [ ] 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
2020-05-05 12:41:38 +00:00
- [ ] Run a [terminology extraction tool](https://www.visualthesaurus.com/vocabgrabber/#) on the documentation and write a glossary of terms.
2020-04-22 13:21:55 +00:00
- [ ] Publish to RubyGems
# Optimizations
2020-03-15 18:12:26 +00:00
- [ ] add parsers and validators for all CLI inputs
2020-04-22 13:21:55 +00:00
- [ ] Make the switch to LevelDB, RocksDB, [UNQLite](https://unqlite.org/features.html) 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.
2020-04-03 10:35:48 +00:00
- [ ] Performance benchmarks (Do this second to last!)
- [ ] Performance tuning (Do this last!)
2020-04-08 13:54:28 +00:00
# New Features / Road Map
2020-04-08 13:54:28 +00:00
- [ ] Support partial verification via `lipmaa` property.
- [ ] Add `--since=`/`--until=` args to `bundle create` for sending partial / "slice" bundles.
2020-04-20 02:32:37 +00:00
- [ ] 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
2020-04-18 15:51:08 +00:00
2020-04-26 13:51:14 +00:00
- [ ] 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](http://ronja.twibright.com/optar/) or [Colorsafe](https://github.com/colorsafe/colorsafe)