2013-10-15

Remove the platform restriction on Microsoft NuGet packages [Customer Feedback for Microsoft from Phil Haack , Sept 26, 2013]

In short, we’re customers of .NET, but we are building apps that also target multiple platforms. Likewise, we release a lot of open source libraries.

We cannot take a dependency on the recently released Immutable Collections for example.

For a more detailed description on why this is good for .NET and good for Microsoft, see: http://haacked.com/archive/2013/06/24/platform-limitations-harm-net.aspx

That is the reference to a very elaborative post Platform Limitations Harm .NET [haacked.com, June 24, 2013] by Phil Haack in resume of whom one can find:

Experience

Dec 11 – Present

GitHub
Windows Badass

Making GitHub and Git better for Windows and .NET developers.

Bellevue, WA

Oct 07 – Dec 11

Microsoft
Senior Program Manager

Program manager for the ASP.NET MVC framework and other features of ASP.NET.

Redmond, WA

So when he mentions in his elaborative post the following things one can really understand what kind of corporate complacency (stupidity in fact) really exist in big corporations like Microsoft:

Here’s an excerpt from section 2. c. in the released HttpClient license, emphasis mine:

a. Distribution Restrictions. You may not

alter any copyright, trademark or patent notice in the Distributable Code;

use Microsoft’s trademarks in your programs’ names or in a way that suggests your programs come from or are endorsed by Microsoft;

distribute Distributable Code to run on a platform other than the Windows platform;



While developing Windows 8, Microsoft put a ton of energy and focus into a new HTML and JavaScript based development model for Windows 8 applications, at the cost of focus on .NET and C# in that time period.

The end result? From several sources I’ve heard that something like 85% of apps in the Windows app store are C# apps.

Now, I don’t think we’re going to see a bunch of iOS developers suddenly pick up C# in droves and start porting their apps to work on Windows. But there is the next generation to think of. If Windows 8 devices can get enough share to make it worthwhile, it may be easier to convince this next generation of developers to consider C# for their iOS development and port to Windows cheaply. Already, with Xamarin tools, using C# to target iOS is a worlds better environment than Objective-C. I believe iOS developers today tolerate Objective-C because it’s been so successful for them and it was the only game in town. As Xamarin tools get more notice, I don’t think the next generation will tolerate the clumsiness of the Objective-C tools.



Licenses for products are based on templates. Typically a product team’s lawyer will grab a template and then modify it. So with ASP.NET MVC 1 and 2, we removed the platform restriction in the EULA. But it looks like the legal team switched to a different license template in ASP.NET MVC 3 and we forgot to remove the restriction. That was never the intention. Shame on past Phil. Present Phil is disappointed.

Now came the news that Portable Class Library (PCL) now available on all platforms [.NET Framework Blog, Oct 14, 2013] in which Rich Lander, a Program Manager on the .NET Team essentially told the community that:

You can build .NET apps across a wide variety of platforms, and the Portable Class Library (PCL) helps you share your code and libraries across .NET platforms.  Specifically, the PCL provides a set of common reference assemblies that enable .NET libraries and binaries to be used on any .NET based runtime – from phones, to clients, to servers and clouds.

Prior to today’s release, there was a license restriction with the PCL reference assemblies which meant they could only be used on Windows. With today’s release we are announcing a new standalone release of the PCL reference assemblies with a license that allows it to be used on any platform – including non-Microsoft ones.  This enables developers even more flexibility and to do great things with .NET.



If you are using VS 2013 you can compile your apps using the portable reference assemblies that are automatically installed as part of it.  Today’s standalone release of the PCL provides a ZIP file that includes the same portable reference assemblies that are available in the latest Visual Studio 2013 RC – and which you can use on other platforms (or within other tools). The ZIP file is installed to: %ProgramFiles(x86)%\Microsoft .NET Portable Library Reference Assemblies 4.6 RC.

after which there was the following discussion:

Erik Schierboom  14 Oct 2013 7:05 AM

Well this is great news! Delighted to see that we will now be able to run PCL libraries on all platforms.

Rich Lander [MSFT]  14 Oct 2013 7:11 AM

@Erik — This release is for the reference assemblies that we all build PCLs on top of. We are not announcing a change in licensing for our actual PCL NuGet libraries today.

Miguel de Icaza [from Xamarin] 14 Oct 2013 7:11 AM

Erik,

Mono has had PCL support for *consuming/running* the result starting with 3.2.2 I believe.   This is about allowing developers to *build* the PCLs on non-Windows platforms.

Bart 14 Oct 2013 10:26 AM

Ok, so this is apparently not what I thought it was.

It cracks me up that you guys reference UserVoice at the end of this and as of yet have ignored the 4th most voted request on UserVoice (visualstudio.uservoice.com/…/4494577-remove-the-platform-restriction-on-microsoft-nuget).

@Rich, does “We are not announcing a change in licensing for our actual PCL NuGet libraries today.” imply that you will be announcing a change to the licensing of the NuGet libraries in the future?

So “the jury is still out” regarding the most important stuff originally meant. Here is a simplified list of the .NET NuGet Packages as of today:

Stable Packages (the NuGet equivalent of an RTM release)

AspNet.ScriptManager.jQuery assembly that will automatically register jQuery 2.0.3 with the ScriptManager as “jquery”.

AspNet.ScriptManager.jQuery.UI.Combined assembly that will automatically register jQuery.UI.Combined 1.10.3 with the ScriptManager as “jquery.ui.combined”.

Entity Framework is Microsoft’s recommended data access technology for new applications.

Microsoft.AspNet.FriendlyUrls Adds a mobile master page and a view switcher user control to enable switching between mobile and desktop views using ASP.NET Friendly URLs. Note: This package contains content for C# Web Application Projects (WAPs) only.

Microsoft.AspNet.FriendlyUrls.Core A library that enables automatic resolution of extensionless URLs to ASP.NET file-based handlers, e.g. ASPX pages.

Microsoft.AspNet.Membership.OpenAuth A series of helpers to enable using DotNetOpenAuth in an ASP.NET application that utilizes the Membership system for user management.

Microsoft.AspNet.Mvc This package contains the runtime assemblies for ASP.NET MVC. ASP.NET MVC gives you a powerful, patterns-based way to build dynamic websites that enables a clean separation of concerns and that gives you full control over markup.

Microsoft.AspNet.Providers ASP.NET Universal Providers extend SQL support in ASP.NET 4 to all editions of SQL Server 2005 and later and to SQL Azure.

Microsoft.AspNet.Providers.Core ASP.NET Universal Providers extend SQL support in ASP.NET 4 to all editions of SQL Server 2005 and later and to SQL Azure.

Microsoft.AspNet.Providers.LocalDb ASP.NET Universal Providers extend SQL support in ASP.NET 4 to all editions of SQL Server 2005 and later and to SQL Azure.

Microsoft.AspNet.Providers.SqlCE ASP.NET Universal Providers extend SQL support in ASP.NET 4 to all editions of SQL Server 2005 and later and to SQL Azure.

Microsoft.AspNet.Razor This package contains the runtime assemblies for ASP.NET Web Pages. ASP.NET Web Pages and the new Razor syntax provide a fast, terse, clean and lightweight way to combine server code with HTML to create dynamic web content.

Microsoft.AspNet.ScriptManager.MSAjax This package contains the Microsoft.ScriptManager.MSAjax assembly that will automatically register the Microsoft Ajax optimization bundle for Web Forms with ScriptManager.

Microsoft.AspNet.ScriptManager.WebForms This package contains the Microsoft.ScriptManager.WebForms assembly that will automatically register the Microsoft Ajax optimization bundle for Web Forms with ScriptManager.

Microsoft.AspNet.SignalR Incredibly simple real-time web for .NET.

Microsoft.AspNet.SignalR.Client .NET client for ASP.NET SignalR.

Microsoft.AspNet.SignalR.Core Core server components for ASP.NET SignalR.

Microsoft.AspNet.SignalR.JS JavaScript client for ASP.NET SignalR.

Microsoft.AspNet.SignalR.ServiceBus Windows Azure Service Bus messaging backplane for scaling out of ASP.NET SignalR applications in a web-farm.

Microsoft.AspNet.SignalR.SqlServer SQL Server messaging backplane for scaling out of ASP.NET SignalR applications in a web-farm.

Microsoft.AspNet.SignalR.Utils Command line utilities for ASP.NET SignalR.

Microsoft.AspNet.Web.Optimization ASP.NET Optimization introduces a way to bundle and optimize CSS and JavaScript files.

Microsoft.AspNet.Web.Optimization.WebForms A Web Forms control for Microsoft.AspNet.Web.Optimization

Microsoft.AspNet.WebApi This package contains everything you need to host ASP.NET Web API on IIS. ASP.NET Web API is a framework that makes it easy to build HTTP services that reach a broad range of clients, including browsers and mobile devices. ASP.NET Web API is an ideal platform for building RESTful applications on the .NET Framework.

Microsoft.AspNet.WebApi.Client This package adds support for formatting and content negotiation to System.Net.Http. It includes support for JSON, XML, and form URL encoded data.

Microsoft.AspNet.WebApi.Core This package contains the core runtime assemblies for ASP.NET Web API. This package is used by hosts of the ASP.NET Web API runtime. To host a Web API in IIS use the Microsoft.AspNet.WebApi.WebHost package. To host a Web API in your own process use the Microsoft.AspNet.WebApi.SelfHost package.

Microsoft.AspNet.WebApi.HelpPage The ASP.NET Web API Help Page automatically generates help page content for the web APIs on your site.

Microsoft.AspNet.WebApi.HelpPage.VB The ASP.NET Web API Help Page automatically generates help page content for the web APIs on your site.

Microsoft.AspNet.WebApi.OData This package contains everything you need to create OData endpoints using ASP.NET Web API and to support OData query syntax for your web APIs.

Microsoft.AspNet.WebApi.SelfHost This package contains everything you need to host ASP.NET Web API within your own process (outside of IIS). ASP.NET Web API is a framework that makes it easy to build HTTP services that reach a broad range of clients, including browsers and mobile devices. ASP.NET Web API is an ideal platform for building RESTful applications on the .NET Framework.

Microsoft.AspNet.WebApi.Tracing Enables ASP.NET Web API tracing using System.Diagnostics.

Microsoft.AspNet.WebApi.WebHost This package contains everything you need to host ASP.NET Web API on IIS. ASP.NET Web API is a framework that makes it easy to build HTTP services that reach a broad range of clients, including browsers and mobile devices. ASP.NET Web API is an ideal platform for building RESTful applications on the .NET Framework.

Microsoft.AspNet.WebPages This package contains core runtime assemblies shared between ASP.NET MVC and ASP.NET Web Pages.

Microsoft.AspNet.WebPages.Data This package contains the runtime assemblies for ASP.NET Web Pages. ASP.NET Web Pages and the new Razor syntax provide a fast, terse, clean and lightweight way to combine server code with HTML to create dynamic web content.

Microsoft.AspNet.WebPages.WebData This package contains the runtime assemblies for ASP.NET Web Pages. ASP.NET Web Pages and the new Razor syntax provide a fast, terse, clean and lightweight way to combine server code with HTML to create dynamic web content.

 

 

 

Microsoft.Bcl Adds support for types added in later versions of .NET when targeting previous versions.

Microsoft.Bcl.Async Enables usage of the ‘async’ and ‘await’ keywords from projects targeting .NET Framework 4 (with KB2468871), Silverlight 4 and 5, and Windows Phone 7.5 and 8.

Microsoft.Bcl.Build Provides build infrastructure components for Microsoft packages.

Microsoft.Bcl.Compression This package contains APIs for compressing and de-compressing streams using the ZIP and GZIP formats.

Microsoft.Bcl.Immutable Provides immutable collections that allow CPU and memory efficient mutation via new references.

Microsoft.Composition Provides a lightweight and throughput-optimized composition container for MEF.

Microsoft.Data.Edm Classes to represent, construct, parse, serialize and validate entity data models. Targets .NET 4.0, Silverlight 4.0, or .NET Portable Lib with support for .NET 4.0, SL 4.0, Win Phone 7, and Win 8. Localized for CHS, CHT, DEU, ESN, FRA, ITA, JPN, KOR and RUS.

Microsoft.Data.OData Classes to serialize, deserialize and validate OData payloads. Enables construction of OData producers and consumers. Targets .NET 4.0, Silverlight 4.0 or .NET Portable Lib with support for .NET 4.0, SL 4.0, Win Phone 7, and Win 8. Localized for CHS, CHT, DEU, ESN, FRA, ITA, JPN, KOR and RUS.

Microsoft.jQuery.Unobtrusive.Ajax jQuery plugin that lets you unobtrusively set up jQuery Ajax.

Microsoft.jQuery.Unobtrusive.Validation jQuery plugin that unobtrusively sets up jQuery.Validation.

Microsoft.Net.Http This package provides a programming interface for modern HTTP/REST based applications.

Microsoft.ScriptManager.jQuery This contents of this package has been moved to the AspNet.ScriptManager.jQuery package.

Microsoft.ScriptManager.jQuery.UI.Combined This contents of this package has been moved to the AspNet.ScriptManager.jQuery.UI.Combined package.

Microsoft.ScriptManager.MSAjax This contents of this package has been moved to the Microsoft.AspNet.ScriptManager.MSAjax package.

Microsoft.ScriptManager.WebForms This contents of this package has been moved to the Microsoft.AspNet.ScriptManager.WebForms package.

Microsoft.Tpl.Dataflow Task Parallel Library (TPL) Dataflow provides actor based building blocks for concurrent applications.

Microsoft.Web.Infrastructure This package contains the Microsoft.Web.Infrastructure assembly that lets you dynamically register HTTP modules at run time.

microsoft-web-helpers This package contains web helpers to easily add functionality to your site such as Captcha validation, Twitter profile and search boxes, Gravatars, Video, Bing search, site analytics or themes. This package is not compatible with ASP.NET MVC.

System.Spatial Contains classes and methods that facilitate geography and geometry spatial operations. Targets .NET 4.0, Silverlight 4.0 or .NET Portable Lib with support for .NET 4.0, SL 4.0, Win Phone 7, and Win 8. Localized for CHS, CHT, DEU, ESN, FRA, ITA, JPN, KOR and RUS.

WebGrease Web Grease is a suite of tools for optimizing javascript, css files and images.

WindowsAzure.MobileServices Windows Azure Mobile Services SDK.

WindowsAzure.MobileServices.WinJS Windows Azure Mobile Services SDK for WinJS.

WindowsAzure.ServiceBus This package works with Windows Azure – Service Bus. It adds Microsoft.ServiceBus.dll along with related configuration files to your project. Please note that this package requires .Net Framework 4 Full Profile.

 

Pre-release Packages

… <see in the original>

Microsoft Supported 3rd Party Libraries

… <see in the original>

Filed under: Cloud SW engineering Tagged: .NET NuGet Packages, ASP.NET, C#, GitHub, iOS, Licensing, Microsoft, NET, NuGet, Objective-C, other than Windows platforms, PCL, PCL NuGet libraries, Phil Haack, Portable Class Library, Windows, Xamarin

Show more