|(I have put various products in bold. If ANYONE has extensive experience with any of these, I'd be interested in comments on your experiences.)
First, some background:
I was hired to rewrite a RealBasic application. Vastly over-simplified, this is a vector drawing program which supports our cutting device and which must run on Windows and OSX. The previous job holder had decided to use C# and had written some code and did a small test with Xamarin, but hadn't gotten very far and apparently was running into problems, though since he left before I arrived, I'm not clear on what those problems were. I decided to use Qt and having been making good progress doing so.
Yesterday, I was told that the higher-ups have decided that a "lite" version for tablets, especially iPad, was my new priority. I immediately started doing some research and making calls. This is an extension of that. I am looking for real world experiences, not advice based on what someone may have read or Googled. I have narrowed things down to the following choices:
1) Continue with Qt. Pros: native C++, solid, I can do a lot of development on Windows, iOS & Android support are being added. Cons: iOS & Android support are being added and thus feedback on iOS/Android capability, performance, issues, etc. is limited, runtimes are large.
2) Switch back to C# and use Xamarin. Pros: Xamarin has a good reputation. I can do a lot of development on Windows. C# has some nice things about it. Cons: performance questions, look & feel issues, previous developer was having problems. C# has some nasty things about it--I'm quite adept at it, but still dislike the non-determinism, performance issues at critical points and how often I end up P/Invoking. Mono has gotten pretty good, but is still limited.
3) One developer suggested Unity, but it's way overkill for what we need--it's very game oriented--and while it handles some of our display issues, it doesn't help much below that.
4) Go completely native. The developer from #3, who's written games for iOS and Android suggested this. Pros: best speed, look and feel, app can be more fully optimized for the platform. Cons: portability issues may cause huge opportunity costs if sales justify going to Android. Requires me to even more "jack-of-all-trades, master of none."
5) A combination of the above (something the guy from #4 also suggested); writing as much code as possible in a common library with a shim layer (like QtCore) underneath and completely native for UI. This mitigates some of the opportunity costs from 4 at the cost of some speed and optimization. However, it may end up causing more work and end up with more #ifdefs than not.
5a) To simplify some of this, I've found a library called DragonFireSDK, which abstracts out the iOS APIs and lets you develop iOS code on Windows. Has anyone used this?
Again, I'm hoping to get feedback from developers with actual experience writing applications using these tools or alternatives. While I can get a little OCD about these kind of things, my main concern isn't as much picking the right solution but avoiding the wrong one.
* * * *
EDIT - 5/20/2014 - In the end, I found that Qt was the most mature solution with Xamarin some distance behind. Worse, licensing for Xamarin is pretty high and support seems very poor. Ironically, the entire project was scrapped in February (the original software authors decided they wanted the project back and apparently made an offer the company couldn't refuse.)
modified 21-May-14 0:34am.