Unix哲学是如何给我们带来“Web应用程序”而不是“软件”的

2020-07-18 09:28:53

第一次,同样数量的人搜索APP和软件,结束了软件作为我们在计算设备上运行的东西的流行术语长达数十年的统治地位。程序、应用程序、软件、小程序,全部用一个三个字母的单词代替。

当史蒂夫·乔布斯在2008年推出iPhone应用商店时,它不仅改变了移动开发,也改变了我们谈论软件的方式。突然间,软件唤醒了旧的、四四方方的、昂贵的台式机,它被降级到了办公桌上。APP唤起了你下载的新的、未来的、下一个大的东西,并告诉别人他们应该尝试一下。软件从来都不是一成不变的。

然而,也许软件是品牌塑造的失误。应用程序是我们一直应该拥有的软件。

软件是“计算机使用的程序(或一系列编码指令)和其他操作信息”,牛津词典如是说。

因此,应用程序是“为实现用户的特定目的而设计和编写的程序或软件”。APP是这个词的缩写。

软件无所不能,一次越多越好。当你在盒子里购买软件时,你想要的是最大的回报。即使是一个单独的程序也是不够的-Microsoft Office、Adobe Creative Suite和更多的程序捆绑在一起。你安装了一件东西来做所有的事情。

应用程序只做一件事,这件事在屏幕更小、程序价格更低的移动设备上是完全有意义的。闹钟程序在电脑上可能看起来很荒谬,而在手机上,除了报时之外什么也不做的时钟应用程序似乎很正常。一个应用程序,一个用途。

然后,您可以将它们串在一起。给你的朋友发短信说要去吃晚饭,然后打开Yelp找到一个好地方,点击谷歌地图的链接获取方向,然后点击他们的电话号码打开你的手机应用程序进行预订。

“有一款应用可以做到这一点”不只是一句口号。它重申了一个可以追溯到个人电脑之前的早期哲学,即“让每个程序做好一件事”。

早在每张桌子上都有电脑,更不用说每个口袋里都有电脑之前,20世纪70年代的Unix哲学就宣称,从本质上讲,应用程序应该:

最初的软件很简单,一部分是出于需要,一部分是出于设计。在电子邮件应用程序中不需要太多的文件夹和标签,这是今天仍然潜伏在终端中的邮件命令。它所需要做的就是收发电子邮件。

Unix的理念说,这对一个程序来说就足够了。假设您想要发送一封电子邮件时事通讯。UNIX说不要添加功能。相反,您可以在一个文本文件中列出您的电子邮件地址,在另一个文本文件中列出您的电子邮件正文,然后使用vi对这两个文件进行编辑。然后,您可以编写一个新程序来读取这两个文件,并使用sendmail命令发送单独的消息。你不需要重新发明轮子;你只需要发明一个新的缺失的东西。你可以快速移动而不会打碎那么多东西。

在有这方面的应用程序之前的几十年里,就有了这样的命令。您可以将命令串在一起来完成工作。

软件接口把这一切都抽象化了。也许在内部,他们仍然会使用相同的命令来发送邮件和执行其他任务。但对用户来说,该软件是一个巨大的整体,是一个完全由它自己完成的黑匣子。

1995年出现了Hotmail,2000年出现了Salesforce,2005年出现了Google Docs,2007年出现了Dropbox。网络应用程序竞赛开始了。桌面上可以做的一切都可以变成在每台电脑上都能运行的Web应用程序。

网络应用程序将软件带回了它们的根基,这也是最初的必然性。它们是简单的工具,一次只专注于一件事。

它们一开始就是一种构建跨平台软件的方法,这些软件在Windows、Mac和Linux(以及移动设备,一旦这场革命出现后)上都能很好地工作。但Web应用程序很快就发现了它们作为协作软件的核心竞争力,因为它可以一起使用,所以效果更好。围绕协作构建的网络应用程序开始腾飞,变成了定位软件、商业软件,这一次,它们像病毒一样传播开来。

这些网络应用越来越多地建立在其他简单应用的基础上,形成Unix风格。运行在Amazon EC2上的代码从S3获取数据,通过Google和Twitter对用户进行身份验证,使用Twilio发送短信,使用SendGrid发送电子邮件,使用Strike接受付款,使用Segment向其他应用程序发送数据,等等。

它是所有的应用程序,一个接一个的小服务尽自己的一份力量来保持整个系统的运行。在过去的几十年里,一些最有价值的SaaS初创公司并不是消费者直接使用的软件-它们一直是支持应用生态系统的服务,Unix风格的做一件事的最佳风格的应用,使更大的应用成为可能。

支持这一切的是Unix的第二个文本输出哲学,因此一个应用程序导出的数据可以由另一个应用程序导入。这就是从Outlook中导出地址簿并将其导入Gmail的方法,这与让Web API将软件与Zapier、IFTTT、Segment等内置集成和连接工具连接在一起的原理相同。

雅虎管道(Yahoo Pipes)在2007年就有了正确的想法,尽管当时网络应用程序还没有准备好支持它。它基于RSS提要和CSV导出,允许您将数据重新混合成您想要的任何内容。然后,随着越来越多的Web应用程序添加带有WebHook的API和带有JSON和XML输出的端点来共享数据,工具如雨后春笋般涌现出来,用于翻译每个应用程序的API并将Web应用程序连接在一起。整个无代码开发领域都围绕着应用程序自身的通信而蓬勃发展。

网络应用程序最初是通过让人们一起交流而获胜的。然后,通过API,他们巩固了自己的地位,并通过让应用程序进行通信来取代桌面软件。现在比以往任何时候都更容易构建专注于做好一件事的工具,那时你可以将每一个非关键功能外包给其他应用程序的API,并让你的用户通过将你的应用程序连接到他们已经使用的任何其他工具来扩展你的应用程序。

软件回到了它在Unix中开始的地方,正好赶上了品牌重塑。

软件这个词多年来一直受到抨击。Java小程序开创了这一趋势;它们不是软件,它们是更轻、更简单的东西。然后出现了最初被称为Web应用程序的软件,即在您的浏览器中运行的较新的软件。Basecamp团队在2005年将其缩写为“web-app”。Salesforce创始人马克·贝尼奥夫(Marc Benioff)可能对这一转变做出了最大贡献,他将自己的工具打上了软件终结的烙印,并配上了与之相匹配的标志。然后,他将AppStore.com注册为Salesforce于2006年推出的AppExchange的原始名称。网络应用程序成为默认的新术语只是个时间问题。

然后它就从那里蔓延开来。前一天,应用程序还是我们手机上的东西;第二天,它们无处不在。前一天,软件还在独立运行;第二天,我们的应用程序开始相互对话,实现了协同工作的自动化。

软件这个词仍然存在,尽管越来越多地隐藏在SaaS和CMS等缩略语中。APP获胜-它的搜索量是现在软件的5倍以上。

贝尼奥夫回忆起普莱斯抱怨Salesforce的“无软件”活动时说:“你还在做软件,只是交付方式不同而已。”然而,交付才是一切不同的原因。它不仅改变了我们谈论软件的方式,也改变了我们对它们的看法,改变了我们对它们应该如何工作的想象。

获得关于设计或产品的反馈的最佳方式是什么?你有没有最喜欢的调查或民意测验工具来获得反馈,或者有一个独特的过程来从你的用户那里获得关于你的设计、产品功能、定价和更多的可行的见解?

概念与融合的优势是什么?我从2013年开始使用Confluence,在我看来,它是最好的文档协作工具。最近,我发现这种观念正在变得流行起来。周围有没有重度用户的想法?

辩论:“漫游研究”与“概念漫游研究”自称是网络思维的笔记工具。它建立在一个图形数据库之上,这意味着它的扁平:文档不会存在于其他文档中,而是所有的Coex……