Skip to content
Snippets Groups Projects

dsc fulltime GUI coding

Merged dsc requested to merge dsc/ccs-proposals:dsc-2019-q2 into master

What

32 hours a week for 12 weeks. My last proposal 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 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:

Report on the previous 3 months

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 meetings 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
  2. How to present tor/i2p options to the user?
  3. Where can the user switch between connection types?
  4. 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.

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.

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 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.

User testing session GUI feedback

Take user feedback from an IRL GUI testing session 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.

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
Edited by dsc

Merge request reports

Pipeline #180 failed

Pipeline failed for 1e03de39 on dsc:dsc-2019-q2

Approval is optional
Ready to merge by members who can write to the target branch.

Merge details

  • 1 commit and 1 merge commit will be added to master.
  • Source branch will not be deleted.

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
  • dsc added 1 commit

    added 1 commit

    Compare with previous version

  • dsc added 1 commit

    added 1 commit

    Compare with previous version

  • dsc changed the description

    changed the description

  • dsc changed the description

    changed the description

  • Fully support this. The development progress has been blazing fast since dsc started full-time, and he executes on the designs really well. He's also been a big help for me personally to find my way into contributing to Monero. Would also be fantastic to get the Android app started.

  • @dsc Proved to be very passionate about Monero and the quality of his work on the GUI is undeniable. I fully support this proposal.

    About the Purism situation: I don't think Monero resources should be used for the integration with Librem. IMO, another CCS should be necessary for that.

  • I commented on dsc's first proposal saying that even though I do not personally use the GUI I understand it's importance to Monero's adoption. I also stated that dsc had proved himself with part time volunteer work and that there was an obvious need for a more concentrated effort to improve the GUI.

    The increase in work done is obvious as well as improved coordination among all those that are working on the GUI. dsc's request to be paid 32 hrs/wk is an obvious underestimation because he, like most paid contributors, give more time than stated in their proposal.

    I am once more willing to donate to an important part of Monero development that I do not use.

  • @dsc is a very efficient GUI dev.
    Moreover, he is always of a great help to anybody on #monero-gui.
    I fully support this FFS.

    Regarding the integration of GUI guide, i think we should work closely together (@dsc, @erciccione and me) to update it prior to any release, with a proper code freeze (i believe a 1-2 week(s) window should be enough) and a pre-release binary provided for this purpose.

  • merged

  • luigi1111 mentioned in commit 30478955

    mentioned in commit 30478955

  • Contributor

    Nice! :) You have done a lot of work, congratulations.

  • Author Contributor

    First milestone/update :-)

    Tor/i2p integration

    This work is WIP.

    https://i.imgur.com/ZUZknxB.png

    I2P/Tor configuration will be one screen (see WIP screenshot above) which can be reached from the main menu.

    In the case of I2P; it can launch the process, configure the daemon, and wait for the tunnel to become active. In the case of Tor, it will simply check 127.0.0.1:9050.

    Some code here (not all)

    Work so far: 5 days - needs another 5 to test & finish.

    CMake build recipe

    CMake build recipe for reproducible GUI builds, gave it to TheCharlatan and he continued work on it.

    Work so far: 4 days

    (Realistically more than that, grrr CMake)

    Integrate the Monero GUI guide

    I'm currently investigating the best way to include the Guide inside the GUI. So far I've tried Maddy for markdown->html conversion with the idea of displaying it in Qt's webbrowser but this has some downsides:

    1. Qt's Webbrowser (AFAIK) not included in our buildbot
    2. Launching a webbrowser seems overkill

    Work so far: 1 day. Will have to see how to best include the guide.

    Tails integration

    https://camo.githubusercontent.com/df8336c6364a5f0ad9815c81e0f1dbdbb1293600/68747470733a2f2f692e696d6775722e636f6d2f744c7846584c6e2e706e67

    More information on Reddit

    Work so far: 6 days

    Realistically more like 10 days due to #2257 :-P.

    QML-XMR development

    qml-xmr helps me create/design QML components. I updated it to dynamically generate the Qt Resource file (qrc) at runtime. This allows references to static assets via qrc:/// to work.

    Work so far: 5 days

    Misc. dev

    • Include icon for xdg menu entry #2292
    • Expose get/set attrs for wallet cache in libwalletqt #2175 / #5534
    • Code some code (almost) ready for #2043 - Work so far: 1 day
    • I visited an active GUI contributor and we worked on qml-xmr and the UX for multiple tx in real life. Was fun. Will not bill.

    For milestone #2

    • Finish I2P/Tor support
    • Rewrite modals and popups (as specified in CCS)
    • Support database pruning (as specified in CCS)
    • Go through the issues by Realchacal

    I've been generous with registering hours, actual time is probably more. My CCS was for 32 hours * 4 a month, which brings 128 hours. I currently count 180~ hours. But that's fine.

    Up to the next milestone.

    Edited by dsc
Please register or sign in to reply
Loading