ZcashFoundation / GrantProposals-2017Q4

Submission site for Zcash Foundation grant proposals
25 stars 3 forks source link

Enhancements to the ZCash Desktop GUI Wallet #7

Closed vaklinov closed 6 years ago

vaklinov commented 7 years ago

I am the author of the ZCash Desktop GUI Wallet: https://github.com/vaklinov/zcash-swing-wallet-ui

Screenshot

This wallet has had an important role in the ZCash community since ZCash release. It was the first wallet to support shielded transactions and I believe it is currently still "the best desktop wallet", that allows users to control their private keys. The wallet has also been included in distributions like https://zcash4win.com/ and has been forked many times for other uses (it is open source under an MIT license).

In connection with the Zcash Foundation Grants Call for Proposals (Q4 2017) I wish to apply for a grant to continue work on the wallet and enhance it.

Motivation and overview

I made this wallet because I am excited about ZCash and wish to contribute to its future development. Since this is a hobby to me, having some funding will help a lot. If the wallet is enhanced, it will give users a better UI experience and contribute to the advancement of ZCash!

Technical approach

The specific enhancements for the wallet I have in mind are

  1. Improve the graphical appeal of the GUI (looks OK now but could be better)
  2. Add functionality to allow users to make donations, to the developer(s) of the wallet (i.e. me) or to other non-profit entities designated by the ZCash foundation. Users will be able to make donations straight from the wallet.
  3. Add features for users to sweep small change from multiple addresses and send cash to multiple addresses at the same time.
  4. Some usability enhancements like regularly reminding users to backup their wallet.dat, to keep it safe on another system/backup medium etc.
  5. Any other features that the community wants... The risk to implementing all this is low - the wallet already exists and is functional. It just needs enhancements and maintenance.

Team background and qualifications

I am a one-man-team more or less, and I am a professional developer. Developing this wallet is a hobby to me. I believe I have already proved my qualifications.

Evaluation plan

Once the features are implemented (at each stage/feature), they may be evaluated by the Grant Review Committee and/or other community members. All wallet features will be published in the wallet GitHub repository and be immediately testable/usable. The measure of success will be satisfied ZCash wallet users (having good UI experience).

Security considerations

This project promotes good security practices in the community. It encourages users to run a full ZCash node on their desktop computer and to control their private keys locally. It also has functionality allowing users to back up their wallets.dat etc.

Schedule

The 6-7 proposed features will take me perhaps 3-4 months since I do this as a hobby. Each feature will be pushed to GitHub and be usable separately. Some verifiable results will be available within the first month. It will be possible to evaluate each specific feature as it gets completed.

Budget and justification

This project is flexible and more or less work/features may be implemented based on the funding received.

mineZcash commented 7 years ago

I have been impressed with Vaklinov's work since he released the first GUI on the Zcash forums many months ago. It has been the standard GUI that Radix42s zcash4win and zcash4mac releases depend on and what 40% of the Zcash network users see when they use Zcash.

I think user friendly UI is very important to adoption and since the Zcash Company has decided to let the community develop wallets/ interfaces for Windows and Mac this is a good fit for the Foundation Grant program.

(On a slightly different but still related subject) I also wonder if there may be an opportunity for collaboration with another independent community project run by Miguel Marco.

https://github.com/miguelmarco/pyzcto

It seems like Miguel and Valkinovs work overlap in some aspects, he also has a basic GUI and has added a few things to his wallet like multi-sig transactions and a Android app you can use to remotely control a Node over Tor.

My hope is the one day we can have a Desktop wallet that:

  1. Installs quickly and easily with Windows and Mac machines (mostly already there)
  2. Has a clean modern UI (needed)
  3. Has a companion APP that you can run on your iOS or Android device so you can easily query balances or send/receive funds.(would be nice)
  4. Can be locked and password protected.
  5. One-click backup functionality

As a design reference, the Lemassu ATM (which is a Nexus device in a case) has a very nice clean user interface: https://youtu.be/ib8SvraeP0g

I know that with upcoming versions of Zcash there will be a great reduction in RAM usage which will allow Private transactions on many (but not all) Smartphones. An app that securely connects to a users node via Tor but doesn't require the lastest Smartphone may be the only option for users that can't afford the best phones.

tromer commented 7 years ago

What aspects can UX experts, and in particular IDEO CoLab (https://z.cash.foundation//blog/ideo-colab-and-ux-zcash-grants/), can help with?

mineZcash commented 7 years ago

I'm excited to see that IDEO has offered to contribute to improving the UI.

I would like to hear from @vaklinov about where he feels he could use a hand. It seems that there are some functionality improvements he had in mind, as well as Graphical but I'm not sure of the extent of the GUI revisions he proposed. Would IDEOs strengths be best applied to the front end (GUI) work or under-the-hood (backend code) or both?

vaklinov commented 7 years ago

Thank you all for the comments so far on this grant request. Some answers to the questions raised:

More generally: the desktop GUI wallet for ZCash that I have created, is in the same category as Bitcoin-QT with respect to user experience (but does not have as many features as Bitcoin-QT). It is not as easy to use as JAXX (which I would categorize as currently the most user-friendly ZCash wallet). Even after the implementation of the potential improvements I am proposing, the desktop GUI wallet ZCash will still be in the same category… However it will provide a better user experience. It will still be better suited to users who have some understanding of the basic concepts, such as the fact that there is a “blockchain” and that it needs to be “synchronized” etc. I think the use of wallets incorporating a full node needs to be promoted since this generally strengthens the network. Still when running a full node it is not possible to completely hide some technical details from users…

Some (more) details of the GUI features I intend to implement:

  1. The full list of all transactions (GUI table) goes to its own UI TAB
  2. The first TAB (overview) gets a complete overhaul: the T/Z balance is displayed prominently and more beautifully. The last 3-4 transactions (only) are shown in the overview tab with full details. The detail panels about blockchain, zend etc. are to be changed: each panel must use more graphice/icons and by default show just some basic info (e.g. green icon for a synchronized blockchain). The user may click a button of type “expand” to show the full contents of the respective panel with the kind of detailed information shown now.
  3. A toolbar is to be introduced with the most important actions.
  4. The “Send cash” TAB should allow users to sweep small change from multiple addresses (will work with T addresses only) and send cash to multiple addresses (T or Z) at the same time.
  5. An extension of the “Send cash” TAB will allow users to make donations, to the developer(s) of the wallet (i.e. me) or to other non-profit entities designated by the ZCash foundation. Users will be able to make donations straight from the wallet.
  6. The wallet will remember when users made their last backup and advise users to make a new backup, to keep it on another system/backup medium etc.

I shall describe these features in even greater detail in the submission document to be delivered by Oct 6th.

tromer commented 7 years ago

Thanks @vaklinov, this is very helpful for understanding your plans.

What are your thoughts on the tension between the UI exposing the full feature set of Zcash Sprout (let alone the upcoming Sapling improvements!), versus keeping things simple for casual users?

jamaalm commented 7 years ago

Hey @vaklinov. Really appreciate your proposal and the work you’ve done for the community thus far. It’s awesome to see this wallet moving forward. Here are some of my broad thoughts on design opportunities for the wallet:

1. Packaging the installation. Using the terminal to install anything, including ZCash, can be intimidating to a lot of people who aren’t technical. How can we make installation so simple that its as simple as installing something like Google Chrome?

2. Drive stronger hierarchy of information and functionality. How can we design for the primary actions and information a user will seek and make those the most dominant things both visually and functionally, while pushing all secondary information and functionality to be sub-dominant?

3. Create a simple and consistent visual design language. How can we use fonts, colors and texture to our advantage to assist in making the wallet visually easy to comprehend and navigate?

4. Minimize errors that can end in loss. How might we design extremely fail-safe product interactions for the moments that users are most prone to losing their coins? That could be wallet set-up, key storage, and sending coins.

I currently work as a designer at IDEO and would love to help move the project forward. If you're interested we could consult with the Zcash Foundation and the CoLab (@ideo-colab @ttyling @delitzer) on how that would impact the proposal and how we could collaborate.

jamaalm commented 7 years ago

@vaklinov, let me know if you're interested in collaborating on some of the things I outlined in my last post.

vaklinov commented 7 years ago

@tromer Regarding my thoughts on the tension between the UI exposing the full feature set of Zcash Sprout (let alone the upcoming Sapling improvements!), versus keeping things simple for casual users:

I think these are two separate modalities of use. Crypto-currentcy is a relatively new phenomenon and to accommodate casual users we need to keep it simple and “stupid”, to make them feel that they are using a “wallet” in the traditional sense and to make the experience more like other digital wallets… etc. A typical wallet that attempts to do this is Jaxx.

At the same time power users who wish to leverage the full capabilities of a crypto-currentcy like ZEN, would feel somewhat restricted by a simplified wallet. They would prefer a wallet that allows direct access to the full feature set. I wish to position my Desktop GUI Wallet for ZCash specifically in this segment. It is still possible of course to improve the user experience so that even some casual users are able to use the wallet, by making the simple features more prominent and allowing power users to use the advanced features in separate UI TABs/expandable panels etc. But still if someone is totally new to crypto-currentcy and has no technical knowledge, he will not find such a wallet user-friendly.

@jamaalm Of course I am interested in collaborating. Regarding your individual points:

  1. Packaging the installation: I have specifically not yet designed an easy to use installer for Windows/Mac not due to technical difficulties but because a) I was not funded and more importantly b) because others have done it already ;-) http://zcash4win.com/ and https://zcash4mac.com/ use my wallet packaged with a binary ZCash distribution. So even after potentially completing the work that is the subject of this grant I do not feel the need to make a separate installer. Rather I will collaborate with the http://zcash4win.com/ creator as I have done before to bring this wallet to end users.
  2. Drive stronger hierarchy of information and functionality: I could use your help/advice on this!
  3. Create a simple and consistent visual design language: likewise I could use your help/advice on this!
  4. Minimize errors that can end in loss: I already have some ideas here how to improve the wallet in this respect, like confirmation dialogs on sending cash etc. I will also elaborate them in the submission document to be delivered by Oct 6th. However since I will be targeting non-casual users with this wallet, there is an implicit presumption that users “know what they are doing”. There are actions like import/export of private keys etc. that are not for the casual user (who probably has no idea what a private key is).
arcalinea commented 7 years ago

@vaklinov's GUI wallet has been a critical contribution to usability, I fully support a grant for further improvements.

Some thoughts:

ricburton commented 7 years ago

We would love to help add some UI polish to this. We are building www.bal.money, a tool for tokens.

vaklinov commented 7 years ago

Hi @arcalinea, @radix42 and I have cooperated before and I am sure we can do it again. Once the features of this grant proposal are implemented, they will be merged in the distributions of http://zcash4win.com/ and https://zcash4mac.com/... The current version of the wallet also allows users to send a message in the encrypted memo field of shielded transactions. Enhancements could be made in the visualization of incoming memos however (for user convenience).

With the consent of @radix42 I am going to add the following points proposed in grant request https://github.com/ZcashFoundation/GrantProposals-2017Q4/issues/22 to the current request:

In addition the following two points from https://github.com/ZcashFoundation/GrantProposals-2017Q4/issues/22 : -adding support for useful api calls inherited from bitcoin that are useful to miners and are heavily requested (such as for sending from multiple taddrs at once to a taddr) -GUI support for sending to multiple recipients in one txn

are already covered here though worded slightly differently.

tromer commented 7 years ago

@vaklinov, @radix42: several members of the review committee are of the opinion that if this proposal's scope is expanded and will also cover the UI aspects from #22 (with some division of labor between you), then it would be very reasonable to increase the budget above the current $3000. Likewise, if working with IDEO and incorporating their feedback is included.

vaklinov commented 7 years ago

@tromer Yes, I fully agree that due to the expanded scope of the proposal the budget also needs to expand. IDEO­coLAB have offered to collaborate on the GUI with expert advice/guidance. I would welcome such collaboration but it needs to be budgeted separately.

tromer commented 7 years ago

@vaklinov, thanks for the detailed submission! I haven't read it yet of course, but a note on the title page: neither me nor anyone else in the foundation is the "Project manager". If the proposal is funded, it will be with the expectation that you'll carry out the stated goals; but you'll be managing things at your discretion. That's why everybody here is so keen to understand your plans in advance.

IDEO is donating their work, so if you'd like to work with them, please do include your side of the collaboration in the budget. As for splitting the budget and work of this proposal with @radix42 or others, it's completely up to you.

radix42 commented 7 years ago

I'm all in favor of Vaklinov rolling the duplicated or similar items from my gui-related proposal into his, and possibly closing mine altogether. I have 3 other proposals I'm working on, he is much more intimately familiar with the gui code, him doing all that work in the upstream Swing wallet rather than I working in his downstream of zcash4[win|mac] also more easily benefits the entire zksnark coin ecosystem that uses it, in addition to everything else I am juggling.

On Mon, Oct 2, 2017 at 11:48 PM, Eran Tromer notifications@github.com wrote:

@vaklinov https://github.com/vaklinov, thanks for the detailed submission! I haven't read it yet of course, but a note on the title page: neither me nor anyone else in the foundation is the "Project manager". If the proposal is funded, it will be with the expectation that you'll carry out the stated goals; but you'll be managing things at your discretion. That's why everybody here is so keen to understand your plans in advance.

IDEO is donating their work, so if you'd like to work with them, please do include your side of the collaboration in the budget. As for splitting the budget and work of this proposal with @radix42 https://github.com/radix42 or others, it's completely up to you.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/ZcashFoundation/GrantProposals-2017Q4/issues/7#issuecomment-333755183, or mute the thread https://github.com/notifications/unsubscribe-auth/AF9e0Df0c1pEw8E6xytRw6Exl6DKAg1Pks5sodi-gaJpZM4PK1OO .

acityinohio commented 7 years ago

Every informal proposal has multiple reviews by the review committee. The reviews are being collected and discussed in a private google doc (the 5 reviewers all have edit access to it, no one else can view it). By way of early, informal feedback, the reviewers have made a list of projects that they consider leading candidates for grant funding.

In that vein, your project was selected as one of the leading candidates, and the review committee encourages you to submit a full proposal by October 6th and looks forward to reviewing it.

vaklinov commented 7 years ago

@acityinohio I have already submitted a full proposal, which given the small scope and budget of this project is (I believe) detailed enough.

acityinohio commented 7 years ago

sorry about that @vaklinov; I missed the tag.

acityinohio commented 7 years ago

@vaklinov : I'm thrilled to inform you that the Grant Review committee—and the Zcash Foundation board—has tentatively approved your proposal! While the recommendations are already posted, we are planning to make a more public post tomorrow morning (November 21st) Pacific Standard Time.

Next steps: please email me josh [at] z.cash.foundation with an email address suitable as a point of contact. Due to our newfound 501(c)3 status there are additional reporting and compliance burdens that may delay or change disbursements, but we are working through them as fast as we can.

Just in case you didn't see it, please find the committee recommendation for your project below, and congratulations again!

The proposer is the original creator of the first GUI interface for Zcash. Funds will be used to add functionality and enhancements to the GUI interface.

The review committee feels that Vaklinov's GUI work is important and has been a great contribution to the Zcash ecosystem. This GUI is used by both the Windows and Mac ports and the proposed UI improvements will increase the functionality and improve the usability and aesthetics of the interface.

We recommend collaboration with IDEO CoLab on the UI design.

Full funding of amount requested is recommended.

vaklinov commented 7 years ago

@acityinohio Thank you very much. There may be a delay on my part as well. Due to other occupations and personal plans I will probably be able to start the work some time in January 2018 (not in mid Dec 2017).

I will additionally contact you by mail.

vaklinov commented 6 years ago

With some regret I wish to announce that I have cancelled the grant application, for reasons that are personal/private. I would like to express my respect and gratitude for the ZCash Foundation's consideration in this matter. I still intend to do the work that has been proposed but the time frame is uncertain...

zookozcash commented 6 years ago

Is there a Zcash address to which donors should send ZEC to fund your work, Vaklinov?

zookozcash commented 6 years ago

Does anybody know Vaklinov's z-addr?

mineZcash commented 6 years ago

@zookozcash The only address I have seen is a transparent one in this thread:

https://forum.z.cash/t/zcash-desktop-gui-wallet-for-windows/14063/