I'm fascinated by F# and it's potential for mobile development on iOS and Android.
My company creates niche puzzle apps for iOS and Android (Play & Amazon). Currently we use the Java-based
libGDX framework (essentially an OpenGL wrapper), but I'm looking ahead to something more maintainable and are really drawn to the F# language and Xamarin cross-platform support & ecosystem.
Am I too early?
Looking around, I found proof that it's possible, but few examples that had all the pieces needed. Having been through this, I know the devil is in the details, and the details include:
- phone-sized / tablet screen size detection, rotation detection, pixel density
- can display rich text on an area of the screen (e.g. for an on-screen html-based help file, or markdown or similar)
- can read data files from the app's assets, can write and read new status files
- works reliably with the OS-provided pop-up keyboard to capture user input
- has event reporting and stack crash logging to a 3rd party service, e.g. Splunk > Mint
- can communicate with an http[s] web server to fetch and post a file in the background
- has in-app purchase support for at least non-consumables, with price display (including Amazon IAP)
- integrates Facebook enough to:
- allow integrated login if the user has FB on their device
- trigger the FB "invite a friend" overlay
- has some native UI (e.g. navbar with iOS back & corresponding Android back-arrow support)
- supports a "graphic screen area" where something like OpenGL can be used
- mostly core/shared code
Does anything jump out as "
He's dreaming!" ? Or stupid or wrong? (We could easily get sidetracked into a discussion about "how much should be native?". I'll try and sidestep that by noting that in my current apps, about 99.5% of the code is shared between iOS & Andoid. I've recreated some basic elements like navbars, dialog boxes & similar and draw them on the OpenGL window. Fonts create some memory management issues, but apart from that it all works well enough, because they're game-like apps and can get away with not being purely native).
I'll happily spend some company money to build a "template app" that does these things, and then place it into the public domain (or MIT license or similar) for others to use and improve. (
Although I've been programming on and off for 30 years in multiple languages, I haven't used F# yet, nor done any serious coding in a functional language, so I need a running start to keep the timeframe reasonable!) Experience suggests that tooling/integration/similar issues will be at least 50-80% of the battle, not the code itself. (Looking at
the survey
I'm a little scared that so few people are using OSX - it's effectively
impossible to do iOS development without that. And how are 20% running
Macs but 85% running VS2012+? But I digress, and libGDX has some of the
same problems).
I'd like to know if:
- this sounds feasible yet, or if I'm too early
- if this is interesting to others in the F# community (or perhaps mobile is swimming upstream in the F# river)
- someone is interested in building this as a paid task
Thanks in advance for your patience with this Noob!
cheers, Michael @ EggheadGames.com