Golem CLI
GolemSP, a deliberately simplified command line for running a Golem provider node. Few commands, plain words, and a first run a person can finish without reading the documentation.
Client
Golem Factory
Role
Lead UX designer. Research, specification and reporting to the board
Type
Command line UX
Year
2019–2020
Who it was now for
Developers who would build applications on the protocol and publish them to a marketplace. Golem was meant to be a generic computing protocol, and Brass was the proof of that drawn on Blender rendering, but the market had started reading Golem as a rendering application.
What it cost
The audience Brass had brought in. The research had measured that cost a year earlier, and the company accepted it, because turning toward developers was the point rather than a side effect.
Moving the node to a terminal
Golem was moving off a desktop application and onto a node you run from a terminal. The provider research flagged the cost of that before the work started: most existing node runners were on Windows, and Windows and Mac users are not used to a terminal. Linux providers would not replace them in the same numbers.
GolemSP was the answer: not a full command line with every capability exposed, but a small one a person could get through unaided. Few commands, almost no nesting, plain words, and a first run that sets the node up by asking four questions.
I led the UX on it. That meant owning the direction and the rules every command had to obey. The research, the specification and the command set were built with the team, not by me alone.
UX tools used
Written for
The first run
One command starts everything. Four questions follow, in the order a person needs them: accept the terms, give an Ethereum address for the earnings, name the node so other people can identify it, then read back the configuration it is starting with. Nothing is asked twice, and nothing is asked that could be defaulted.
What the commands say back
Most of the work was in the replies, not the command names. The old output gave you no way to tell whether what you typed did what you meant. We went through all 33 commands and rewrote the output against one set of rules: say what happened, repeat the value back, carry the unit, name the argument that is missing, and end on how to check.
That rule went at the top of the specification the developers worked from: every command answers either with what it did or with what went wrong.
The whole surface
This is all of it. Six commands at the top level, and only settings goes deeper, because settings is the one place with many decisions to make. The rest are verbs: start, stop, pause, status, back up the keys.
Keeping it flat was the point. The research note reads that commands should be as direct as possible, with not so many layers in one line.
golem startrun the nodegolem statusstate, latest jobs and wallet in one tablegolem settingsmanage settingsshowshow current settingsset --coresshared CPU coresset --memoryshared RAM in GBset --diskdisk space in GBset --starting-feeprice for starting a taskset --env-per-hourprice for the environment, per hourset --cpu-per-hourprice for CPU, per hourset --payout-addresswhere earnings goenv show/env enable/env disableWASM and VMcache clearclear provider cache files
golem backupyour private keyskey exportkey import
golem pause/golem resumestop earning for a while, then carry ongolem stopgolem helpthis message, or the help for one subcommand
What the research warned about
The provider research has a section called possible risks, and it argues against the direction the team had been given. Moving from a graphical node to a command line only node would discourage a large number of people. The biggest group of existing users ran Windows, and Windows and Mac users are not accustomed to working this way, because an application normally does it for them. Replacing them with Linux providers is not as easy as it sounds.
It stayed in the document, and we designed on both tracks: keep the command line small enough for a non technical person to finish the first run, and keep a tray indicator and a thin graphical layer on the table. The rule between them was that anything the interface can do, the command line can also do, and the command line is allowed to do more.
Personas on their own were not enough to design the presets from, which the research states in a line of its own: it is not only about personas, it is persona plus computer.
What shipped
GolemSP went into production as the way to run a provider node, with the first run, the flat command set and the rewritten output intact. It shipped for Linux and macOS.
There was no Windows build. The design answered the half it could, by making the command line simple enough to get through without help. The other half was strategy rather than oversight: Golem was turning back into a protocol for developers to build on, and the audience it was leaving behind was the one the Brass GUI had brought in.
