Anonymous Open Letter to Xamarin - Please Stop Abusing Your Monopoly
I've been using Xamarin for the past half a year almost fulltime, developing an application for both iOS and Android. Everything in this letter is based on my personal experience with the technology.
First of all I'd like to point out that I really like Xamarin, it is by far the best technology on the market if you wan't to develop native apps (No I don't want to write objective-C on Android (apportable)).
That being said, I have no idea how such an incomplete and buggy software such as Xamarin Studio can be sold for actual, real money. Here's a list of things which are completely wrong and broken in the current release (January 2014), based on the runtime exceptions I get every about 10-30 minutes while working.
Syntax highlighting sometimes doesn't work. About 30% of the time when I start Xamarin Studio. It gets better the longer it runs, but when it fails it takes down autocompletion and everything with it, basically forcing me to re-open all of my tabs or even restart the whole studio. I don't understand why we can't have a working EDITOR in 2014. Syntax highlighting has been around for 30 years (says wiki) and please don't tell me that parsing a 10+ year old simple language like C# is something so difficult that it has to make the whole IDE unusable.
My solution doesn't remember which project I want to run as default. This isn't as big of an issue, but it's another thing that's just really dumb for a $1000 IDE. If I select a startup project, I expect it to be selected even after I restart the IDE, or delete a file, or add a new project.
Compiler warning show errors which actually compile. Sometimes (quite often) the editor shows unable to resolve symbol on things that are obviously correct, simple things like
var a = 3;
SH*TTON of null exceptions at runtime. Every now and then I get a nice error popup showing a null exception somewhere in Xamarin Studio. Most often this happens when I move a file, do some changes in Android UI designer or just do something non-trivial. And yes, I always restart the IDE after that, because when one exception pops up, many more are to come, so restart is mandatory here.
Save doesn't always work. This is really a funny thing. After paying so much for the license I would actually expect to get some work done, but Xamarin Studio occasionally decides to piss on my face and refuses to save a file with an exception popup. Cute, but at least I can copy the contents somewhere else, restart Xamarin and paste the code. It's annoying but nothing compared to the next problem.
Undo doesn't always work. This is the kind of bug that really makes me wanna drive up to the Xamarin offices with a sledgehammer and smash things. When I first saw this I laughed, but after it caused me to lose a lot of work I'm constantly in a what if I can't undo this change mode. This almost always happens when you try to move views around in the UI designer for Android. You know what the best part is? Read on the next problem
Android UI designer sometimes decides to F*CK up the whole design. Xamarin likes to do this when I've spent a lot of time tweaking some complicated layout. When I drag&drop a view into a different place in the hierarchy it just goes bananas and completely breaks the whole screen. Then I'm like let's just undo that ... oh crap, undo doesn't work, and I can't even save the file ... this happened to me more than once, and it really makes me feel that the whole software industry is a complete failure.
Xamarin sometimes decides to delete random files from a project. This happened to me three times over the past two days. I open a .xib file, Xamarin throws some null exception or some other array index out of bounds nonsense, and then half of my project files disappear (mostly .png and .xib). They're still on the drive, but they're not in the project, so they have to be manually added again (yes I've looked into the actual .csproj file with a diff and yes they were gone). The best part about this? Running a broken project likes this with missing assets still works on iOS, even though the files are not referenced anywhere. Some magical power just makes it work, but the iOS simulator says no bro, you're missing some files, go fix your app.
I could go on like this for quite some time, but I guess you get the point by now.
That being said, I still enjoy using Xamarin, but not because of Xamarin Studio. What I'm doing now could only be described as fear driven development. Fear of what will break next, because
Right now there's a new build (4.3) on the alpha channel which features the brand new iOS designer ... wooo flashy ... but who the !@#$ cares? The last version was already completely broken beyond a really simple UI with 2 buttons, and the Xamarin Studio is buggy as hell as it is, so why do you keep adding new things which just bring more bugs?
I'd really like to know what the priority list is at Xamarin, because it seems that Cool Thing To Demo is way up high, and Working software is hiding down in the corner where nobody sees it. I just hope that someone at Xamarin is actually reading the error reports that Xamarin Studio generates.
Does anyone there actually use Xamarin Studio, or is it just something you guys sell and never try yourself? Throwing exceptions on Undo/Save is something no editor should ever do, period. Please stop adding new features and go fix some bugs. There are hundreds of them just in the UI of the editor.