owned this note changed 5 years ago
Published Linked with GitHub

Bitcoin Core GUI / Design Jam #0

Motivations

  • Disliked how gui looked
  • Wanted the application cater for designers and first time users.
  • Makes the asumption of beginner user and power user.
  • Settings should be hidden for the beginner user.

How do we get there?

Research

  1. What are the supported enviroments?
  2. Map out the current User Flows
  3. Document current UI across operating systems
  4. Understanding the history of GUI changes through Github issues

Creating a Design System

It looks outdated, and not what a wallet global world currency should look like.

In order to extend the features that are useful, it needs to be restructured in order to be leveled up.

Create components that can be used in the future to extend functionality.

Developers can then easily pick and match component pieces for the functionlity they are developing - like lego blocks.

Method

  1. Create a style guide of current UI
  2. Iterate that style guide & visual style
  3. Implement new visual style
  4. Redesign individual screens
  5. Redesign user flows
  6. Add new features
Define Components
  • Dark Mode
  • Typography
  • Layout
  • Components
  • Icons
Spin Off Projects
  • Icon Repository
  • Find a opensource typeface
    • Inter, IBM Plex, Operating System Defualt?

Encouraging Qt Implementation

  • Implementation is the main bottleneck; its easy to create new design but difficult to get them implemented.
  • How might we encourage Qt developers to work on the gui?

Beginner Onboarding

Rationale

  • Having a gui that caters to both users, esp the beginner
  • no onboarding
  • no guidance
  • wallets get created in the background
  • realease documents are difficult to parse
  • You get thrown in and you don't know what to do

Understanding "Power Users"

  • We do not know what power users want
  • Should it be articulated better?
  • Coincontrol may be a more power user priorty
  • RPC Use Cases?
  • Define the Jobs to Be Done

Engaging Designers

  • How might we encourage designers to contribute their free time to exploring improvements to gui.

Problems

  • Discussion / Is it a wasted effort to work on gui when other projects and companies are creating UIs for the node.
  • Priority of funding gui vs core developers
  • What are the long term goals / feature set?
  • Where should designers start?
  • People may be paying less attention to the gui since its split off.
  • Who has been contributing to gui issues and pr?

Other Ideas

UX Suggestions

  • Highlighting pasted addresses that have already been used power-users

Follow up

Hennadii Stepanov

"given enough eyeballs, all bugs are shallow" code reviewing is a crucial part for new pulls to get merged. Reviewing was/is a bottleneck for Bitcoin Core; the GUI repo is not an exclusion. Did you notice how many regular reviewers are in the GUI repo? Moreover, the GUI part of Bitcoin Core lacks full-coverage testing suite. It is hard.

The second point is that, I think, designers should be aware of Qt framework constraints/pitfalls.

Bitcoin Core uses Qt Widgets

Qt has a plugin-based Platform Abstraction layer https://doc.qt.io/qt-5/qpa.html. It makes application look-and-feel and user interaction (dock vs system tray, notifications etc) platform dependent. In the past some pulls were closed due to the "not nice" look on particular platform.

https://github.com/monero-project/monero-gui was pointed as an example. But please note that Qt QML (monero GUI) and Qt Widgets (Bitcoin Core GUI) are different beasts. (edited)

Qt Widgets Module

https://forum.qt.io/topic/86914/qml-or-widgets/6

  • The Qt Widgets Module provides a set of UI elements to create classic desktop-style user interfaces.
  • QWidgets have no native GPU-support so everything you show/animate etc will be rendert by the CPU. For basic buttons, icons, and images that is no problem, neither for desktop pcs nor mobile devices.
  • QML has native GPU-Support that makes it the predestined type for "fancy" UI-s with lots of animations, slides, movies, fadeins, fade outs
  • there is nothing stopping your from mixing both languages

QML Graphical User Interfaces

QML allows developers to build user interfaces in a declarative way. User interfaces specifically benefit from the simplicity of compounding QML objects and configuring them using property bindings.

Qt Quick is a module which supplies QML types for creating user interfaces such as a visual canvas with its own coordinate system and rendering engine. Animation and transition effects are a first class concept in Qt Quick and visual effects can be supplemented through specialized components for particle and shader effects.

Multi Platform Support

So I believe that multi-platform support discussion should be raised in the design community.

Some examples of multi-platform issues and discussions are: https://github.com/bitcoin-core/gui/issues/24 and https://github.com/bitcoin/bitcoin/pull/14810#issuecomment-635804151 (edited)

Select a repo