Bitcoin Forum

Bitcoin => Development & Technical Discussion => Topic started by: Gabi on December 21, 2011, 02:50:10 PM



Title: My suggestions on how to make a decent client
Post by: Gabi on December 21, 2011, 02:50:10 PM
The problem is, the bitcoin client SUCKS. It sucked 6 months ago, it sucks even more today with version 5 (congratulations, you managed to make it suckier... the impossible made possible)

When someone install it, it find a software that work... more by magic than else

Let me explain what i find fail and some suggestion on how to fix it:

So you start the client and it automatically create the wallet. You don't even know what a wallet is or where it is, but it already exist, you use it and of course a newbie risk to lose it.
Why it is automatically created instead of asking me that when i start the client?
Why the ONLY name of the wallet must be wallet.dat? Is it impossible to make the client work with any name, like any decent software? Like you clic "create wallet" and you put a name, and if you already have it, you clic "Load wallet". But nothing, it's impossible
Why the only possible path is roaming/bitcoin? Or better, i know there is the parameter thing -setthepathyoudesire but well 1990 called and want it back. Is it so hard to put a button in the client that say "Set bitcoin path" or something like that?
Same about the -rescan thing, is it so hard to put a RESCAN button in the client??
And why the client NEED a wallet.dat? If you rename or remove it, it create one when you start it again, it seems it really love it. So you end up having different wallets (the wallet.dat is of course a FAKE wallet, cause any sane person keep the real wallet, the one with a lot of bitcoins, encrypted and with another name) and then you are like "ok now i close bitcoin, i rename wallet.dat in walletfake.dat and i put in the real wallet and rename it in wallet.dat, start bitcoin, spend my money then rinse and repeat..."

And well same apply for blockchain, you should be able to set a path for it directly from the client, and make it's path indipendent from the wallet.

I don't think doing this is hard, and would make the client easier to use.


Title: Re: My suggestions on how to make a decent client
Post by: Gabi on December 21, 2011, 02:57:38 PM
No one gave me a over 9000 btc bounty



Title: Re: My suggestions on how to make a decent client
Post by: mc_lovin on December 21, 2011, 02:59:37 PM
I think 0.5.1 is great, personally.  I miss the 0.4.0 layout though, not many reasons to upgrade.  My opinion?  Make an update button in the GUI so people can upgrade their version with 1 click.


Title: Re: My suggestions on how to make a decent client
Post by: Gabi on December 21, 2011, 03:05:15 PM
This thread is the result of all the "why the f... there isn't a button to do that" moments i had while using the client.

And about "do it yourself": someone wasted time doing the 5.0, i think they can very well find enough time to implement something USEFUL


Title: Re: My suggestions on how to make a decent client
Post by: mc_lovin on December 21, 2011, 03:27:08 PM
I think 0.5.1 is great, personally.  I miss the 0.4.0 layout though, not many reasons to upgrade.  My opinion?  Make an update button in the GUI so people can upgrade their version with 1 click.

i tried 0.5.1 for a few days, but then decided to upgrade to 0.4.1.1.

There's a 0.4.1.1?  I thought it was just 0.4.1..


Title: Re: My suggestions on how to make a decent client
Post by: Gavin Andresen on December 21, 2011, 03:52:40 PM
The problem is, the bitcoin client SUCKS. It sucked 6 months ago, it sucks even more today with version 5 (congratulations, you managed to make it suckier... the impossible made possible)

If I thought that downloading and installing software onto your computer is the way to go then I'd be helping make it better.

I don't. I think 90-something-percent of future Bitcoin users will be using it on an iPad or mobile phone or on their computer in a web browser.

I'm sorry you think 0.5 is worse than 0.4, but you're in the (vocal) minority. Nobody stepped up to support the 0.4 wxWidgets-based GUI, and we've got several people working on the 0.5 Qt-based GUI, so I'm confident switching was the right decision.


Title: Re: My suggestions on how to make a decent client
Post by: jimbobway on December 21, 2011, 09:01:12 PM
I'm starting to like .5.  Does the job.


Title: Re: My suggestions on how to make a decent client
Post by: jimrandomh on December 21, 2011, 10:00:51 PM
I don't. I think 90-something-percent of future Bitcoin users will be using it on an iPad or mobile phone or on their computer in a web browser.

What!? Nonono, that would be a bad outcome, to be avoided if at all possible! There are lots of threats against browser-based programs that don't apply to desktop apps. And if there's 2-device authentication, then it's much easier to compromise a matching pair if both clients are in a browser; they're more likely to have vulnerabilities in common. For example, someone could steal an SSL certificate, and MITM traffic on the internet connection that both devices share, replacing both clients with malicious software.

Please, reconsider. The future of Bitcoin depends on there not being any more MyBitcoins or Allinvains. I wrote that online wallet services are an invitation to fraud and theft (https://bitcointalk.org/index.php?topic=26260.0;all), a month before the MyBitcoin fiasco. That is still true. Don't encourage people to use them, or there will be more disasters.


Title: Re: My suggestions on how to make a decent client
Post by: ThomasV on December 21, 2011, 10:09:16 PM
I don't. I think 90-something-percent of future Bitcoin users will be using it on an iPad or mobile phone or on their computer in a web browser.

What!? Nonono, that would be a bad outcome, to be avoided if at all possible! There are lots of threats against browser-based programs that don't apply to desktop apps. And if there's 2-device authentication, then it's much easier to compromise a matching pair if both clients are in a browser; they're more likely to have vulnerabilities in common. For example, someone could steal an SSL certificate, and MITM traffic on the internet connection that both devices share, replacing both clients with malicious software.

Please, reconsider. The future of Bitcoin depends on there not being any more MyBitcoins or Allinvains. I wrote that online wallet services are an invitation to fraud and theft (https://bitcointalk.org/index.php?topic=26260.0;all), a month before the MyBitcoin fiasco. That is still true. Don't encourage people to use them, or there will be more disasters.

There is a middle ground between a full bitcoin client and an online wallet: thin clients.
I can even imagine a thin client integrated into the web browser, as an extension; I guess this is what Gavin had in mind.


Title: Re: My suggestions on how to make a decent client
Post by: Gabi on December 22, 2011, 07:19:12 PM
I doubt a lot of ppl will use it from mobile. You use mobile if you are forced to, so if you use bitcoin at restaurants or shops etc... but i think that for a long time we will use btc mainly to buy online, so you can use them via a normal computer.

So, let me resume what i would like

1)A "load/open" button to load a wallet and use it as i wish
2)A "Rescan" button
3)A button to change the path of the blockchain
4)Reverse the modify from 5.0 regarding showing numbers of blocks downloaded and connections. Ok i know, you can still see them via tooltip but why hide them? Make no sense, the client has to show so few things, that there is no point in hiding them
5)What about adding some statistics? Like telling me how big is the blockchain directly from the client, also telling me the upload and download speed



Title: Re: My suggestions on how to make a decent client
Post by: Pieter Wuille on December 23, 2011, 03:10:46 PM
I think you have a point. The current client hides many things from the user, which is probably a good thing for many people, but the fast that it hides the wallet concept completely creates confusion.


Title: Re: My suggestions on how to make a decent client
Post by: cypherdoc on December 23, 2011, 04:56:24 PM
I doubt a lot of ppl will use it from mobile. You use mobile if you are forced to, so if you use bitcoin at restaurants or shops etc... but i think that for a long time we will use btc mainly to buy online, so you can use them via a normal computer.

So, let me resume what i would like

1)A "load/open" button to load a wallet and use it as i wish
2)A "Rescan" button
3)A button to change the path of the blockchain
4)Reverse the modify from 5.0 regarding showing numbers of blocks downloaded and connections. Ok i know, you can still see them via tooltip but why hide them? Make no sense, the client has to show so few things, that there is no point in hiding them
5)What about adding some statistics? Like telling me how big is the blockchain directly from the client, also telling me the upload and download speed



these are not bad suggestions.


Title: Re: My suggestions on how to make a decent client
Post by: netrin on December 23, 2011, 05:24:22 PM
The problem is, the bitcoin client SUCKS. It sucked 6 months ago, it sucks even more today with version 5 (congratulations, you managed to make it suckier... the impossible made possible)

Dude. You are out of line. It is clear you dislike the changes, but you should be humble and grateful. The client is a gift from the developers to you. Oh, you have some suggestions? Great. Share your opinions.


I think 90-something-percent of future Bitcoin users will be using it on an iPad or mobile phone or on their computer in a web browser.

This may be true, but it is not the dumb-device network-edge masses that drive innovation. I believe you are a Linux user and are therefor familiar with the fiasco of Unity and Gnome 3 Shell? While building an UI that caters to the masses is important, alienating the power users is project revolt and stagnation. However, I don't see any radical UI changes from 4 to 5 and I look forward to new the new features in 6 and beyond. All in all, I'm happy with the direction of the reference and alternate clients.

The current client hides many things from the user, which is probably a good thing for many people, but the fact that it hides the wallet concept completely creates confusion.

Yes! There are many concepts that are difficult to grasp. But by assuming they are ungraspable we guarantee that users remain stupid. While this problem will solve itself with new clients, I believe the client evolution has been a bit backwards. The client could have been more transparent, modular, and simpler and we would have learned much from the experimentation and even mistakes of early adopters who are typically quite tech-savvy. But I believe that's the past. The code is getting cleaner, there are several libraries, alt clients, and web services available or in development. The future is bright!


Title: Re: My suggestions on how to make a decent client
Post by: istar on December 23, 2011, 08:52:35 PM
I agree about the wallet.

The client needs to be able to load and save/merge/handle wallets with different names.

But that does not mean the client sucks, its very nice work.



Title: Re: My suggestions on how to make a decent client
Post by: genjix on December 23, 2011, 09:19:51 PM
The old client code sucked. The new code is great. This is a good switch that will pay off in the long run by making it more sustainable to develop satoshi bitcoin.


Title: Re: My suggestions on how to make a decent client
Post by: btc_artist on December 23, 2011, 09:59:21 PM
The 0.5 satoshi client is better than the 0.4 client, but there is still room for improvement.  The wallet point is a good one as well.


Title: Re: My suggestions on how to make a decent client
Post by: memvola on December 23, 2011, 11:54:41 PM
The wallet point is a good one as well.

Open/Close/Rescan wallet functionality would have a side effect of enabling the client to run without an open wallet, which would make it easier to manipulate the wallet with external tools, among other things.


Title: Re: My suggestions on how to make a decent client
Post by: bc on December 25, 2011, 05:29:52 AM
I'm grateful that the devs are listening to suggestions even when they're offered in imperfect ways.

I'm grateful that imperfect people are offering suggestions.

I'm grateful that many people are attempting to discover where their energy is best spent to advance bitcoin.

I'm grateful that someone I'll never meet was greedy enough to change the course of history for the better.

I'm grateful that that person was smart enough to trick lots of people into being greedy enough to change the course of history for the better.


My two cents is for a client that's as modular as possible. Let GUI-folk fight the GUI wars.

I'm continually impressed with the decisions and attitudes of the core developers. I hope you're fully vested, because bitcoin is going places.

Happy Holidays.


Title: Re: My suggestions on how to make a decent client
Post by: Gabi on December 25, 2011, 02:01:23 PM
Please note that my critics on the 5.0 version aren't related to my other suggestion. I criticized 5.0 because i see it as wasted effort that could be used to implement more useful things. And because hiding the block and connections numbers is not an improvement in my opinion.

Guys, if i tell a new guy about Bitcoin i feel embarassed to give him the standard client, and then "the client doesn't show my btc, what should i do?" "Well you need to run it with the -rescan parameter" or "i wanna move the path from roaming/bitcoin to elsewhere, how to?" "well you need...wait let me check forum, i don't remember how to... oh yes, put as parameter..."
The things i suggest are mostly things that already exists but lack GUI buttons that would make them much simpler to use.


Title: Re: My suggestions on how to make a decent client
Post by: fornit on December 25, 2011, 02:45:22 PM
Please note that my critics on the 5.0 version aren't related to my other suggestion. I criticized 5.0 because i see it as wasted effort that could be used to implement more useful things. And because hiding the block and connections numbers is not an improvement in my opinion.

afaik the gui was developed by someone who - at that point - didnt directly participate in the development of the client. so the "wasted effort" was only in the final integration into the original client and was mostly done because the wxwidgets gui was practically abandoned.
what info is visible or not is a minor thing and can be changed at any point without much work. imho, most people dont care about the specifics. especially the precise number of connections is of no value to the average user, as long as its "enough".

Quote
Guys, if i tell a new guy about Bitcoin i feel embarassed to give him the standard client, and then "the client doesn't show my btc, what should i do?" "Well you need to run it with the -rescan parameter" or "i wanna move the path from roaming/bitcoin to elsewhere, how to?" "well you need...wait let me check forum, i don't remember how to... oh yes, put as parameter..."
The things i suggest are mostly things that already exists but lack GUI buttons that would make them much simpler to use.

that however i can second. on the other hand i can totally understand why the developers chose to gave the bip 11/12/13 higher priority. it will change the whole network and gives developers of other clients the chance to implement those powerful features too, while wallet management and moving functionality to the gui only improves the original client itself.
so its a good plan for overall long term development, at the cost of alienating some users right now who dont like or have trouble using the client.


Title: Re: My suggestions on how to make a decent client
Post by: RodeoX on December 25, 2011, 03:11:06 PM
@Gabi - You had it right in the title when you said you had "suggestions". The client is at version 0.5.1. The zero means no complaining, no saying "this SUCKS!!!11!"; IMO.
Having said that, some of your suggestions good ones!


Title: Re: My suggestions on how to make a decent client
Post by: Gabi on December 25, 2011, 04:40:31 PM
@Gabi - You had it right in the title when you said you had "suggestions". The client is at version 0.5.1. The zero means no complaining, no saying "this SUCKS!!!11!"; IMO.
Having said that, some of your suggestions good ones!
If no one complains that 0 become and 1 with the client seeing no improvement cause "well no one complained, it's fine"


Title: Re: My suggestions on how to make a decent client
Post by: netrin on December 25, 2011, 06:10:15 PM
If seeing one complains with cause, "well fine" that client complained become improvement and no no no, the 0 it's 1

ftfy


Title: Re: My suggestions on how to make a decent client
Post by: Deafboy on December 25, 2011, 08:11:51 PM
Another suggestion:
Make full client act as light client until the blockchain is fully downloaded.

And this leads to another suggestion:
Universal server should be made to allow several light clients to connect. Maybe you should talk with devs of electrum about this.
Or even better - allow the full client to act as server for light clients if blockchain is up to date.

Possible GUI improvements:
Icons in 0.5.X client seems not to be in correct size (or has been resized from larger PNG images). It is detail, but it looks terrible.
Also the red/yellow color of connections indicator always looks like there is something wrong even when I have >30 connections opened.

I also think that online wallets are fine, but we should not advice new users to use them.
The danger of online wallets is similar to using credit card online. Trusted wallet provider can change the situation (like PayPal for bitcoins), but we do not want to make the same mistakes over and over again, do we?


Title: Re: My suggestions on how to make a decent client
Post by: Gabi on December 26, 2011, 07:17:43 PM
Integrating a thin client in the standard client is a nice idea indeed!

So you can choose if use your blockchain or use it as thin client and connect to a server. Very helpful for new ppl, so they tell you "ok i downloaded the standard client, what now to use my btc?" "Select "thin client" and you can use them right now, then if you want.. -explain blockchain-"

And remove the "oh well now you have to wait 12 hours to download the blockchain... or you can download it from that site but then you will have to run the client with the -rescan parameter... or use a thin client, here, download it here" (and he is like "then why the hell i found that client on the official site...")


Title: Re: My suggestions on how to make a decent client
Post by: netrin on December 26, 2011, 07:31:43 PM
Integrating a thin client in the standard client is a nice idea indeed!

So you can choose if use your blockchain or use it as thin client and connect to a server (peer)

If each client has a decoupled blockchain and wallet, then peers can ask each other for address balances (anon shot) and even to submit transactions on their behalf, which might increase anonymity/deniability of transaction origin.


Title: Re: My suggestions on how to make a decent client
Post by: Gabi on December 26, 2011, 07:57:10 PM
Even better, nice idea!


Title: Re: My suggestions on how to make a decent client
Post by: grue on December 26, 2011, 08:50:22 PM
If I thought that downloading and installing software onto your computer is the way to go then I'd be helping make it better.

I don't. I think 90-something-percent of future Bitcoin users will be using it on an iPad or mobile phone or on their computer in a web browser.

I'm sorry you think 0.5 is worse than 0.4, but you're in the (vocal) minority. Nobody stepped up to support the 0.4 wxWidgets-based GUI, and we've got several people working on the 0.5 Qt-based GUI, so I'm confident switching was the right decision.

I don't think he's complaining about the qt framework. he's complaining about the new layout + useless features added to 0.5. like the overview tab, and csv export


Title: Re: My suggestions on how to make a decent client
Post by: Raoul Duke on December 26, 2011, 08:57:00 PM
Well, the csv export isn't that useless. I couldn't find any other way besides exporting to get to the tx ID...


Title: Re: My suggestions on how to make a decent client
Post by: ThiagoCMC on December 27, 2011, 12:50:34 AM
Guys,

 A lot of people forget that Bitcoin is a BETA software.
 It is just a embryo!! A baby software.
 Bitcoin 0.4.0 is great...
 Bitcoin 0.5.1 is AWESOME!
 Bitcoin 0.6.0 need a lots of tests BEFORE the final release!
 So, stop crying (sorry if I'm being rude) and start helping!!
 Draw your suggestions in a mock-up software/site...

Best!
Thiago


Title: Re: My suggestions on how to make a decent client
Post by: justusranvier on December 27, 2011, 03:55:40 AM
Integrating a thin client in the standard client is a nice idea indeed!

So you can choose if use your blockchain or use it as thin client and connect to a server (peer)

If each client has a decoupled blockchain and wallet, then peers can ask each other for address balances (anon shot) and even to submit transactions on their behalf, which might increase anonymity/deniability of transaction origin.
My LAN at home has three computers on it, two of which have GUIs installed and one of which serves as a headless router/firewall. If you count my smartphone then the network has four computers on it.

From my point of view I would like to see a complete separation of the blockchain tracking/network communication functions from wallet management/user interface. It doesn't really make sense to run more than one copy of the server on a single home LAN but there are three other computers (counting the phone) that might be using clients.

In an ideal world I'd run the server on the headless machine and it would advertise itself via zeroconf/avahi so that any client that was started in that network would automagically who to connect to in order to initiate a transaction.


Title: Re: My suggestions on how to make a decent client
Post by: gmaxwell on December 27, 2011, 04:38:50 PM
In an ideal world I'd run the server on the headless machine and it would advertise itself via zeroconf/avahi so that any client that was started in that network would automagically who to connect to in order to initiate a transaction.

Hm— well, different models are possible here.   I'd like a separated GUI and backend because I can run a single trusted backend and not deal with the computationally expensive zero trust stuff on all the other clients I need.   I wouldn't want to use some node just because I heard about it via zeroconf/avahi.

If you're going to discover nodes via zeroconf then you need to be able to operate in a way where you don't trust them. Thats significantly more expensive than being able to trust them.


Title: Re: My suggestions on how to make a decent client
Post by: justusranvier on December 27, 2011, 04:42:30 PM
In an ideal world I'd run the server on the headless machine and it would advertise itself via zeroconf/avahi so that any client that was started in that network would automagically who to connect to in order to initiate a transaction.

Hm— well, different models are possible here.   I'd like a separated GUI and backend because I can run a single trusted backend and not deal with the computationally expensive zero trust stuff on all the other clients I need.   I wouldn't want to use some node just because I heard about it via zeroconf/avahi.

If you're going to discover nodes via zeroconf then you need to be able to operate in a way where you don't trust them. Thats significantly more expensive than being able to trust them.
If the client is the one that controls the wallet then it doesn't need to trust the node to do any cryptography, does it? All it needs to do is to have the node forward the transaction to the rest of the network. A node can't tamper with transactions if it lacks access to the private keys, can it?


Title: Re: My suggestions on how to make a decent client
Post by: netrin on December 29, 2011, 05:23:38 AM
You need to trust that the node is in fact sending the transactions and not trying to identify you by your address balance requests (though ANY node can and may attempt that).

I'd like to see a simple onion network between nodes without Tor.


Title: Re: My suggestions on how to make a decent client
Post by: justusranvier on December 29, 2011, 05:28:03 AM
You need to trust that the node is in fact sending the transactions and not trying to identify you by your address balance requests (though ANY node can and may attempt that).

I'd like to see a simple onion network between nodes without Tor.
In the use case I mentioned a single network administrator controls the computers that run the node and the front end. I guess the risk then would be one of the computers on the same network becoming compromised and using zeroconf to advertise a malicious node?


Title: Re: My suggestions on how to make a decent client
Post by: netrin on December 29, 2011, 05:44:22 AM
There are plenty of trust-based services on the LAN. High performance data-stores rarely authenticate and encrypt traffic, but rather assume the network is secure.