{"id":18616706,"url":"https://github.com/sile/plumcast","last_synced_at":"2025-08-02T10:10:41.750Z","repository":{"id":57656428,"uuid":"140918771","full_name":"sile/plumcast","owner":"sile","description":"A message broadcasting library based on the Plumtree/HyParView algorithms","archived":false,"fork":false,"pushed_at":"2021-10-23T01:11:33.000Z","size":81,"stargazers_count":31,"open_issues_count":0,"forks_count":3,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-25T07:12:37.540Z","etag":null,"topics":["broadcast","hyparview","plumtree","rust"],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sile.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-07-14T05:32:28.000Z","updated_at":"2025-02-02T15:21:28.000Z","dependencies_parsed_at":"2022-08-26T06:00:26.037Z","dependency_job_id":null,"html_url":"https://github.com/sile/plumcast","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sile%2Fplumcast","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sile%2Fplumcast/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sile%2Fplumcast/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sile%2Fplumcast/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sile","download_url":"https://codeload.github.com/sile/plumcast/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248325273,"owners_count":21084900,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["broadcast","hyparview","plumtree","rust"],"created_at":"2024-11-07T03:37:40.092Z","updated_at":"2025-04-11T01:32:05.260Z","avatar_url":"https://github.com/sile.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"plumcast\n========\n\n[![plumcast](https://img.shields.io/crates/v/plumcast.svg)](https://crates.io/crates/plumcast)\n[![Documentation](https://docs.rs/plumcast/badge.svg)](https://docs.rs/plumcast)\n[![Actions Status](https://github.com/sile/plumcast/workflows/CI/badge.svg)](https://github.com/sile/plumcast/actions)\n[![Coverage Status](https://coveralls.io/repos/github/sile/plumcast/badge.svg?branch=master)](https://coveralls.io/github/sile/plumcast?branch=master)\n[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)\n\nA message broadcasting library based on the Plumtree/HyParView algorithms.\n\n[Documentation](https://docs.rs/plumcast)\n\n\nProperties\n----------\n\n### Pros\n\n- Nearly optimal message transmitting count\n  - Usually messages are broadcasted via a spanning tree\n  - Only the nodes interested in the same messages belong to the same cluster\n- Scalable\n  - Theoretically, it can handle ten-thousand of nodes or more\n- High fault tolerance\n  - Spanning trees are automatically repaired if there are crashed nodes\n- Dynamic membership\n  - Nodes can be added to (removed from) a cluster at any time\n\n\n### Cons\n\n- No strong guarantee about connectivity of the nodes in a cluster\n- No strong guarantee about delivery count of a message\n- No guarantee about messages delivery order\n\nIf some of the above guarantees are mandatory for your application,\nit is need to be provided by upper layers.\n\n\nReferences\n----------\n\n- [HyParView: a membership protocol for reliable gossip-based broadcast][HyParView]\n- [Plumtree: Epidemic Broadcast Trees][Plumtree]\n\n[HyParView]: http://asc.di.fct.unl.pt/~jleitao/pdf/dsn07-leitao.pdf\n[Plumtree]: http://www.gsd.inesc-id.pt/~ler/reports/srds07.pdf\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsile%2Fplumcast","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsile%2Fplumcast","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsile%2Fplumcast/lists"}