I've started to learn indy project by looking through getting started guide thoroughly, and while I did get a lot of understanding of working processes there were some rough edges. I tried to fix some in https://github.com/hyperledger/indy-sdk/pull/556, but there are some more.
One thing is that wallet API is async, and create_wallet takes pool_name as a parameter. While after reading more documentation (and asking people) it became clear that this is done for consistency with other SDK APIs and for ability to handle remote wallets, at first I had impression that wallet had to connect to pool somehow, which was distracting. I think it would be great to have a paragraph somewhere in this guide elaborating on this.
Another one is onboarding function in jupyter notebook. I understand that it was written to reduce amount of code to perform onboarding different trust anchors, but in it's current state it's still quite hard to read and especially correlate with documentation. Maybe it would be better to split it to different functions (according to concerned parties, instead of mixing all of them in big one), possible async ones communicating with each other using asyncio.Queue.
Also, some things (like securely sending initial connection request during onboading) are seemingly out of scope for indy project, and it might be better for getting started guide to state these things explicitly where appropriate.
Overall, from my point of view the main problems in understanding this guide are numerous differences between documentation and notebook code and many intermingled entities in code.
I've started to learn indy project by looking through getting started guide thoroughly, and while I did get a lot of understanding of working processes there were some rough edges. I tried to fix some in https://github.com/hyperledger/indy-sdk/pull/556, but there are some more.
One thing is that wallet API is async, and create_wallet takes pool_name as a parameter. While after reading more documentation (and asking people) it became clear that this is done for consistency with other SDK APIs and for ability to handle remote wallets, at first I had impression that wallet had to connect to pool somehow, which was distracting. I think it would be great to have a paragraph somewhere in this guide elaborating on this.
Another one is onboarding function in jupyter notebook. I understand that it was written to reduce amount of code to perform onboarding different trust anchors, but in it's current state it's still quite hard to read and especially correlate with documentation. Maybe it would be better to split it to different functions (according to concerned parties, instead of mixing all of them in big one), possible async ones communicating with each other using
asyncio.Queue
.Also, some things (like securely sending initial connection request during onboading) are seemingly out of scope for indy project, and it might be better for getting started guide to state these things explicitly where appropriate.
Overall, from my point of view the main problems in understanding this guide are numerous differences between documentation and notebook code and many intermingled entities in code.
UPD. This issue was moved: https://jira.hyperledger.org/browse/IS-579