# @davidtavarez Progress Update thread (May-July 2022)

**URL:** <https://forum.grin.mw/t/davidtavarez-progress-update-thread-may-july-2022/9826>\
**Category:** Uncategorized\
**Created:** [June 8, 2022, 6:54pm UTC](https://forum.grin.mw/t/davidtavarez-progress-update-thread-may-july-2022/9826 "2022-06-08T18:54:31Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![davidtavarez](https://avatars.discourse-cdn.com/v4/letter/d/3ab097/32.png) [@davidtavarez](https://forum.grin.mw/u/davidtavarez)\
**Post date:** [June 8, 2022, 6:54pm UTC](https://forum.grin.mw/t/davidtavarez-progress-update-thread-may-july-2022/9826/1 "2022-06-08T18:54:32Z")

</div>

Hello, here’s my progress update regarding of my current [funding request](https://forum.grin.mw/t/request-for-funding-davidtavarez-may-july-2022/9740/12).

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

---

<div class="post-metadata">

**Author:** ![Anynomous](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.grin.mw/anynomous/32/2928_2.png) [@Anynomous](https://forum.grin.mw/u/Anynomous)\
**Post date:** [June 9, 2022, 11:18am UTC](https://forum.grin.mw/t/davidtavarez-progress-update-thread-may-july-2022/9826/2 "2022-06-09T11:18:24Z")

</div>

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?

---

<div class="post-metadata">

**Author:** ![davidtavarez](https://avatars.discourse-cdn.com/v4/letter/d/3ab097/32.png) [@davidtavarez](https://forum.grin.mw/u/davidtavarez)\
**Post date:** [June 9, 2022, 11:55am UTC](https://forum.grin.mw/t/davidtavarez-progress-update-thread-may-july-2022/9826/3 "2022-06-09T11:55:19Z")

</div>

> [@Anynomous](#):
>
> Do you think you will still be able to get some of them done before the end of this Funding Request?

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?

---

<div class="post-metadata">

**Author:** ![Anynomous](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.grin.mw/anynomous/32/2928_2.png) [@Anynomous](https://forum.grin.mw/u/Anynomous)\
**Post date:** [June 9, 2022, 12:15pm UTC](https://forum.grin.mw/t/davidtavarez-progress-update-thread-may-july-2022/9826/4 "2022-06-09T12:15:12Z")

</div>

> [@davidtavarez](#):
>
> 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 😉.

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?

---

<div class="post-metadata">

**Author:** ![davidtavarez](https://avatars.discourse-cdn.com/v4/letter/d/3ab097/32.png) [@davidtavarez](https://forum.grin.mw/u/davidtavarez)\
**Post date:** [June 9, 2022, 1:07pm UTC](https://forum.grin.mw/t/davidtavarez-progress-update-thread-may-july-2022/9826/5 "2022-06-09T13:07:11Z")

</div>

> [@Anynomous](#):
>
> 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.

---

<div class="post-metadata">

**Author:** ![Anynomous](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.grin.mw/anynomous/32/2928_2.png) [@Anynomous](https://forum.grin.mw/u/Anynomous)\
**Post date:** [June 9, 2022, 2:12pm UTC](https://forum.grin.mw/t/davidtavarez-progress-update-thread-may-july-2022/9826/6 "2022-06-09T14:12:06Z")

</div>

> [@davidtavarez](#):
>
> 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.

---

<div class="post-metadata">

**Author:** ![davidtavarez](https://avatars.discourse-cdn.com/v4/letter/d/3ab097/32.png) [@davidtavarez](https://forum.grin.mw/u/davidtavarez)\
**Post date:** [June 9, 2022, 2:43pm UTC](https://forum.grin.mw/t/davidtavarez-progress-update-thread-may-july-2022/9826/7 "2022-06-09T14:43:00Z")

</div>

> [@Anynomous](#):
>
> 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.

You need to check .NET MAUI:

> **[Introducing .NET MAUI - One Codebase, Many Platforms - .NET Blog](https://devblogs.microsoft.com/dotnet/introducing-dotnet-maui-one-codebase-many-platforms/)**
>
> Introducing .NET MAUI – build native applications for Android, iOS, macOS, Tizen, and Windows from a single codebase.

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.

> [@Anynomous](#):
>
> API’s of both wallet software have roughly the same functionalities.

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.

---

<div class="post-metadata">

**Author:** ![davidtavarez](https://avatars.discourse-cdn.com/v4/letter/d/3ab097/32.png) [@davidtavarez](https://forum.grin.mw/u/davidtavarez)\
**Post date:** [June 22, 2022, 10:36pm UTC](https://forum.grin.mw/t/davidtavarez-progress-update-thread-may-july-2022/9826/8 "2022-06-22T22:36:48Z")

</div>

- Continuing working on [updating the source code](https://github.com/GrinPlusPlus/GrinPlusPlusUI/pull/87) 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.

---

<div class="post-metadata">

**Author:** ![davidtavarez](https://avatars.discourse-cdn.com/v4/letter/d/3ab097/32.png) [@davidtavarez](https://forum.grin.mw/u/davidtavarez)\
**Post date:** [July 18, 2022, 6:29pm UTC](https://forum.grin.mw/t/davidtavarez-progress-update-thread-may-july-2022/9826/9 "2022-07-18T18:29:41Z")

</div>

- Added `set_tor_config` [endpoint to the API](https://github.com/GrinPlusPlus/GrinPlusPlus/pull/204) accepting TOR bridges.
  - Added support for `obs4proxy`.

- Updating and testing [PR 168](https://github.com/GrinPlusPlus/GrinPlusPlus/pull/168). A new address is generated after receiving a transaction.
- Published [Tutorial | Using the Grin Wallet API](https://grincc.github.io/grin-wallet-api-tutorial/).

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](https://docs.microsoft.com/en-us/dotnet/maui/what-is-maui).

---

<div class="post-metadata">

**Author:** ![davidtavarez](https://avatars.discourse-cdn.com/v4/letter/d/3ab097/32.png) [@davidtavarez](https://forum.grin.mw/u/davidtavarez)\
**Post date:** [July 29, 2022, 8:50pm UTC](https://forum.grin.mw/t/davidtavarez-progress-update-thread-may-july-2022/9826/10 "2022-07-29T20:50:53Z")

</div>

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