Apa itu Monad Manifesto?
Monad Manifesto adalah sebuah dokumen yang ditulis oleh Jeffrey Snover pada tahun 2002. Dokumen ini merinci ide Snover tentang alat baru untuk administrasi sistem di Windows yang awalnya diberi nama Monad—yang kemudian berubah nama menjadi Windows PowerShell.
Monad Manifesto berfungsi sebagai roadmap atau panduan bagi tim pengembang yang mengerjakan proyek Monad. Snover membayangkan alat ini sebagai solusi untuk mengotomatisasi manajemen sistem lewat shell atau antarmuka baris perintah (CLI). Sebelum resmi dirilis pada November 2006 oleh Microsoft, alat ini dikenal dengan codename “Monad”.
Mengapa Snover mengembangkan Monad
Snover mulai bekerja di Microsoft pada tahun 1999 sebagai arsitek divisi untuk Management and Services Division. Sebelumnya, dia sudah punya pengalaman yang mendalam dalam dunia manajemen sistem Unix.
Salah satu motivasi Snover adalah karena alat otomasi di sistem operasi Windows sangat terbatas. Ia melihat pendekatan berbasis GUI kurang efisien, terutama bagi admin yang ingin menjalankan tugas secara berulang dengan skrip, bukan klik-klik menu. Di sisi lain, command line tools yang ada juga kurang kuat untuk tugas-tugas kompleks. Akibatnya, banyak admin terpaksa menggunakan VBScript atau JavaScript untuk menyelesaikan masalah. Snover ingin mengisi celah ini dengan alat otomasi yang lebih modern dan praktis.

Menurut Snover, perbedaan mendasar antara Unix dan Windows jadi tantangan tersendiri. Unix dikelola lewat file teks, sedangkan Windows dikelola lewat objek dan API. Karena itu, alat-alat Unix tidak bisa langsung digunakan di Windows. Maka dari itu, Snover mengajukan ide untuk membuat tool baru yang bisa meniru gaya manajemen Unix tapi tetap sesuai dengan ekosistem Windows.
Konsep di balik Monad Manifesto
Nama “Monad” diambil dari istilah yang digunakan oleh filsuf Gottfried Wilhelm Leibniz dalam bukunya *Monadology*. Leibniz mendeskripsikan “monad” sebagai unit dasar yang bisa bergabung dengan monad lain untuk menyelesaikan sebuah tugas—mirip seperti konsep pipeline di Unix.
Snover ingin membawa konsep pipeline ke level berikutnya: menggabungkan beberapa langkah dalam satu proses, tapi tanpa harus parsing teks manual seperti di Unix. Tujuannya adalah supaya admin bisa langsung mendapatkan output yang mereka butuhkan, tanpa tebak-tebakan.
Dalam blog-nya tahun 2011, Snover bilang bahwa dia sudah lebih dari setahun mengerjakan Monad, tapi kesulitan menjaga arah proyek karena tim pengembang tersebar antara India dan Redmond, AS. Karena itu, dia memutuskan untuk menulis dokumentasi lengkap—yang akhirnya jadi Monad Manifesto.
“Monad Manifesto memaksa saya untuk memperjelas apa masalah yang ingin saya selesaikan, prinsip-prinsip saya, pendekatan yang saya gunakan, dan siapa yang akan diuntungkan serta alasannya,” tulis Snover.
Nama “Monad” dianggap cocok karena mirip dengan konsep PowerShell, yang terdiri dari ribuan cmdlet dan pipeline yang bisa menghubungkan cmdlet-cmdlet itu untuk menjalankan tugas kompleks menggunakan objek. Objek ini bisa berupa data terstruktur seperti file atau proses. Karena datanya berupa objek dan bukan teks, proses scripting jadi lebih efisien.
Snover juga menggunakan teori *value proposition* dari Geoffrey Moore untuk menentukan fitur apa saja yang benar-benar penting dan mana yang bisa dilepas dalam proses pengembangan.
“[Monad Manifesto] juga menetapkan semangat utama proyek ini—bahwa kita akan sukses jika mampu memberikan nilai nyata untuk pelanggan. Semuanya tentang pengguna, bukan tentang kita, bukan soal teknologinya, bukan tentang Microsoft—ini soal pelanggan dengan masalah nyata dan bagaimana kita bisa memberi solusi yang benar-benar berguna karena kita paham permasalahan mereka dan punya pendekatan unik untuk menyelesaikannya,” tulis Snover.
Fitur-fitur dalam Monad
Monad Manifesto mendefinisikan lima komponen utama dari proyek ini: Monad Automaton Model, Monad Shell, Monad Management Model, Monad Remote Scripting, dan Monad Management Console.
– **Monad Automaton Model** dibangun di atas framework .NET untuk membuat cmdlet. Model ini pertama kali muncul di PowerShell 1.0. Cmdlet ini mirip dengan perintah CLI, tapi bukan executable mandiri.
– **Monad Shell** juga muncul di PowerShell 1.0. Shell ini terdiri dari runtime .NET dan antarmuka interaktif yang memungkinkan cmdlet digunakan seperti API.
– **Monad Remote Scripting** hadir di PowerShell 2.0, dan memperkenalkan arsitektur remote scripting. Fitur ini memungkinkan skrip dijalankan dari jarak jauh di banyak mesin sekaligus.
– **Monad Management Console** dirilis di PowerShell 3.0. Console ini memungkinkan pengguna membuat GUI manajemen kustom berbasis Monad Shell.
– **Monad Management Models** muncul di PowerShell 4.0, yang memungkinkan pengaturan server otomatis menggunakan fitur Desired State Configuration—untuk memastikan konfigurasi server tetap sesuai standar.