PowerShell on Linux and Open Source!
Since its inception in 2002 PowerShell has been deeply influenced and improved by the passion and needs of our community. As an example, 80 contributors filed bugs and issues on the “alpha” release. Since that time we, together, have built a strong PowerShell community that supports each other, provides Summits and Conferences and gives great feedback to the product team at Microsoft.
Satya’s new leadership and customer-focused mindset has encouraged and empowered us to do even more with our community. Last year we started a number of successful community initiatives, such as the PowerShell Home Page, the PowerShell Gallery, and various Open Source projects.
Today we are thrilled to move to the next level and provide PowerShell as an open source project on GitHub, available on Windows, Linux and macOS! The official announcement blog can be found here and the PowerShell Webinar is here. This is the most dramatic change since the release of V1 so of course, we had to record the moment for history, here is the video of the team making the repo public!
Last year we started down this path by contributing to a number of open source projects (e.g. OpenSSH) and open sourcing a number of our own components including DSC resources. We learned that working closely with the community, in the code and with our backlog and issues list, allowed us prioritize and drive the development much more responsively. We’ve always worked with the community but shifting to a fine-grain, tight, feedback loop with the code, energized the team and allowed us to focus on the things that had the most impact for our customers and partners. Now we are going big by making PowerShell itself an open source project and making it available on Mac OS X, Ubuntu, CentOS/RedHat and others in the future.
So, where’s the cool stuff?
You can always go to the PowerShell Home Page for information, updates or links about PowerShell and our overall efforts. However, for those who just want to dive in, here some direct links to help you get going right away:
- The downloads for the alpha version of PowerShell built in the PowerShell repo that work on: Ubuntu 14.04/16.04, CentOS 7.1, and Mac OS X 10.11.
- The PowerShell open source project is at https://github.com/PowerShell/PowerShell.
- The Readme.MD file in that folder should display immediately. It contains links the downloads and to installation instructions
- The Contribution Guide gives you the information you need to develop and contribute to the open source project. The FAQ is currently focused on issues for developers who are working to set up their own builds (although this may change over time).
- The PowerShell channel on Youtube contains a variety of brief demos to showcase the basic abilities.
- Demos, in code with comments, are available in the PowerShell Repo demo folder.
All PowerShell development is now done in the open on GitHub at PowerShell/PowerShell with direct community involvement. You can find the governance process defined in GitHub, which describes how to raise issues, contribute to the project, and propose designs via the standard Request for Change process. The governance document identifies the roles, responsibilities, and processes so that contributions can be smoothly incorporated into the product. We modelled our governance process on some of the best practices of other open source projects and after consulting with a number of partner companies and PowerShell MVPs. That said, we are still in learning mode and welcome feedback.
As we move forward, we will work closely with the community to learn and improve our approach to make PowerShell the best tool to manage anything from anywhere. While PowerShell will have been shipping for 10 years on November 14th, in many ways this is the start of a new journey. Your contributions, thoughts and experiences are welcomed and needed. Help us get it right!
We have been working with several internal and external partners to prepare for this release, including .NET Core, Azure, Chef, VMWare, Amazon Web Services, and Google Cloud Platform to name a few. Several of them have provided demos already.
Current Project Status
The PowerShell open source project is currently at an “alpha” level of stability and is community supported. In the future, we will deliver an official Microsoft released version of PowerShell based on open source to anyone running a supported version of Windows or *nix. The timing of the official Microsoft version will be based upon community input and business needs.
There is a list of Known Issues we have already identified that you may want to review.
There are also a set of investments that we know we need to drive moving forward in this area. These include:
- Additional Linux Distros covered – parity with .NET Core
- Writing Cmdlets in Python and other languages
- Add DSC capability to run PowerShell-based DSC resources on Linux
- PSRP over OpenSSH
- WSMan based remoting to downlevel versions of Windows and WSMan based PSRP on Linux.
- Editor Services and auto-generated GUI
- Unix-style wildcard expansion
- Increasing test code coverage for Windows and Linux editions
- Continue increasing cmdlet coverage for Linux and Windows
Many users are familiar with PowerShell, but for those of you who desire to start, the Learning PowerShell doc is a great place to begin your introduction. It contains links to several other articles to help you get going.
What about Windows?
Today marks the beginning a new community-driven PowerShell development process for a wide range of platforms. However, the focus on open source does not change our commitment to Windows, or to our existing PowerShell customers. PowerShell remains the hub of management capabilities for the Windows operating systems. What this move does is enable at least three things:
- You will be able to use PowerShell to manage Windows from Linux or macOS, and Linux from Windows.
- You can contribute to resolve issues and improvements to PowerShell in GitHub
- PowerShell learning and skill set becomes more widely applicable and hence more valuable.
We view this as a very strong win-win.
In order to maintain clarity and consistency in communication, the following is the terminology we will use for this technology:
|PowerShell||This is the default. We are shipping PowerShell. The term PowerShell can be legitimately used to indicate any of the particular editions. This can be used to refer to the language, framework and default cmdlets, etc.|
|PowerShell Core (PSCore)||PowerShell built on .NET Core Common Language Runtime (CoreCLR) for any of the platforms.|
|PowerShell on XYZ
(eg. PowerShell on Linux)
|PowerShell Core built for a particular platform. It can be used to the level of detail desired. Such as “PowerShell on Linux” in the broad sense, or specific such as “PowerShell on Ubuntu 16.04”.|
|Windows PowerShell||PowerShell built on .NET Common Language Runtime (CLR). Windows PowerShell ships only on Windows and requires the complete CLR.|
|PowerShell OSS project||The project and effort that produces PowerShell Core on the PowerShell Repo.|
|PowerShell repo/repository||The GitHub repo that contains the PowerShell source code and is used to build PowerShell. https://github.com/PowerShell/PowerShell|
|PowerShell Gallery||The PowerShell repository for modules, scripts, DSC Resources and other content. http://PowerShellGallery.com|
|PowerShell Home Page||The Microsoft PowerShell communication channel to find “All-Things PowerShell” http://microsoft.com/PowerShell|
The PowerShell team wants to hear from you, and talk with you, as much as we can. Over the next several months, you can find us at these events:
- LinuxCon North America 2016, August 22-24
- Ignite 2016, September 24 – 30
- LinuxCon Europe 2016, October 4 – 6 (attending)
- PowerShell Conference Asia 2016, October 21 – 22
Of course, we will have team members at various other conferences and events such as DevOps Days. When we are in town, we will look forward to touching base with any local user groups.
On November 14th, we will be hosting a special online event to celebrate the 10-year anniversary of PowerShell’s first release.
We will soon be publishing another blog that covers other upcoming events and our broad approach to engaging the community. Watch for upcoming announcements on our PowerShell Home Page.
It is with a strong sense of gratitude to our partners, customers and community, as well as with real excitement about the future, that we start this new era of PowerShell with you!
Kenneth Hansen and Angel Calvo
PowerShell OSS Project Leads