@davidtavarez Progress Update thread (May-July 2022)

Hello, here’s my progress update regarding of my current funding request .

  • I’ve been working on upgrading the UI dependencies to make use of the latest ReactJs, TypeScript and Electron.
  • Doing the proper changes so the source code can be compiled against the latest LTS Version: 16.15.1 of NodeJs.

I’m facing too many breaking changes that are making the work more boring and tedious.


Good job on getting all the tedious but important upgrades done. Having the ability to specify preferred peers is a blessing for all the Grinners in difficult countries like China, Russia and Ukraine.

I noticed you did not appear to get around yet to most of the functionalities you wanted to add as specified by the funding request. Do you think you will still be able to get some of them done before the end of this Funding Request?

1 Like

Some do, but not all. I think the current funding mode is not a good fit because of the amount of code to maintain and the workload. Making reasonable estimates is becoming increasingly difficult. The work is not reflected in the things that need to be done to complete what was previously planned. Also switching from one language and environment is not helping. I need either more time or help.

Why the question?

It is just something I noticed in the last 2 funding requests that basically the ‘maintenance’ part is becoming increasingly time consuming. This is very logical, but indeed it might pose a problem on the long term. Time to find yourself, your own ‘David’, just like David B was very much helped with your addition to the Grin++ team :wink:.

What languages and environments do you need to switch between? Also, how much time do you work on Grin++ currently in Full Time Equivalents, is there place for more?

Weekly? Hard to say, but approximately 25 to 32 hours. In the previous three months, I could say I did at least 40 or more weekly. I’m trying to do less to avoid a burnout; I planned to do no more than 25 hours, but it is not working. It’s hard to switch off when you upgrade a package and everything breaks, which is what’s happening now.

Grin++ UI is written using TypeScript + ReactJs mostly to welcome developers. In theory it is easier to find Javascript developers than a Qt one. The downside is that the maintenance is tedious because the huge amount of dependencies and the ease with which breaking changes are introduced from one version to another, they don’t think twice.

If no developer come and take ownership of the UI code I will extend the Xamarin UI and deprecate the current. Too much code to maintain right now I just can not do it.

I think this is in the short and long term unavoidable.
Based on some quick reading I did, QT appears to me the best choice since it is apparently faster/lighter and more mature as toolbox than Xamarin, good for cross platform and free if the product is GNU licensed. Not sure if a universal GUI would be possible for both Android, Linux and Windows, but at least it would be in one language and less subjected to all these dependencies issues which sounds like a nightmare for maintenance. One reasons why we might want to wait with re-implementing the GUI is because if we switch to a ‘transaction contract’ system, we might have to rethink some of the GUI parts. So best to time rebuilding the GUI with that change.

Just a though, but would it be possible to have a universal GUI, or at least reuse code, for Grin++ and grin-rust wallet? In the end both C++ and Rust bindings are available for QT, sot it should possible if the API’s of both wallet software have roughly the same functionalities.
Not sure if they should share the same GUI, it is just a thought.

You need to check .NET MAUI:

I think Qt is popular but not the best option, between Qt, Gtk+ and wxWidgets I would prefer Gtk+ or wxWidgets. Many projects are using Qt because they are reusing code written for Bitcoin.

The Grin’s API could be reviewed, unified, and tested. I’ve been wanting to do this for a long time, but it’s not on the priority list I guess. After that it could be possible to change backend with a simple parameter on a config file. If we could find a better funding modality, I could prioritize many things like that.

  • Continuing working on updating the source code to make use of the recent packages.
  • Improved error handling from the API.
  • Fixed translations issues (Russian and Dutch).
  • Fixed node config parameters.
  • Fixed navigation issues.
  • Fixed access to some electron properties.

I won’t continue adding nothing new the Grin++ UI source code anymore which is powered by Electron + NodeJs + React + Typescript; for now on I will limit myself to only do maintenance on that repo. It is too much to keep it up with releases and packages updates. My main focus will be on the C++ repository and the C# repository. In the future, I will probably unify the Desktop UI and the Mobile UI in one single project using .NET Multi-platform App UI or .NET MAUI.

  • Added tests for set_tor_config feature.
  • Automatically reloading Tor after adding bridges.
  • Added tests for One-time use Slatepack addresses.
  • Improved Keychain derivation tests for Slatepack Addresses.
  • Added UI changes required.

The changes require further testing before merging with the master and releasing next Beta version.