Background
crates.io is a central repository for Rust crates (binary applications and libraries).
`iroha` crate name on crates.io with `iroha-derive` and `iroha-internal` were occupied so we need to find another name for our main crate.
Problem
crates.io has no ability to delete already created crates, so the only way is to use new names to be published there.
Solution
As a solution we propose to publish a following set of crates:
- iroha - binary application to start Iroha Peer, this crate's artifacts will be used for docker images
- iroha_core - library containing Iroha "backend" or peer-side logic
- iroha_client - library containing Iroha Rust clients API
- iroha_client_cli - binary application which provides command line interface on top of iroha_client
- iroha_crypto - library containing Iroha crypto related logic (Key Pairs generators, Hashing algorithms, etc.)
- iroha_crypto_cli - binary application which provides command line interface on top of iroha_crypto
- iroha_data_model - library containing domain entities like Domain and Account, Iroha Special Instructions and Iroha Queries
- iroha_dsl - library containing Domain Language specific entities like macroses, popular compositions of instructions and examples
- iroha_http_server - library containing HTTP related functionality
- iroha_logger - library containing logging related functionality
- iroha_macro - library containing Iroha macroses
Decisions
- use new names for iroha crates
- get on top of crates.io search index by providing a lot of downloads for our crates
Alternatives
- Get in touch with https://crates.io/users/dark-flames and ask to provide credentials for current crates with an ability to put new versions with our Iroha on top of already existing
- Use private cargo registry
Concerns
At start people may use `iroha` crate instead of `irohad`.
Assumptions
We will provide information about this situation on our web pages.
Risks
- 3rd party malicious agent can take `iroha` to fight our reputation.
16 Comments
Vadim Reutskiy
Sara Garifullina Sara, correct me if I am wrong, but seems like we can involve Hyperledger here in the aim to solve these naming (and "cybersquatting") issue
Also, we can use "hyperledger_iroha" as a base part for our crates, which is probably even better
Sara Garifullina
I think it shouldn't be such an issue if we indicate which crate is the real one in our repo and docs.
But I can contact trademark department of HL (although not sure they'll know much about those rust-specific things).
How is it managed btw? 'Cause I believe we might need to give the admin rights for that to HL guys
Vadim Reutskiy
Nikita Puzankov Please, check the ways how we can share the control for that crate with JHL admins in future.
Nikita Puzankov
We just need to have tokens in Github CI.
Nikita Puzankov
Looks like HL do not really bothered by this issue https://crates.io/crates/hyperledger - Ry already took HL crate a year ago and still didn't use it
Vadim Reutskiy
I personally do not like the "irohad" name, as it sounds confusing a bit.
I think it is better to name it "iroha_main" or "iroha_run" or "iroha_daemon"
Andrei Lebedev also proposed "iroha_core", but for me it has a bit different semantics.
Andrei Lebedev
Could you elaborate on semantics of `iroha_core`?
Vadim Reutskiy
Sure!
For me, the "core" should be for the main functionality of the blockchain solution, the core code which glues together all detachable modules. In our case, the "Iroha_peer" can be also named as "iroha_core" semantically.
Sara Garifullina
I think the second best option after Iroha (which is taken) would be HL Iroha - basically, it's a full name of the project.
Nikita Puzankov
Vadim Reutskiy
Rephrasing the silent meaning, we can have "hl-iroha" or "hl_iroha" but not "HL Iroha"
Sara Garifullina
maybe even hliroha? I mean the general idea - iroha-core and such does not look that straightforward. It sounds like a component of iroha (that is not iroha really)
Makoto Takemiya
hyperledger-iroha or hyperledger_iroha is a good name for the crate
Vadim Reutskiy
Good, hence we can proceed with that decision – to put the "hyperledger_" as a prefix for all crates, and change "irohad" to "hyperledger_iroha".
Andrei Lebedev
Did we contact the current crate owner?
Egor Ivkov
Later it was discussed and decided to use `iroha_core` for library and just `iroha` for binary. Other names remain the same.