Replica_IO – a framework for composing practical distributed replication mechanisms
{"type": "project", "title": "Replica_IO – a framework for composing practical distributed replication mechanisms", "logoImg": "bafkreigcrx5vpqfgfegfz7ng24t5d2au2imobbgdvvxfktlgzu2hlntodu", "website": "https://github.com/replica-io/replica-io", "bannerImg": "bafkreiddtnh2a63rndmgltj6wsqcb7ef6rcmktmfdhvriubxhgsx4qzxeu", "createdAt": 1691056890431, "userGithub": "sergefdrv", "credentials": {"github": {"type": ["VerifiableCredential"], "proof": {"jws": "eyJhbGciOiJFZERTQSIsImNyaXQiOlsiYjY0Il0sImI2NCI6ZmFsc2V9..pqDc8rrt1NU_IYT1DYjHfIiDnuX21rvu7ngDHC95PODM-wxkqOCi7AySRA-mPQgOBGzL-fEYNi76IQHcEStKDQ", "type": "Ed25519Signature2018", "created": "2023-08-03T13:35:21.898Z", "proofPurpose": "assertionMethod", "verificationMethod": "did:key:z6MkghvGHLobLEdj1bgRLhS4LPGJAvbMA1tn2zcRyqmYU5LC#z6MkghvGHLobLEdj1bgRLhS4LPGJAvbMA1tn2zcRyqmYU5LC"}, "issuer": "did:key:z6MkghvGHLobLEdj1bgRLhS4LPGJAvbMA1tn2zcRyqmYU5LC", "@context": ["https://www.w3.org/2018/credentials/v1"], "issuanceDate": "2023-08-03T13:35:21.898Z", "expirationDate": "2023-11-01T13:35:21.898Z", "credentialSubject": {"id": "did:pkh:eip155:1:0xDb52af06C2d029C5408FFf31f6c6cd5e81731ec2", "hash": "v0.0.0:qbPPxByTRAD3mhVJgc56Y4FN2Zx/uAl2CqOWQg1LidE=", "@context": [{"hash": "https://schema.org/Text", "provider": "https://schema.org/Text"}], "provider": "ClearTextGithubOrg#replica-io#11386423"}}}, "description": "Replica_IO is a framework for composing practical distributed replication mechanisms.\n\n## Purpose 🌟\n\nThe purpose of this project is to advance computing by  making highly reliable distributed systems more practical to implement.\n\nMore and more we depend on increasingly complex computing systems. Therefore, we ought to make such critical systems highly reliable. Distributed systems are potentially much more reliable than centralized ones. However, anyone who tried implementing fault-tolerant distributed systems knows how hard it is in practice. \n\nPractical solutions should be both efficient and easy to use. Unfortunately, distributed systems tend to be less efficient, and they are notoriously complex. Often we can tolerate moderate decrease in efficiency, but reliability is crucial for critical systems we largely depend upon.\n\nNevertheless, complex problems can have neat solutions that are not only efficient, but also easy to properly apply in practice. Discovering and developing those solutions obviously requires significant effort. This project is making such effort.\n\n## Goal 🎯\n\nThe goal of this project is to develop a well-supported and widely used state-of-the-art framework for building distributed replication mechanisms, thus greatly facilitating practical implementation of highly reliable distributed systems.\n\nSpecifically, the framework should provide a carefully designed collection of primitives, components, tools, and guidelines for developing core mechanisms of fault-tolerant distributed systems, such as state machine replication or distributed coordination services. Sensibly chosen principles guide the process of designing and implementing generic components, such as consensus or various kinds of broadcast. These components get constructed out of the corresponding protocol logic, more simple components, and fundamental primitives, such as asynchronous communication or timer abstractions. Unified means of combination ensure great composability of the elements. Fine modularity together with built-in capabilities for tracing and controlling execution enable effective debugging, validation, and analysis. Powerful and convenient tools allow effectively utilizing those features. Clear guidelines help using the framework properly by explaining its features on simple, easy-to-follow examples.\n\nThis framework is conceived as generic and independent from any specific target system or use case, embracing different flavors of fault-tolerance, consistency, and synchrony models, e.g. strong, weak, or eventual consistency under CFT, BFT, or hybrid models with strong, partial, or no synchrony assumption. It is particularly concerned not only with immediate safety guarantees, but also with ensuring rigorous liveness guarantees and memory bounds, as well as further features highly desired in practice, such as bootstrapping procedures, online reconfiguration, recovery of faulty nodes, and ability to recover from a massive system crash (durability).\n\nLast, but not least, it should be highly ergonomic so that developers enjoy playing with it while effectively solving their problems. \n\n## Approach 🤓\n\nThe approach of this project is best characterized as follows:\n\n  * _open:_ publicly available, transparent, and collaborative;\n  * _understandable:_ intuitive, well documented, and easy to use;\n  * _flexible:_ generic, modular, and easy to integrate;\n  * _holistic:_ taking into account all relevant aspects;\n  * _innovative:_ discovering and using state-of-the-art techniques;\n  * _quality-oriented:_ carefully designed, implemented, and verified;\n  * _iterative:_ starting small — growing strong, delivering value regularly and persistently.", "logoImgData": {}, "bannerImgData": {}, "projectGithub": "replica-io", "projectTwitter": "Replica_IO"}