Before PowerShell and PowerShell Core 6 were made open source, we had the big PowerShell monolith in place, which was developed and maintained by the PowerShell Team. But there had been a lot of problems with this situation:
- Lack of agility/velocity: There was a legacy control in place, and it was a painful and manual release process with nightly builds tied to Windows having long-running test suites.
- Lack of visibility: The code reviews were done via email, and the issues and working items were stored in many different places.
- Difficult manual feedback process: The Connect/UserVoice items had to be manually triaged into internal work items, and the engineers were completely disconnected from feedback loops.
Therefore, the idea was to set up better engineering processes with rapid, independent builds and fast, transparent tests with automated packing for every platform. In addition, the collaboration needed to be improved in terms of the visibility of the work for all interested parties (first and third parties). A clear project management and release process was needed to provide visibility into current and future releases, as well as a governance system for approving changes and additions to PowerShell.
This all led to PowerShell being made open source, which additionally brought the following benefits with it:
- Enabled the community to directly help in finding and fixing bugs
- Enabled more direct and powerful feedback from the community
- Improved visibility into team priorities
- Increased credibility from the Linux community