Friday, June 21, 2013

Android Port: Begging for Money

I'm getting a lot of queries about an Android port.  Just to recap, I make the WhirlyGlobe-Maply toolkit, an open source 3D interactive globe and map display toolkit for iPad and iPhone.

Globe                            3D Map                         2D Map
Most of the development I do is incremental.  If I add, say, font based text rendering it doesn't cost all that much and one client can pay for it.  Everyone else gets the benefit and that's how open source works.

The Money


Some things are just too big for that model.  An Android port isn't like a feature request, it's big.  How big?  About $50k (USD).

Normally I'd approach this one of two ways:

  1. Do it myself.  I absorb the cost of lots of features no one really wants to pay for.
  2. Wait until a big client needs it.  Pretty likely, but could take a while.
This is just too big for the former.  Remember, I give this stuff away.  The latter will probably happen... eventually.

What if I could speed that up?

The Engineering


I've bid an Android port on several projects now and worked out the details.  Here's how it would go.

The core rendering modules of WhirlyGlobe-Maply are largely C++. We would be making heavy use of the NDK on Android to port the rendering engine.  

The first step would be to move more of the rendering modules into pure C++ on iOS. This has the virtue of being easily testable with the current toolkit.

The next step would be a direct port of the rendering engine modules to the Android NDK.  After that we would rewrite the threading and messaging logic in Java for Android as well as the various interface logic to go between Java and the rendering engine.

Lastly, we would rewrite the high level interface in Java. This would correspond to the Component level on iOS. These objects need to be native Java and function in ways Android developers expect, just as the Component on iOS is native Objective-C. 


The Appeal


A lot of companies are interested in an Android port of WhirlyGlobe-Maply.  Some are using the globe, but most want to do custom map display on both platforms.  Mine is probably the best open source toolkit for that and superior to a lot of the commercial solutions.

So, I'm talking to you guys here:
How much would you kick in for an Android port?

Drop me an email and let me know.  If I hit a certain threshold, I'll come back to you for details.