为什么国内很难出高质量开源
乱侃
今天因为VueJS展开的讨论,话锋转转,就转到这个主题了。这个主题其实也一直是我想要了解的问题,毕竟是这个FKPJS要走的路。怎么样才能做好开源。
这里先推荐一篇好文,《思考的八种境界》,文章不长,但却有些感悟,第一条就撞在胸口,《一、形成主见》,行文大概意思是:有自己的一套,即便是很浅薄。
是的,即便浅薄,那也是心血所成,正如我正在做的FKPJS,虽然浅薄,但却花费了我不少时间和精力,融入了我关于开发、关于前端的一系列想法,我可以和你娓娓道来,关于FKPJS的点点滴滴,也是这些点点滴滴的情怀,和支持我的朋友们推动着FKPJS的前行。
是这样的
回到主题,为什么国人很难出高质量的开源,这里的衡量标准,我是以GITHUB的star来做为衡量的标准。
我的这个朋友一直以来都是靠avalon来混生活,当然他远不止这一项技能。反正对于AVALON的使用大概有2年左右的时间吧,公司的运营后台也都是靠avalon在支撑着。
对于我的到来,对他不大不小有些影响,为嘛这么说,因为公司合并后,我被并入到他的部门,并且不大不小, 刚好踩他一头,而我是react的推动者,也在几个微信项目中实施和部署了FKPJS的这一套,自然大权在握,在 我的淫威之下,他也无可奈何。并且好歹说,FKPJS是我亲手打造的一套全栈框架,公司上层也挺认可。
因此,挣扎在所难免,对于开发者来说,我其实挺理解这种心情,但毕竟怎么说呢,他拿我没办法,于是他也开始 纠结、挣扎,想努力跳出我的影响范围,折腾了一个国外的react的全栈框架,又折腾了vue2.0。总之也是蛮 拼的。
但最近我两关系改善,所以呢,也就偶尔侃侃技术圈的这些卵事。期间了解到,avalon在github上的star增 长非常的缓慢,1年左右的时间也就增长了1000来star,总共也就3000~4000star,而VueJS自2.0的推出后, star疯长,大概在2万左右。
期间又了解到,vue的作者有留学背景。又曾今在google等大公司撸过代码,仰望之情顿时油然而生。难怪, 难怪,都是牛人啊。
算是自嘲也好,自卑也罢,作为同是前端开发者来说,总算给自己也找了一个不错的借口,原来都是有这样的耀 眼光环。发挥一下阿Q精神(听说最近鲁迅的文章被全面清理出教科书了,艹艹艹,我中学时最爱看的内容)。
为什么更喜欢国外开源
玩笑之余,不妨深入一点。
毕竟编程是外国人发明的,天生就有语言的优势,比如react, flux, redux,在这些名词出来前,作为一众 国内的开发屌丝,我想是很难想象这样的名词,而这对于英语母语来说是很自然的事情
杂乱的命名方式
基于英语就那么点水平,想不出来的名词,自然靠拼音堆上,尤其在工作压力之下,那些个命名有些也是确实很 搞笑,不要说语义没有,就连意思在过了一段时间后估计也无人可知,包括自己。
结构不稳定
还是基于英语的问题,当你开发出来的东西,不具备可读性。外国人看不懂,中国人也看不懂,为什么,因为 可能有一个变量就夹杂着一半的英文,一半的拼音,因为这样的东西,有可能就是一个通用接口,在你想到合适的 单词的时候,这个接口就变了。我擦,我怎么敢用这样的东西。所以罗,能追随的开发者就寥寥无几了。
其实也看过avalon的源码。。。。,然后就没看了。
有料也倒不出来
同样还是英语的问题,比如今天侃到redux,虽然我是react的粉丝,但我从没用过flux,redux,react-router等东东,所以 跟着我这个朋友,啪啪啪的把这些个东西,折腾了一遍,心中千万草泥马奔腾,不仅复杂,而且复杂,还复杂。
为什么我有这样的感慨,我是知道flux的原理的,因此,FKPJS有自己的实现,来实现单向数据流,对于我来说 简单,足够,好用。这个之后会有专门的文章。 没有多余的配置,不需要一一对应关键字,独立于react的组件 ,不同组件间可通信,异步数据的回调响应。。。。,好吧,我其实不知道该用什么术语来描述。总之,redux的这一套 大概都能实现吧
很不好意思的是,在FKPJS中的redux,我把它命名为SA
,是个全局变量,是我自己倒腾出来的。但尼玛,SA
是
个什么鸟,本意是store and action
,我仅限于这样简单的英语单词,redux
是个什么意思?谁来解释
一下!!!
基于SA
,我实现了FKP-ROUTER
,FKP-FLUX
,FKP-PAGES
,以及在业务中的大量使用。可以说SA
在FKPJS中
是个核心存在。 但,but,1、SA没什么语义; 2、我也倒腾不出英文说明;
结论
综上所述,大概就是我所总结的原因,当然应该还有其他很多的原因,但我感觉这个比较基础。也是逃脱不了的 魔咒,只能不断提升自己的英文能力,尽量做到最好吧,大家共勉!!
nm,通篇看下来,发现这软文写得666啊,给自己打82分。
^^! 欢迎关注我的个人站 http://www.agzgz.com
^^! github fkpjs https://github.com/webkixi/FKP-REST
我得说国内的教育,摧毁了一个人一切做成事的基础,不只是编程。任何一个人受十几年的应试教育,意识形态就是投机的意识形态,没有耐心,没有探索,擅长的就是把一切得到的新知识蒸馏一番,以期获得最高收益。应试的训练不就是这么回事吗?
做好自己就行,国内教育是有问题,但关键还在我们自身。
中国教育最失败的领域就是意识形态了,我们要扪心自问,到底是自己的问题,还是教育的问题。我看到的现实是,大多数人根本不相信意识形态那套东西。既然不相信,那为什么又要把自身的一些问题怪罪到意识形态教育上去?这其实是为自己找个借口,很多问题说白了还是自身的问题,只是有的人不愿意承认罢了。
好的开源项目有的时候并不是技术本身的问题,更多的是持续的投入,这就涉及到长期利益和短期利益权衡的问题。国外一些著名项目得到各种资助的,国内这个环境还不成熟,在利益兑现这点上,我们是落后的。国内个人做开源能够兑现利益的也就那么几个人,在这种环境下,大家做的其实就是一种情怀,只能慢慢来了。
首先,一个优秀的开源项目要投入多少精力啊。国内的程序员远远没有国外的程序员那么多自由时间吧。 其次,github上国内star数多的,大部分不是项目,是各路“大神”的博客。你幸幸苦苦的一个项目搞一年两年,别人写两篇入门文章就比你的项目关注度高了,你还有兴趣去搞项目么。 最后,一些大公司,把开源的东西改改拿去用了,又回馈给社区什么了呢?
共勉。赞楼主的开源精神,不过至少要注意下基本的代码风格吧。。打开的第一个文件https://github.com/webkixi/FKP-REST/blob/master/db/mongo/common/connect.js,就发现存在以下问题:
- 缺少 ‘use strict’ 会报错吧
- require模块那const和var混用
- 用分号与不用分号混用
- 2个空格缩进和4个空格缩进混用
- 字符串单引号和双引号混用
- if后有空格,{左侧没空格
楼主的开源精神是值得赞赏的。
不过你的项目如果按优秀开源项目来评论的话,我发现尚存在几个问题:
- 模块很多,但是尚没有分离
- 命名不够国际化,全部大写,也不容易记忆,也不知道什么意思
- 未看到有任何测试代码。
- 产品级的代码里不应该有太多的console.log信息
最后祝楼主的项目越来越好,质量越来越高。