Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

Loading…

Multiple client options for bitcoin.org #32

Merged
merged 7 commits into from

5 participants

@luke-jr

This seems like a reasonable "first step" toward a more client-agnostic bitcoin.org website. Bitcoin-Qt is given preference, and its downloads kept on the front page, but there are links to a new page with a full index of working clients, designed similar to the download page for Pidgin.

@luke-jr

Screenshot of Clients page; ignore the broken icon for Linux: my webserver hates symlinks

@tcatm

Looks good! Can you try to avoid creating HTML within the plugin and use templates instead?

@luke-jr

That was what I tried first, but the internal markup just didn't seem to have any way to do much useful. :/

@mikehearn

Here are some comments based on the screenshot:

  • Overall format: a grid is quite imposing and scary looking! Rather than compare against various axes that a new user may or may not understand (maturity?) why not let client developers submit an image and some blurb as you might find in a mobile app store/market. It can be up to client developers to explain the merits of their software and why users should pick that over some other option. We can fact check it and not allow misleading statements.

If sticking with the grid:

  • License: only relevant for developers who can easily find it out if they want to. I'd suggest removing.

  • Network security: this is a really hard concept to explain to non-Bitcoin experts. I'd suggest removing. We should be seeing this as an aspect of target audience. If you are a merchant, a miner or just love Bitcoin and want to help out the project by running a node, run Bitcoin-Qt. If you want to get started quickly and will only use your wallet occasionally, run a lightweight client like MultiBit or use a web wallet.

  • For MultiBit: setup time is way too high. It's a few minutes at most with the latest versions of MultiBit (or should be, given that this is how long bitcoinj takes). I think it'll go ever lower in future.

  • For MultiBit: backups = no? You can back up your wallet as easily as you can with Bitcoin-Qt. It's just a file.

  • "My Wallet". Audience = everyone? Developers and merchants included? I haven't seen My Wallet before.

  • For eWallets things like reputation / longevity of the owner probably have more weight than the date of creation. Eg, an eWallet run by MtGox should be more strongly recommended than an eWallet set up by me.

Could you upload it publicly so I can take a look at the other pages?

@luke-jr

Network security is IMO an important metric to convey in some way.

Bitcoin-Qt at least has an easy to use option on the File menu to make backups.

Based on playing with "My Wallet", I felt it was suitable for use by everyone.

Regarding uploading... the site is full of absolute paths, so there's really no simple way to do this :(

@jim618

Hi luke-jr,

Thanks for putting together a summary of all the (growing!) number of bitcoin clients in existence.

I had a point of information on the MultiBit start up time, Mike noticed that I had missed a speed up technique that he had put into the bitcoinj codebase. This has now gone into the MultiBit codebase with the following results:

https://bitcointalk.org/index.php?topic=43616.msg847114#msg847114

That would make the overall time to :
1) Download the installer
2) Install it
3) Run it to sync the blockchain

say 5 minutes tops.

This speedup will go into the next release (0.3.3) which will probably be next week.

Jim

@genjix

waw, very nice :)

As a first step, this should probably be pulled right away and then any improvements can be made after. Lets get the ball rolling rather than debating the colour of the bike-shed!
http://hackerspaces.org/wiki/The_Bikeshed_Anti-Pattern

Although I agree with Mike Hearn - far better would be a grid of 4 columns and X rows. Each box has a linkable title, a picture and then 850 word blurb from the project. I mean where would libbitcoin fit in here? I'd want to say the design philosophy behind it and that there's Python bindings - a circular peg that doesn't fit in the square boxes of this table. Although whatever, that's not important. I'm just happy to see MultiBit, Electrum and Armory get exposure.

@genjix genjix merged commit cd31123 into bitcoin-dot-org:master
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Commits on Apr 10, 2012
  1. @luke-jr
  2. @luke-jr

    Client OS selector

    luke-jr authored
Commits on Apr 11, 2012
  1. @luke-jr
  2. @luke-jr
  3. @luke-jr

    bitcoind has virtual accounts

    luke-jr authored
Commits on Apr 13, 2012
  1. @luke-jr
Commits on Apr 16, 2012
  1. @luke-jr
This page is out of date. Refresh to see the latest.
View
4 _config.yml
@@ -48,6 +48,10 @@ navigation:
section: news
- text: About
url: /about.html
+ section: about
+- text: Clients
+ url: /clients.html
+ section: clients
aliases:
s_nakamoto: Satoshi Nakamoto
View
3  _less/bootstrap.less
@@ -22,3 +22,6 @@
@import "tables.less";
@import "patterns.less";
@import "bitcoin.less";
+
+// Clients
+@import "clients.less";
View
41 _less/clients.less
@@ -0,0 +1,41 @@
+/* Clients.less
+ * Styles used on the Clients page
+ * ---------------------------------------------------------------------------- */
+
+.best {
+ background-color: #dfffdf;
+}
+
+.good {
+ background-color: #dfffff;
+}
+
+.ugly {
+ background-color: #ffdfdf;
+}
+
+#oslist {
+ border-right: 1px solid black;
+ vertical-align: top;
+ width: 14ex;
+}
+
+#oslist ul {
+ list-style-type: none;
+ width: 12ex;
+}
+
+#oslist,#oslist ul {
+ margin: 0;
+ padding: 0;
+}
+
+#oslist li a {
+ padding: 1ex;
+ display: block;
+ width: 100%;
+}
+
+th.clients:first-child {
+ max-width: 16ex;
+}
View
42 _plugins/clients.rb
@@ -0,0 +1,42 @@
+module Jekyll
+
+ class Clients < Liquid::Tag
+ def render(context)
+ page = context.environments.first['page']
+ r = ''
+ for h in page['client_info']
+ r += '<tr>'
+ r += '<th>' + h['text'] + '</th>'
+ hid = h['id']
+ td = h.fetch('td', 'td')
+ for c in page['clients']
+ if c.has_key?('incomplete')
+ next
+ end
+ ci = c[hid]
+ curi = c.fetch(hid + '_uri', nil)
+ r += '<' + td + ' class="clients ' + c['os']
+ if h.has_key?(ci)
+ r += ' ' + h[ci]
+ end
+ r += '">'
+ if curi
+ r += "<a href='" + curi + "'>" + ci + "</a>"
+ elsif ci
+ r += ci
+ elsif hid == '_os'
+ for os in c['os'].split(' ')
+ r += '<img class="icon" src="img/ico-' + os + '.png">'
+ end
+ end
+ r += "</" + td + ">"
+ end
+ r += '</tr>'
+ end
+ r
+ end
+ end
+
+end
+
+Liquid::Template.register_tag('clients', Jekyll::Clients)
View
274 clients.html
@@ -0,0 +1,274 @@
+---
+layout: simple
+section: clients
+
+client_info:
+- id: name
+ text: Client
+ td: th
+ Bitcoin-Qt: best
+- id: start
+ text: Get Started
+- id: audience
+ text: Audience
+ Everyone: best
+ End-users: good
+- id: security
+ text: Wallet Security
+ Multisig: best
+ Encryption: good
+ None: ugly
+- id: nodetype
+ text: Network Security
+ Full: best
+ Remote: ugly
+- id: backups
+ text: Backups
+ One-time local: best
+ One-time memorized: best
+ Automatic remote: good
+ 'No': ugly
+- id: setuptime
+ text: Setup Time
+ Seconds: best
+ Minutes: good
+ Hours: ugly
+- id: disk
+ text: Disk Space
+ 2+ GB: ugly
+ '5 MB': good
+ '3 MB': good
+ '2 MB': good
+ None: best
+- id: maturity
+ text: Maturity
+ Aug 2009: best
+ May 2011: good
+- id: license
+ text: License
+ EULA: ugly
+ Proprietary: ugly
+- id: multiuser
+ text: Multi-user
+- id: _os
+ text: Available For
+
+clients:
+- name: Armory
+ name_uri: http://bitcoinarmory.com/
+ start_uri: http://bitcoinarmory.com/index.php/get-armory
+ start: Download
+ audience: Power users
+ security: Encryption
+ nodetype: Addon
+ backups: One-time local
+ setuptime: Varies
+ disk: 2+ GB
+ maturity: Jul 2011
+ license: AGPLv3
+ multiuser: Multi-wallet
+ os: linux win
+- name: Bitcoin Wallet
+ name_uri: http://code.google.com/p/bitcoin-wallet/
+ start_uri: https://play.google.com/store/apps/details?id=de.schildbach.wallet
+ start: Download
+ audience:
+ security:
+ nodetype:
+ backups:
+ setuptime:
+ disk:
+ maturity: Mar 2011
+ license: GPLv3
+ multiuser:
+ os: android
+- name: Bitcoin-Qt
+ name_uri:
+ start_uri: http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.6.0/
+ start: Download
+ audience: End-users
+ security: Encryption
+ nodetype: Full
+ backups: Manual local
+ setuptime: Hours
+ disk: 2+ GB
+ maturity: May 2011
+ license: MIT
+ multiuser: 'No'
+ os: linux mac win
+- name: bitcoind
+ name_uri:
+ start_uri: http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.6.0/
+ start: Download
+ audience: Developers
+ security: Encryption
+ nodetype: Full
+ backups: Manual local
+ setuptime: Hours
+ disk: 2+ GB
+ maturity: Aug 2009
+ license: MIT
+ multiuser: Virtual accounts
+ os: linux win
+- name: BitcoinSpinner
+ name_uri: http://code.google.com/p/bitcoinspinner/
+ start_uri: https://play.google.com/store/apps/details?id=com.miracleas.bitcoin_spinner
+ start: Download
+ audience: End-users
+ security: None
+ nodetype:
+ backups: Manual QR-Code
+ setuptime: Seconds
+ disk: 2 MB
+ maturity: Nov 2011
+ license: Apache2
+ multiuser: 'No'
+ os: android
+- name: Blockchain
+ name_uri: https://blockchain.info/wallet/iphone-app
+ start_uri: https://blockchain.info/wallet/iphone-app#download-instructions-btn
+ start: Download
+ audience: End-users
+ security: Encryption
+ nodetype: Remote
+ backups: Automatic remote
+ setuptime: 15 Minutes
+ disk: 2 MB
+ maturity: Mar 2012
+ license: <img src="img/ico-android.png">GPL &#x2022; <img src="img/ico-ios.png">LGPL
+ multiuser:
+ os: android ios
+- name: Electrum
+ name_uri: http://ecdsa.org/electrum/
+ start_uri: http://ecdsa.org/electrum/
+ start: Download
+ audience: Power users
+ security: Encryption
+ nodetype: Minimal
+ backups: One-time memorized
+ setuptime: Minutes
+ disk: 5 MB
+ maturity: Nov 2011
+ license: GPLv3
+ multiuser: 'No'
+ os: linux win
+- name: MtGox Mobile
+ name_uri: http://mtgoxlive.com/mobile/
+ start_uri: https://play.google.com/store/apps/details?id=com.mtgoxlive.trader
+ start: Download
+ audience: End-users
+ security: Remote
+ nodetype: Remote
+ backups: Automatic remote
+ setuptime: Minutes
+ disk: 3 MB
+ maturity: Jul 2011
+ license: WTFPL
+ multiuser: 'No'
+ os: android
+- name: MultiBit
+ name_uri: http://multibit.org/
+ start_uri: http://multibit.org/releases.html
+ start: Download
+ audience: End-users
+ security: None
+ nodetype: Partial
+ backups: 'No'
+ setuptime: 1 hour
+ disk: 50 MB
+ maturity: Jul 2011
+ license: MIT
+ multiuser: Multi-wallet
+ os: linux mac win
+- name: My Wallet
+ name_uri: https://blockchain.info/wallet
+ start_uri: https://blockchain.info/wallet/new
+ start: eWallet
+ audience: Everyone
+ security: Encryption
+ nodetype: Remote
+ backups: Automatic remote
+ setuptime: Minutes
+ disk: None
+ maturity: Dec 2011
+ license: BSD*
+ multiuser: 'Yes'
+ os: android ios linux mac win
+- name: StrongCoin
+ name_uri: https://strongcoin.com/
+ start_uri: https://strongcoin.com/users/sign_up
+ start: eWallet
+ audience: Power users
+ security: Encryption
+ nodetype: Remote
+ backups: Automatic remote
+ setuptime: Minutes
+ disk: None
+ maturity: Sep 2011
+ license: Proprietary
+ multiuser: 'Yes'
+ os: linux mac win
+---
+ <div class="container">
+ <section id="clients">
+ <h1>Bitcoin Clients</h1>
+ <!-- yes, this is an abuse of tables, but really CSS doesn't provide any sane way to do the same thing :( -->
+ <table><tr>
+ <td style="" id="oslist">
+ <ul>
+ <li><a id="android" href="javascript:clientfilt('android')"><img src="img/ico-android.png"> Android</a></li>
+ <li><a id="ios" href="javascript:clientfilt('ios')"><img src="img/ico-ios.png"> iPhone</a></li>
+ <li><a id="linux" href="javascript:clientfilt('linux')"><img src="img/ico-linux.png"> Linux</a></li>
+ <li><a id="mac" href="javascript:clientfilt('mac')"><img src="img/ico-mac.png"> Mac OS X</a></li>
+ <li><a id="win" href="javascript:clientfilt('win')"><img src="img/ico-win.png"> Windows</a></li>
+ </ul>
+ </td>
+ <td>
+ <table>
+ {% clients %}
+ </table>
+ </td>
+ </tr></table>
+ </section>
+ </div>
+ <script type="text/javascript">
+ var visiblerule = null;
+ var selrule = null;
+ function clientfilt(c) {
+ if (visiblerule) {
+ selrule.selectorText = '#' + c;
+ visiblerule.selectorText = '.clients.' + c;
+ return;
+ }
+ var ss = document.styleSheets[0];
+ var rules = ss.cssRules ? ss.cssRules : ss.rules;
+ if (ss.insertRule) {
+ ss.insertRule('.clients { display: none }');
+ ss.insertRule('#' + c + '{ background-color: #bfbfbf }', 0);
+ ss.insertRule('.clients.' + c + ' { display: table-cell }', 0);
+ } else {
+ ss.addRule('.clients', 'display: none');
+ ss.addRule('#' + c, 'background-color: #bfbfbf', 0);
+ ss.addRule('.clients.' + c, 'display: table-cell', 0);
+ }
+ visiblerule = rules[0];
+ selrule = rules[1];
+ }
+ (function(){
+ var av = navigator.appVersion;
+ if (av.indexOf('Android') != -1)
+ clientfilt('android');
+ else
+ if (av.indexOf('iPhone') != -1)
+ clientfilt('ios');
+ else
+ if (av.indexOf('Linux') != -1 || av.indexOf('X11') != -1)
+ clientfilt('linux');
+ else
+ if (av.indexOf('Mac') != -1)
+ clientfilt('mac');
+ else
+ if (av.indexOf('Win') != -1)
+ clientfilt('win');
+ })()
+ </script>
View
BIN  img/ico-android.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  img/ico-ios.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
1  img/ico-linux.png
View
BIN  img/ico-mac.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
7 index.html
@@ -37,7 +37,9 @@
<div>
<p>
- <strong>Latest version:</strong> <a href="http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-{{ page.DOWNLOAD_VERSION }}/">{{ page.DOWNLOAD_VERSION }}</a>
+ <strong>Latest Bitcoin-Qt version:</strong> <a href="http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-{{ page.DOWNLOAD_VERSION }}/">{{ page.DOWNLOAD_VERSION }}</a>
+ <br>
+ <a style="margin-left: 4ex" href="/clients.html">(see all Bitcoin clients)</a>
</p>
<ul class="unstyled">
@@ -56,7 +58,7 @@
<li><a href="http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-{{ page.DOWNLOAD_VERSION }}/bitcoin-{{ page.DOWNLOAD_VERSION }}-macosx.dmg/download">
<img src="img/ico-osx-uni.png" class="icon">Mac OS X</a> <small>~11MB</small>
</li>
- <li>or get the <a href="https://github.com/bitcoin/bitcoin">source code</a> (GitHub)</li>
+ <li><a href="https://github.com/bitcoin/bitcoin"><img class="icon" style="width: 16px">Source code</a> (GitHub)</li>
</ul>
</div>
</section>
@@ -76,6 +78,7 @@
<ul>
<li><a href="http://www.weusecoins.com">We Use Coins. Start here!</a></li>
+ <li><a href="/clients.html">Bitcoin clients</a></li>
<li><a href="https://bitcoin.it/">Bitcoin Wiki</a>
<ul>
<li><a href="https://bitcoin.it/wiki/FAQ">FAQ</a></li>
Something went wrong with that request. Please try again.