… while other cross-platform applications, i.e. “applications for consumers only” are prohibited for C# developers by the still high price of Xamarin, which essentially applies to indie and start-up developers only
The mobile application development technology behind this, from the cloud to the clients, was extensively covered in Windows Phone 8: getting much closer to a unified development platform with Windows 8 [‘Experiencing the Cloud’, Nov 8, 2012] post of mine (including the cross-platform possibilities with Xamarin already), and then continued in Windows Azure becoming an unbeatable offering on the cloud computing market [‘Experiencing the Cloud’, June 28, 2013] and Microsoft partners empowered with ‘cloud first’, high-value and next-gen experiences for big data, enterprise social, and mobility on wide variety of Windows devices and Windows Server + Windows Azure + Visual Studio as the platform [‘Experiencing the Cloud’, July 10, 2013] posts for the cloud part.
Note: Decide for yourself how that “consumers only applications by indie and start-up developers” type of exclusion will effect the cross platform development needs, after you take a look at the current state of the evolution of smartphone and tablet markets:
For one of the problems solved now by Microsoft see my Obstacles for .NET on other platforms [‘Experiencing the Cloud’, Oct 15, 2013] post.
To understand what is the situation now I will start with:
- Phil Haack working at GitHub “doing crazy”:
In: Cross Platform .NET Just A Lot Got Better [Haacked blog, Nov 13, 2013]
Not long ago I wrote a blog post about how platform restrictions harm .NET. This led to a lot of discussion online and on Twitter. At some point David Kean suggested a more productive approach would be to create a UserVoice issue. So I did and it quickly gathered a lot of votes.
Phil Haack – Customer Feedback for Microsoft http://visualstudio.uservoice.com/users/40986152-phil-haack:
Remove the platform restriction on Microsoft NuGet packages 4,929 votes
Phil Haack shared this idea and gave it 3 votes · Sep 26, 2013
COMPLETED · Visual Studio team (Product Team, Microsoft) responded
Thanks a lot for this suggestion and all the votes.
We’re happy to announce that we’ve removed the Windows-only restriction from our license. We’ve applied this new license to most of our packages and will continue to use this license moving forward.
Here is our announcement:
For reference, the license for stable packages can be found here:
Program Manager, .NET Framework Team
Phil Haack commented · Nov 13, 2013
Amazing! Thanks! This is great!
Serious Kudos to the .NET team for this. It looks like most of the interesting PCL packages are now licensed without platform restrictions. As an example of how this small change sends out ripples of goodness, we can now make Octokit.net depend on portable HttpClient and make Octokit.net itself more cross platform and portable without a huge amount of work.
I’m also excited about the partnership between Microsoft and Xamarin this represents. I do believe C# is a great language for cross-platform development and it’s good to see Microsoft jumping back on board with this. This is a marked change from the situation I wrote about in 2012.
- then will go to S. Somasegar, Corporate Vice President of the Developer Division at Microsoft:
In: Visual Studio 2013 Launch: Announcing Visual Studio Online [Somasegar’s blog, Nov 13, 2013]
… Microsoft and Xamarin are collaborating to help .NET developers broaden the reach of their applications to additional devices, including iOS and Android …
With today’s launch of Visual Studio 2013, we have 123 products from 74 partners available already as Visual Studio 2013 extensions. As part of an ecosystem of developer tools experiences, Visual Studio continues to be a platform for delivering a great breadth of developer experiences.
Today, I am excited to announce a broad collaboration between Microsoft and Xamarin. Xamarin’s solution enables developers to leverage Visual Studio, Windows Azure and .NET to further extend the reach of their business applications across multiple devices, including iOS and Android.
The collaboration between Xamarin and Microsoft brings several benefits for developers today. First, as an initial step in a technical partnership, Xamarin’s next release that is being announced today will support Portable Class Libraries, enabling developers to share libraries and components across a breadth of Microsoft and non-Microsoft platforms. Second, Professional, Premium and Ultimate MSDN subscribers will have access to exclusive benefits for getting started with Xamarin, including new training resources, extended evaluation access to Xamarin’s Visual Studio integration and special pricing on Xamarin products.
followed by the Microsoft and Xamarin Partner Globally to Enable Microsoft Developers to Develop Native iOS and Android Apps With C# and Visual Studio [Xamarin press release, Nov 13, 2013]
Xamarin, the company that empowers developers to build fully native apps for iOS, Android, Windows and Mac from a single shared code base, today announced a global collaboration with Microsoft that makes it easy for mobile developers to build native mobile apps for all major platforms in Visual Studio. Xamarin is the only solution that unifies native iOS, Android and Windows app development in Visual Studio—bridging one of the largest developer bases in the world to the most successful mobile device platforms.
A highly competitive app marketplace and the consumerization of IT have put tremendous pressure on developers to deliver high quality mobile user experiences for both consumers and employees. A small bug or crash can lead to permanent app abandonment or poor reviews. Device fragmentation, with hundreds of devices on the market for iOS and Android alone, multiplies testing efforts resulting in a time-consuming and costly development process. This is further complicated by faster release cycles for mobile, necessitating more stringent and efficient regression testing.
The collaboration spans three areas:
- A technical collaboration to better integrate Xamarin technology with Microsoft developer tools and services.
Aligned with this goal, Xamarin is a SimShip partner for Visual Studio 2013, releasing same-day support for Microsoft’s latest Visual Studio release that launched today. In addition, Xamarin has released today full integration for Microsoft’s Portable Library projects in iOS and Android apps, making it easier than ever for developers to share code across devices.
- Xamarin’s recently launched Xamarin University is now free to MSDN subscribers. The training course helps developers become successful with native iOS and Android development over the course of 30 days. Classes for the $1,995 program kick off in January 2014, with a limited number of seats available at no cost for MSDN subscribers.
- MSDN subscribers have exclusive trial and pricing options to Xamarin subscriptions for individuals and teams.
Get a 90-day trial to Xamarin, sign up for Xamarin University for free (normally $1,995), and save 30-50% on Xamarin with special MSDN pricing.
All the productivity you love in Visual Studio and C#,
on iOS and Android.
The broad collaboration between Microsoft and Xamarin which we announced today is targeted at supporting developers interested in extending their applications across multiple devices,said S. Somasegar, Corporate Vice President, Microsoft Corporation.With Xamarin, developers combine all of the productivity benefits of C#, Visual Studio 2013 and Windows Azure with the flexibility to quickly build for multiple device targets.
According to Gartner, by 2016, 70 percent of the mobile workforce will have a smartphone, half of which will be purchased by the employee, and 90 percent of enterprises will have two or more platforms to support. Faced with high expectations for mobile user experiences and the pressures of BYOD, companies and developers alike are looking for scalable ways to migrate business practices and customer interactions to high-performance, native apps on multiple platforms.
To meet this need to support heterogeneous mobile environments, Microsoft and Xamarin are making it easy for developers to mobilize their existing skills and code. By standardizing mobile app development with Xamarin and C#, developers are able to share on average 75 percent of their source code across device platforms, while still delivering fully native apps. Xamarin supports 100 percent of both iOS and Android APIs—anything that can be done in Objective-C or Java can be done in C# with Xamarin.
In just two years, Xamarin has amassed a community of over 440,000 developers in 70 countries, more than 20,000 paying accounts and a network of over 120 consulting partners globally.
We live in a multi-platform world, and by embracing Xamarin, Microsoft is enabling its developer community to thrive as mobile developers,said Nat Friedman, CEO and cofounder, Xamarin.Our collaboration with Microsoft will accelerate enterprise mobility for millions of developers.
The groundbreaking partnership was announced as part of the Visual Studio Live 2013 launch event in New York City. In addition, Xamarin and Microsoft have teamed up with the popular podcast, .NET Rocks!, for a 20-city nationwide road show featuring live demos on how to use Visual Studio 2013, Xamarin and Windows Azure to build and scale mobile apps for iOS, Android and Windows. For a full list of cities and to sign up for an event, please visit: xamarin.com/modern-apps-roadshow
Xamarin is the new standard for enterprise mobile development. No other platform enables businesses to reach all major devices—iOS, Android, Mac and Windows—with 100 percent fully native apps from a single code base. With Xamarin, businesses standardize mobile app development in C#, share on average 75 percent source code across platforms, and leverage their existing skills, teams, tools and code to rapidly deliver great apps with broad reach. Xamarin is used by over 430,000 developers from more than 100 Fortune 500 companies and over 20,000 paying customers including Clear Channel, Bosch, McKesson, Halliburton, Cognizant, GitHub, Rdio and WebMD, to accelerate the creation of mission-critical consumer and enterprise apps. For more information, please visit: xamarin.com, read our blog, and follow us on Twitter @xamarinhq.
- as well as the PCL and .NET NuGet Libraries are now enabled for Xamarin [.NET Framework Blog, Nov 13, 2013] post
Earlier today, Soma announced a collaboration between Microsoft and Xamarin. As you probably know, Xamarin’s Visual Studio extension enables developers to use VS and .NET to extend the reach of their apps across multiple devices, including iOS and Android. As part of that collaboration, today, we are announcing two releases around the .NET portable class libraries (PCLs) that support this collaboration:
- We are making portable Microsoft .NET NuGet libraries available under a new license that enables use on all platforms. This includes HttpClient, Immutable Collections, SignalR, ODataLib and several others. Beyond that, we intend to use this license going forward.
- We are also making the RTM version of the portable reference assemblies available for use on all platforms. This announcement builds on the announcement we made a month ago around the RC release of these reference assemblies.
Microsoft .NET NuGet Libraries Released
Today we released the following portable libraries with our new license, on NuGet.org:
- Async for .NET Framework 4, Silverlight 4 and 5, and Windows Phone 7.5 and 8
- Microsoft ASP.NET SignalR .NET Client
- Microsoft BCL Build Components
- Microsoft BCL Portability Pack
- Microsoft Composition
- Microsoft Compression
- Microsoft HTTP Client Libraries
- Microsoft Immutable Collections
You can now start using these libraries with Xamarin tools, either directly or as the dependencies of portable libraries that you reference.
We also took the opportunity to apply the same license to Microsoft .NET NuGet libraries, which aren’t fully portable today, like Entity Framework and all of the Microsoft AspNet packages. These libraries target the full .NET Framework, so they’re not intended to be used with Xamarin’s iOS and Android tools (just like they don’t target Windows Phone or Windows Store).
These releases will enable significantly more use of these common libraries across Windows and non-Windows platforms, including in open source projects.
Cross-platform app developers can now use PCL
Portable class libraries are a great option for app developers building for Microsoft platforms in Visual Studio, to share key business functionality across Microsoft platforms. Many developers use the PCL technology today, for example, to share app logic across Windows Store and Windows Phone. Today’s announcement enables developers using Xamarin’s tools to share these libraries as well.
In Visual Studio, you’ll continue to use Portable Class Library projects but will be able to reference them from within Xamarin’s tools for VS. That means that you can write rich cross-platform libraries and take advantage of them from all of your .NET apps.
The following image demonstrates an example set of .NET NuGet library references that you can use within one of your portable libraries. The .NET NuGet libraries will enable new scenarios and great new libraries built on top of them.
You can build cross-platform libraries with .NET
This announcement also benefits .NET developers writing reusable and open source libraries. You’ve probably used some of these libraries, for example Json.NET. These developers have been very vocal about wanting this change. This announcement greatly benefits those library developers, enabling them to leverage our portable libraries in their libraries.
Getting started with portable libraries and Xamarin
You can start by building portable libraries in Visual Studio, as you can see in the screenshot above. You can take advantage of the portable libraries that we released today. Write code!
You’ll need an updated NuGet client, to take advantage of this new scenario. Make sure that you are using NuGet 2.7.2 or higher, or just download the latest NuGet for your VS version from the Installing NuGet page.
We are working closely with Xamarin to ensure that our NuGet libraries work well with Xamarin tools, as well as PCL generally. Please tell us if you find any issues. We’ll get them resolved and post them to our known issues page.
Thank you for the feedback on UserVoice. With today’s announcement, we can mark the request to Remove the platform restriction on Microsoft NuGet packages as complete. Thanks to Phil Haack for filing the issue. Coupled with our collaboration with Xamarin, .NET developers have some compelling tools, especially for targeting mobile devices.
Both Microsoft and Xamarin want to see this scenario succeed. We’d love your feedback. Please tell us how the new features are working for you.
This post was written by Rich Lander, a Program Manager on the .NET Team.
Immo Landwerth [MSFT] 13 Nov 2013 1:24 PM
Thanks a lot for the kind words!
@Curt: We absolutely understand that PCL support in Visual Studio express editions is super important to many of our developers. That’s why it’s on our list. However, I can’t promise that we actually end up delivering it in the VS 2013 time frame. As you’ve seen today, there is a lot of great stuff going on and resources are always more scarce than one would hope.
Gz 14 Nov 2013 4:19 AM
Xamarin is great but their pricing is insane! even with the MSDN discount. We’re a tiny start-up development house that has benefited from the MS BizSpark programme and we simply cannot stretch to paying out a thousand bucks per platform, per year, per developer – mobile isn’t even a revenue generator for us – it would merely be extending some functionality from our main apps to mobile and we’d give it to customers for free. I know they have a free & an indie edition blah blah blah but we wanna work in VS. The good news is that Xamarin will soon have a competitor in this space that could potentially blow them out of the water with full VS support and direct access to native APIs on each platform (iOS, Android & Mac) and their pricing will be less than 1/3rd of Xamarin’s. I’ve been sworn to secrecy about it but expect to have a cost-effective Xamarin alternative before the end of the year. (No I don’t work for the company, just got some info about it recently).
Stilgar 14 Nov 2013 8:30 AM
I second the need for PCLs in Express editions. Otherwise your company’s constant claims that the tooling for Windows 8 and Windows Phone development is free is pure hypocrisy.
- and end finally with New and improved EULA! [WCF Data Services Blog, Nov 13, 2013] post:
TL;DR: You can now (legally) use our .NET OData client and ODataLib on Android and iOS.
For a while now we have been working with our legal team to improve the terms you agree to when you use one of our libraries (WCF Data Services, our OData client, or ODataLib). A year and a half ago, we announced that our EULA would include a redistribution clause. With the release of WCF Data Services 5.6.0, we introduced portable libraries for two primary reasons:
Portable libraries reduce the amount of duplicate code and #ifdefs in our code base.
Portable libraries increase our reach through third-party tooling like Xamarin (more on that later).
It took some work to get there, and we had to make some sacrifices along the way, but we are now focused exclusively on portable libraries for client-side code. Unfortunately, our EULA still contained a clause that prevented the redistributable code from being legally used on a platform other than Windows.
OData and Xamarin: Extending developer reach to many platforms
We are really excited about Microsoft’s new collaboration with Xamarin. As Soma says, this collaboration will allow .NET developers to broaden the reach of their applications and skills. This has long been the mantra of OData – a standardized ecosystem of services and consumers that enables consumers on any platform to easily consume services developed on any platform. This collaboration will make it much easier to write a shared code base that allows consumption of OData on Windows, Android or iOS.
To fully enable this scenario, we needed to update our EULA. We, along with several other teams at Microsoft, are rolling out a new EULA today that has relaxed the distribution requirements. Most importantly, we removed the clause that prevented redistributable code from being used on Android and iOS.
The new EULA is effective immediately for all of our NuGet packages. This means that (even though we already released 5.6.0) you can create a Xamarin project today, take a new dependency on our OData client, and legally run that application on any platform you wish.
As always, we really appreciate your feedback. It frequently takes us some time to react, but the credit for this change is due entirely to customer feedback. We hear you. Keep it coming.
The OData Team