JoinMarket-Org / joinmarket-clientserver

Bitcoin CoinJoin implementation with incentive structure to convince people to take part
GNU General Public License v3.0
700 stars 173 forks source link

Layout suggestions from /u/chuckymcgee (reddit) #43

Open AdamISZ opened 7 years ago

AdamISZ commented 7 years ago

Quote:

" Thanks a bunch for putting out this initial qt. I've taken a look and have some initial feedback.

Most of my suggestions are just about making it simpler and easier for users who aren't familiar with coinjoins or joinmarket at all. Streamlining the interface to explain a bit more and otherwise keep things intuitive is my aim. I think the ultimate goal of the gui should be that someone only generally familiar with sending bitcoins to addresses should be able to run the qt and perform joins just by looking through options and following prompts, referring to documentation just to be certain. In that vein then, providing expanded descriptions of prompts and instructions and otherwise not showing particular elements until they become relevant can help a new user navigate the program without becoming too overwhelmed.

Switch the order of tabs to reflect the order a user would want to tinker with- JM Wallet, Coinjoins, TX History, Settings (eventually I think we'll want to use buttons similar to what's in the bitcoin-qt, so users will feel more familiar)

When Current Wallet=None, Blank out address/index/balance/used/new, do not show mixdepths.- In mixdepths field say- "No Wallet Loaded. Please create a new wallet to get started!"

Coinjoins- grey out fields/ box initially- "No wallet loaded. Please create or load a Joinmarket wallet to get started!"-> "Wallet loaded, but no funds present. Please send funds to an address listed in JM Wallet to get started!"

When a wallet with 0 BTC funds is loaded, show a column next to external addresses "Send funds to one of these addresses to begin using joinmarket!" or otherwise prompt with an address to send funds to.

Wallet- (use expanded descriptions) "Create New Wallet" "Load Wallet From Saved wallet.json file" "Recover Wallet Using Mnemonic Word Strings" "Export Private Keys" "Exit"

Settings- Put settings a novice is likely to tinker with up front, otherwise hide.

Add checkbox "Show Advanced Settings" to show these more advanced settings Add a "Restore Default Settings" in case the user screws up settings.

"Recover Wallet Using 12-Word Recovery Seed" "Enter your wallet recovery word string here to recover a lost Joinmarket wallet" (Separate fields for each word?)

Generate- "You are going to generate a new wallet. In a moment, a wallet recovery seed of 12 words will appear. It's VERY IMPORTANT you write this recovery seed down. If your computer crashes you may have no other way of retrieving your coins!" Continue/Cancel

New Recovery Seed Displayed Screen->Continue->Create Password Screen-> Recovery Seed Check Prompt->Name your wallet

Recovery Seed Check Prompt- "Please enter the 12 word recovery seed you were just shown. You must have this seed written down"->Continue/Retry With New Seed/Cancel (if the seed isn't correct, do not allow the user to proceed)

Recover from Seed "Enter the 12 words of your Joinmarket recovery seed separated by spaces:" (or just have separate fields for each word)

I would hope these changes should be relatively simply to implement. I'm still looking at the actual coinjoin options and flow for advice there. Let me know what you think. Really appreciate the work you're putting in. "

AdamISZ commented 7 years ago

I'll look into this myself fairly shortly and make any further comments I have. Added 'help wanted' label as it's certainly someone else could help out with.

chucklesmcgee commented 7 years ago

I appreciate waxwing passing along my comments to you. I'm testing the GUI on a fresh windows unit. When It I try to run the .exe I get a message I need a python module being needed. Can we package the installer with this module or fetch it so a typical Bitcoin user can install the .exe without needing to hunt around? The easier we can make this I think the better.

"UserWarning: You do not have a working installation of the service_identity module: 'No module named service_identity'. Please install it from https://pypi.python.org/pypi/service_identity and make sure all of its dependencies are satisfied. Without the service_identity module and a recent enough pyOpenSSL to support it, Twisted can perform only rudimentary TLS client hostname verification. Many valid certificate/hostname mappings may be rejected."

AdamISZ commented 7 years ago

Of course that's the intention. You can ignore that warning. Btw, there may be a similar one with respect to libsecp256k1 (compiler warning, but can also be ignored).

The service identity warning can be ignored here because it's referring to a TLS connection we're not using. However the warning is irritating and I really should have gotten rid of it already (this is not exclusive to the binaries, the command line scripts are the same, just didn't add that module to the list).

The libsecp256k1 warning is more difficult, waiting for an upstream PR.

AdamISZ commented 6 years ago

Just reviewing this, to note: the service_identity dependency was addressed, so that warning is removed. The libsecp256k1 is in the same state (possibly convert to coincurve, that's low priority as of yet).

kristapsk commented 5 years ago

As I've finally cared and managed to get JoinMarket-Qt working on Gentoo, i also have some thoughs on UI/UX. I think this is important topic, as the whole point of GUI frontend is to have JM more accessible to less tech savy or lazy people.

When Current Wallet=None, Blank out address/index/balance/used/new, do not show mixdepths.- In mixdepths field say- "No Wallet Loaded. Please create a new wallet to get started!"

Coinjoins- grey out fields/ box initially- "No wallet loaded. Please create or load a Joinmarket wallet to get started!"

Agree with this in concept. Showing mixdepths etc without a wallet looks especially ugly.

"Wallet loaded, but no funds present. Please send funds to an address listed in JM Wallet to get started!"

When a wallet with 0 BTC funds is loaded, show a column next to external addresses "Send funds to one of these addresses to begin using joinmarket!" or otherwise prompt with an address to send funds to.

Here's another future path could even be to add "Receive" tab, which could look similar to Electrum's one, except that we would have additional dropdown to select mixdepth. With QR code support. And user could be navigated by default to that tab if wallet is empty, Wasabi Wallet does that.

Settings- Put settings a novice is likely to tinker with up front, otherwise hide.

Add checkbox "Show Advanced Settings" to show these more advanced settings Add a "Restore Default Settings" in case the user screws up settings.

Yes, settings tab could be improved. Also, true/false settings could be changed to checkboxes, things like "merge_algorithm" to dropdowns, etc...

Also noticed "console_log_level" setting, if we have that, we could as well have additional tab where user could see console log output.

Generate- "You are going to generate a new wallet. In a moment, a wallet recovery seed of 12 words will appear. It's VERY IMPORTANT you write this recovery seed down. If your computer crashes you may have no other way of retrieving your coins!" Continue/Cancel

We should also ask user to re-enter words, before generating actual wallet.

These are initial thoughts, could come up with more ideas later.

P.S. Probably title of issue could be changed, so that this becomes generic thread for discussing bigger UI/UX changes of JoinMarket-Qt.

AdamISZ commented 5 years ago

@kristapsk Thanks for the extra thoughts on this. Don't have time to review it now, but will come back to it later.