monomonodevelopmonomacxamarin.mac

Is MonoMac deprecated?


The page for MonoMac seems to be abandoned. It seems to be last-updated a few years ago, because it says "Mountain Lion" is the "new" operating system.

New Lion and Mountain Lion APIs for AppKit

And MonoMac is under "Unsupported" in the Xamarin Studio (I wanted to download Mono Develop, but the page automatically was redirected to Xamarin Studio).

So is MonoMac deprecated or is it still actively being developed along with Xamarin.Mac?


Solution

  • The difference is not well communicated; they don't even do a great job themselves on the forums. And MonoMac wasn't particularly active last year.

    But the quick answer is that MonoMac lives. "Unsupported" just means you haven't purchased a Xamarin license, so don't expect Xamarin customer support to help out when something breaks. But you were already in that boat before Xamarin.Mac showed up.

    Note that Mono qua open source runtime is still very much in active development. You can also still download MonoDevelop for Linux, for example, which sort of mimics where MonoMac was before Xamarin starting selling licenses. MonoDevelop itself is still pretty active, with checkins as recently as 13 days ago as of this writing. So Mono is still alive, and is, in fact, a subset of all of Xamarin's programming products.

    The two differences of Mono-on-Mac is that you can use use MonoMac's AppKit, etc, assemblies and the active version of Xamarin Studio to develop on Mac rather than be stuck with, say, Gtk# and MonoDevelop. Those are Very Good Things.

    MonoMac is sort of the equivalent of a Xamarin "Starter" version for Xamarin.Mac.

    But it's better. The "Starter Version" of Xamarin's other two supported platforms -- Xamarin.iOS and Xamarin.Android -- have "build limits", which limit how big an app (including linking) you can build before you're required to buy a license. Not so with MonoMac. So MonoMac-via-Xamarin Studio is a sort of "Starter Version on steroids". On MonoMac, you can make just as large an app as you want and release it into the wild.

    The problem? MonoMac projects essentially assume that your user has the Mono runtime installed on their Mac, and will be opening your assembly via the mono command on the command line -- just like you had to do with "old" MonoMac. That's not real smooth if you wanted to target conventional end users. You could use BockBuild to help do something similar to Xamarin.Mac's app bundling without a license (that's how BockBuild is used by Banshee, anyhow) to make self-contained app bundles, but I'm not sure how general purpose BockBuild is yet.

    However... In the other two "Starter" versions, you do get a nice, ready-to-deploy app bundle. That is, if you've paid your $99 to Apple to be an Apple Developer and make a small Xamarin.iOS app on Starter, you can deploy that app to the iOS App Store immediately without paying for a Xamarin.iOS license. So, in this sense, MonoMac is worse than a Starter version elsewhere.

    Historical speculation (my mind's a little fuzzy on this): It was right about the time that the MonoMac Packager showed up that Xamarin.Mac was released and MonoMac via MonoDevelop "died". Folks did release MonoMac apps onto the Mac App Store (iirc), but Xamarin would rather you buy a license to do that today, and the open source (?) MonoMac Packager's support did die, swallowed by Xamarin.Mac. I believe the gist is that Xamarin understands that they got their start with the open source MonoMac, and if they stopped supporting Mac development (that is, if they reduced its usefulness from our pre-Xamarin expectations), there'd be some pushback.

    EDIT: A few more historical links. Cocoa#, which was released in 2004 and continued development until 2008, predated and, Miguel says, informed the creation of MonoMac. CocoaSharp was also released with Mono for a while. I know I've conflated MonoMac & Cocoa# in my head at times. MonoMac seems to have been born around 2010, after MonoTouch.

    It's awfully nice of Xamarin to let us keep MonoMac-ing in their newest Xamarin Studio, and to continue benefitting from the upgrades they perform to the core Mac featureset.

    So Xamarin.Mac is built on top of MonoMac, and it can't help but be supported in a sense. The only question is how long Xamarin lets us use the "unsupported" MonoMac project to build as large an app as we want, and not replace MonoMac with a "Starter" version that's similar to X.iOS and X.Android. I hope they'll continue to do the right thing and not take away the ability that the original open source Mono community gave us: For anyone to build full-featured apps with native Mac UIs with C#.

    This feels a little rambling, but I hope it's helped. MonoMac exists, and Xamarin.Mac is a superset of it. Again, the big advantage of buying Xamarin.Mac is the app bundling, but there also a few extra assemblies (James lists some below: "GameKit, StoreKit etc..") and, as James also points out, 64-bit support. Xamarin doesn't do a great job marketing these benefits.

    The bottom line for your question is, however, that you shouldn't feel like MonoMac is a second-class citizen. You're actually in a pretty good spot right now to build as complex a Mac-native[ish] app as you'd like.