Approximately 9 months ago, we announced PowerShell Core 6 on GitHub being not only Open Source, but also cross platform. Today, I’m proud to announce we are moving out of alpha and into beta!

We realize that moving a technology that started in Windows to Linux has to fit in properly to be accepted and provide a great experience across all platforms. We appreciate all the great feedback — keep it coming!

You can download and read the change log from our usual release page.

If you’ve previously followed the steps to register the packages.microsoft.com Linux repository (see distro specific links below), you can just use apt-get or yum to get the latest version.

What’s changed in those 9 months?

Higher quality

1176 issues were opened, 566 closed, and 166 explicitly labeled as Resolution-Fixed meaning that a change was submitted, accepted, and merged. Note that we haven’t been exactly consistent on using that label, so the actual number of issues fixed is higher.

712 pull requests were opened, 685 closed, and 577 merged.

More Linux distro coverage

We’ve expanded our testing on more Linux distros:

We’ll continue to add distros based on customer demand, although we depend on dotnetcore official supporting those distros. Of course, we also support MacOS 10.

We also started publishing an AppImage which is a distro agnostic packaging technology allowing you to use PowerShell Core 6 on the most recent Linux distros.

We’ll also continue to publish Docker images supporting not only Linux Docker images, but also Windows Docker images.

More test coverage

We currently have 40% code coverage based on 5861 test cases run on Windows. The current code coverage tooling doesn’t work on Linux (yet) although we currently run 4585 test cases on Linux and Mac.

Our goal to get out of Beta towards a Release Candidate is to have 80% code coverage so we still have lots of work left. Adequate test coverage is critical for us to develop faster in the future to ensure new changes don’t cause regressions and potentially break existing customers.

Moving to .NET Standard 2.0

One of the big changes we’ve made for Beta.1 is moving to .NET Core App 2.0.0 (preview1) which is compatible with .NET Standard 2.0. .NET Standard is a set of APIs all .NET platforms have to implement and greatly increases the available APIs you can use in your PowerShell modules or scripts.

What this means is that PowerShell modules built targeting .NET Standard 2.0 can work with both Windows PowerShell (down to .NET 4.5.1) and PowerShell Core 6. For Beta.1, we have a known issue where the assemblies for Windows PowerShell modules should be compatible with PowerShell Core 6, however they can’t be loaded if they are in the GAC. This is something we’ll address in a future Beta release as side-by-side Windows PowerShell 5.1 and PowerShell Core 6 is one of our key scenarios.

We’ll continue to work on producing a quality SDK for PSCore6 to make it easy to develop portable PowerShell Modules that are compatible with Windows PowerShell 3, 4, 5 and PowerShell Core 6 on Windows, Linux, and Mac.

Telemetry

It is critical for us to know how we are growing our user base to help prioritize future investments. Download numbers are not sufficient and with all the different places we publish our releases it become even less reliable as a data point.

In the Beta.1 release, we’ve added census telemetry using Application Insights.

If you prefer to not send us telemetry data, just follow the instructions in the README.

The dashboards we build from the telemetry data will be public and hopefully useful to the community over time if we add more telemetry. Note that any additional telemetry will be added only after going through our RFC process.

Last January, we published a high level plan consisting of everything we knew we needed to get to a 6.0.0 release. Continue to provide feedback on that plan if we missed anything that you consider important that prevents adoption of PowerShell Core 6.

We’ve also started to leverage the GitHub Projects feature to track high level scenarios as projects. This is how the PowerShell team prioritizes our work. Let us know in our Issues if something you care about isn’t prioritized appropriately.

Our Power BI Dashboard will continue to be updated to show various information about this project including related repositories other than PowerShell/PowerShell.

During the Beta phase, we will continue to have timed releases approximately every 3 weeks with a updated Beta (Beta.2, then Beta.3, etc…) similar to what we did with Alpha releases.

Getting out of Beta and declaring a Release Candidate includes:

Fixing all the identified Beta issues

Getting to at least 80% code coverage

Enabling all the scenarios planned for 6.0.0

Hitting our usage targets based on telemetry (to be determined)

Special Recognition of the Community

Approximately 43% of the pull requests and almost 50% of the issues opened came from the community! We appreciate all the contributions from the community whether it is opening issues, commenting on issues, submitting pull requests, or commenting on pull requests. Note that this is specifically for the PowerShell/PowerShell repository; we also appreciate contributions across all of our repositories!

One individual has really stood out from the community and has by far provided the most contributions consistently in both quantity as well as quality: Ilya.

You can see a moving 30 day window of top community contributors in our Dashboard.

PowerShell Core 6 is the start of a new era for PowerShell and I’m excited to see how far we can go together with the community!

Steve Lee Principal Software Engineer Manager PowerShell Team