17611538698
webmaster@21cto.com

Jeffrey Snover 回忆发布 Powershell 的内部斗争

技术人生 0 187 2024-10-27 01:57:16
导读:PowerShell 如今已成为 Windows 系统的重要组成部分,但是这是作者与微软官僚机构抗争,才将该 Shell 纳入微软的操作系统技术栈中。

图片

Jeffrey Snover被称为 PowerShell 的发明者,但他总是将功劳归功于团队。

在一本称为《Shell of an Idea》一书的前言中,Snover 称其为“一群出色的工程师努力将一整套新技术打造为连贯体验的故事。与此同时,他们还经历了一场长达数年的公司内部政治斗争……”

图片

Shell of an Idea一书封面

这是一个令人振奋的产品,它创造了一个被数百万人使用的工具神话,有时甚至开启了他们的职业生涯并改变了生活。

到 2016 年,这个无处不在的配置管理工具甚至已经脱离了 Windows 操作系统,成为开源软件,还可以在 Linux 上使用。

https://github.com/PowerShell/PowerShell

今年 3 月,微软宣称PowerShell 甚至已经超越了其作为系统管理员工具的本质:

“现在已经被自称DevOps、Cloud Ops 甚至开发人员的角色所使用。”

但这一切是如何开始的?Snover在一则播客节目中分享了一些“令人震惊”的故事,这些故事讲述了微软内部关于是否要将PowerShell付诸实践的争论。根据斯诺弗的LinkedIn 个人资料,他现在已经在Google的网站可靠性工程部门工作。

但他还是忍不住回顾了一下这个工具的影响——以及他们一路走来不得不做出的艰难选择。

所有这些都是为了让那些在凌晨 2 点面临危机的无名系统管理员的生活变得更好。

“你们的软件太垃圾”


在Corecursive的播客中,Snover 讲述了 1999 年微软的吉姆·阿尔钦 (Jim Allchin)首次向他提供工作机会时他自己的反应。


Snover:“不,你的软件太垃圾了。”


阿尔钦:Snover,我知道。我们需要帮助。这样想吧,如果你来这里帮我解决这个问题,想想你会对世界产生什么影响。”


Snover 最近还接受了自动化平台 ScriptRunner 的“Inside IT Automation”YouTube 频道的采访,并表示他曾多次想过创办自己的公司,将类似 PowerShell 的工具带给全世界。


图片

但是“如果我能将它发布到 Windows 中,它将出现在数亿或数十亿台机器上,你知道,数千万人将使用它。这确实是一个机会——一个产生影响的机会。因为这与金钱无关......而是关于影响世界的能力。”

为了与 Unix 竞争,该计划是通过操作系统的“Windows 管理工具”界面开发用于管理网络配置和其他任务的命令行工具(该工具最初名称为“Monad”)。

图片


Unix 系统有它的局限性。

2002 年的一份名为《 Monad 宣言》的白皮书这样指出:Unix 提供的可组合性(复杂功能由较小的组件组装而成)“存在缺陷”,Unix 通过“非结构化文本”将它们连接起来,最终形成了“笨拙、有损、不精确的文本操作实用程序”,称现状“困难而脆弱”,“基于祈祷的文本流解析”和“笨拙、不一致和不精确”的机制等。

Snover 这样告诉Corecursive频道,他雇佣的承包商团队甚至已经为 WMI 命令行实用程序 ( WMIC ) 实现了前 70 个操作。但在此过程中,Snover 了解到了在微软工作的一个“肮脏的秘密”。“微软的垃圾箱里有成堆的很棒的功能,因为他们开发了这些东西,但没有测试组织的带宽来签署。”

因此,为了绕过这个问题,Snover 创建了一个“通用”型命令生成器,认为它对某个命令的特定配置只是元数据。

“人们反对我这样做……而这就是人生的教训之一:时不时地,你只需要知道什么时候该当个傻瓜。如果你从不当傻瓜,那可能意味着你没有做出足够勇敢的改变或将一个沉默寡言的组织推向它应该去的地方。”

“这个!这个!这个!”


Snover 赢了——他在圣诞节假期里又实现了 72 条命令。


他告诉Corecursive说,这比他和整个昂贵的外包商团队完成的还要多!但很快,Snover 就找到了微软的一个团队,将操作系统 Shell 移植到了 Windows,并用“PowerShell 的所有核心架构原则”编写了自己的 10,000 行原型,只是为了说服他们继续他的工作。“他们的眼睛睁得大大的,他们说,‘这个!这个!这个!’我帮助他们获得了资金。”


“然后我意识到,‘天哪,这可能是我一生中最好的想法。我应该去做这个!’” Snover 说,微软允许他转到自己的项目上——尽管在转行时,“我被降职了”。Snover 非常尴尬,甚至没有告诉他的朋友或家人(尽管“显然,我必须告诉我的妻子,因为这对我们有很大的经济影响。”)


但Snover来说,对世界产生影响比头衔等东西更有价值——甚至比随之而来的金钱更有价值。“我说,‘嘿,你知道,我觉得我可以用这个东西改变世界。好吧,我被降职了。这是很糟糕。但如果我能成功,并把它融入 Windows,伙计,我就能影响数百万人的生活了。’”

在与其他团队集思广益讨论各种可能性时,Snover 似乎顿悟了。“我们意识到,计算曾经很有趣。后来它似乎不再有趣了。但这个又很有趣了。”它有一个社交元素。与基于 GUI 的解决方案不同,在基于 GUI 的解决方案中,问题只需单击即可不可见地解决,而脚本化解决方案会创建一个可与其他用户共享的工件——脚本本身。“你在使用一种语言,对吧?你在交流。”

“然后我有了这个神器,我把它发布出来,人们都在使用它。我感激不尽。就像,他们欠我一杯啤酒。”

“人们最终会欣赏你记录下来的聪明才智”。Snover 如此说道,这在基于 GUI 的方法中永远不会发生。因此,他宣称基于鼠标和 GUI 的方法是“反社会的”。经过多年的变化,这就是这种社会环境……

“那一刻真的让人感觉,‘伙计,我们玩得太开心了。’”

最终决战


但在 Windows 的老家,人们几乎在制度上抵制命令行界面。


不过公平地说,“首先,比尔·盖茨总是能做到,” Snover说。


比尔·盖茨做到了。


“这对我一点帮助都没有。一点帮助都没有,对吧?”


但 Snover 的团队得到了微软 Exchange 背后团队的支持。在关于终止其项目的会议上,Snover 表示,他的 Exchange 盟友会回应说:“不。我有一家价值数十亿美元的企业。我押注于此 — — 我需要它。你们不能杀死它。”


Snover 在接受Inside It Automation采访时强调了一个重要观点:他回顾过去,“团队交付了 PowerShell。”而这支团队的特别之处在于其凝聚力。“那儿的氛围非常棒,充满了同事情谊。”


但最终,一切都归结为与 Windows 官方架构师的最后摊牌。


Snover 在Corecursive播客中说,他尽职尽责地遵守了他们正式的设计变更流程和“极其严苛”的要求,以便将其纳入 Windows 中——然而,Snover 称其为“Windows 负责人”,他却在 20 分钟内被某人告知撤回请求。


然而,Windows Server 的高管起来反驳说,Snover的产品“对他的业务至关重要”。Snover 用 20 个字概括了接下来发生的事情。“然后高管之间发生了一场大战。这真的很混乱。但最终,Windows Server 高管获胜了。”


PowerShell 1 作为 Windows Vista 的一部分发布。Windows 粉丝还记得它是随 Windows XP SP2 和 Windows Server 2003 SP1 一起发布的。)但这仅仅是个开始。


“第一版我们做到了这一点。第二版我们完成了这些内容。第三版完成了这些内容。第四版呢?我们基本上完成了愿景!


影响和云


在“Inside IT Automation”的采访中,采访者Heiko Brenn首先读了一位 PowerShell 用户发表感谢的 LinkedIn 帖子


图片

“哦,那真是太好了,”Snover 满怀感激地说道。

“是的,他们成了英雄。他们被邀请在会议上发言。许多人因此成为了专业演讲者。这太神奇了。”

Snover 告诉Corecursive,他还看到了另一个巨大的影响。在微软 Office 部门工作时,他从该部门的高级经理Perry Clarke那里听说,“PowerShell 是微软进入云端的主要原因。”Clarke 说,Office 率先引领了这一潮流——“Office 通过Azure 顺利进入云端。”

但更重要的是,“如果没有 PowerShell,我们永远无法进入云端。”想象一下,通过一次又一次地点击 GUI 界面来配置每台服务器。“你无法多次执行此操作……”

Snover 在接受Inside IT Automation采访时重述了这个故事。通过能够编写脚本、能够自动化所有操作、能够说‘哦,嘿,我这样做了,但不太对。改掉这个。’大规模地应用这项技术让他们能够实施”成为 Microsoft Office 365 的早期先驱,为 Azure 进入市场铺平了道路。”

故事结束时,Snover 开心地开玩笑说:

“哇!他们欠我更多的钱了。”

作者:聆听世界的鱼

参考:

https://thenewstack.io/jeffrey-snover-remembers-the-fight-to-launch-powershell/

评论