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