Node.js 社区正在悄悄改变开源面貌 已翻译 100%

oschina 投递于 2013/04/17 09:28 (共 8 段, 翻译完成于 04-22)
阅读 4036
收藏 25
1
加载中

如果你关注下pypinpm, rubygems这些社区上的开源包的发布,从python(1991),ruby(1995),和node.js(2009)发布日期开始,这些社区上每年发布的开源包以下面的比例增长:

python: 29,720包/22年 = 1351包每年

ruby: 54,385包/18年 = 3022包每年

node.js: 26,966包/4年 = 6742包每年

这里需要注意的是我这里只是将其他语言作为参考。可能存在很多原因我的计算可能不准确(其中就包括我不严谨的数学计算),但我这里并不是要指出node.js>ruby>python,而我想说的是,从中很容易能得出node.js的包在npm上发布数目正在以惊人的速率增长。我在周六晚上查看npm,在仅仅过去的1个小时里就有20个新版本的包发布。

这种node.js开源包惊人的增长现象,怎么会成为可能?

哆唻咪
哆唻咪
翻译于 2013/04/17 10:05
1

不内置电池

如果,你曾经需要一个Python的客户端库,你可能问你自己"我是要用urllib, urllib2, 还是 httplib呢?”,就像其他所有人 .  好吧,答案可能是你应该使用requests. 它是一个很简单,直观的HTTP客户端库,很好的封装了很多标准库的陷阱和bug,但很可惜的是它不像上面其他库一样是标准库。

Python的“电池内置”策略在90年代中期绝对是正确的,这也是我很喜欢它的一个原因。在那个年代,没有现代化的包管理,查找和安装社区创建的库并不是很容易。现在,虽然,我认为这样效率并不高,但当时社区的开发者很少想去和标准库竞争,所以人们很少尝试着去写出提升标准库的改良库。

ljb_iss
ljb_iss
翻译于 2013/04/18 10:17
1

开发者也很不喜欢在他们的项目中使用非标准库。我听到过很多人隐忍着使用次等的标准库只是为了“不依赖外部库”。但在现在,大容量存储器如此便宜,又拥有现代化的包管理工具,人们不应该再采用“不依赖外部库”的策略.

相反, node.js 核心开发者实际上想尽可能的最小化标准库。他们已经多次从标准库里移除的特性,而鼓励大家使用社区实现的版本。这样的方法允许最大的多样性,让最好的实现版本胜出(当然,当有人实现出来一个更好的版本就会再次替换!)。

想像一下,这样对标准库维护者也是多么自由啊。node.js 标准库是 相当小, 这样可以释放核心开发者更专注在核心的部件上。

ljb_iss
ljb_iss
翻译于 2013/04/18 10:32
1

小就是美(The Tiny Module Aesthetic)

就像twitter的140个字符的限制鼓励人们多发微博,node.js社区发布小模块的文化 使得人们更愿意发布更小的包,从而使得这个包得到更多的复用。

虽然我不认为我自己是“一个node.js开发者”, 但我发现我去年一年也发布了超过一打的包 , 只是因为在工作中,我需要用到node.js,而且我发布工作中创建的任何可重用的包。我的项目最终构建的更好,我最终也得到了一组可以到处重用的构建块(而且我也确实在别的项目重用了它们!)。有时来自互联网的其他不认识的人 甚至在我意识到有bug之前,已经帮我修复了!

ljb_iss
ljb_iss
翻译于 2013/04/22 16:03
1

这种方法也并不是多特别,起码在node.js社区。这个社区被一群开发者领导,其中每个开发者都发布了几百个包。我从前都不相信有这种可能性.

当然,我们不可能限制其他语言也这么做,所以,我更相信是社区文化起了决定性的影响。

像Ruby on Rails这种大单体框架并没有侵占node.js社区的份额,我想部分原因在于"小模块更美"(“tiny module aesthetic”)这种思想, 而且这个思想也更适合node.js。对我来说,像Rails这种大框架没有一个清晰的边界,所以他们倾向于无限的扩张从而包含一个应用可能需要的所有东西。这导致人们坚信Rails是所有问题的最好解决方案,从而阻碍了Ruby社区在web应用领域的变革。

ljb_iss
ljb_iss
翻译于 2013/04/22 16:27
1

这种小模块更美的思想也导致了一个高度重用的生态系统。当一个包只做必要的事情时,它非常容易理解和更容易集成到其他应用。相反的,大单体框架趋向于出现在大量的终端用户应用中,而很少被其他包依赖。这对我来说感到很遗憾,因为那些软件那么优秀,却那么难重用。

ljb_iss
ljb_iss
翻译于 2013/04/22 16:34
1

git 和 github.com 单种栽培(monoculture)

老实说,对我来说软件开发过程中,很少有东西比版本控制让我更厌烦的。而且我发现git对我来说有点太复杂了。但是我还没听说过那个node.js开发者不用git的,这种单种栽培有非常大的价值。这意味着他们使用同一种通用语言,当他们想为其他人的项目贡献时,没有任何障碍。

Github.com 在降低开发者相互贡献的障碍时有同样的效果。我很少看见node.js项目不在github上.这意味着如果我想做出贡献,我可以马上知道去哪里找到源代码。

github单种栽培的优缺点远远超过这些,但要完全说明它们,恐怕要开单独的一个文章来说明。

ljb_iss
ljb_iss
翻译于 2013/04/22 17:13
1

自由的许可(Permissive Licensing)

Node.js 包倾向于使用非常自由的许可,例如MIT和BSD许可。实际上,使用`npm init`创建一个包时,缺省的许可是BSD.  我想这是新时代的另一个标志。

很少的人会在意别人创建新分支(forks)却不回馈(contribute back)。而且人们如果不回馈也收获甚少,因为要花精力维护自己的分支。

这很重要,因为没有人想去处理牵涉到法律后果和更多法律责任的事务。像GPL这样的许可,因为这个原因,最终减缓了软件重用。

ljb_iss
ljb_iss
翻译于 2013/04/22 16:58
1
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
加载中

评论(14)

fmxzhou
fmxzhou

引用来自“天涯咫尺”的评论

引用来自“yak”的评论

这个老外是脑残,论点正确,论据不对,开源的又不是止python,nodejs,python的小众是因为python的这种要求优雅的哲学,造成了曲高和寡,玩python需要大把的充裕时间来玩,适合学校博生研究生用的,象或者象google这种有家底的,做基础研究的的公司,象python圈子里www.pythonchallenge.com/不止考语言,而考智商,一般公司的老板都要赶工,压榨员工,8小时的工作能4小时完成,利润就翻倍,弄个新手进来天天调缩进,根本不出活,还不够你折腾的,所以象python这种比较肉的不入法眼,不可能普及开来
nodejs满大街的Web开发者,谁都可以上来踹一脚,而且巨有成就感,象以前美工是不写js代码的,出了jquey以后,很多美工也写js代码,美轮美幻的效果,都把土鳖老板惊呆了,老板觉得招一个人能干两个人的活,美工又涨工资,又觉得自己搞的东西技术含量高,皆大欢喜,这就不难理解,为什么nodejs一出来,人气比当年php还要高

为什么美工不能写js呢?用jquery有什么错误吗?
技术是不断进步的,没必要因为美工能写js,jser的饭否就丢了。
相反看看这web2.0 和 web 3.0 充满了js的气息!
看看firefox os, 看看window 8, 那个确实的了js 呢?

那个缺少了js 呢?
fmxzhou
fmxzhou

引用来自“yak”的评论

这个老外是脑残,论点正确,论据不对,开源的又不是止python,nodejs,python的小众是因为python的这种要求优雅的哲学,造成了曲高和寡,玩python需要大把的充裕时间来玩,适合学校博生研究生用的,象或者象google这种有家底的,做基础研究的的公司,象python圈子里www.pythonchallenge.com/不止考语言,而考智商,一般公司的老板都要赶工,压榨员工,8小时的工作能4小时完成,利润就翻倍,弄个新手进来天天调缩进,根本不出活,还不够你折腾的,所以象python这种比较肉的不入法眼,不可能普及开来
nodejs满大街的Web开发者,谁都可以上来踹一脚,而且巨有成就感,象以前美工是不写js代码的,出了jquey以后,很多美工也写js代码,美轮美幻的效果,都把土鳖老板惊呆了,老板觉得招一个人能干两个人的活,美工又涨工资,又觉得自己搞的东西技术含量高,皆大欢喜,这就不难理解,为什么nodejs一出来,人气比当年php还要高

为什么美工不能写js呢?用jquery有什么错误吗?
技术是不断进步的,没必要因为美工能写js,jser的饭否就丢了。
相反看看这web2.0 和 web 3.0 充满了js的气息!
看看firefox os, 看看window 8, 那个确实的了js 呢?
打杂程序猿
打杂程序猿

引用来自“yak”的评论

这个老外是脑残,论点正确,论据不对,开源的又不是止python,nodejs,python的小众是因为python的这种要求优雅的哲学,造成了曲高和寡,玩python需要大把的充裕时间来玩,适合学校博生研究生用的,象或者象google这种有家底的,做基础研究的的公司,象python圈子里www.pythonchallenge.com/不止考语言,而考智商,一般公司的老板都要赶工,压榨员工,8小时的工作能4小时完成,利润就翻倍,弄个新手进来天天调缩进,根本不出活,还不够你折腾的,所以象python这种比较肉的不入法眼,不可能普及开来
nodejs满大街的Web开发者,谁都可以上来踹一脚,而且巨有成就感,象以前美工是不写js代码的,出了jquey以后,很多美工也写js代码,美轮美幻的效果,都把土鳖老板惊呆了,老板觉得招一个人能干两个人的活,美工又涨工资,又觉得自己搞的东西技术含量高,皆大欢喜,这就不难理解,为什么nodejs一出来,人气比当年php还要高

人家说的好好的,为啥要,骂人呢?注意原文'但我这里并不是要指出node.js>ruby>python' 这个老外,并不在说某个语言流行不流行,只是从node的流行里面从中总结些东西而已.1.包的模块化.2,有个容易交流的社区.3 不计较回报的精神.
娃娃哇
娃娃哇

引用来自“yak”的评论

这个老外是脑残,论点正确,论据不对,开源的又不是止python,nodejs,python的小众是因为python的这种要求优雅的哲学,造成了曲高和寡,玩python需要大把的充裕时间来玩,适合学校博生研究生用的,象或者象google这种有家底的,做基础研究的的公司,象python圈子里www.pythonchallenge.com/不止考语言,而考智商,一般公司的老板都要赶工,压榨员工,8小时的工作能4小时完成,利润就翻倍,弄个新手进来天天调缩进,根本不出活,还不够你折腾的,所以象python这种比较肉的不入法眼,不可能普及开来
nodejs满大街的Web开发者,谁都可以上来踹一脚,而且巨有成就感,象以前美工是不写js代码的,出了jquey以后,很多美工也写js代码,美轮美幻的效果,都把土鳖老板惊呆了,老板觉得招一个人能干两个人的活,美工又涨工资,又觉得自己搞的东西技术含量高,皆大欢喜,这就不难理解,为什么nodejs一出来,人气比当年php还要高

这位老兄高啊!我决定去学习node.js
pantrick
pantrick

引用来自“yak”的评论

这个老外是脑残,论点正确,论据不对,开源的又不是止python,nodejs,python的小众是因为python的这种要求优雅的哲学,造成了曲高和寡,玩python需要大把的充裕时间来玩,适合学校博生研究生用的,象或者象google这种有家底的,做基础研究的的公司,象python圈子里www.pythonchallenge.com/不止考语言,而考智商,一般公司的老板都要赶工,压榨员工,8小时的工作能4小时完成,利润就翻倍,弄个新手进来天天调缩进,根本不出活,还不够你折腾的,所以象python这种比较肉的不入法眼,不可能普及开来
nodejs满大街的Web开发者,谁都可以上来踹一脚,而且巨有成就感,象以前美工是不写js代码的,出了jquey以后,很多美工也写js代码,美轮美幻的效果,都把土鳖老板惊呆了,老板觉得招一个人能干两个人的活,美工又涨工资,又觉得自己搞的东西技术含量高,皆大欢喜,这就不难理解,为什么nodejs一出来,人气比当年php还要高

呵呵,老兄看得透
yak
yak
这个老外是脑残,论点正确,论据不对,开源的又不是止python,nodejs,python的小众是因为python的这种要求优雅的哲学,造成了曲高和寡,玩python需要大把的充裕时间来玩,适合学校博生研究生用的,象或者象google这种有家底的,做基础研究的的公司,象python圈子里www.pythonchallenge.com/不止考语言,而考智商,一般公司的老板都要赶工,压榨员工,8小时的工作能4小时完成,利润就翻倍,弄个新手进来天天调缩进,根本不出活,还不够你折腾的,所以象python这种比较肉的不入法眼,不可能普及开来
nodejs满大街的Web开发者,谁都可以上来踹一脚,而且巨有成就感,象以前美工是不写js代码的,出了jquey以后,很多美工也写js代码,美轮美幻的效果,都把土鳖老板惊呆了,老板觉得招一个人能干两个人的活,美工又涨工资,又觉得自己搞的东西技术含量高,皆大欢喜,这就不难理解,为什么nodejs一出来,人气比当年php还要高
晒太阳的小猪
晒太阳的小猪
呵呵,gplv3是王道
tbs
tbs
python standard lib is very stable and more tested.
sxgkwei
sxgkwei
...大陆国家文化倾向和海洋国家文化倾向果然不同。。
wellyao
wellyao
还是中庸一点吧 什么“小就是美”这种话还是不要乱放...
返回顶部
顶部