WasatchPhotonics / EnlightenMobile

Open-source Android and iOS mobile client for Wasatch Photonics BLE spectrometers
1 stars 3 forks source link

Xamarin EOL May 2024 #34

Open samiebee43 opened 1 year ago

samiebee43 commented 1 year ago

In order to support beyond iOS 16 and Android 13, migrate EnlightenLite.iOS and EnlightenLite.Android from Xamarin to .NET.

https://dotnet.microsoft.com/en-us/platform/support/policy/xamarin https://learn.microsoft.com/en-us/dotnet/maui/migration/native-projects

This may require tearing down this repo and making another like it. The main thing to preserve from this repo is the file structure, image, the contents of that README, and the top-level one.

Most of the seeding philosophy is in Issue 33 of the other repo.

samiebee43 commented 1 year ago

The story of when targeting an old version of iOS and Android makes the app no longer usable is kind of obscure. It looks like with Apple, apps from up to 7 versions (7 years) ago can still work, but this can create difficulty getting into the store.

https://developer.apple.com/forums/thread/701475 https://developer.apple.com/forums/thread/723730

Android is probably more lenient--especially when using APKs as the primary means of transmitting our app. Likely targeting as low as Android 5-6 will be fine among Android phones. It's harder to be sure, because there are so many manufactures of Androids as well as multiple marketplaces.

The trouble is that business decisions can change over time. Apple has changed app store policies in the past (see second link above), so it's not a huge stretch of the imagination that being grounded to iOS 16, Android 13 may have consequences. Our own needs may change over time, being in the stores could become more important than it is now. Android may someday drop unsigned APK support on a new phone.

In any event, I wanted to rewrite this anyway, so maybe we should back up and switch to .NET 6 and get full support. As for the opportunity to consider other multiplatform mobile frameworks, this chart from https://surf.dev/flutter-vs-apache-cordova/ shows an overview. It shows the size of the developer communities over time.

image

All of the top five frameworks except for Xamarin use plugins to support BLE. Cordova, Flutter, and React-Native use plugins that are maintained outside the org of the original framework. .NET 6 is probably going to be like Xamarin in that it has mainlined native BLE support.