Unifying the two repos will mean that we will have less code to maintain and it will be easier to develop features for desktop and mobile. Giving the fact that now we have two repositories, EVM and BTC support is only available for mobile. Further more, if I want to create multi-wallet support, without a common repo, then I will have to develop for mobile, and then for desktop.
The end users will profit by having a wider selection of features available and block chains. I do understand that end users don’t care about code bases, and maybe I have put to much focus on the code aspects, and didn’t quite explain what the users gain.
In just a few works: the desktop users will have EVM, BTC, local authentication, secure storage, WebView and much more smaller features. For example, I want to use Dart isolates so that the UI won’t freeze anymore when you enter your password to access the application. I also want to fix the problem with preserving state across tabs: now you enter an amount in the Transfer Tab, navigate quickly to the Settings Tab to copy an address, and the amount in the Transfer tab is gone.
Here is in more details what I want to do on the development side:
- refactor the code according to the bloc architecture - Architecture | Bloc - and essential step in creating a modular code base with business logic components that can also be consumed by the mobile app
- replace Hive library with drift, as Hive was replaced by Isar, but Isar itself had it’s last update 17 months ago
- audit the current packages that we use: those that are not constantly updated should be replaced by other ones, or check if they can be replaced by features from the Flutter SDK; if not, build the functionality that the library offers myself, if it makes sense in terms of time and effort; this is an important task because, as other developers have noticed, an outdated library can block you from upgrading the Flutter version that the project uses
- create flavors for apps (prod, test, dev) so that when testing the app, you can skip, for example, the unlocking of your wallet
- use the new Dart language features created in the last 3 years
- establish Dart analyzer rules that developers should follow
- use isolates for the UI blocking operations
- write unit tests and documentation
So I don’t think that I am just solving technical debt. I bring a change and with it improvements.
You say that there are no developers to continue working on the project. In the mean time, I offer to work full time on bringing features for the desktop app and make the entry of new developers easier, and somehow, my ideas won’t help the community. Although I have done some work for the benefit of it already.
I think a developer chooses his projects largely on the present quality of the repo. Why would a developer get involved into projects with technical debt? And will a new developer get involved without a proper documentation? Without unit tests to sustain his development?
I dare ask you myself: how is redesigning the layout help bring more developers to the project? What actual value does it brings to the present users? Or how will it bring more users?
You have to understand that I also need to be incentivized to work on this project. Development cost money, you can’t only pay for the part of development that the users sees and interacts with. That’s not how it works. Developers don’t spent all of their time coding features for users. They write documentation, tests, fix technical debt because one outdated library can block you from upgrading to a new Flutter version: and that version might bring new UI render engine, for a smoother experience, or new widgets, or a faster Dart compiler.
Regarding the asked budged: if I am not mistaken, the EVM support plus other features for the mobile app got 2 AZ projects. I propose EVM and BTC support, local authentication, secure storage, WebView , at least, for the desktop app, plus code base improvements, and 3-4 AZ projects is a lot.
You have to understand that if I deliver a product that you are satisfied with, then I should also be satisfied with what I get back. Ultimately I am willing to deliver the product, the community can analyze it and be paid what you think it’s worth it.
Regarding the second project, I will bring further details in another post. But as a developer, you should know that very often something that seems easy, takes a lot of time and effort. We don’t have the 90/90 rule for nothing in programming (Ninety–ninety rule - Wikipedia). That’s the exact reason why I asked for 3 or 4 AZ projects: some things might take more time and effort than anticipated.
I am open for collaborations, but ask yourself this: if you have a modular code base, like in the bloc library fashion, don’t you think it would be easier for some developers to work on the UI and others on the business logic?
I hope that, at least, for the first project, it’s more clear for everybody the scope of the work that I want to do.