In general, many of the Objective-C APIs use the untyped NSDictionary to configure various parameters of the API.

There are 475 public APIs in the iOS API that expose NSDictionary as either return values, or parameters. The keys and the values for these configuration parameters usually require a trip to the documentation.

Getting the key wrong will make your software not run. Getting the value of the type wrong might or might not work. It really depends, you can search bug databases and stackoverflow for examples of both typos causing unexpected behavior in your application.

You are correct, MonoTouch and MonoDroid are 400 USD each. No need to wonder anymore!

As for Unity, it is a great platform, very mature and a million developers have adopted it as their platform of choice. Unity is powered by the same Mono engine that powers MonoTouch and Mono for Android.

Use the tool that is most appropriate for your needs. For instance, Microsoft recently published the iPhone Kinectimals game on the Apple AppStore and it was powered by Unity3D. Not surprising, since at least 10% of the top sellers on the Apple AppStore are powered by Unity3D.

It is also worth pointing out that MonoGame enjoys now a very active and vibrant community. They usually hang out on the IRC server at irc.gnome.org on the channel #monogame.

In the last couple of months they added the MacOS binding (using MonoMac, our projection to the MacOS APIs) and Android port. They are now busy adding 3D features to the APIs.

The MonoGame foundation was also used to build Bastion, a game that runs natively on your browser using the Google NativeClient technology which brought the game at once to Mac, Linux and Windows running on a safe sandbox.

The open source community is a very large community, and you can not paint everyone with the same brush. We all come from different backgrounds we just happen to like a license that allows us to use, distribute, modify and redistribute modified copies of
the code (the four basic freedoms of free/open source software).

Other than that, the community has as many opinions as any other community and you will find lots of different view points.

Hahaha. Ever heard of a "job"? It's something that happens in the grown-up world a lot... well, maybe not all the time in opensource.

You get too busy to be looking over your rival's shoulders all the time. Which is good, because you want to stay focused. If they come up with some groundbreaking technolo\gy, sure, but this man's busy implementing a standard that's already set in stone.

And until Novell proposes business to Microsoft one way or another (other than just having their devs email Microsoft with some questions about Mono), it's just another "c\ool project" on their watch. Especially when it's constantly being tinkered with by anonymous
programmers.

I have myself spoken to a few folks in the WPF/E group; At least those that were present at the PDC, and I have emailed them in the past to look at ways of collaborating,\ it might be nice to have WPFE running on Mono, but I have no idea what that thing looks
like internally.

Also, as a matter of perception, the code is "tinkered with by anonymous programmers" in the same way that Microsoft developers are anonymous programmers. I have the fee\ling that you were trying to imply that any random person in the Internet can commit
code to Mono, and if that was what you intended to say, you are wrong.

Contributors to Mono follow a model similar to the Linux kernel: there is a maintainer at the top, and various subsystems are maintained by different developers. It is a \pyramid of sorts where trust is delegated. For instance, I trust Paolo Molaro and Zoltan
Varga with all VM changes; Martin Baulig for the Debugger; Peter for Windows.\Forms; Segan for ADO.NET; Hari for C#; Gonzalo for ASP.NET; Lluis for MonoDevelop and so on. Each one in turn has contributors which are responsible for different part\s of
the system. And if there is no maintainer for a piece, am the "default" fallback.

If that's silly, then the fact that DotGNU and Mono ignore
Rotor (which by the way, version 1.1 ran on FreeBSD and reportedly OSX as well) is just as silly. Why did
they reinvent the wheel?

Bummer, this thing lost my previous edits.

If Rotor were licensed under the proper terms (allowing the use of Rotor for commercial use) there would have been no need for Mono, but alas the license of Rotor only allowed its use for research and educational purposes.

When we wrote Mono, our intention was to use the technology to implement software that could be distributed with existing Linux distributions, and for this it is important that the rights to use, modify, distribute and redistribute the software for any purposes
(commercial included) and without any discrimination be allowed. These rights are at the core of what it means to be open source. Hence Mono, and hence the licenses that Mono utilizes.

In addition, Mono provides a number of class libraries that are not part of Rotor (ASP.NET, ADO.NET and Windows.Forms, the last one still in beta). Miguel.