dsc-2019-q2.md 5.92 KB
Newer Older
dsc's avatar
dsc committed
1
---
Diego Salazar's avatar
Diego Salazar committed
2
layout: wip
dsc's avatar
dsc committed
3
4
5
6
7
title: GUI UX coding (3 months)
author: dsc
date: 17 April, 2019
amount: 282
milestones:
luigi1111's avatar
luigi1111 committed
8
  - name: 1st month
dsc's avatar
dsc committed
9
    funds: 33% (94 XMR)
luigi1111's avatar
luigi1111 committed
10
11
    done: 22 August 2019
    status: finished
luigi1111's avatar
luigi1111 committed
12
  - name: 2nd month
dsc's avatar
dsc committed
13
14
15
    funds: 33% (94 XMR)
    done:
    status: unfinished
luigi1111's avatar
luigi1111 committed
16
  - name: 3rd month
dsc's avatar
dsc committed
17
18
19
20
    funds: 33% (94 XMR)
    done:
    status: unfinished
payouts:
luigi1111's avatar
luigi1111 committed
21
22
  - date: 22 August 2019
    amount: 94 XMR
dsc's avatar
dsc committed
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
  - date:
    amount:
  - date:
    amount:
---

# What

32 hours a week for 3 months. [My last proposal](https://forum.getmonero.org/9/work-in-progress/90931/full-time-gui-coding) was the first where I was able to dedicate fulltime attention to Monero. Thus, past 3 months has seen substantial improvements to the GUI. For example, all points from [this issue](https://github.com/monero-project/monero-gui/issues/1568) have been resolved or at least improved upon.

# Who

I'm dsc, familiar with Monero GUI internals and contributed to the GUI codebase since fall 2017.

My contributions/experience:

- https://github.com/monero-project/monero-gui/commits?author=xmrdsc
- https://github.com/xmrdsc/py-levin/commits?author=xmrdsc (autonode.xmr.pm)
- https://github.com/wownero/wownero-funding-system/commits?author=xmrdsc
- https://github.com/wownero/Wownero-Light-Wallet/commits?author=xmrdsc
- https://github.com/monero-ecosystem/qml-xmr/commits?author=xmrdsc
- https://github.com/monero-ecosystem/moneriote-python/commits?author=xmrdsc (moneroworld)
- Free VPS Hosting for XMR i2p workgroup, Noncense Research Lab and a Gitea [backup git](https://git.xmr.pm) instance.
- The fan-favourite & glorious IRC bot `xmr-pr` - making everyones life more managable

# Report on the previous 3 months

- [Introduced white theme](https://github.com/monero-project/monero-gui/pull/2060)
- [New wizards](https://github.com/monero-project/monero-gui/pull/1909), both code and design rewritten from scratch
- [Simple mode](https://github.com/monero-project/monero-gui/pull/1909): automatic remote node finder (autonode.xmr.pm)
- [IPC](https://github.com/monero-project/monero-gui/pull/2029) (`monero://` and `moneroseed://` uri handler)
- Introduced font-awesome + .svg for higher quality icons
- [New transaction history page](https://github.com/monero-project/monero-gui/pull/2025)
- Wrote a 'GUI development guidelines' document (not released yet :-P)

In addition I 'cleaned up' QML components and reviewed/rewrote existing QML/js logic. Good QML components lead to a more stable/clean UX. This is time consuming, as QML is not intuitive or easy to work with (compared to, say, HTML + CSS). These efforts are a balance between "needing to clean up the codebase before we can continue" versus "delivering tangible results the community benefits from".

# Proposal

32 hours per week at 50 USD/hour rate for a total of 282 XMR. XMR/USD rate is roughly based on the average of the past 2 weeks. 

I'd rather not post bi-weekly updates in this PR/Reddit, rather wish to have a weekly meeting on Tuesday in `#monero-gui` on Freenode. This will be an opportunity where the GUI workgroup discusses recent developments, open issues/PRs, and to-do's.

# What I want to focus on

Or rather, what I could choose to focus on. Following list is unordered in terms of prioritization.

### Tor/i2p integration

Due to knaccc/jgrassie's efforts (et al.), Monero now has support for tor/i2p. GUI should implement this. Challenges ahead:

1. Come up with a design that works in terms of UX
  1. How to present tor/i2p options to the user?
  2. Where can the user switch between connection types?
2. tiny-i2p/tor binaries will not be included in the GUI release, how to deal with this?

## Android/Purism

Purism has shown interest in having Monero GUI natively and included by default on their Librem 5 (phone).  This idea has overlap with a long standing wish of having an Android GUI release, as both would require [a new QML application](https://github.com/monero-project/monero-gui/issues/2026). 

Time estimates for both Android/librem support would most likely result in at least 50% of this CCS's time allocation. As such, I'm not commiting to this task before the community prioritizes this goal and/or someone wants to partially fund this mobile adventure :-o)

## Support database pruning

[More info here](https://github.com/monero-project/monero-gui/issues/2087).

## Fix update checker

GUI has functionality to check if a newer version of the GUI is available, via DNS. I believe this was disabled some time ago. We should get this functionality working.

## Rewrite modals and popups

Current GUI popups can be improved. Kneuffeulbund [made new designs](https://i.imgur.com/ERxMW0S.png) I'd like to implement. 

## Monerod as a service on Linux/MacOS

The ability to register/create a `monerod` service from within the GUI, and add it to system startup using systemd (linux), LaunchAgent (MacOS) + system tray. For Windows, such registration should take place in rbrunner's installer. I will not work on a Windows service.

This should also support [Automatic mining](https://github.com/monero-project/monero-gui/issues/2046).

## User testing session GUI feedback

Take user feedback from [an IRL GUI testing session](https://github.com/monero-project/monero-gui/issues/2040) and implement them.

## Integrate the Monero GUI guide

Integrate the Monero GUI guide from the translations workgroup inside the GUI, using a markdown to HTML renderer, inside QML, using QtWebView. 

## Tooltips, context menus

Right-click->copy/paste would be nice to have for input boxes. Also help tooltips.

## moneroseed://

Support for `moneroseed://` URIs. [More info here](https://github.com/monero-project/monero-gui/issues/2023).

## CMake build recipe

A CMake recipe, replacing qmake, will be a requirement to create reproducible builds. Currently I'm experimenting with one, it may be finished soon. Might also not be. Would like to work with TheCharlatan on this.

## Misc. GUI development

- Manage issue tracker
- Bugfixes
- Improving QML components where fit
- Code review PRs