by Jon Galloway

Here's the August 2019 .NET Foundation update. Every month, we'll give you a quick overview of the .NET Open Source landscape, including top project news, events, community links and more.

This month's update includes:

  • .NET Conf 2019, September 23-25 (www.dotnetconf.net)
  • .NET Conf Local Events
  • ๐Ÿš€Action Group Updates๐Ÿš€
  • .NET Foundation Presentations Site
  • .NET Foundation Project Updates
  • Meetups

As always, these are available both on our blog and via e-mail: Sign up to get the .NET Foundation Update via e-mail


.NET Conf 2019, September 23-25 (www.dotnetconf.net)

.NET

.NET Conf is our annual, free, online virtual event and this year and it's going to be bigger than ever. .NET Core 3.0 will launch at .NET Conf!

You don't want to miss this one. Watch live sessions and ask questions on a variety of .NET topics from web, mobile, gaming, IoT, desktop, AI, and cloud. Attend the virtual attendee party, answer trivia questions, and win prizes from our partners. Save the date and tune into www.dotnetconf.net.

Save the date!


.NET Conf Local Events


The best way to experience .NET Conf is at a local event. .NET Conf is partnering with organizers around the globe to bring you over 150 local in-person events between September 23 through the end of October! Join your fellow developers in a city near you to learn more about .NET. .NET

Register for a .NET Conf Local Event


๐Ÿš€ Action Group Updates ๐Ÿš€

We recently announced our new Action Groups: a way for .NET Foundation members to join teams and get directly involved in helping the .NET Foundation scale to the next level. Our teams include the following:

  • Communications
  • Corporate Relations
  • Marketing
  • Membership
  • Outreach
  • Project Support
  • Speakers and Meetups
  • Technical Review

Last month, we told you how our Marketing team has moved to a new, open process for project news, and our Project Support team has moved to an open process for reviewing new project applications.

This month, we've made some good progress on some additional action groups. Some highlights:

  • The Outreach team (led by Sara Chipps) had a really productive kickoff call with volunteers around the world
  • The Membership (led by Iris Classon) worked to document our membership process so additional volunteers can get involved in processing applications. We also reviewed all outstanding membership applications, sent out invites, and fixed some technical issues people ran into while signing up. Finally, we improved our membership website to explain membership a bit better, clean up the site design, and make it so anyone can clone and run the site locally to allow for content updates and improvements.
  • The Project team has some pretty exciting things in the works; we're hoping to announce at .NET Conf.

If you're a .NET Foundation Member, sign up to join an action group:

Sign Up For An Action Group


.NET Foundation Presentations Site


In case you missed it, we've got a lot of great content you can use in your presentations, workshops, Meetups, training courses, etc. over at dotnetfoundation.org/community/resources. We keep these up to date, so as .NET Core 3.0 rolls out, this is one of your top resources for training material.

By request, we set up a short url that may be a little easier for you to remember: https://aka.ms/dotnet-presentations. .NET

Blazing Pizza is one of our most popular workshops - it shows you how to build an online pizza ordering site with Blazor, complete with drone pizza delivery! .NET


.NET Foundation Project Updates

IdentityModel v4 is released

IdentityModel has been growing organically over the last years, and we felt it is necessary to do some fundamental cleanup. At the same time it is used by a lot of people and companies (currently around 20 million downloads on nuget) โ€“ which is a bit scary when doing breaking changes.

But since we are at a point where a new .NET Core runtime is released, and thus many other libraries will release new major version, we thought that this might be a good opportunity to make the changes.

This version is a breaking release!!!

Stay on v3.x if you are using:

  • IdentityServer4 v2.x
  • IdentityServer4.AccessTokenValidation v2.x
  • IdentityModel.AspNetCore.OAuth2Introspection v3.x
  • IdentityModel.OidcClient v2.x

All subsequent major versions of the above mentioned packages have switched to IdentityModel v4 and will be released along with IdentityServer4 v3 on the 23rd September.

In the coming days I will push IdentityModel v4 to nuget โ€“ here's a high level list of the changes.

Target frameworks I dropped the net452 target โ€“ v4 is targeting net461 and netstandard2.0 only.

Removed old *Client classes I removed the protocol client classes like TokenClient in favour of the newer style extension methods for HttpMessageInvoker (the base class of HttpClient). This allows you to manage the setup and lifetime of the HTTP client yourself. I added a new TokenClient and IntrospectionClient based on the new design which is now DI and HttpClientFactory friendly. I did that mainly because I needed them in some other project. Give them a try, and see if they work for you as well.

Removed access token related delegating handlers for HttpClient I never was happy with their design, and they also did not work for some common scenarios. Part of the work has been moved to OidcClient (for native apps) and part of it has been moved to the ASP.NET Core specific IdentityModel.

Updated extension methods The protocol extensions methods have been re-written from the ground up. The public API surface stayed mostly the same, but certain classes have been renamed for clarity. The request objects now derive from HttpRequestMessage which gives you more control over the HTTP details (e.g. headers).

Updated Epoch Extensions Year 2038 is coming! All extensions have been updated to use long instead of int. Alternatively โ€“ .NET has built-in support now as well. So feel free to switch to that if you like.

Misc I probably changed some parameter, classes and namespace names..

nuget / repo / release notes


Chemistry Add-In for Word (Chem4Word)

It seems like it's all gone quiet on Chem4Word recently, but we've been working extremely hard on addressing some licensing concerns. Chem4Word is currently released under the Apache 2.0 license, but its structure 'sketcher' is a 3rd-party product which uses GPL. We've muddled through up to now because the editor is dyamically linked. But we'd also really like to get our entire code base under the .NET Foundation umbrella.

So we've been writing a new sketcher - the Advanced CML-based Molecule Editor (or ACME for short). It's written in C# and uses Windows Presentation Foundation for its graphics. It can be used as a drop-in structure editor for any Windows Forms or WPF application.

.NET

Having our own editor also means we have complete control over what we can and can't edit in CML. This means we can add new features much more easily. And keep our users happy!

We should soon have ACME ready for beta-testing. The team members who have worked incredibly hard on this are:

  • Joe Townsend
  • Mike Williams
  • Andy Wright

If anyone fancies beta-testing ACME then you can drop me a line (clyde.davies@gmail.com). All offers of help gratefully received!


NUnit 3 Test Adapter 3.15

Versions 3.14 and 3.15 were both released this month. Changes include:

  • A performance boost when running a fraction of the tests by using a test discovery prefilter (thanks Matthew Beardmore!)
  • The working directory is changed to the temp folder when VSTest starts with the current directory inside C:\Windows or Program Files.
  • TestContext.Progress only goes to the console now and not the test output.
  • Engine extensions are now loaded by the adapter, enabling scenarios such as mixing NUnit and xUnit tests in the same run (thanks Nikolay Borisenko!)

โ„น NUnit Test Adapter 3.15 has uncovered some less-common bugs in NUnit Framework that must be fixed in a new NUnit Framework release. To preserve compatibility with older versions of NUnit Framework, NUnit Test Adapter 3.15.1 (releasing soon) will make the prefilter opt-in via runsettings.

NUnit 2 Test Adapter 2.2 was available last month with bugfixes and with a VSIX that supports Visual Studio 2019.

The NUnit dotnet CLI template 1.6.3 features dependency updates and an F# template improvement (thanks zanaptak!)


Orleans 3.0.0-beta1

  • Major improvements
    • Replaced networking stack with the Bedrock layer of ASP.NET Core
    • Support for future wire protocol versioning
    • A series of improvements in cluster recovery from node failures
    • Pluggable data adapters for EventHub stream provider
    • Compatibility with .NET Core 3.0

This release is backward compatible, over the wire messaging wise, with 2.* releases, which allows for in-place upgrade of a running cluster. However, there are several breaking changes in the APIs that might require minor adjustments for application code to compile.

We measured significant performance gains with this release over 2.* versions, ranging from 8% to 93% depending on the test, mostly due to the network stack rewrite.


Orleans 2.4.0 and 2.4.1

  • Major improvements
    • Reduced reliance on cluster membership table and speed up clustering convergence by sending versioned snapshots of the table as part of gossip messages
    • Configurable transactional state roles to support cases when a transactional state cannot be transaction manager

This release is backward compatible with 2.0.* releases, which allows for in-place upgrade of a running cluster.


Meetups

Our .NET Foundation sponsored .NET Meetup Pro groups are continuing to grow worldwide. We recently passed 300 groups, and we're now in 62 countries! Here are some quick stats:

  • 314 Groups
  • 62 Countries
  • 234K Members

Our .NET Meetup Pro group helps developers find your group, as well as get involved with local events like .NET Conf Local. If your meetup hasn't joined yet, you can right here.
.

Our .NET Meetup Pro group helps


Connect with the .NET Foundation online

The .NET Foundation is on Facebook now. Please like our page! We'll post regular updates and interesting things happening with .NET to share.

The .NET Foundation is also on YouTube. Watch community standups and design reviews as well as code-focused shows and interviews across our multiple playlists.


Remember to Subscribe!

Please sign up to get the .NET Foundation Update via e-mail. Don't worry, we want to keep these short, interesting, and low-noise, so we won't overload your e-mail.

by Jon Galloway

Here's the July 2019 .NET Foundation update. Every month, we'll give you a quick overview of the .NET Open Source landscape, including top project news, events, community links and more.

This month's newsletter includes:

  • New Process For Newsletter Submission
  • Project Onboarding Process Improvements
  • Join an Action Group!
  • .NET Foundation at OSCON 2019
  • .NET Conf 2019, September 23-25 (www.dotnetconf.net)
  • .NET Foundation Project Updates
  • Meetups

As always, these are available both on our blog and via e-mail: Sign up to get the .NET Foundation Update via e-mail


New Process For Newsletter Submission

We have a new process for submitting project news! Yay! No more cumbersome spreadsheets! Check out the README for more details. We also have a handy YouTube video that walks through the process.

.NET 


Project Onboarding Process Improvements

Project onboarding is now handled publicly via GitHub issues. The process is now more transparent and visible. Progress through the process is easily visualized via a GitHub project board.

This is part of our effort to move to open processes so action groups and community members can more easily participate. The previous process was buried in emails and word documents and lacked visibility and transpancey.

We have an issue template for new project applications here: https://github.com/dotnet-foundation/projects/issues/new/choose

Key goals:

  • Clear status to projects
  • Use milestones and labels to batch up applications into monthly review cycles
  • Enable action group members to review and help out on applications
  • Comments / pull requests / etc. are welcome.

Join an Action Group!

We recently announced our new Action Groups: a way for .NET Foundation members to join teams and get directly involved in helping the .NET Foundation scale to the next level. Our teams include the following:

  • Communications
  • Corporate Relations
  • Marketing
  • Membership
  • Outreach
  • Project Support
  • Speakers and Meetups
  • Technical Review

We've been figuring out logistics and communications as we move to working publicly and with a large team. We've settled on GitHub Organizational Teams and are continuing to roll this out to the teams - we've mostly started with Marketing and Project Support so far, but are now working on getting other groups more involved in our day to day business.

If you're a .NET Foundation Member, sign up to join an action group:

Sign Up For An Action Group


.NET Foundation at OSCON 2019

Jon Galloway, Executive Director of the .NET Foundation, attended and spoke at OSCON this month. Check out his presentation slides and notes from the conference: .NET Foundation at OSCON 2019.


.NET Conf 2019, September 23-25 (www.dotnetconf.net)

.NET

.NET Conf is our annual, free, online virtual event and this year and it's going to be bigger than ever. .NET Core 3.0 will launch at .NET Conf!

The .NET Conf Call for Speakers is now open. This is your chance to present to the world-wide .NET Community remotely from your own time-zone. Head to www.dotnetconf.net to learn more and save the date!


.NET Foundation Project Updates

ML.NET 1.2 released

ML.NET 1.2 and updates to Model Builder and the CLI were released on early July 2019. ML.NET is an open-source and cross-platform machine learning framework for .NET developers. ML.NET also includes Model Builder (a simple UI tool for Visual Studio) and the ML.NET CLI (Command-line interface) to make it super easy to build custom Machine Learning (ML) models using Automated Machine Learning (AutoML). Using ML.NET, developers can leverage their existing tools and skill-sets to develop and infuse custom ML into their applications by creating custom machine learning models for common scenarios like Sentiment Analysis, Price Prediction, Image Classification and more!

The following are some of the key highlights in this release:

  • General availability of TimeSeries support for forecasting and anomaly detection
  • General availability of ML.NET packages to use TensorFlow and ONNX models
  • Easily integrate ML.NET models in web or serverless apps with Microsoft.Extensions.ML integration package
  • MLNET CLI and Model Builder for Visual Studio were updated with multiple improvements

For further details on the ML.NET 1.2 release, check this Blog Post:

Announcing ML.NET 1.2 and Model Builder updates (Machine Learning for .NET)

Get started with MLNET here. Get started with Model Builder here. Refer to documentation for tutorials and more resources. Learn from samples apps for different scenarios using ML.NET.
 

Cake v0.34.0 released & v0.34.1 released
cakebuild

Version 0.34.0 has several features, improvements and bug fixes, full details in the linked blog post but a few highlights in this release:

  • Improved MSBuild 16 (VS2019) tool resolution
  • Update to Roslyn version 3.0.0
  • Updated to NuGet client version 5
  • NuGet pack support for several new nuspec elements

Version 0.34.1 is just a minor release as a hotfix to address an issue breaking scripts when the dynamic C# keyword was used in build scripts. This was a side effect of updating from Roslyn 2.x to 3.x.

๐ŸŽ‰ We're also happy to share that Cake turned five years old this May! And we've just done our 100th Cake release! ๐ŸŽ‰
Huge thanks to our contributors and users! Wouldn't have been possible without your support! โค

Migrate ASP.NET Web Forms Sites to .NET Core using DotVVM

Did you know that DotVVM can be used to incrementally modernize old ASP.NET Web Forms applications and lift them to .NET Core? It is much easier than doing a full rewrite, and the application can be deployed at any time during the entire process.

  • Install DotVVM NuGet package in your Web Forms site
  • Create a DotVVM master page using the same CSS
  • Start converting ASPX pages to DotHTML syntax, one at a time
  • When all the Web Forms pages are gone, change your CSPROJ to use .NET Core

We have created some useful resources that will help you in this process.

Prism v7.2.0.1367 released

Prism 7.2 has several improvements for WPF and Xamarin.Forms developers including:

  • New Fluent API for the IContainerRegistry
  • Added several new API's to IContainerRegistry and IContainerProvider that significantly reduce the need to depend directly on the root container
  • Optimizations for the Weak DelegateReference for the EventAggregator
  • Added a new Dialog Service allowing developers to create dialogs in their app with a more custom look and feel

Additionally Xamarin.Forms developers will be able to enjoy:

  • New initialization API's including IInitialize, IInitializeAsync & IAutoInitialize. These all help you to replace the now Obsolete OnNavigatingTo from INavigatingAware and INavigationAware
  • Automatic ViewRegistrion
  • Additional XAML Extensions... all XAML Extensions are now fully bindable
  • Enhanced Modal logic that should eliminate the need to ever specify whether to use Modal navigation when Navigating back from a page.
  • Added extension to allow selecting tabs from the NavigationService

For more great information be sure to tune in and follow Prism's maintainers

Akka.NET v1.3.14 Released

Maintenance Release for Akka.NET 1.3 You know what? We're going to stop promising that this is the last 1.3.x release, because even though we've said that twice... We now have another 1.3.x release.

1.3.14 consists of non-breaking bugfixes and additions that have been contributed against the Akka.NET v1.4.0 milestone thus far. These include:

To see the full set of changes for Akka.NET v1.3.14, click here.

Follow Akka.NET on Twitter if you're interested in receiving more updates from the project.
 

ASP.NET AJAX Control Toolkit v19.1.0 - Now Available

A few years ago, we took over maintenance and guidance for the ASP.NET AJAX Control Toolkit project. Please refer to this blog post for more information on the project and why we stepped in to assist.

.NET

As part of our ongoing commitment to the project, we've released an update (ASP.NET AJAX Control Toolkit v19.1.0) to address the following issues.

Improvements

  • Visual Studio 2019 Support
  • Security hardening: HTML-encode file names in AjaxFileUpload (#483)

Resolved Issues

  • AutoCompleteExtender: the TextChanged event is not fired in Edge (#458)
  • Rating: The raise_mouseOver method has an invalid argument name (#461)
  • AsyncFileUpload changes the frame target to _top (#466)
  • HtmlEditorExtender unconditionally removes tags with data URLs (#467)
  • NRE in IsLocalizationEnabled() within a PageAsyncTask (#486)

Ready to Upgrade?

To update the ASP.NET AJAX Control Toolkit, please download our most recent installer using the link below.

Download

Or, if you prefer, use Nuget:

ASP.NET AJAX Control Toolkit Nuget package

As always, we welcome your feedback. Please share your thoughts on this update via GitHub.
 

Sextant 2.0 released

Sextant a view model navigation library released 2.0. This release adds a few new features, cleans up some existing issues and deprecated some functionality.

  • We changed the way regsitration of Sextant dependencies are handled

  • Added Navigation Parameters that are passed on Navigation

  • Added Sextant.XamForms for Xamarin.Forms support

  • Example


Meetups

Our .NET Foundation sponsored .NET Meetup Pro groups are continuing to grow worldwide. We just passed 300 groups! Here are some quick stats:

  • 307 Groups
  • 60 Countries
  • 230K Members

Our .NET Meetup Pro group helps developers find your group, as well as get involved with local events like .NET Conf Local. If your meetup hasn't joined yet, you can right here.
.

.NET Meetup


Connect with the .NET Foundation online

The .NET Foundation is on Facebook now. Please like our page! We'll post regular updates and interesting things happening with .NET to share.

The .NET Foundation is also on YouTube. Watch community standups and design reviews as well as code-focused shows and interviews across our multiple playlists.


Remember to Subscribe!

Please sign up to get the .NET Foundation Update via e-mail. Don't worry, we want to keep these short, interesting, and low-noise, so we won't overload your e-mail.

by Jon Galloway

Earlier this month, I (Jon Galloway) attended and spoke at OSCON (Portland, July 16-18), representing the .NET Foundation.

TLDR:

  • Presentation "Why you should care about open source software foundations" went well
  • Spoke with Open Source Initiative (OSI) about the .NET Foundation joining as an OSI Affiliate member, have since applied
  • Tidelift has an interesting model of supporting open source projects financially while providing value to supporters through paid project support, security scanning, etc.
  • Really good discussions and connections with other open source foundation leaders
  • Attended some good presentations and panels on open source communities

Presentation: Why you should care about open source software foundations

(slide download, 2 minute video on this tweet)

In two years of supporting the .NET Foundation, I continue to see that developers are generally aware that open source software foundations (like the Linux Foundation, Apache Foundation, Eclipse Foundation, and .NET Foundation) exist, but have no idea why. That's unfortunate, because foundations are really important for the entire open source ecosystem, including contributors, project leaders, consumers, businesses who depend on open source, pretty much everyone in software development. I've been giving a talk on what the .NET Foundation does at .NET related conferences over the past few years; at OSCON I broadened this to a more general "why are foundations a thing" talk, with .NET Foundation as a more of a case study.

My high level generalization is that open source software foundations exist to make sure the projects you care about stay around and thrive.*

There are different foundations, with different focuses based on the communities they serve. The .NET Foundation has an interesting challenge, in that it supports both projects contributed by a trillion dollar company as well as projects that are broadly used but are developed by tiny teams.

For the tiny team scenario, I show the following comic in my slides (used with permission):

the truth about open source

Source: http://www.commitstrip.com/en/2014/05/07/the-truth-behind-open-source-apps/ 

In the case of projects contributed and primarily developed by Microsoft, the .NET Foundation serves other purposes, like facilitating collaboration with thousands of companies and individual contributors worldwide through independent licensing, CLA support, legal, etc.

So my high level outline for this presentation is:

The reception was good, and questions indicated people got it. Also nice was that both lawyers from the .NET Foundation's outside legal counsel team (external to Microsoft, as .NET Foundation is a separate non-profit corporation) were there. We went to lunch after the presentation, and they both said that this really helped them understand what we're doing and what's unique about the .NET open source community a lot better.

This session was filmed, but I believe they're just making the video available to paid attendees. I'd be happy to record and post a version if desired.

*Saying that open source software foundations exist to keep projects sustainable is a bit of an over-generalization. For instance, some foundations exist to advocate for viewpoints like free software, open web (Mozilla), etc. But, baby steps, I'm happy to start with a generalization when most people I talk to want the 101 level intro.


Open Source Foundation networking

I had a lot of really good conversations with leaders of open source foundations. It's just generally good for everyone to be aware of .NET as a "real" open source thingโ„ข, but there were two standout interactions:

  • The Open Source Initiative (OSI): These folks were an exceptionally friendly bunch, and recommended that the .NET Foundation join the OSI as an affiliate member. I've since reviewed their requirements and published information and have started the application process. It'll need to go through both boards for approval, but at a high level this sounds really good to me.
  • GNOME Foundation: Our recent governance model restructuring to a community elected board was heavily influenced by the GNOME Foundation's model. It was nice to check in with them, talk to their executive director for a while, and hear what works for them organizationally.

Tidelift conversation

I had a long discussion with Luis, a co-founder at Tidelift. We've chatted before via Twitter and e-mail, but their business model is complex enough that it was much more effective to talk in person.

Tidelift offers a "managed open source subscription backed by creators and maintainers". Luis is a lawyer with a long history in open source, and he's been working to think through how to offer a subscription model that benefits both open source projects and sponsors. Here's the idea:

  • Companies that use open source software sign on for a subscription
  • Tidelift scans their software to help them determine what they're using (note: according to Luis, when companies guess at supporting open source projects, it can come down to well marketed projects, who the CTO follows on Twitter, etc.; actually analyzing dependency trees reveals building block packages that they may be relying on heavily without knowing it)
  • Tidelift builds a relationship with open source projects to set up support plans. Projects need to have things like defined security vulnerability reporting plans, support structure, etc., and in exchange Tidelift gives them a usage based share of their monthly subscription revenue.
  • Some of the subscription revenue supports paid development for issues requested by sponsoring companies.

Note: This is my quick summary from an in-person conversation, and it's likely it's not exactly precise. I recommend reading the content on the Tidelift site to make sure you get the real scoop.

It's an interesting model that aims to connect the dots between companies using open source software and under-funded open source projects. While at some point we may want to look at a bigger, organizational level agreement, I think we'll start by offering an introduction to .NET open source community projects that are interested. Also, Luis knows everyone in this space, so it was nice just hanging around at their booth for an hour or so and meeting all the open source legal people who came by to chat. :-)


Attended Session Highlights

I attended some informative sessions, with a focus on open source governance and community. Some highlights:

FOSS governance: The good, the bad, and the ugly (Deb Nicholson, Software Freedom Conservancy)

This was an informative, and highly entertaining, overview of open source project best and worst practices. My main takeaway was that open source project teams and practices often organically evolve, and aren't objectively evaluated to see what's working and what can be improved. Deb pointed out a lot of things, like shared vision, documented processes, and plans for dealing with hostile leaders, that are worth stepping back and thinking about.

Building and maintaining open source communities (panel)

Great stuff at this panel! Some top tips from leaders that have built effective open source communities:

  • Focus on and improve onboarding experience
  • Look for your top contributors ("one percenters") and really support them
  • Watch for signs of burnout, especially in your 1%ers
  • Ask them what problems they're facing and what they're most proud of
  • Rotate through administrative roles
  • Have community awards
  • For open source projects associated with a company, make corp leaders aware that you're building and spending community capital. A corporate misstep can spend years of capital the team has been building.
  • Document everything, especially succession plans
  • Metrics - agree with management on goals, tie in to corporate goals
  • Don't focus on code, focus on needs of community

We also gave away some stickers, and I popped in at the Microsoft table to talk to .NET developers as they stopped by.

Overall, this was a valuable conference to attend. It was really good to continue to publicize open source .NET and the .NET Foundation, make connections with other foundation leaders, and learn tips that have been effective in building open source communities.