Bitcoin Forum

Bitcoin => Wallet software => Topic started by: D.H. on June 12, 2011, 02:48:50 PM



Title: User friendly client initiative
Post by: D.H. on June 12, 2011, 02:48:50 PM
There have been many different threads about Bitcoin being too complicated to attract the general public. I'll start writing a client that tries to address a number of these issues and it would be great to get some feedback and suggestions. Here are some sketches and thoughts.

One problem is that it's too complicated for users to keep their money safe, they shouldn't have to care about that wallet.dat file. Still, they might not be comfortable using online wallets (at least not until som big, reputable company starts offering them). So, my plan is to use dropbox.com, google docs or some similar service where the user has an account to store their files. The wallet file is stored in their own account, but the client does the uploading/downloading transparently. So, when starting the client, the user enters their dropbox/google/whatever credentials, the client then downloads the wallet and presents it.

http://img13.imageshack.us/img13/7290/clientlogin.png
http://img89.imageshack.us/img89/3060/clientchecking.png

The status of a transfer is visualized by some simple progress indicator, rather than "78 confirmations" that doesn't mean anything to a regular user. The connection to the network is indicated as "poor", "good", "very good" or something similar, instead of "8 connections".

For storing a wallet with lots of money you might want higher security so there will be an option of securing an account so that the wallet file is encrypted before it's uploaded to the cloud service. This means that the user will have to enter a separate password when accessing that account, so that the client can decrypt the file.

http://img7.imageshack.us/img7/3463/clientsavings.png

The constantly changing bitcoin address should be hidden as much as possible from the user. A contact list where the user can send/receive money to/from friends should be easy to use. If the user wants some money from a friend he can click "request payment" which will send an e-mail to the friend with an URI that can be clicked. The friend will click the link which will open up his client with a confirmation box of sending amount X to the user (just the user's name, not the bitcoin address is presented). The bitcoin address is saved by the client so that the friend can send another payment to our user, but my hope is that we can get people to use the "request payment" flow, so that new bitcoin addresses can be generated for each transfer.

http://img807.imageshack.us/img807/8482/clientcontacts.png

I will start developing this, it will be a windows program since that is what I know best, and I will make it open source when it is released so that people can be confident that it doesn't do anything shady. If anyone wants to use this to develop a similar client for another OS, please just go ahead! Let us know about it in this thread. As long as the wallet/contacts files are stored in a well defined place in the user's google/dropbox account, it would be easy for a user to access the same accounts from a computer, a smart phone etc.

Please suggest improvements to my ideas and add other things that will make Bitcoin more user friendly. I will do this in my spare time so it will not be ready tomorrow. If anyone wants to encourage me feel free to send something to 17FwVHLYS9D2S1v7KeXiY7r4VaB91dpcfa :)


Title: Re: User friendly client initiative
Post by: REF on June 12, 2011, 04:47:24 PM
some of the features that are shown available in the screenshots look great. good luck with this client development


Title: Re: User friendly client initiative
Post by: Drifter on June 12, 2011, 04:59:45 PM
I agree, but I don't think dropbox or online storage should be a requirement, but optional.


Title: Re: User friendly client initiative
Post by: D.H. on June 12, 2011, 05:21:21 PM
I agree, but I don't think dropbox or online storage should be a requirement, but optional.

Sounds reasonable. There should probably be a "storage option" at the login screen where the user can pick Google, DropBox, Local etc., with an explanation for each, and a warning if you choose "Local" that if your hard drive crashes your money will be gone.


Title: Re: User friendly client initiative
Post by: wumpus on June 12, 2011, 05:37:29 PM
You have some very good ideas UI-wise and it seems that we have similar goals.

I don't think making a Windows-only client is a good idea, though. The same could just as easily be done with Qt (you could start with my GUI as a base) and then it could run on all platforms.


Title: Re: User friendly client initiative
Post by: Garrett Burgwardt on June 12, 2011, 05:48:58 PM
Why are you showing USD balances?

That is an incredibly bad idea.

Other than that, not bad. Note that the bitcoin address won't change unless the client is coded to create another after receiving a transaction.

If you could support multiple accounts easily, that would be great. Obviously encrypted wallet files, according to Jgarzik's code (individually encrypted keys), automatic backup would be nice, etc.

-Garrett


Title: Re: User friendly client initiative
Post by: D.H. on June 12, 2011, 05:53:24 PM
Quote
I don't think making a Windows-only client is a good idea, though. The same could just as easily be done with Qt (you could start with my GUI as a base) and then it could run on all platforms.

Well, the thing is that I'll be able to develop this using C# and WPF a lot quicker than if I'm gonna learn QT first, and I think that the end product will look better. I might not get as much love on these forums, but I'll reach at least 80% of the Average Joes that I'm trying to reach. Thanks for the support anyway, and good luck with your client!



Title: Re: User friendly client initiative
Post by: D.H. on June 12, 2011, 05:56:12 PM
Why are you showing USD balances? That is an incredibly bad idea.

Yeah, never mind that, it was just a limitation in the sketching tool. It should of course be the Bitcoin symbol.

Quote
Other than that, not bad. Note that the bitcoin address won't change unless the client is coded to create another after receiving a transaction.

I'll make sure that it does that.


Title: Re: User friendly client initiative
Post by: wumpus on June 12, 2011, 06:05:48 PM
Well, the thing is that I'll be able to develop this using C# and WPF a lot quicker
How do you intend to interface with the Bitcoin network and/or client from C#? You want to reimplement the core layer as well?


Title: Re: User friendly client initiative
Post by: D.H. on June 12, 2011, 07:53:43 PM
Well, the thing is that I'll be able to develop this using C# and WPF a lot quicker
How do you intend to interface with the Bitcoin network and/or client from C#? You want to reimplement the core layer as well?

From what I understand bitcoind has a HTTP JSON-RPC (http://"https://en.bitcoin.it/wiki/API_reference_(JSON-RPC)") API that I can use.


Title: Re: User friendly client initiative
Post by: joan on June 12, 2011, 07:56:22 PM
Hello,
I have also started to work on a C# project related to Bitcoin.

The ideal client for me would give the user more power to understand and control.
Key areas would be: wallet and addresses management, blockchain exploration, network monitoring.

Here is a list of features I think would be important:
- Multiple wallets handling.
- Choose which address is sending the coins.
- Import / Export keys and wallets.
- Integrated blockchain explorer.
- Integrated and interactive coin history tracking.
- List of peers connected to my node.
- Graph of bandwidth usage.

Admittedly, this would be maybe more tailored towards advanced/curious users than your project. Maybe the more advanced panels could be part of an extensions system though.
I think we have similar ideas design-wise. I'm only familiar with Winforms though.
Some of these ideas cannot be done just by interfacing with the mainline client.

Currently I am focusing on reading blockchain data to duplicate the block explorer functionality on the desktop.
Here is a small capture of what I'm working on (http://img801.imageshack.us/img801/7854/btclient.png). Reads files created by the mainline client (blockchain, blkindex.dat and wallet.dat), hashing, base58.



Title: Re: User friendly client initiative
Post by: D.H. on June 12, 2011, 08:31:17 PM
Here is a small capture of what I'm working on (http://img801.imageshack.us/img801/7854/btclient.png).

Cool, looks nice. Like you said, we are not targeting exactly the same users, which is good. I'm sure both projects will be useful. Let's exchange ideas down the line.


Title: Re: User friendly client initiative
Post by: jimbobway on June 13, 2011, 04:29:09 AM
The GUI is excellent.  I am thinking 'Checking' and 'Savings' are the basic accounts.  They can add more accounts if they want to.  For wallet encryption are you going to use TrueCrypt?


Title: Re: User friendly client initiative
Post by: speeder on June 13, 2011, 04:52:12 AM
If you make a public source repository of that I think I will help coding it :D I LOVED the idea.


Title: Re: User friendly client initiative
Post by: D.H. on June 13, 2011, 06:24:39 PM
The GUI is excellent.  I am thinking 'Checking' and 'Savings' are the basic accounts.  They can add more accounts if they want to.

Thanks, yes that's exactly my thought.

Quote
For wallet encryption are you going to use TrueCrypt?

Seems like there is some built in wallet encryption on its way into bitcoind. If so, I'll probably use that, otherwise TrueCrypt, 7-zip or whatever does the job.


Title: Re: User friendly client initiative
Post by: [Coins!] on June 13, 2011, 09:33:54 PM
I am very interested in seeing this come into being.

I know a little C# (I am not awesome though), if there is some off-hours development you need help with, shoot me a PM?


Title: Re: User friendly client initiative
Post by: speeder on June 14, 2011, 12:50:04 AM
What software you used to sketch that?


Title: Re: User friendly client initiative
Post by: jerfelix on June 16, 2011, 03:13:20 PM
A few suggestions:

-  Consider whether you need date+time, or just date.  Think about your check register in your checkbook.  Do you write the time?  Maybe the month and day is sufficient (why waste space on the year or the time).  Maybe this is an option.

-  Why not keep a running balance?  Think about check registers or home banking sites, and how those look.  They have a column for the transaction amount, and then a column for the running total.

-  Do you really care about confirmations?  I'd get rid of that column.  Indicate whether it's confirmed, based on color or font boldness or gray-ness.

-  Allow the user to mouse over, or click on, a transaction to get the details.  Here's where you can put all the information that I suggest hiding, including the whole date and time, the Bitcoin Address, the confirmation count, maybe a memo field, etc.

---

Also, I realize I am probably in a minority here, but I think (optionally) allowing displays in USD is a GREAT idea.  It gets really complicated, but it would help my wife figure out Bitcoin!  International travelers like many of the readers here have a knack for different currencies, but here in the Midwest USA, if you aren't talking dollars, you may as well be talking kilometers.  I'd get the glazed over look when I say "I transferred 2 Bitcoins".. as if people have to convert it in their heads every time.

I would REALLY like a client that operates in dollars.  If I want to send the $20 equivalent in Bitcoins to someone, I want to type in $20.  And I want that transaction logged in my register as a $20 transaction (forever), so that when I look back on it in a year, I don't think "why did I transfer $423 to that guy?"  No, it was "$20". 

And I want to know my approximate Bitcoin balance in US Dollars.  Yes, I recognize that it's an estimate.  And I recognize that it fluctuates.  Maybe to "make it all add up", you add a line item at the top of the register that's the "currency conversion adjustment" which goes up and down as needed, so that the balance is accurate, and the totals add up.

Just a thought.  Go ahead everyone, tell me how bad of an idea that is.  I'm just trying to figure out how to make it friendly enough for my wife to use.


Title: Re: User friendly client initiative
Post by: Rassah on June 16, 2011, 06:40:27 PM
Looks excellent and REALLY looking forward to this.
Just two additions please: Add a "notes" or "category" column next to transactions (so you can remember whether that was for paying a bill, buying a rare 5830, or whatever), and allow sorting by date, by contact, and by notes. This will make it much easier to quickly find out how much we made from various pools, trading, or whatever, instead of having to run a separate spreadsheet.


Title: Re: User friendly client initiative
Post by: XIU on June 17, 2011, 03:35:16 PM
Seems like this is about the only C# related topic for clients  ;D

I would love to help, I'm the lead developer for a WPF based framework (http://www.vidyano.com (http://www.vidyano.com))


Title: Re: User friendly client initiative
Post by: XIU on June 17, 2011, 03:36:41 PM
What software you used to sketch that?

Seems like http://balsamiq.com/ (http://balsamiq.com/)


Title: Re: User friendly client initiative
Post by: D.H. on June 17, 2011, 08:24:11 PM
A few suggestions:

-  Consider whether you need date+time, or just date.  Think about your check register in your checkbook.  Do you write the time?  Maybe the month and day is sufficient (why waste space on the year or the time).  Maybe this is an option.

-  Why not keep a running balance?  Think about check registers or home banking sites, and how those look.  They have a column for the transaction amount, and then a column for the running total.

-  Do you really care about confirmations?  I'd get rid of that column.  Indicate whether it's confirmed, based on color or font boldness or gray-ness.

-  Allow the user to mouse over, or click on, a transaction to get the details.  Here's where you can put all the information that I suggest hiding, including the whole date and time, the Bitcoin Address, the confirmation count, maybe a memo field, etc.

All good ideas. The thing that is a bit tricky is the confirmations I think. People are used to a world where the money is in their account or it is not, where there is nothing in between, but with Bitcoins it's different. There is really no reason that you have to wait for 6 confirmations if the money came from someone you know so it seems unnecessary to let people wait for an hour before letting them spend their money. I was thinking of displaying a yellow progressbar until it reaches 6 confirmations and then change to a green "confirmed", but I'm really not sure about this yet. Should people be able to spend their money while it is "in progress"? Will that be confusing? Suggestions are welcome.


Title: Re: User friendly client initiative
Post by: D.H. on June 17, 2011, 08:31:56 PM
Also, I realize I am probably in a minority here, but I think (optionally) allowing displays in USD is a GREAT idea.  It gets really complicated, but it would help my wife figure out Bitcoin!  International travelers like many of the readers here have a knack for different currencies, but here in the Midwest USA, if you aren't talking dollars, you may as well be talking kilometers.  I'd get the glazed over look when I say "I transferred 2 Bitcoins".. as if people have to convert it in their heads every time.

I would REALLY like a client that operates in dollars.  If I want to send the $20 equivalent in Bitcoins to someone, I want to type in $20.  And I want that transaction logged in my register as a $20 transaction (forever), so that when I look back on it in a year, I don't think "why did I transfer $423 to that guy?"  No, it was "$20".

I don't think that I will go as far as displaying dollars as the main unit. Hell, I'm from Sweden, so it would be Kronor here, not dollars. We want to create an international currency where people can easily compare prices from all over the world, don't we? I think that that is one of the beauties of Bitcoin.

My current thought is to display Bitcoins but to have the option of displaying the equivalent in another currency somewhat smaller next to it. Your last part makes sense though, in the log this would then be the equivalent at the time of the transaction.


Title: Re: User friendly client initiative
Post by: D.H. on June 17, 2011, 08:33:07 PM
Looks excellent and REALLY looking forward to this.
Just two additions please: Add a "notes" or "category" column next to transactions (so you can remember whether that was for paying a bill, buying a rare 5830, or whatever), and allow sorting by date, by contact, and by notes. This will make it much easier to quickly find out how much we made from various pools, trading, or whatever, instead of having to run a separate spreadsheet.

Good idea!


Title: Re: User friendly client initiative
Post by: D.H. on June 17, 2011, 08:34:04 PM
What software you used to sketch that?

Seems like http://balsamiq.com/ (http://balsamiq.com/)

Yes, that's right.


Title: Re: User friendly client initiative
Post by: Rassah on June 18, 2011, 03:40:38 AM

All good ideas. The thing that is a bit tricky is the confirmations I think. People are used to a world where the money is in their account or it is not, where there is nothing in between, but with Bitcoins it's different. There is really no reason that you have to wait for 6 confirmations if the money came from someone you know so it seems unnecessary to let people wait for an hour before letting them spend their money. I was thinking of displaying a yellow progressbar until it reaches 6 confirmations and then change to a green "confirmed", but I'm really not sure about this yet. Should people be able to spend their money while it is "in progress"? Will that be confusing? Suggestions are welcome.

Just make it "feel" like the old system. Instead of labeling it as "confirmed/unconfirmed," pretend that the money is "transferring." Except whereas banks take 3 days to transfer, for this have it pretend that it's taking a few minutes to an hour to transfer. So, yeah, either a progress bar, or just text reading "transfer in progress" will be enough. We know that's not what's really happening, but people prefer what they already understand.
My business marketing class had an excellent example. The BlackBerry was the first mobile device that did e-mail over the cell network. However, when it came out, most people had no idea what e-mail was. So, instead of marketing itself as a cool, techie, futuristic device, BlackBerry was marketed as a pager that lets you send text. That's what it sort of is, even though we really know it's not. That's also why BlackBerry was understood, adopted, and succeeded. Contrary to that example is the Tivo, which SHOULD'VE been marketed as a digital VCR, and likely should've had features similar to one, at least at first, but it was instead marketed as a futuristic techie device that did all sorts of things people didn't understand ("Time-Shifting?" wtf is that???). In te end, Tivo, despite being a HEAVILLY marketed and recognized name, ended up bombing. So, for any feature you think may be confusing, just lie and make it "feel" like it's something else that we've always used.
p.s. that class cost me $3,200, being in one of the top universities, but I'll gladly share this nugget of knowledge for free :D
Also, if this comes out, and works well, I'll gladly donate a bitcoin or few.


Title: Re: User friendly client initiative
Post by: allbitcoin on June 21, 2011, 09:34:05 PM
Hey guys, I already made a post about this in the newbie forum earlier but I feel it's relevant to your efforts - http://allbitcoin.com

I have gone a step further in simplifying the UI, though our ideas are quite similar. Check out the screenshots and let me know what you think!


Title: Re: User friendly client initiative
Post by: allbitcoin on June 21, 2011, 09:46:54 PM
Source code?

I'm sorry, there is none - this has been discussed here (http://forum.bitcoin.org/index.php?topic=20158.0) already.


Title: Re: User friendly client initiative
Post by: allbitcoin on June 22, 2011, 01:32:41 AM
An exploit that will be so much more effective once you have 'established trust'.

I guess it's just like with those sneaky folks over at Bank of America - now that they have my trust they'll probably be running off with my savings real soon...

Seriously though, as I have pointed out in the other thread, OSS does not imply trust. The advantage of open source in this context is that in case of a breach of trust, another group can take over the project. However that won't protect your wallets. AllBitcoin was set up because we believe in Bitcoin's potential. We think it's a game changer. Rather than trying to make a quick buck mining or day trading, we want to help build the infrastructure to fully realize this potential. As we do, I believe we will earn people's trust and that trust will be more valuable than any scam you may suspect us of right now. You are certainly right to be suspicious - we have not earned it yet. I do hope that doesn't prevent us from discussing the UI design of the next wave of Bitcoin clients.

So as to not hijack D.H.'s thread anymore than I already have, I would really appreciate if we could take this discussion elsewhere.


Title: Re: User friendly client initiative
Post by: allbitcoin on June 22, 2011, 02:40:32 AM
So we're Microsoft now? :)

We're OSS fans - we'll use it when it makes sense for business. AllBitcoin subscribes to the 'do no evil' philosophy. We want to see many competing clients in the Bitcoin ecosystem because we believe that is the only way the system can be successful.

Let's not bicker over this - I think we have the right to license our code as we like and you have the right to not use it if you disagree with our decision. We both agree that Bitcoin is awesome and that's what counts here.


Title: Re: User friendly client initiative
Post by: allbitcoin on June 22, 2011, 04:54:50 AM
Thanks chodpaba.

Regarding D.H.'s client - I was also thinking about direct integration with Dropbox but with stories like this one (http://techcrunch.com/2011/06/20/dropbox-security-bug-made-passwords-optional-for-four-hours/) about lapses of security, I'm not sure it's such a good idea (even with encrypted wallet - why expose yourself to attacks if you don't have to). My current thinking is to simply let the user specify a list of backup paths that the wallets will be automatically replicated to. I haven't figured out how to make the UI 'mom-friendly' but it would then let the users pick the backup service of their choice (I do like Crashplan btw). Not forcing everyone's eggs into the same basket is probably a good idea.

I really do like the suggestion of displaying insufficiently verified transactions as 'in progress' - I think that works even better than my iconic representation of the state. It would also help communicate to the user why there is a fee on spending these young transactions.


Title: Re: User friendly client initiative
Post by: Mark Oates on June 22, 2011, 05:47:19 AM
I think at this stage of the bitcoin game, any client would have to be open source.  :-\


Title: Re: User friendly client initiative
Post by: mikeintimesaves9 on June 26, 2011, 10:54:38 PM
Thanks, DH!  I think this is a worthy project and your initial skins look great.  Also, I think there is a lot of great feedback on here so far.  The only other thing from a functionality standpoint, from a complete beginner's viewpoint, is how to "buy" bitcoins.  Maybe a link to an exchange or a couple of exchanges would be helpful.

Regarding the bones, have you heard of the Bitcoinsharp project http://code.google.com/p/bitcoinsharp/ (http://code.google.com/p/bitcoinsharp/)?  It is a direct port of BitcoinJ but is still in early alpha. 

If you would like some more spare hours in terms of development, testing, user documentation to help speed along the development, I would like to volunteer.

Again, thanks for the start and I think this could be a big help for bitcoin evangelism.


Title: Re: User friendly client initiative
Post by: jerfelix on June 27, 2011, 12:43:29 PM
That's fine. But, I will take open over easy any day of the week.

I agree, but unfortunately more than 80% of the people would pay for easy, rather than get open for free (in the desktop O.S. market (http://en.wikipedia.org/wiki/Comparison_of_Windows_and_Linux#Market_share)).


Title: Re: User friendly client initiative
Post by: D.H. on June 27, 2011, 05:13:08 PM
The only other thing from a functionality standpoint, from a complete beginner's viewpoint, is how to "buy" bitcoins.

Yes, I agree, this is really important. I have thought about contacting the some of the exchanges once the client is up and running, for some sort of cooperation. Would be nice if the user could simply transfer money to a bank account and then have it appear as bitcoins in the client (without having to open an account, put in a buy order etc.).

Quote
Regarding the bones, have you heard of the Bitcoinsharp project http://code.google.com/p/bitcoinsharp/ (http://code.google.com/p/bitcoinsharp/)?  It is a direct port of BitcoinJ but is still in early alpha.

Yes, I did see this and I will probably use it.

Quote
If you would like some more spare hours in terms of development, testing, user documentation to help speed along the development, I would like to volunteer.

Thanks a lot! I will hopefully get something up and running in July/August when I have some more time to put in. Once I have a first version I'm sure that there are lots of things that you can help out with.


Title: Re: User friendly client initiative
Post by: D.H. on June 27, 2011, 05:17:17 PM
Just make it "feel" like the old system. Instead of labeling it as "confirmed/unconfirmed," pretend that the money is "transferring." Except whereas banks take 3 days to transfer, for this have it pretend that it's taking a few minutes to an hour to transfer. So, yeah, either a progress bar, or just text reading "transfer in progress" will be enough. We know that's not what's really happening, but people prefer what they already understand.
My business marketing class had an excellent example. The BlackBerry was the first mobile device that did e-mail over the cell network. However, when it came out, most people had no idea what e-mail was. So, instead of marketing itself as a cool, techie, futuristic device, BlackBerry was marketed as a pager that lets you send text. That's what it sort of is, even though we really know it's not. That's also why BlackBerry was understood, adopted, and succeeded. Contrary to that example is the Tivo, which SHOULD'VE been marketed as a digital VCR, and likely should've had features similar to one, at least at first, but it was instead marketed as a futuristic techie device that did all sorts of things people didn't understand ("Time-Shifting?" wtf is that???). In te end, Tivo, despite being a HEAVILLY marketed and recognized name, ended up bombing. So, for any feature you think may be confusing, just lie and make it "feel" like it's something else that we've always used.
p.s. that class cost me $3,200, being in one of the top universities, but I'll gladly share this nugget of knowledge for free :D
Also, if this comes out, and works well, I'll gladly donate a bitcoin or few.

Thanks for the input, very good points.


Title: Re: User friendly client initiative
Post by: gentakin on July 05, 2011, 01:48:50 PM
If the user wants some money from a friend he can click "request payment" which will send an e-mail to the friend with an URI that can be clicked. The friend will click the link which will open up his client with a confirmation box of sending amount X to the user (just the user's name, not the bitcoin address is presented).

I'm not sure, but this is probably vulnerable to social engineering attacks.

"Hi, it's me, [insert your best friend's name] - please send me 2BTC by clicking this link: [link with my BTC addy embedded]"


Title: Re: User friendly client initiative
Post by: wumpus on July 18, 2011, 03:15:22 AM
I'm not sure, but this is probably vulnerable to social engineering attacks.

"Hi, it's me, [insert your best friend's name] - please send me 2BTC by clicking this link: [link with my BTC addy embedded]"
Adding a confirmation dialog before actually sending solves that... But I do agree that browser<->bitcoin client communication could open it up to new security holes, or at least add new attack surface.


Title: Re: User friendly client initiative
Post by: TYDIRocks on August 04, 2011, 04:04:10 PM
Seems like a cool client, has many ideas I have :P