Hi folks!

Back in the State of the Union, we mentioned an upcoming live meeting open to all. We have scheduled the first of these for Tuesday, October 13th, at 11:30-12:30 Eastern Daylight Time. For this first meeting, the format will be a panel discussion with the Board of Directors, Committee Chairs, and the Executive Director. The event will take place via Teams Live Meetings and feature live Q&A from questions submitted from the public. We'll also take questions in advance.

Submit questions in advance with this form, and during the event with Teams' Q&A feature. We recognize that the audience for .NET is global and as we continue to hold these quarterly, we will vary the time to accommodate different time zones. The full recording will always be available afterwards.

To join the event, use this link: https://aka.ms/dnf/all-hands-fall-2020.

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

General news

The .NET Foundation GitHub org (https://github.com/dotnet-foundation) will require 2FA enabled starting on September 15th. Anyone that does not have 2FA enabled on their account at that time will be automatically removed from the org. Please see the GitHub help on enabling 2FA on your account.

Board Elections Update

The .NET Foundation just completed it's second annual election and elected a new board of directors. The current board consists of Layla Porter, Shawn Wildermuth, Jeff Strauss, Rodney Littles, II, Beth Massi, Bill Wagner, and Javier Lozano. Claire Novotny has been working with the new board on the transition. The new board formed an Executive Committee to review the tools and processes it uses to collaborate so it can maintain and increase momentum.

.NET Virtual User Groups

The .NET Foundation launched a brand new page for .NET Meetups making it easier to find meetups, get started, and find resources. Additionally, Jon Galloway and James Montemagno worked with the outreach committee to spearheaded a .NET Foundation initiative called the .NET Virtual User Group that launched fully this month. The Virtual User Groups enables developers to find .NET user groups around the globe that are hosting their events online that they can attend. This program helps promote existing user groups that have gone virtual, but also enables the community to take their user group online by providing streaming services. So far there have been 20 event submitted with over 500 members joining.

If you run a .NET user group, and would like to have your event open to a wider audience, sign up at the .NET Virtual User Group page. A list of upcoming Virtual User Groups to join is also there and you can catch recordings of past events on our YouTube playlist.

Member resources

We'd like to make our members aware of some marketing resources you can take advantage of.

.NET branding guidelines

Microsoft released updated .NET branding guidelines on GitHub github.com/dotnet/brand. The purpose of these guidelines is to provide a framework for communicating with the .NET developer community and establishing a consistent brand identity. This not only includes the logo & typeface but also consistent messaging, terminology, fun illustrations and presentation templates you can use.

Events

"The Maintainers" Video Series Needs You

Shawn Wildermuth is putting together a short video series about open source maintainers. You can view the existing episodes (with Brad Wilson of xUnit fame; and Jimmy Bogard of AutoMapper) by visiting the YouTube Playlist. If you're interested in being a part of the series, please contact Shawn on His Website.

.NET Conf 2020 dates announced: November 10-12!

.NET Conf is a free, three day virtual developer event co-organized by the .NET community and Microsoft. This year .NET 5.0 will launch at .NET Conf 2020! See the website for more information and save the date! www.dotnetconf.net

We're also planning our next .NET Conf: "Focus" event, where we continue focusing on specific .NET topics. July 30 we will present a full day of sessions for .NET Conf: Focus on Microservices with some very special guests! Learn more: focus.dotnetconf.net

.NET Foundation Project Updates

Steeltoe 3.0 GA is now available!

Steeltoe is an application framework, built on the .NET interfaces, that provides libraries for .NET Framework and .NET Core developers in order to build cloud-native applications.

In the Steeltoe 3.0 release, we have made some big changes:

  • We made the Steeltoe libraries more platform agnostic to allow for better extensibility into other platforms. So, we took the initial step of creating abstractions for our core components. This will allow future extensibility for our libraries and grow the community into other areas
  • We redirected our focus to support only .NET Core. This decision was based on the direction the Microsoft .NET team is taking the project and to support our users moving forward. We will still be supporting .NET Framework in our 2.x release line
  • We added and renamed many of the packages to support our new features and to provide a consistent package naming
  • We also added some great new features, and here are some of the highlights
    • Automatic wiring and configuration of Messaging APIs with RabbitMQ
    • Kubernetes support for configuration (ConfigMap and Secrets) and service discovery using Kubernetes .NET Client
    • Added Health Groups for readiness and liveness endpoints which are grouped under the /health endpoint
    • Metrics now uses EventSource and EventCounter, along with a new prometheus exporter that now uses OpenTelemetry metrics packages
    • Distributed tracing library now has new exporters and updated internal libraries from OpenCensus to OpenTelemetry
    • Pluggable architecture for Service Discovery (Consul, Eureka, and Kubernetes)
    • New Connector for CosmosDB
    • The /heapdump actuator endpoint now supports heap dumps on Linux
    • Circuit Breaker using Hystrix now using the Prometheus endpoint for easier consumption of events on Prometheus supported services
    • Added mTLS support and service to service authentication using rotating certificates

A lot of time and effort went into this release and we look forward to hearing ideas and feedback from the community.

New Projects

The .NET Foundation would like to welcome the following projects that joined in July and August!

MahApps.Metro MahApps.Metro is a free open-source framework that allows developers to cobble together a better UI for their own WPF applications with minimal effort, Supporting .NET Framework and .NET Core. It overrides the default style of all common WPF controls and gives them a modern look. MahApps.Metro also includes some custom controls based on concepts from Windows Phone, Windows 8 and Window 10 (UWP) Apps.
Verify Verify is a snapshot tool that simplifies the assertion of complex data models and documents. Verify is called on the test result during the assertion phase. It serializes that result and stores it in a file that matches the test name. On the next test execution, the result is again serialized and compared to the existing file. The test will fail if the two snapshots do not match: either the change is unexpected, or the reference snapshot needs to be updated to the new result. When snapshots do not match, the difference is automatically displayed in a diff tool.

New Releases

Linq2Db

Linq2Db 3.0 Released

This is a major upgrade from the existing 2.x versions. Major highlights:

  • IAsyncEnumerable<T> support
  • Linked Server support (cross-server database queries are now supported across all platforms where available)
  • Better Eager load support (reduced query count, performance improvement)
  • Query filters (convenient way to automatically filter data for all queries affecting a table)
  • Support for ROLLUP and CUBE statements
  • OUTPUT statements are now supported on INSERT and DELETE statements on SQL Server
  • General performance and memory use enhancements in all areas
  • Misc. improvements to database providers

We are also happy to announce that Shane Krueger and Stuart Turner have joined the linq2db team.

Full details are available here

NUnit

Documentation project

We’re grateful to have Sean Killeen join us as lead of the documentation project. He put in a lot of effort to modernize the NUnit documentation, to great effect as you can see at https://docs.nunit.org! The docs are now built with docfx. They are integrated with the website, have full-text search, and have edit links on each page where you can submit a PR easily. We look forward to seeing your suggestions and contributions!

NUnit VSTest adapter

  • 3.17.0 has a new StopOnError setting, the ability to set data file paths and line numbers, a major bugfix to show console output properly, and other fixes.

  • 4.0.0-alpha.1 fixes some of the more complex issues, such as working with explicit tests and significant performance improvements. We would really appreciate it if you give this alpha a spin and report whatever you find back to us.

NUnit Analyzers

  • 0.3 improved the documentation of all the diagnostics. It also added new diagnostics for proper usage of string constraints, ContainsConstraint, Does.Contain, and Contains.Item, and the TestCaseSource attribute.

  • 0.4 adds 13 new diagnostics and codefixes for asserts in the classical model such as Assert.Greater, Assert.IsNotEmpty, and Assert.IsNotInstanceOf. We have also improved the handling of asserts against constants and variables of type Task. In addition, we now properly handle ValueSourceAttribute and test methods decorated with both a TestAttribute and a TestCaseSourceAttribute/TestCaseAttribute. We have also added a diagnostic and codefix to ensure that test methods are public.

Please try out the latest and continue to let us know what you’d like to see!

NUnit Console and Engine

  • 3.12.0-beta1 is the first beta release of the NUnit Console able to run .NET Core tests. In addition to this, this release also contains a number of bug fixes, improvements when running on Mono and significant refactoring work towards the goal of creating an engine able to run tests on a wider range of .NET platforms.

    We're particularly interested in this beta release being tested by users of the .NET Core console and users running tests on Mono. Please feedback any issues to the nunit-console repository.

Meetups

Looking for speakers to go deep on AWS?

Would your user group / meetup appreciate hearing about .NET on AWS from an AWS .NET developer advocate? The team of longtime .NET developers would be thrilled to join your virtual user group to chat about the latest for .NET in the cloud.

Here’s a list of example topics:

  • Overview of .NET on AWS: AWS has over a decade supporting .NET on the cloud. We’ll provide an overview of all the support you might not know existed, such as free tools for Visual Studio, PowerShell, Azure DevOps, etc.
  • Building serverless with .NET: The future is now for serverless, and AWS is ensuring .NET is vibrant in that future. We’ll show you how anybody can get started and take advantage of the speed and ease of using serverless with .NET.
  • Infrastructure as .NET: Why learn JSON or YAML to build on the cloud if you can just use .NET? Learn how to model and provision cloud resources in .NET with the open source AWS Cloud Development Kit (CDK)
  • PowerShell on AWS: AWS supports PowerShell and makes it easy to manage your AWS resources in a PowerShell scripting environment. We’ll show you all the things you can easily do on AWS with PowerShell, including native support for serverless.
  • Something else? What are you interested in hear about? Blazor? ML? Reach out and let us know.

You can contact the .NET developer advocacy team at aws-dotnetfdn-interest-open@amazon.com. Cheers!

Our .NET Foundation sponsored .NET Meetup Pro groups are continuing to grow worldwide. Here are some quick stats:*

  • 366 Groups
  • 66 Countries
  • 311K 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.

Map of meetup group locations

The results are in, meet your newly elected board!

Election Wrapup

This was an incredibly competitive race, with 17 very qualified candidates competing for 6 open positions (Beth Massi is Microsoft's one appointed board member, the rest are all elected by .NET Foundation Members.

This election was conducted using Single Transferable Vote (Scottish Rules). It's widely regarded as the most fair methodology, but can be a little complex to understand. Fortunately, the voting system we used (OpaVote) provides a pretty clear, visual breakdown on the voting results page. The voting results page also allows you to download summary data and (anonymous) ballots.

Next steps on this include a small bit of paperwork for the incoming board to accept the appointment, and for the outgoing board to sign off on the election, appoint the new board, and resign their previous position. The old board and new board will meet next week (currently scheduled on August 13th) for a hand-off and the new board has their first regular meeting the following week (August 20th) to get started and schedule our first live "all hands" meeting.

Thank you all for participating in this process, I am thrilled to be working with the new board and I expect that this coming year will bring many good things!

Claire

Hello all! Welcome to the first of what will be a series of updates sharing where we've come from and where we're going. I am Claire Novotny, and I am 6 months in as the Executive Director of the .NET Foundation. I'm very excited to serve the .NET community and I'm enthusiastic about our plans for the future.

TL;DR

Subject Comments
Membership We have over 800 members, which is a YoY growth of 100%.
Sponsors We have 5 corporate sponsors, but we need more.
Projects More than doubled projects in the past two years.
Community We have 365 meetup groups, in 66 countries, with over 307k members.
Transparency Yes, we heard you! 😊. We will be posting regular State of the Union (SOTU) updates going forward.
Process We recently hired a company (Virtual, Inc.) to help us with administrative tasks, finance and operations, so this will get better.
Volunteers We have a lot of willing volunteers but realize we need to channel them better. We're working on ways to do that.
Elections
  • 17 stellar people are running in 2020 Board Elections.
  • Nomination committee to focus on relevant experience for candidates.
Budget Budget is available for the first time to the public. Income of $237k, expenses of $157k.

Background

First, a bit of background about the .NET Foundation to set the context. The .NET Foundation was formed in April 2014 to foster open development by promoting openness, community participation and rapid innovation around the growing .NET open source platform. The original structure was an Executive Director (hired by Microsoft) and a board (appointed by Microsoft). In 2018, the Foundation's structure was changed to encourage greater community control. Now the community could become members and vote on six directors. A corporate sponsorship program enabled the Foundation's budget to come from other companies (in FY20 less than 25% of the Foundation's cash budget came from Microsoft; the rest was from corporate sponsors and individual members). The goal was to enable the community-elected directors decide the Foundation's next steps: what it should focus on, how it should operate, and how to allocate its resources. We wanted a "working board," directors who could help scale and get things done.

Board, Committees, and Volunteers

March 2019 ushered in the first community elected board. Forty-six candidates ran for six open positions and I was honored to be selected along with five other folks. It was a bit challenging after the election. We had ambitious goals but no clear path or guidance on how to get there. I would characterize this period as "growing pains." Board meetings were ad hoc, and with board members located around the world and with us all having a primary job (the board is a volunteer commitment), it was hard to difficult to schedule across time zones and individual schedules. Additionally, it took some time to document and scale processes that had been handled by individuals to scalable processes that worked across a growing team.

When we did meet, we took a "build it and they will come" approach. GitHub teams was chosen as a way that didn't involve email lists and had the ability to include just members. We set up 8-10 committees and hoped those would be a nucleus for people to self-assemble on. Initially, the committees allowed any interested member to join; there was no structure to how the committees would be run, when they'd meet, or how things would get accomplished. It was assumed that each committee would figure out what worked for them. We initiated discussions in GitHub teams seeking to engage members to help guide the direction of the committees and Foundation. This worked for some committees, like Marketing, but most stalled. The Marketing committee was successful in setting up a process to run monthly newsletters with community input, setting up a process for amplification of content, and establishing a core team to coordinate a calendar.

We streamlined the project onboarding process moving applications out of inboxes to GitHub issues; and increased transparency of the process via the Project Onboarding project board which shows the state of each pending application. We caught up with and cleared the backlog of applications; which are now handled by the .NET Foundation Project Committee who publish their minutes to the Projects Team. Also we created a project leaders Slack channel so .NET Foundation project leaders and maintainers could share experiences and help each other.

We also started the "Project Maturity Model" initiative to try to improve the sustainability and adoption of projects by companies; but abandoned it based on the negative feedback from the community, as it was felt onerous with little guaranteed reward for project maintainers, and it was a "surprise" proposal that members felt we had not consulted with them before launching what appeared to be a finalized process.

In this period, we had several sponsors join in addition to Microsoft: Progress, AWS, DevExpress, and Endjin. We had more funds available for programs but no process for distributing.

We also didn't have a clear picture of our budget, so we understandably had trouble spending on programs and sponsoring events. Throughout this period of growing pains, the Foundation struggled with other processes too: project and member applications. Supporting projects and onboarding new ones is one of our core functions. However, our volunteers could only help in spurts with processing these project and membership applications. We needed to improve our operations.

Improving Operational State and Transparency

Starting in January, when I began as Executive Director, I started a series of assessments and projects to improve the operational state of the Foundation. To grow, we had to improve the foundation of our Foundation (you can laugh/groan here). We targeted three key areas: the website, operations, and finance with an overriding goal of improving our overall transparency.

One thing we heard consistently was that no one knew what the Foundation is or what it does, and how to get involved. We engaged a vendor to redesign the information architecture of the website to surface the information we already had. At the same time, we wanted to make it easier to update the site using Markdown and used Dave Glick's Statiq.Web framework to statically generate the site. We still have a lot more content that needs to be added. But since launching in mid-May, we've had many community contributions to the site (the old site rarely got any). Many thanks go out to contributors and we always welcome more!

In parallel, we evaluated and brought in an outside management company, Virtual, Inc., which has experience in helping to run organizations like the .NET Foundation. Virtual was tasked with transforming our processes and operations, and handling all financial aspects, including budgeting and reporting. We had a preliminary budget at the July board meeting, where, for the first time, we saw a balance sheet and budget breaking out our expenses and income. This is also now available to all on our website and it will be updated quarterly.

Scheduling meetings, taking minutes, and setting up repeatable processes is hard. To ensure consistency in scheduling, minute-taking, and publishing, we are using a PM from Virtual to handle these tasks.

Committees have been a challenge to get operational. We've tried several approaches to getting traction but have learned that it's most effective to assemble a committed core group of community members who will show up to regular meetings and "get stuff done." Each committee shows how folks can get more involved; for example, the marketing committee describes how to join on the dotnet-foundation/wg-marketing repository. Non-committee members (the rest of the membership) are encouraged to participate in discussions on the GitHub teams. This is the best place to share ideas, volunteer to help, or provide feedback on open issues. As schedules for meetings became more predictable, we've seen an increase in community participation. The Outreach, Marketing, and Project committees all have full attendance and we're working to define how the Membership committee will operate.

We know it can be hard to keep up with what's going on with the .NET Foundation. We're taking several steps to improve transparency and outbound communications:

  1. For Bylaw, policy, and important announcements, we've created an announcements repo, which will only contain issues with links to where discussion should take place. This will make it easier to watch the repo and be alerted.
  2. Financial statements will be published on our website quarterly after approved by the board.
  3. We'll schedule a quarterly "all hands" meeting with the board and committee chairs that will be broadcast to the public where we'll review current activities and take questions. The first one of these will take place at end of August to give the new board a chance to get up to speed.

Going Forward

This all brings us to today. As I write this, we have 17 amazing candidates running for Foundation's next board and voting is underway. There are a number of things either in-progress or to-be-undertaken shortly:

  • Projects
    • Creating and maintaining an inventory of member projects in a system hosted by Virtual Inc.
    • Reviewing license types supported by Foundation projects.
    • Determining project benefits and support.
    • Scoping out "Seed" projects – projects that are interested in Foundation membership but don't yet meet the criteria.
    • Scoping out "Forge" projects – projects that are determined would be useful to exist but don't already exist in a desired form.
  • Outreach [Minutes]
    • Focusing on supporting and amplifying virtual meetups.
    • Evaluating proposals to support other events.
    • Running a .NET Virtual Meetup group to enable meetup groups to stream live and to promote the group across Foundation properties.
  • Marketing [Minutes]
    • Evaluating our corporate sponsor benefits to build value. Potentially earmarking sponsor funds for specific projects in exchange for benefits like logo placement.
    • Improving outbound communication.
    • Looking at offers for our members, like video training.
    • Identify co-marketing opportunities with our corporate sponsors.
    • Complete the event sponsorship request criteria.
    • Complete the marketing proposals work so community can request marketing funds.
  • Membership
    • Moving the membership system to a Virtual-hosted system that tracks renewal dates and removes the sign-in friction many users experience today.
    • Track our corporate sponsors in a membership system so we can follow the relationship and issue invoices.
    • Defining what it means to be a member of the Foundation.
    • Refining the Director Election campaigns.
    • Overseeing the Director Election process.
    • Working on member benefits that we'll share with everyone soon.

Now that we have a budget and forecast, the Board can allocate funds to the committees to take concrete actions in support of our mission. We invite you to get involved so that you influence how these funds are spent.

Longer term, I have a vision (and I'm thinking big!) where the .NET Foundation can host a large endowment contributed by our sponsors (>$10M) that would enable us to allocate funds to member projects. Last year, this seemed impossible, but over the coming year, I believe we're moving much closer to making that possible.

Closing

The .NET Foundation today is in a much stronger position than we were last year. With new processes, better transparency, and more people than ever volunteering, we know that this will be our best year ever. Please join me in supporting the .NET Open Source ecosystem.

Claire

The voting period for the 2020 .NET Foundation Directors election begins tomorrow at 12:00 PDT and runs through August 3 at 12:00 PDT. All members will receive an email link from OpaVote for your ballot; it's the same system we used last year.

There are an amazing slate of candidates running and it'll be a tough choice! Be sure to check out the YouTube playlist as it contains interviews with the candidates. Remember, the .NET Foundation is lead by the Board of Directors, and your choices determine what we will do this coming year; elections matter.

We are using a ranked choice voting system, so be sure to add all the candidates you want, in the order you prefer. When the voting period ends, it'll tally them all up. Results will be reported on August 4th.

Happy voting! Claire