We recently interviewed Scott Olson of the MonoCross Project. The MonoCross Project is a framework for cross-platform mobile development. It uses a combination of .NET and Mono technologies.
In your recent blog post you mentioned that you ported client projects from .NET CF into MonoTouch. Can you describe what challenges you faced during this process? Was it merely an exercise in rewriting the UI or were there other issues you had to contend with such as file and network access?
It was mostly re-tooling the UI, but there were some challenges in what could be referred to as utility functions, (i.e. file access, encryption, serialization, threading). We found that the implementations varied from one platform to the next. This mismatch required some additional abstraction.
For non-UI code do you find .NET/Mono to be a suitable abstraction layer on its own? Or do you find yourself having to build additional libraries to account for the differences in the underlying architecture?
For the most part, yes. As mentioned above there were some challenges in implementing basic OS utility functions that required the insertion of an abstraction layer to facilitate those actions. We simple defined an interface for each of those functions, and implemented them accordingly for each platform. This enabled the OS functions to be called from the shared application, with the utility libraries for each platform taking care of the lower level stuff.
There were a few challenges with .NET libraries and classes that were supported in Mono, but they all had viable workarounds using different techniques. We found Mono to be very close to what MSFT implements in Silverlight -- so if something worked in Silverlight, chances are it worked in Mono.
For your .NET CF applications, did you it easier to port to the code MonoTouch, Mono for Android, or Silverlight for Windows Phone 7?
They all required about the same effort, mostly because it was predominantly UI re-work. Many of the CF modules that existed behind the UI could be ported with only a small additional effort.
Besides yourself is there anyone else specifically working on the MonoCross project?
Yes: Myself, Ben Horgen, Kenny Goers and John Hunter are currently owners of the project. The four of us are planning a book about our experiences -- which will cover the development and usage of MonoCross in more detail. We also have several contributors in addition to the four of us who provide valuable insight and code.
How many applications would you say currently use MonoCross?
We've currently deployed the pattern to seven Fortune 500 organizations, with three more projects in active development at this time.
For more information on MonoCross see their whitepaper or download the source code.