[bisq-network/proposals] Develop a fully featured cross-platform graphical user interface to the Bisq network supporting mobile, desktop, and web clients (#342)

thunderbiscuit notifications at github.com
Wed Sep 29 05:23:13 CEST 2021


Hello everyone.

It's my first time commenting on a Bisq repository and I'm just getting familiar with the project so take my thoughts with a grain of salt. I just saw the call on twitter to provide feedback and thought I might contribute with some of my expertise/experience with mobile.

### Kotlin Multiplatform
I think Kotlin Multiplatform is becoming more and more a valid option for production, but it's still fairly early (relative to say React Native) in terms of maturity of the libraries, particularly if you want to target desktop with Kotlin Native (although I assume in this case desktop is covered), so you can expect a few bumps in the road. That being said, I do think it is growing at neck-breaking speeds and it's going to take away major market share for cross-platform development from React Native over the coming years (and certainly make Flutter/Dart look like a not-so-hot option in comparison). Kotlin is straight fire, and the only additional requirement for mobile is that a team builds a thin UI layer for iOS. This is not so different from React Native, where more often than not teams end up having to play with the native code of each platform to make required optimisations on all but the most basic of apps. Kotlin also can target JS/web, although I do not have experience with that and don't know how much of the code you could reuse from the mobile side of things.

### Libraries
As noted above, the ACINQ team uses KMM and has a [full bitcoin library for KMM](https://github.com/ACINQ/bitcoin-kmp). I have not used it but it looks like it would cover all your bases. Given how integrated with the JVM and BitcoinJ Bisq is, however, I assume there would be growing pains associated with using a different library. But of course this is not mitigated by developing using React Native either, so if you want cross-platform you're stuck with using something else anyway.

### React Native
React Native is a mature project, and many apps are built using it. It might not be purely native but I do think that in most cases it would be hard to tell from the user point of view. I also assume you could find more devs that know RN than Kotlin Multiplatform at this point. You also won't need to find someone to write the UI layer in Swift if you go the RN route. But it's a full departure from the JVM and I see that the Bisq ecosystem is built around that, so that should be taken into consideration. 

### IMO
My overall very humble take on this would be:
1. If you want to quickly iterate, React Native is probably ready to go, libraries and all, and if you can find a few devs that know it you'll be up and running quickly. I think RN might also allow for easier estimation of timelines. There is always a JS dev around, so it can also be easier to get fixes PR'd and merged.
2. If you're ok with playing the longer game, however, I think Kotlin multiplatform mobile and Kotlin Native is the way things are going, and would be my recommendation. You'll build truely native apps, and stay closer to the ecosystem Bisq is in. One of the small hurdles to consider is that the optimal architectures for KMM apps are somewhat different than just pure Android (because you're trying to build as much as possible in Kotlin, to leave only the thinnest of codebases for the iOS UI), and so even an experienced Android dev will need some adjustments to write a KMM app well (nothing crazy, just something to consider).

Finally, I would echo what has been said above and say that the amount of work required for this sort of thing should not be underestimated.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/bisq-network/proposals/issues/342#issuecomment-929795705
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.bisq.network/pipermail/bisq-github/attachments/20210928/49b369f2/attachment.htm>


More information about the bisq-github mailing list