I have mixed feeling about this. I have a current Mono for Android Profession subscription and use the Visual Studio integration a lot. My subscription is due for renewal next month and if I want to continue to use VS with Xamarin 2.0 then I have to renew at the Business edition level. I paid for my sub out of my own pocket because I liked the technology so much, but $399 for the pro version last year was a stretch and I just can't justify $1k to renew. Xamarin Studio might be superb, but I've been using VS since 1995 and I really don't need to learn another new IDE right now.
Any comments from Miguel or anyone from Xamarin?
That said, the Indie edition is something that a lot or people were asking for and the price is attractive. The components look good too. I think its going to be a big success.
Edit: See Nat Friedman's response below . Existing Pro subscribers are automatically upgraded to Business and can renew at their existing renewal price. This is described in the FAQ  which I didn't read far enough down.
I am in the same boat but starting to recognize that the free train of tooling is a ploy of platform vendors trying to pull us in to working in their area. Microsoft can afford to do this because they extract major value on the back end when we target windows with apps.
A cross platform, non-allied company like Xamarin doesn't benefit from that back door revenue as they make no money from my app.
It is a tough bill to swallow but the problem seems to be our perspective, free wasn't always free. $399 was a young company trying to gain traction with a small team and if we want bigger, faster, stronger then it costs.
Sucks, but after 10+ years of consulting in the Windows space I realize that cross-plat mobile is my next 10 years and in that light, 1K is not that bad.
Then apparently the new pricing model is much more expensive to start with, since there is no longer discounts for renewals. Just to compare apples with apples, here is the difference in pricing:-
old: 999 first time and 599 for upgrades for "enterprise", 399 first and 249 for upgrades for "professional" and company with 10 or less people;
new: flat rate 999 for any companies (2+ people) and 299 (only for single person)
Sorry this may sound bitchy , I just don't like price-ups as I live in a location where inflation is killing me (and the salary is like half of what US rates are so software are twice as expensive in that thinking).
I am not against price ups and it's always better to be an early customer, but one a longer run, new customers (or existing customers as well if they don't get the upgrade price after the first renewal) is definitely paying more. That greatly affects small businesses because they can no longer use lower tier one just to get the juices with cross-platform joy on a more affordable rate.
As much as the store page confused me, so you can't use the product after the end of your subscription (that is, the license is NOT perpetual)? I mean, would you be able to compile or release anything after the expiration of your current subscription?
Pricing changes have positives and some potential major negatives - In my eyes the "pay money to get started" approach served as a nice filter against pathological customers/mechanism to balance signal to noise. The introduction of a free tier generates mixed feelings within. Xamarin please, please don't allow the inevitable eternal september that will follow to become a distraction.
Seen it happen it happen a few times - forums/support become overrun with noise and the companies were inadequately prepared staffing wise for the eternal september, with staff unable to keep up the resulting quality of product/support dropped considerably.
From a different perspective the introduction of a free their now makes the toolchain available to those whom could not possibly pay for it - students and countries with weaker purchasing power. (where $xxxUSD is equates to x months/a years wage)
Periodic reminder to the Linux and free software community of the damage they made with their ideology wars against the Mono environment. Mono is now the most popular game and one of the most popular app development environments. :-)
Kudos to Miguel and the rest of the Xamarin team, the update looks amazing.
Ubuntu removed Tomboy from their default install due to Mono dependency. Tomboy is still a well used and liked application on Linux desktops. Just one example of many great apps "killed" that I am most familiar with.
Well, given that Xamarin doesn't seem to support Linux for their newest IDEs it's especially a shame. I'd prefer .NET/Mono over Java (and i'd prefer python and C over .NET), but it doesn't look like there's support for that..
Last time i tried to get MonoDevelop with those Android tools to check out cross-platform app development with Mono and it's a no-go. Now Xamarin Studio appears to be Mac and Windows only. Very disappointing!
I have been working with the beta and am extremely pleased. I think people will get very excited over the VS integration for iOS but I think the component store is going to be one of the big winners here.
The MonoDevelop rewrite (Xamarin Studio) also has a clean, fresh and fast feel to it. I cannot say that X is empirically faster or better but the experience does feel better overall.
I think they are heading in the right direction here and the holy grail for breaking strongly into the enterprise may be the ability to build for iOS without the need for a Mac. It is not there yet but you can see the direction they are going and how that will likely come to pass at some point.
Haskell books will certainly not hurt. You won't need monads right away and you won't feel lacking certain Haskell powers if you don't read RWH right away, but in the long run, it will make F# more enjoyable. Of course OCaml books, ML books, and Clojure books will always help too, as will Scala ones.
Seems awesome. I wonder how they made it possible to have an iOS simulator in their Visual Studio plug-in. Apparently it will be possible to develop native iOS / Android apps written in C# from Visual Studio and I'm guessing from Windows.
I have much respect for Miguel and the other guys at Xamarin. They work on some great stuff, I think C# has a great future for mobile development because of all the work these guys have done.
Our new Business edition, at $999, now includes iOS support for Visual Studio developers.
I guess you will be able to use a device from Windows, or something like that. Otherwise it won't make sense to provide iOS support for VS.
Correction - you will need a Mac for the final build of the product. VS will connect through network to this Mac ... Not sure if it makes more sense to just use VS as a glorified C# editor. I suppose if you are a hard core VS user it will be easier to do your development from VS.
Using VS would be a huge plus. You don't have to buy a bunch of pricey macs, just 1. You don't have to retrain C# coders to use a Mac. You can use ReSharper! You can open two code windows side by side, something monodevelop cannot do (not sure about Xamarin Studio as I am still waiting on the download). VS integration with Team Foundation is much better than git-tf, so if your company is already using Team Foundation you can tack on iOS development/ports with out much trouble. There are a lot of reasons it makes sense.
I think some of the animation stuff is probably the cause of the lag on the mini you are seeing. I'm pretty sure we've already got a patch for this, it just wasn't in time for the final Xamarin Studio 4.0 build.
PCL's are coming. An upcoming Xamarin Studio 4.0.1 will improve PCL support even more - as in, it'll work on Mac, but it won't build true-PCL libraries (it'll link with the Xamarin.iOS or Xamarin.Android BCLs instead of with the true PCL assemblies).
I'm curious how it integrates Mono runtime into a "native ARM executable". The whole runtime must be really big. When building the App, does it only integrates the parts required to support the App, or does it integrate all?
The other question is that, when running on iOS, is it the .NET IL running on top of the runtime, or C# code is compiled into native binary code that can be directly executed on CPU? I'm trying to figure out if there's something like a micro VM running.
As an indie developer who recently bought the full priced package so that he could start testing on real devices: argh. As a developer that knows C# and wants to make iOS apps: awesome.
I haven't had a chance to download it and try it out yet, but Xamarin Studio looks amazing. I've long thought that MonoDevelop has a very solid core but little polish- it looks like Studio adds that polish.
"Customers that purchased within the past 90 days may request a partial refund for the price difference between their purchase price and Indie. If you choose to make this downgrade, you will lose access to many great Xamarin Business features you already enjoy, including Visual Studio and email-based support."
I just bought a license a few months ago. I'd rather keep the business license and the old renewal cost as well over a refund. It would be silly not to with the additional features if one wishes to keep using C# for long term cross-platform development.
This looks amazing. I think in many ways Xamarin has out-done Microsoft here. I'm not sure if Xamarin Studio is more featureful than Visual Studio (VS went over the "overly complex" hill for me after 6.x), but it looks a lot cleaner and easier to get into.
Anyone know if debugging C/C++ code on Mac is still unsupported as it is in MonoDevelop 3.0?
I'm surprised you have that opinion on VS.. the addition of easy add-on installs and nuget packages in 2010-2012 are pretty nice. I found the VS6 UI's decent, but since I do most of my work in web based apps, it never cut it there. These days about half my time is in VS/C# and the other half in WebStorm/NodeJS. I also think web apps have a lot of milage and in some cases more to offer depending on what you are wanting to accomplish.
I am glad that Xamarin has a viable business model, and wish them all the success in the world.
I've mostly worked on the server side of things for the last few years but last year I decided to dip into mobile. I felt disappointed after trying MonoDevelop as I found a lot of the things I had really appreciated in server development missing or inadequate. Things like a proper package manager and easy integration with CI servers. I just got NuGet to work last month, after trying it infrequently over a couple of months. xbuild, I never got to work properly, sure I was able to run unit tests inside MonoDevelop but my expectations were a bit higher.
Meanwhile, over in Javaville, I can do just about anything Android related my heart desires with Maven and even CocoaPods in its infancy was a better experience than NuGet. Just my 2 cents.
While C# looks like a great language, and I'm looking forward to playing with this, does Xamarin really allow you to share that much code between platforms?
In my experience, 75% of my mobile app code tends to be either working with platform-specific APIs or just quite trivial. Is the potential for code reuse high enough to justify the extra layer of stuff to understand (and potentially break)?
Edit: I can see how being able to use C# is a plus for some people, I guess I'm just slightly skeptical of the cross-platform selling point.
Ahh, hard stats vs. gut instinct. That's interesting, thanks. I'd still be concerned that dealing with the differences between native APIs may take up an amount of time not reflected by a LOC count, but I'm more tempted to give it a try...
I am a bit ambivalent - on one side, as I think about new product ideas that will naturally be multiplaform, something like this is very appealing in theory, but my experience tells me that the lowest-common-denominator approach has almost always failed.
I wonder how folks are thinking about that problem - i.e., if you are starting a new app from scratch - even if you are doing iOS only initially - do you go objective-c or xamarin/c# ?
We do not actually provide a lowest-common-denominator.
It is simpler to think of Xamarin as providing you with:
* C# language on iOS, Android, Mac
* 1:1 API bindings to whatever is native on a given platform. On iOS, the CocoaTouch APIs, on Android, the Android APIs, on Mac the Cocoa/CoreFoundation-based APIs.
From this basic setup, you can already see that you wont get code that will run on all platforms. You will need to split your code into cross-platform code (database access, web services, xml, json parsing, offline caches, authentication) and things that are UI-specific (Android activities, Android widgets, iOS View Controllers, and so on).
>You can't treat Xamarin as one... e.g. you can't write a simple calculator UI in a cross-platform way - You would have to code the UI part separately for iOS and Android.
Yes, but they do offer a "base" abstraction layer besides the C# libraries, that includes stuff like GPS access, accelerometers, etc.
As for the UI part, one could use a Webkit View as the view, and link the various heavy actions to C# code. For something like a common denominator UI, for a simple calculator or some form based stuff, it would be perfectly fine.
I see. In your experience, do people end up complementing the platform-specific C# UI code with native (e.g., objectiveC) pieces?
My worry is there are so many nuances in building a rich UI app - that even searching/finding samples online for specific things will make me want to have native/objectiveC elements into it - as opposed to trying to hack the sample in C#. I just want to copy and paste!
How does that native-C# binding happen? Is it user friendly? Is it your expectation that most folks out there will have this duality? (if not most of the UI code being native?)
I am literally sitting on a new idea that will be multi platform by nature and am wondering all these things as we speak here.
In my experience, all the code is written in C#. The only time when folks use Objective-C is when they are bringing some existing library they found on GitHub to their project. And even in those cases, they dont actually write Objective-C, they just use the library.
In my experience, copy-paste development is seldom a recipe for creating high-quality applications. So I do not think you should be worried about not being able to cut and paste code, you will be better off understanding what the code is doing and adapting your code (even if you do so in Objective-C).
As for how the C# binding happens, it is very simple.
Each Objective-C type exists with the same name in C#. You typically use intellisense to navigate the API.
For example, the Objective-C code: [foo addSubview:bar] becomes: foo.AddSubview (bar) in C#
The best thing to do is to follow our tutorials to get a taste for it.
I will let one of the Xamarin guys speak to this in detail but having built a couple apps for customers with Monotouch I can tell you that you can pull in some native objective c libs for things like richer UI. There is a method for creating a binding to a native objc libs and using it from C#. I use ATMHud, TestFlight and Flurry in one of my apps - all of which are built from bindings to the native objc libraries.
The other thing I will say is that while there are 1:1 API mappings they have also went out of their way to make some common and rigorous tasks simpler. TableViewSource is one that comes to mind, simplifies the UITableView scenarios.
I think you'll actually find that translating Objective-C snippets into C# to be trivial for the most part.
For third-party ObjC libraries, a lot of the more popular ones are already bound.
Writing your own C# bindings for ObjC isn't that difficult, but there is a learning curve involved. We're working on making improved tools to automate more of it, though. In the meantime, we've got a guy that is writing the bindings for libraries based on popular demand.
The LCD argument is false here, there is nothing that can be done in Objective C through public APIs I cannot do with C#/Xamarin. The day after iOS 6 was released, Xamarin had an update to Monotouch. The betas were available before that as well.
I think for me, having a decade plus of C# experience this was a no-brainer. Moving from building web apps to mobile on a new platform was a big shift and removing the confusion of a new language helped smooth the transition.
This is a pretty cool deal; nice to see an open-source powered company that has found a self-supporting niche.
It will be interesting to see how they strike a balance between making money and keeping things (like Mono.Mac, MonoDevelop, etc.) open... and if they are able to build a community of outside contributors around the open-source parts of their solution(s).
It would be nice to see a blog post or two on the mile-high long-term etc. goals Xamarin has for the open source aspects of their tech... or perhaps a pointer to any existing summary. As you've pointed out, Xamarin is rather quietly contributing a lot; it would be great to have a place to point the non-developers to that explained this as well.
I held out for a really long time on 10.6 but upgraded a few months ago after buying a new machine and it was a lot less painful than I'd imagined - worth a go, though, as always with OS X, a fresh install may ultimately be less painful than upgrading, even if it's time consuming.
It seems that you will now charge for Mac only development via XamerinStudio? Is that correct? At least, when I went to clarify the multi-buy discount for Indy, I saw to my utter horror that Xamarin.Mac is an included option at $299. So, what does that mean to Mac only Developers? Are we now forever restricted to a 32kb app with no third party P/Invokes too? I'm certainly not ever in 1,000,000 years ever giving you a penny for the Mac target. I think this is an extremely worrying move on Xamerin's part and if we really do have to buy a subscription to get continued support, I really do feel betrayed. I mean, come on, Apple have charged $5 for XCode for a short period for as long as it has existed. And I can open it now and create an app for free. I really don't understand this move. I'm hoping I've get the wrong idea and Miguel (et al) will correct me.
When starting out with mobile apps i always wonder if it pays off to invest heavily in something like this (i love C#) or put my money on web-tech based apps especially if looking at it mid/long term.
I know web-tech isnt there yet, but its not far off. What do you think ?
We fix the bugs, and the fixes ship on their own release cadence, when they happen to catch the next QA train.
But enterprise customers typically develop/QA against a version, and are not willing to upgrade to v.Next that contains the fix and a dozen other fixes. They want the exact version they have been using, with only the one fix applied.
We do releases fairly frequently with bug fixes for all of our products. What is meant by hot-fixes is custom builds of a specific version of a product w/ a bug fix.
For Xamarin Studio (the product I work on), I often provide bug reporters with the latest internal build with my patch for their bug no matter what subscription they have (at least for the bigger issues). It's not quite the same thing, but I suspect that'd be good enough for most people until the next official point-release.
I have not been able to determine from usage, but one of my gripes with MD - XCode was the sync logic seemed to sometimes block or get kind of slow at time and my Studio experiences have not been as bad, where changes made in this area or am I just getting lucky?
If I have a team (a "team" of me +2, don't think too big) of coders proficient in both C# and C++, what advantages would using Xamarin bring over having the common/cross-platform code in c++ (objective c++, ok...) and using the platform specific languages and tools for the UI and whatever else ends up being platform specific? (besides C# being a much nicer language, of course)
There are tons of sdks and libraries that you can use with C# / .net. To name just a small few that I have used: Stripe's .net sdk, parse.com's sdk, amazon's sdk for .net... the list goes on and on. Pull their dlls in and just use them. It makes a cinch of hooking into other services.
So does this version support building native OS-X apps, aka uses the cocoa UI elements instead of gtk# or something similar? I played with this a while back and I couldn't get the UI to look native at all, it was quite disappointing.
Our servers buckled a little bit under the load. We load-tested, but missed a piece of infrastructure in the chaos. We've since beefed up that last piece of infrastructure, and you should be all set now to use the download form at http://xamarin.com/download. If you're still having trouble, contact our support at firstname.lastname@example.org. Cheers!