Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Announcement: Native iOS Version #1333

Closed
Danielku15 opened this issue Dec 31, 2023 · 0 comments
Closed

Announcement: Native iOS Version #1333

Danielku15 opened this issue Dec 31, 2023 · 0 comments
Assignees

Comments

@Danielku15
Copy link
Member

Hello alphaTabbers.

In this post I want to describe you our reasons to suspend our plans on working on a native iOS version of alphaTab. After so much time invested, this feels like a sad decision but I hope we will benefit instead of nice features in alphaTab with the time invested differently than trying to get this solution working.

No access to a macOS and iOS development environment

As many of you know, Apple only officially supports developing on macOS for iOS. I do not own any Apple devices which would allow me to not only develop but also test alphaTab for iOS. This already makes it a challenge to provide an iOS version.

Our initial plan was to develop a version using Kotlin/Native targeting Windows and Linux to develop and test a native version of alpahTab and then target iOS rather blindly relying on the community to give feedback. Developing really an iOS UI control, integration and examples feels impossible to be done properly following that path.

The goal to target iOS via this path turned out to be way to time consuming and risky.

Complexity of Kotlin/Native

Our initial plan was to develop a version using Kotlin/Native. Kotlin Multiplatform was an experimental technology for quite a long time becoming stable only recently.

We had to wait for a lot of bugfixes over time because it was simply not usable for our needs. With the latest releases I was able to get a first Windows Native version compiled and 591/599 tests running but the general conclusion is:

  • The overall tooling in Kotlin/Native is very bad when it comes to handling dependencies (e.g. consuming alphaSkia).
  • The tests show a significantly worse performance than any other target we have.
  • The failing tests indicate some more bugs in Kotlin/Native

Compared to all other targets we have, the Native version feels very very experimental and would rather backfire than bring a real benefit to the market.

Future outlook

Even though I have invested a lot of time and energy getting that far, I think it is still a long way to get a reliable iOS version via Kotlin/Native even if we would have a macOS and iOS hardware available.

I have decided to better invest my time into developing more features for alphaTab and maybe add some other non-native targets we could support easier (e.g. Python and Go).

My hope is that .net with the NativeAOT pipeline will improve and allow us to target iOS via a .net compilation path which would need a lot less effort.

Feel free to discuss the topic further here:

#1332

@Danielku15 Danielku15 self-assigned this Dec 31, 2023
@CoderLine CoderLine locked and limited conversation to collaborators Dec 31, 2023
@Danielku15 Danielku15 pinned this issue Dec 31, 2023
@Danielku15 Danielku15 changed the title Native iOS Version Announcement: Native iOS Version Dec 31, 2023
@Danielku15 Danielku15 closed this as not planned Won't fix, can't repro, duplicate, stale Mar 10, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

1 participant