
Major upgrades to Xamarin’s platform: Async is here - aespinoza
http://blog.xamarin.com/major-upgrades-to-xamarin%E2%80%99s-platform-async-is-here/
======
solomatov
Unfortunately, adoption of this great technology is limited by crippleware
license. You have to pay even for just developing applications. Of course, you
can use starter edition, but it's useless because of size limit.

The same story is repeated again and again. Tool vendors think more about
profits than about growth and adoption. Sun limited usage of server side Java
on Linux which allowed PHP to occupy linux server side niche. When it
understood that it made a mistake, it was too late. I am afraid, we will be
developing mobile applications in JS in several years' time.

~~~
cageface
The license fees are extremely reasonable for anyone doing professional
development. You'll recoup the cost in one or two days of saved work.

Where exactly do you expect them to get the funds to develop this technology
if they don't charge a reasonable fee to use it?

~~~
yulaow
Problem is, with such high fees they have discouraged the adoption of all the
students/starters/tester around the world.

Why corporation like microsoft are offering os, ides, tools and also devices
free to develop to those categories of people? 'Cause if you make them learn
maybe they will make/support the adoption of your platform in the professional
field in which they will work.

This is why Xamarin fees are nonsense. It's ok to pay high fees in the
professional field, but you must offer low fees for new entries. And not,
indie costs (299*2/3) are not enough low, and the starter pack is just
useless.

~~~
solomatov
Partially agree. When I choose a technology for my project, I have to prove to
my supervisor that technology is a good fit. In case of Mono.Touch, its usage
leads to too many risks. What if Mono.Touch is bought by evil company like
Oracle (see what happened to MySQL) or decides to abuse its user base by
imposing crazy fees? What if the company fails, and who is going to maintain
the solution in this case etc? In case of current license, the risks related
to these questions are just too high.

~~~
cageface
Don't you work for JetBrains? Couldn't the same thing be said for your tools?
I love them but they're not cheap.

~~~
solomatov
The situation is very different here. The core IntelliJ is open source.
There're plenty of open source alternatives. So if the license is changed,
there're a plenty of options to migrate project to alternative IDEs.

In case of Xamarin, there's no such choice. Only Xamarin can compile C# to
iOS, and if the license changes, the whole project implemented with the tool
is locked in. The only option is to rewrite the whole project with alternative
technology.

I think, LGPL open source core SDK + paid IDE + paid additional libraries
would be a much better choice which mitigates the risk. But Xamarin for some
reason decided to choose a different path.

------
CodeCube
Ahhh yes! async was really the missing piece for mobile apps, who are so often
stuck waiting for something to happen (disk IO, network IO, the user to take a
picture). There are obviously ways to deal with this on every platform ... but
async just makes it nice :)

------
vailripper
I'm curious about Xamarin - has anyone used it, in addition to something like
Phonegap / Appcelerator? How does it compare?

~~~
kevingadd
PhoneGap and Appcelerator are for building apps in HTML/CSS/JS. Xamarin lets
you write apps in C# (statically compiled to native code, in the case of iOS,
last I checked) that interact directly with native OS APIs.

~~~
yulaow
also phonegap is free, while xamarin.android and xamarin.ios have high license
costs for developer and platform

[https://store.xamarin.com/](https://store.xamarin.com/)

~~~
jimmcslim
Not the whole story... Xamarin have a Starter Edition that is free for both
platforms; admittedly with limitations (maximum app size, no linking with 3rd
party code other than Xamarin provided assemblies and the iOS SDK). Within
those limitation, you can publish to the App Store with the Starter Edition
(obviously you need a Mac as well for iOS). The Indie Edition drops both of
those limitations for USD299 per annum, which is reasonably affordable from my
perspective. (Disclaimer: I have paid for the Business Edition; USD999 per
annum, which adds the ability to use Visual Studio and a few other things).

~~~
vailripper
That's 300 dollars per platform right? So 600 dollars if I wanted to create an
android / ios app?

~~~
yulaow
More or less

you get a 10% discount on the total price if you buy multiple licences at the
same time

You can see all here:
[https://store.xamarin.com/#purchase](https://store.xamarin.com/#purchase)

------
pdappollonio
I was wondering if there are other alternatives out there like Xamarin. I've
used their Mono for Android software and was good but sadly, the prices went
too high this time so if you want to use Visual Studio you need to add a good
amount of money to make it true. :(

~~~
mrinterweb
Titanium would be the closest alternative that I can think of. Titanium allows
for apps to be be developed using JavasScript and then compile natively for
Android, iOS, and others.

~~~
camus
they dont compile JS natively. Your code is still in javascript but get
executed in a native shell, instead of using a web view , but there is no js
compilation into native code.

~~~
mrinterweb
Thanks. I didn't realize that it was still running interpreting the javascript
after a project was built for a device that made calls to native interfaces.
My guess is that it would be close to native performance. I was under the
impression that Titanium would compile to java bytecode for android and
likewise for iOS, but I was wrong.

------
frou_dh
As someone not familiar with the async/await stuff, I just looked up the
official MS documentation and found the explanation pretty obtuse. As much as
I can tell, it's a way to facilitate, umm, "chained futures", and by the way
it's suddenly OK for a type returned to kind-of-but-not-really match the
method signature.

I'm sure it's powerful but it doesn't come across as obviously amazing like
LINQ did.

~~~
ufo
I don't know the specifics in this article but usually the analogy I would
give is that async/await is to asynchronous programming as yield/generators
are to writing iterators.

When you can use yield you can use regular control flow like branches, for
loops, etc to write iterators in a straightforward manner. If you can't use
yield you instead end up needing to represent all that implicit control flow
using explicit stacks and things like that. Similarly, async/await let you
write asynchronous code very similarly to how you would write a synchronous
version of the same thing.

