Skip to content

Commit 89b5f80

Browse files
Fixes #12203 - Add the Monad Manifesto (#12205)
* Add the Monad Manifesto * Fix typos * Apply suggestions from code review Co-authored-by: Mike F. Robbins <6719572+mikefrobbins@users.noreply.github.com> * Update monad-manifesto.md reflow paragraph --------- Co-authored-by: Mike F. Robbins <6719572+mikefrobbins@users.noreply.github.com>
1 parent 00c7f44 commit 89b5f80

File tree

4 files changed

+104
-65
lines changed

4 files changed

+104
-65
lines changed

assets/MonadManifesto.pdf

371 KB
Binary file not shown.
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
---
2+
description: The Monad Manifesto explains the original vision for PowerShell and how it would change the way we manage systems.
3+
ms.date: 07/07/2025
4+
title: The Monad Manifesto
5+
---
6+
# The Monad Manifesto
7+
8+
Jeffrey Snover, the inventor of PowerShell, wrote the Monad Manifesto to explain his vision for
9+
PowerShell and how it would change the way we manage systems. You can read more about why he wrote
10+
it in his [Monad Manifesto][02] blog post.
11+
12+
In that post, he explained how hard it was to communicate the vision for PowerShell to widely
13+
distributed development teams. The development teams didn't understand the vision. Writing the
14+
Manifesto forced him to be clear about what problem was being addressed, the core principles of the
15+
design, how to address the issue, who would benefit from it, and why.
16+
17+
Use the following link to download a copy of the Manifesto.
18+
19+
- [Monad Manifesto][01].
20+
21+
This document is historically significant to PowerShell. It's a version of the original Monad
22+
Manifesto, which articulated the long-term vision and initiated the development effort that became
23+
PowerShell. PowerShell has delivered on many of the elements described in this document.
24+
25+
<!-- link references -->
26+
[01]: https://github.com/MicrosoftDocs/PowerShell-Docs/blob/main/assets/MonadManifesto.pdf
27+
[02]: https://www.jsnover.com/blog/2011/10/01/monad-manifesto/

reference/docs-conceptual/overview.md

Lines changed: 75 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@ PowerShell is a modern command shell that includes the best features of other po
1616
most shells that only accept and return text, PowerShell accepts and returns .NET objects. The shell
1717
includes the following features:
1818

19-
- Robust command-line [history][01]
20-
- Tab completion and command prediction (See [about_PSReadLine][02])
21-
- Supports command and parameter [aliases][03]
22-
- [Pipeline][04] for chaining commands
23-
- In-console [help][05] system, similar to Unix `man` pages
19+
- Robust command-line [history][09]
20+
- Tab completion and command prediction (See [about_PSReadLine][18])
21+
- Supports command and parameter [aliases][05]
22+
- [Pipeline][11] for chaining commands
23+
- In-console [help][14] system, similar to Unix `man` pages
2424

2525
## Scripting language
2626

@@ -30,90 +30,100 @@ the .NET Common Language Runtime (CLR). All inputs and outputs are .NET objects.
3030
text output to extract information from output. The PowerShell scripting language includes the
3131
following features:
3232

33-
- Extensible through [functions][06], [classes][07], [scripts][08], and [modules][09]
34-
- Extensible [formatting system][10] for easy output
35-
- Extensible [type system][11] for creating dynamic types
36-
- Built-in support for common data formats like [CSV][12], [JSON][13], and [XML][14]
33+
- Extensible through [functions][08], [classes][06], [scripts][12], and [modules][10]
34+
- Extensible [formatting system][07] for easy output
35+
- Extensible [type system][13] for creating dynamic types
36+
- Built-in support for common data formats like [CSV][15], [JSON][16], and [XML][17]
3737

3838
## Automation platform
3939

40-
The extensible nature of PowerShell has enabled an ecosystem of PowerShell modules to deploy and
41-
manage almost any technology you work with. For example:
40+
The extensible nature of PowerShell provides an ecosystem of PowerShell modules to deploy and manage
41+
almost any technology you work with. For example:
4242

43-
Microsoft
43+
Microsoft modules
4444

45-
- [Azure][15]
46-
- [Windows][16]
47-
- [Exchange][17]
48-
- [SQL][18]
45+
- [Azure][02]
46+
- [Windows][25]
47+
- [Exchange][04]
48+
- [SQL][27]
4949

50-
Third-party
50+
Third-party modules
5151

52-
- [AWS][19]
53-
- [VMware][20]
54-
- [Google Cloud][21]
52+
- [AWS][30]
53+
- [VMware][32]
54+
- [Google Cloud][31]
5555

5656
### Configuration management
5757

58-
PowerShell Desired State Configuration ([DSC][22]) is a management framework in PowerShell that
58+
PowerShell Desired State Configuration ([DSC][20]) is a management framework in PowerShell that
5959
enables you to manage your enterprise infrastructure with configuration as code. With DSC, you can:
6060

61-
- Create declarative [configurations][23] and custom scripts for repeatable deployments
61+
- Create declarative [configurations][19] and custom scripts for repeatable deployments
6262
- Enforce configuration settings and report on configuration drift
63-
- Deploy configuration using [push or pull][24] models
63+
- Deploy configuration using [push or pull][21] models
64+
65+
## Monad Manifesto
66+
67+
Jeffrey Snover, the inventor of PowerShell, wrote the Monad Manifesto to explain his vision for
68+
PowerShell and how it would change the way we manage systems. Use the following link to download a
69+
copy of the [Monad Manifesto][33].
70+
71+
This PDF file is a version of the original Monad Manifesto, which articulated the long-term vision and
72+
started the development effort that became PowerShell. PowerShell has delivered on many of the
73+
elements described in this document.
6474

6575
## Next steps
6676

6777
### Getting started
6878

6979
Are you new to PowerShell and don't know where to start? Take a look at these resources.
7080

71-
- [Installing PowerShell][25]
72-
- [Discover PowerShell][26]
73-
- [PowerShell 101][27]
74-
- [Microsoft Virtual Academy videos][28]
75-
- [PowerShell Learn modules][29]
81+
- [Install PowerShell][22]
82+
- [Discover PowerShell][29]
83+
- [PowerShell 101][23]
84+
- [Microsoft Virtual Academy videos][26]
85+
- [PowerShell Learn modules][28]
7686

7787
### PowerShell in action
7888

7989
Take a look at how PowerShell is being used in different scenarios and on different platforms.
8090

81-
- [PowerShell remoting over SSH][30]
82-
- [Getting started with Azure PowerShell][31]
83-
- [Building a CI/CD pipeline with DSC][32]
84-
- [Managing Microsoft Exchange][33]
91+
- [PowerShell remoting over SSH][24]
92+
- [Getting started with Azure PowerShell][03]
93+
- [Building a CI/CD pipeline with DSC][01]
94+
- [Managing Microsoft Exchange][04]
8595

8696
<!-- link references -->
87-
[01]: /powershell/module/microsoft.powershell.core/about/about_history
88-
[02]: /powershell/module/psreadline/about/about_psreadline
89-
[03]: /powershell/module/microsoft.powershell.core/about/about_aliases
90-
[04]: /powershell/module/microsoft.powershell.core/about/about_pipelines
91-
[05]: /powershell/module/microsoft.powershell.core/get-help
92-
[06]: /powershell/module/microsoft.powershell.core/about/about_functions_advanced
93-
[07]: /powershell/module/microsoft.powershell.core/about/about_classes
94-
[08]: /powershell/module/microsoft.powershell.core/about/about_scripts
95-
[09]: /powershell/module/microsoft.powershell.core/about/about_modules
96-
[10]: /powershell/module/microsoft.powershell.core/about/about_format.ps1xml
97-
[11]: /powershell/module/microsoft.powershell.core/about/about_types.ps1xml
98-
[12]: /powershell/module/microsoft.powershell.utility/convertfrom-csv
99-
[13]: /powershell/module/microsoft.powershell.utility/convertfrom-json
100-
[14]: /powershell/module/microsoft.powershell.utility/convertto-xml
101-
[15]: /powershell/azure
102-
[16]: /powershell/windows/get-started
103-
[17]: /powershell/exchange/exchange-management-shell
104-
[18]: /sql/powershell/sql-server-powershell
105-
[19]: https://aws.amazon.com/powershell/
106-
[20]: https://developer.broadcom.com/powercli
107-
[21]: https://cloud.google.com/powershell/
108-
[22]: /powershell/scripting/dsc/overview/dscforengineers
109-
[23]: /powershell/scripting/dsc/configurations/configurations
110-
[24]: /powershell/scripting/dsc/pull-server/enactingconfigurations
111-
[25]: /powershell/scripting/install/installing-powershell
112-
[26]: discover-powershell.md
113-
[27]: /powershell/scripting/learn/ps101/00-introduction
114-
[28]: /shows/browse?terms=powershell
115-
[29]: /training/browse/?terms=PowerShell
116-
[30]: /powershell/scripting/learn/remoting/ssh-remoting-in-powershell-core
117-
[31]: /powershell/azure/get-started-azureps
118-
[32]: /azure/devops/pipelines/release/dsc-cicd
119-
[33]: /powershell/exchange/exchange-management-shell
97+
[01]: /azure/devops/pipelines/release/dsc-cicd
98+
[02]: /powershell/azure
99+
[03]: /powershell/azure/get-started-azureps
100+
[04]: /powershell/exchange/exchange-management-shell
101+
[05]: /powershell/module/microsoft.powershell.core/about/about_aliases
102+
[06]: /powershell/module/microsoft.powershell.core/about/about_classes
103+
[07]: /powershell/module/microsoft.powershell.core/about/about_format.ps1xml
104+
[08]: /powershell/module/microsoft.powershell.core/about/about_functions_advanced
105+
[09]: /powershell/module/microsoft.powershell.core/about/about_history
106+
[10]: /powershell/module/microsoft.powershell.core/about/about_modules
107+
[11]: /powershell/module/microsoft.powershell.core/about/about_pipelines
108+
[12]: /powershell/module/microsoft.powershell.core/about/about_scripts
109+
[13]: /powershell/module/microsoft.powershell.core/about/about_types.ps1xml
110+
[14]: /powershell/module/microsoft.powershell.core/get-help
111+
[15]: /powershell/module/microsoft.powershell.utility/convertfrom-csv
112+
[16]: /powershell/module/microsoft.powershell.utility/convertfrom-json
113+
[17]: /powershell/module/microsoft.powershell.utility/convertto-xml
114+
[18]: /powershell/module/psreadline/about/about_psreadline
115+
[19]: /powershell/scripting/dsc/configurations/configurations
116+
[20]: /powershell/scripting/dsc/overview/dscforengineers
117+
[21]: /powershell/scripting/dsc/pull-server/enactingconfigurations
118+
[22]: /powershell/scripting/install/installing-powershell
119+
[23]: /powershell/scripting/learn/ps101/00-introduction
120+
[24]: /powershell/scripting/learn/remoting/ssh-remoting-in-powershell-core
121+
[25]: /powershell/windows/get-started
122+
[26]: /shows/browse?terms=powershell
123+
[27]: /sql/powershell/sql-server-powershell
124+
[28]: /training/browse/?terms=PowerShell
125+
[29]: discover-powershell.md
126+
[30]: https://aws.amazon.com/powershell/
127+
[31]: https://cloud.google.com/powershell/
128+
[32]: https://developer.broadcom.com/powercli
129+
[33]: https://github.com/MicrosoftDocs/PowerShell-Docs/blob/main/assets/MonadManifesto.pdf

reference/docs-conceptual/toc.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -451,6 +451,8 @@ items:
451451
href: lang-spec/chapter-16.md
452452
- name: Legacy PowerShell SDK
453453
href: developer/toc.yml
454+
- name: The Monad Manifesto
455+
href: developer/monad-manifesto.md
454456
- name: Docs Contributor's Guide
455457
items:
456458
- name: Overview

0 commit comments

Comments
 (0)