June 6th
Hello fellow Zebras! It’s this time of the week where we update the community on our progress developing the new Zcash Z3 stack. Things are progressing but I won’t hide the fact that not every interaction has been “a bed of roses”. These past weeks there have been a few moments where expectations on delivered work varied from team to team and this led to some friction and frustration. While the overall architecture and high level requirements of Z3 was overly discussed, the devil is in the details. This caused that different interpretation of the same requirements caused unexpected situations where some code worked differently as others assumed it would, and priorities of the different teams made those discoveries happen later than expected and code re-design and refactoring would be needed. This happen with Zaino’s cache design which is falling a bit short on the amount of chain data in needs to be able to track and also with ZeWIF, which ended requiring a lot more of work than originally scoped which severely affected Kris’ ability to “drop-in” the ZeWIF crate and required a lot of review and re-work.
Following @earthrise’s advice from Zcon4, ZCG, different team leads and myself followed a “blameless culture” retrospective to analyze why these “broken telephone” kind of issues were happening and where were they coming from and identified a few factors:
- The wish for a “lean development process” with not much overhead and fewer meetings went too far.
- Zcash (and zcashd specifically) has a lot of ‘lore’ and the unwritten nature of it makes it difficult for developers to factor those into their developments, especially those that have “less mileage” in our ecosystem.
- Priorities of the different projects between teams can vary significantly.
- The combination of the three items above was a terrible combination.
Changes to the development process going forward:
Workgroup(s) creation
Developers will hold regular hands-on code meetings about Zaino API design. In the past requirements weren’t written down, we will do that in these working groups to design APIs. Candidates topics: Zaino library; zcash_client_backend; ZeWIF; light client protocol.
Action items:
- Pacu will repurpose Light Client Working Group for some of these items specially Light Client Protocol similarly to what ZIP editors do
Reducing the impact of ‘Lore-based requirements’
I ran a quick check on some of our repos and they don’t contain good cues for developers joining the ecosystem. Suggested paying attention to the repos and labeling “good first issues”, “learning opportunity” and “help wanted” issues that apply. Also the workgroups will be a touchpoint for developers to talk about these.
Helping new teams scope their initial grants in an end-to-end fashion
We identified a problem with the “handover” nature of the ZeWIF grant. At some point the wallet integration part of ZeWIF into Zallet was handed over to ECC and not really in-scope of the ZeWIF milestones. This made the developers produce a great Zcashd-wallet extraction library that then was difficult to convert into ZeWIF and the integration into Zallet was very painful.
In a retrospective call ZCG held with BlockChain Commons and ECC engineers, @nuttycom suggested that future grants of this nature have less breath of scope but do achieve end-to-end completion, meaning that the width of the development task is lessened in favor of investing more in a deep integration of the tool being developed into the part of the ecosystem that will be solving.
That being said, let’s move on to the usual updates
Outreach
Status: Paused
We will discuss this further in the next sections but we are getting closer to having artifacts and containers that Zcash partners can start testing so we will pivot to the next phase of outreach when those are almost done.
Zebra
Project Roadmap board
Priority board
The Zebra Team is working on their last items on their ToDo list for Zcashd deprecation while waiting for other past developments to be reviewed and merged to the main codebase. Also, during the past Zcash deprecation collaboration call, the Zebra team requested ECC to point them to places where their team could contribute to the Zallet repo! ATH In collaboration! Go Zebra!
Current In development items: (see board for more details)
Zaino (ZingoLabs)
- Status: refactoring
Zaino folks are scoping and working on the chain cache refactoring and re-architecting to better serve Zallet and other downstream clients such as block explorers and light wallets.
In-Memory backend wrap up
- status: pending review
This has been falling through the cracks a bit, we still need to provide reviews to this PR https://github.com/zcash/librustzcash/pull/1634
We need reviewers for this!!
Zallet full node wallet
- Status: delayed
(but rapidly catching up)
ECC has notified a deviation of 2 months from the original schedule.
tracking work on this repository.
The ECC team is back from their Tachyon conclave! A lot of work happened as well as necessary conversations as I detailed previously. ZeWIF integration in Zallet is progressing and there are a lot of PRs in review. ECC engineers will get in touch with ZF engineers who requested issues to work on and help out.
Call for Developers!
If you want to start working on something Zcash related and you don’t know where to start, Zallet is a good way to do it. With many RPC methods already developed that can be good examples for the creation of others, the project is in a good shape to start taking contributions from the broad community. Fork the Zallet repo and start hacking!.
Block Explorer Support
- Status: in progress
Yasser and Pacu are reviewing @emersonian’s PR with enhancements to the Zcash Block explorer. While we are solving issues on the zcashexplorer.app mainnet instance that is blocking us from deploying the CMC fix mentioned in last week’s update it is very possible that we will have to reindex that explorer because it’s not tracking the transparent pool and we need that information which might cause some considerable downtime (that’s why we are moving away from Zcashd haha)
Next fixes:
I’m starting to work on Zaino integration, so if you hear explosions, that’s probably it (LOL).
Regtest? What is that?
- Status: in review
I’ve addressed a second round of comments and am waiting for more.
Thanks for reading!