Gulden: New Android wallet released
Article by the Gulden development team:
The Gulden development team is extremely pleased to announce the release of our new Android app.
The new app is a massive improvement over the previous one, and features: Much faster initial network synchronization and recovery from phrase/link; enhanced address privacy; lower battery consumption; reduced bandwidth usage; along with dozens of other drastic improvements.
However, as exciting as the release of the app itself is. For us, this is a milestone not just because of the great new app but also because it is the first of our apps to utilize our new unified backend (codenamed Unity) that we have been working very hard on ever since the community selected it as our priority project last year.
Not just an update this is a completely new app written 100% fresh from the ground up and not based on any prior code or project. Its design takes into account the experiences and lessons learned from the old app but leaving all the old baggage behind.
It is almost entirely written in Kotlin, taking advantage of better and more modern libraries and development practices for Android.
The new app is written (measured using the CLOC tool) in only roughly 4840 lines of Kotlin and 146 lines of Java on the frontend and despite this managed to replace and surpass in functionality the old app which had over 15076 lines of Java on the frontend and an additional 79855 lines of Java on the backend.
The backend is written in C++17 and the codebase is shared with the desktop, and in future iOS wallets; it enjoys better unit testing coverage as well as increased developer scrutiny than the old library as a result and will also be easier to keep updated.
Compared to its predecessor the new app has only 5% of the code to maintain and keep updated, this is a massive improvement. The core code will see increased focus and attention as it is used more, and features from each will be more readily available to one another allowing for new opportunities to improve both.
The end result is a codebase that is much cleaner, leaner, faster, and with fewer bugs. Most importantly it means that we can roll out future developments much faster than we have in the past, implementing them in only one backend and language, instead of multiple backends across every platform we support.
This also paves the way for opportunities to support new platforms in the future, with a much faster turn around time and lower upfront effort.
While this is a hugely exciting step for us, it is only the first release for the Android app. It will, no doubt, continue to see further work, improvements, and updates on a frequent basis.
Staged rollout
We have a large quantity of Android users and we want the upgrade experience to be as smooth as possible for everybody, due to this the new app will not be immediately available to all users upon release but will become gradually available over the course of the coming days.
The new app will be made randomly available to a small percentage of users at first, we will monitor play store statistics and reports as these users upgrade and once they have upgraded without incident we will increase the rollout coverage to a larger group until all users are upgraded.
Users of the existing wallet will have to perform a simple upgrade process when they first launch the new app, which should take a few minutes or slightly more depending on the age of the wallet and how many transactions it contains. Please contact support in the unlikely event you run into any issues, we want to make our apps the best they can possibly be and we can only do this with your feedback.
The road ahead
Going forward we will now be able to put out android releases much more frequently, which should be a massive improvement for our user base.
Our main focus will now shift to moving the iOS app onto the unified backed, as well as Desktop builds incorporating the same. In doing so the Desktop and Android clients will benefit from any backend improvements made during iOS development and vice-versa.
The Android work has paved the way, and doing the same for iOS and Desktop will, therefore, be substantially less work. A lot of which has already been done in parallel during the Android development.
Once all our apps are using the same shared unified backend, we will be pushing to release “Phase 4” of witnessing, as soon as possible.
Most of the code for this is already complete, having been developed and tested along with the rest of the witnessing codebase in previous years.
There are some final tweaks necessary and testing to perform, particularly mobile compatibility. With all mobile apps on Unity, ensuring they are compatible will be easier to achieve, and with less effort than would have been necessary when all codebases were separate.
Following the launch of “Phase 4”, the team has a list of exciting developments that we are yearning to get started on.
These will be smaller, in terms of work, than the recent massive projects we have undertaken, yet just as if not more exciting in terms of user-facing impact.
With a stable solid unified code base to build on, development will be much easier than it would have been, without this difficult but necessary groundwork.
2019 is shaping up to be a very interesting year for the project.