有时候你所需要的只是一个想法的核心,然后它就会成长为它自己的生命。
安德鲁·亨特(Andrew Hunt)和大卫·托马斯(David Thomas)在他们的《实用程序员》(The Pragmatic Programmer)一书中讲述了石头汤的故事。故事是这样的:村子里闹饥荒,虽然每个村民都有一些食物,但没有一个人有足够的食材吃一顿饱饭。有个陌生人来到镇上,在火上烧水煮“石头汤”,锅里放了三块石头。村民们都很好奇,就问这是什么东西。陌生人回答说:“嗯,如果我们能加点土豆就更好了。”其中一个村民说:“哦,我有些土豆。”然后就去把土豆拿来了。对其他各种食材重复这样的做法,突然之间,整个村子的人都分享了一碗美味的汤;这是一段时间以来他们吃过的最好的一顿饭。
这个故事的重点是,如果不是有人建立了一个可以制作汤的框架,汤是不可能制作出来的。这种事情经常发生,这也是开源的一大优点。有人对“汤”有了一个想法,把一个锅和一些石头放在一起,然后让全世界都能使用代码。随着时间的推移,人们添加了越来越多的“成分”,在你意识到之前,我们已经有了一个由有用的代码组成的充满活力的生态系统汤。
emacs文本编辑器就是一个很好的例子。在emacs最初被编写的35年之后,我在emacs中输入了这篇博客文章。仍然在使用的35年前的程序并不多,但emacs是。为什么?Emacs是用一种独特的方式编写的:在程序的“内部”和程序本身之间实际上没有边界。当我使用键盘快捷方式,或在迷你命令提示符下执行命令时,它将执行emacs lisp代码。如果我想,我可以改变代码的工作方式,就在编辑器中。编辑器具有无限的可塑性:编辑器中的所有内容本身都是可编辑的,可以通过告诉emacs使用其内置的lisp语言做什么来修改。这允许我对emacs进行定制,使其按照我需要的方式运行。人们可以编写插件来做任何事情,事实上,人们已经做到了。 In emacs, there is a web browser, an irc client, and code-highlighting modes for any known language (and when new languages are invented, just search GitHub and probably someone has already created an emacs mode for it). After more than three decades of people contributing to the emacs stone soup, the pot is full of wonderful ingredients.
Emacs已被证明是一个非常有价值的平台,因此出现了新的副产品。最近引起我注意的最令人兴奋的事情之一是“喜”。Xiki(可执行的wiki)是emacs的插件,可以将其描述为更好的命令行提示符。(对其他编辑器的支持也在增长。)Xiki可以访问shell、与数据库对话、构建web页面,甚至可以作为一个功能完备的wiki,允许您记录笔记和组织想法。它被构建为一个框架,允许任何人添加新的“菜单”,同样,它可以完成无数任务。来自世界各地的程序员已经开始构建自定义菜单,并将其添加到汤中。
所以,如果你对一个新项目有一个绝妙的想法,但它似乎太大而无法实施,考虑开始自己的“石头汤”,开源它,你可能会惊讶地看到它自己发展成为每个人的美味晚餐。