我需要对Jamie Zawinski的软件信封定律做出适当的解释:
每个程序都会尝试扩展,直到可以读取邮件为止。无法扩展的程序将被可以扩展的程序替换。
我需要对Jamie Zawinski的软件信封定律做出适当的解释:
每个程序都会尝试扩展,直到可以读取邮件为止。无法扩展的程序将被可以扩展的程序替换。
Answers:
到目前为止,所有答案(和评论)似乎都完全集中在声明的前半部分,当它成为下半部分的重要部分时,就变成了“膨胀”的注释:那些不能如此扩展的程序被替换为哪个行。
这不是关于软件膨胀,而是关于市场的现实。人们可能会说他们想要一个简单的产品,但是当您查看实际使用情况时,所使用的东西就是允许用户做更多事情的东西,最终他们替换了功能较弱的工具。
问题的一部分是“简单”是一个令人困惑的词。像“分裂”一样,它可能意味着两个几乎完全相反的事物。人们想要的是可以简化复杂任务的东西。那就是“很好的简单”,并且需要很多复杂性才能正确执行。但是,有些人将其解释为人们想要简单化或简约化的东西。这个概念可能有一定的吸引力,但总的来说,在设计产品时要注意的是“简单”的错误类型。无论您的工作多么出色,对新功能的要求都会不断增加。
举个例子,有我正在工作的程序。您可能从未听说过它,但我们是专业行业的市场领导者:媒体控制。我们的程序很可能会运行您喜欢的电视和/或广播电台。客户的厚爱,他们说这是这么比什么都重要,他们曾经使用过好得多。
这也是巨大的。EXE的大小超过65 MB,具有大约400万行代码,并由超过150个表的数据库作为后盾,这些数据库是在十多年的工作过程中建立的。但是,似乎每次我们尝试将其安装在某个新的站点或网络上时,对于他们的工作流来说,绝对有一两件事是绝对必要的,我们对此没有任何支持。因此,我们最终添加了新功能,因为否则客户将不希望从他们已经习惯的系统中切换。让我重复一遍,顾客喜欢它。
您必须了解这是很久以前发生的,那时对于给定的用户,计算机一次只能运行多个程序还不是主流。用于个人计算机的DOS(可能是Windows 3)和用于Unix用户的基于字符的终端(只有少数具有X11)。
这意味着为了检查您是否收到电子邮件,必须退出当前正在执行的操作,启动邮件程序,阅读邮件,退出邮件程序并重新启动旧程序。我想您会看到,如果您当前的程序可以让您阅读电子邮件,则可以避免所有这些事情。
因此,如果您当前的程序无法阅读您的电子邮件,则倾向于这样做(请记住这是MIT学生),或切换到可以阅读的电子邮件。
这些天,这是很难想象的,但你可以通过限制自己一个得到它是如何的端倪单个浏览器窗口-无标签,无额外的窗户-也许甚至没有使用书签。
正如其他人已经提到的,“法律”是对软件膨胀和分数蠕变的幽默观察,它与Greenspun的第十条规则非常相似:
任何足够复杂的C或Fortran程序都包含一个临时的,非正式指定的,bug缠身的,缓慢执行的Common Lisp的一半。
法律体现Zawinski撰写与Netscape浏览器,后来与Netscape邮件和新闻工作,如所描述这里的,好了,自语道:
接下来,我设计了Terry Weissman,并实现了Netscape Mail and News客户端,版本2.0到3.0。这是我们对软件封装法则的证明:
“每个程序都会尝试扩展,直到可以读取邮件为止。那些无法扩展的程序将被可以扩展的程序替换。”
Netscape浏览器是当时最流行的浏览器,经常因其自身的功能过多而受到批评,如果我没误会的话,它是最后一个支持两个渲染引擎Gecko和Trident的(流行的)浏览器。例如,Ben Goodger指出Netscape的膨胀是导致创建Firefox 1的众多原因之一:
Mozilla的UI功能异常
由于Netscape产品的大多数用户界面设计是由Netscape员工按照Netcenter要求完成的,因此Mozilla用户界面受到了影响。Mozilla套件不是干净的核心,Netscape可以在其上构建满足其需求的产品,而从来没有感觉到完全正确。它充满了笨拙的UI构造,这些构造只存在于Netscape私有源存储库(“商业树”)中的覆盖层中。
加剧这种功能失调的是,当时CPD内不同部门之间(有时连接不佳)的一百多名工程师正在开发该项目。Netscape在过去几年中发展迅速,并且招聘酒吧工程师的能力参差不齐,这表明他们需要其他人的更多帮助,因此功能设计和实现方面的自主权过高。用户体验帮助很少,结果该应用程序迅速膨胀。
1来自本·古德格(Ben Goodger)现在已失效的博客的存档版本。
这不是一条真正的法律,而是对软件项目(如果管理不当)如何变得如此庞大和复杂的讽刺性评论,它们最终以某种方式包括电子邮件阅读器(即使与项目的初衷无关) 。我曾经有一个经理喜欢一个类似的短语:“任何足够复杂的系统中都包含一个半确定的LISP实现”。
我至少看到三种查看方式。
一种是忽略邮件阅读本身,而将其视为一种陈述,即人们似乎喜欢可以灵活地执行几乎所有任务的产品,而不管它与工具的原始意图有多小的关系。如果我们这样看,像Photoshop这样的不支持邮件阅读的产品就不是异常,因为它的插件体系结构足够灵活,可以支持邮件阅读,即使(据我所知)没有这样的插件存在。当“灵活性胜过专业化”时,可以更清晰地总结这种观点,但不是那么原始。
第二种查看方式是,杰米·扎温斯基(Jamie Zawinski)的注意力很狭窄,以至于他只是忽略了已经存在多年,不支持邮件阅读并且不支持此类产品的产品,例如Photoshop,PowerPoint,大多数游戏等。似乎并没有被其他任何一种替代。
第三个与第二个相对,这表示,实质上,产品之间的集成已达到某种程度,以至于有效地将邮件阅读功能集成到了所有内容中,因为现在大多数人都在后台运行邮件阅读器,时间,并且可以快速/轻松地切换到该时间,用其他任何东西剪切和粘贴等,因此邮件阅读器作为单独的应用程序打包的次要细节变得无关紧要。