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