住房、结婚、医疗、教育、养老每一个都是一座大山,“搞钱”必须是头等重要的大事,谁有空搞开源?于是仅两个核心开发者打造的ThinkPHP成为了很多人的希望,而另外一边,没有“程序员是吃青春饭的”,开源软件社区聚会上常常见到五六十岁的人还在眼中带光的谈论技术,他们寻找生命的意义,不被生计太多打扰,将一生的积累注入到开源,他们梦想自己所做的能照亮世界,将人生化做伟大的作品伴随人类文明流传下去,于是Drupal被万众捧出,并急速驶向星辰大海。
本文讲述了一个忧伤的故事,思考着看同种文字的人们该何去何从,这个故事应被更多人知道。
对比ThinkPHP和Drupal看中外软件业现状
作者:云客 (更多作者信息见文末)
将ThinkPHP和Drupal(翻译成中文为“水滴”的意思)放在一起聊会让很多开发者感到好奇,但从中外软件生态发展来看,这真的是一个好的讨论起点,本文对这两系统在各方面都做了一些对比,但对比不是写作本文的主要目的,主要是分享中外软件行业的不同,以及由此引发的一些思考,帮助开发者规划职业生涯,为IT决策者提供决策依据。
这两系统都是开源、免费的PHP应用,首先做个简要介绍:
ThinkPHP:
产品定位:PHP开发框架,开发者在此基础上继续开发搭建自己的应用系统
开发机构:由国内“上海顶想信息科技有限公司”开发
创始人:刘晨,没有太多资料,百度查询为开源软件资深顾问,资深PHP程序员,看云CEO,超过15年的互联网产品开发和管理经验,主要研究领域包括Web应用架构和开发,产品用户体验设计,致力于国内的开源事业
发展时间:最早诞生于2006年初
开源协议: Apache 2
官网地址:http://www.thinkphp.cn/
用户群体:中国国内小微企业,在国内开发者圈中具有较高知名度,其官网自我描述为“是国内最有影响力的PHP框架和先驱者!”
著名案例:56群组、联想问吧、中青旅开心遨游、宝矿力水特、星巴克、美特斯邦威的邦购商城、TCL的在线商城、新浪微坛,澳星、中车友科技等
团队规模:没有官方数据,但框架的每个文件有作者信息,据此统计一共有7人,其中主要开发者有两人(贡献90%以上代码),这些数据不包括社区生态圈的贡献开发者,依据企查查平台对顶想公司查询结果显示,公司规模小于50人,参保人数3人
系统文件:按目前的6.0.7版本算,初装文件数569个,占用空间2.41MB
Drupal:
产品定位:完整的后端系统(后端数据与控制中心),用于APP、小程序、网站、物联网等的后端开发
开发机构:全球两百多个国家共建,Drupal基金会组织的非盈利开源社区
创始人:最初由比利时的Dries Buytaert博士发起,Dries 2008年的大学博士论文是《Java应用程序性能分析和优化分析技术》,Java的发明者詹姆斯·高斯林(James Gosling)是其博士答辩委员会的成员,Dries个人主页地址https://dri.es/about
发展时间:最早诞生于2000年
开源协议:GPL 2.0
官网地址:https://www.Drupal.org/
用户群体:全球各国的企业、政府机构、大学、个人等,其中世界五百强企业市场占有率超过80%,著名IDE:phpstorm直接集成了Drupal项目新建
著名案例:国内有:华为、京东、百度、腾讯、清华、北大、贵州市政府站群、真功夫等,国外有:特斯拉、谷歌、本田、高通、联合国、欧盟、哈佛大学、麻省理工大学、迪士尼、NASA、辉瑞制药等
团队规模:
拥有全球最大最活跃的开源社区,核心开发者1800余人,处于活跃状态的贡献者(代码、文档、设计等人员)共有超过12万人,其中中国分社区两千余人,主力推动公司Acquia雇员超过1100人。当前平均每周产生1300次左右代码提交。
系统文件:按目前的9.1.7版本算,初装文件数18770个,占用空间71.2MB
为什么是ThinkPHP和 Drupal:
一个是中国国内的流行框架,一个是国际流行的完整后端系统(也是目前世界上最强大灵活的系统,没有之一),从它们的体量看这完全不在一个重量级,从其市场定位看,也没有比较的意义,但探索它们对了解中外软件生态具有重要意义,此外如果直接告诉你ThinkPHP能做的事情,Drupal都能做,而且还更加优雅和简洁呢?事情是不是就变的很有意思了,继续。
通常使用Drupal的国内开发者都是有很多年经验的开发老手,是伴随时代从各种系统一步一步淌出来的,他们一定知道或多少了解ThinkPHP,但使用ThinkPHP的开发者却不一定了解Drupal,使用ThinkPHP的开发者选择ThinkPHP的理由一般是:框架较底层PHP进一步的提供了常用基础,灵活自由,和对帝国CMS这样的系统进行二次开发相比,不受限制,能够随意实现自己的功能,但是在Drupal面前,事情就变的不一样了,可能会让开发者有如获至宝的感觉,在此需要先简要介绍一下Drupal的系统架构,整个Drupal系统是分层建设的:
最底层:
是框架层,基于流行的Symfony框架,Symfony可谓是PHP的行业标准,是世界最著名的框架,另一个著名的PHP框架Laravel本身很多部分也都是基于或来自Symfony,懂得Symfony框架的开发者可以很快上手开发Drupal,Symfony框架的作者法比安是一个传奇人物,其另一个广为人知的作品是Twig模板引擎,该引擎也用在Drupal中,Drupal是Symfony最著名的案例,其官网将Drupal列在第一位,Drupal社区也参与Symfony的代码贡献。
第二层:
是数据层,以实体为代表,向上提供各种数据,数据库封装即属于该层,ORM概念以及ThinkPHP中的模型概念类似于实体概念在很早很早时期的样子
第三层:
应用层,开发者在这一层处理各种业务逻辑
这里需要注意开发者在使用Drupal时,不一定要一层一层往下调用,而是可以跨越,直接去面向某一层,所以当直接面向框架层开发时,就可以将整个系统当做框架来使用,就像ThinkPHP开发者直接使用ThinkPHP框架一样,这就是为什么说ThinkPHP能做的Drupal都能做的原因,所不同的是Drupal采用Symfony框架,题外话ThinkPHP深受Symfony影响,甚至直接采用了其部分组件,许多方面高度借鉴了Symfony框架(任何创造者都值得尊敬,因此不用“抄袭”这个词,而用“借鉴”),主干流程几乎相同,但在成熟度和细节上相差甚远,这种差距举个例子来形象的说明:
当人类先祖在结绳计数的那个时代,一个果子就是一个果子,一条鱼就是一条鱼,当从一个个具体事物中抽象出背后的数字“1”时,人类就面临了一次巨大的飞跃,此刻的意义不亚于火的使用,进而发明数字、数学等,在时间和空间上,人类一直处于对世界的不停探索、抽象之中,无数次累积才有了今天的文明,可以说抽象程度越高,意味着越强,越直达本质。
许多伟大的作品都需要巨大的人力和时间去积累,那么ThinkPHP和Symfony之间,或者说ThinkPHP和Drupal之间积累的差距有多大呢?这里可以直接果断的告诉你是小学和大学之间的差距,中间还隔着初中、高中,主要原因在于社区规模、生态和时间上。ThinkPHP和Symfony同为框架,是最直接的竞争者,ThinkPHP要有存在的必要就需要一条自主创新的路,却又大量借鉴Symfony,这是一件非常尴尬的事情,作为开发者为什么不直接使用Symfony呢?同级别的CI框架(CodeIgniter)就完全自主发展,在许多全球排名中都看不到ThinkPHP的影子,但在国内,你可以在很多招聘信息中看到ThinkPHP的影子,这是个很奇特的现象,因为ThinkPHP是一个十足的地方性产品,连注释文档都是中文,本文也正是基于此才选择了ThinkPHP来作为研究中外软件状态的起点。
何为好系统?我们需要什么?
俗话说工欲善其事必先利其器,这里列出几个点来说明一个优秀的系统应该具备什么特性,下文我们将以此来对比ThinkPHP和Drupal:
完备性:
所谓完备性你可以认为是某个工具或组件被设计出来已经充分考虑到了所有的情况,比如PHP原生提供的字符串截取函数会把UTF-8字符截断,产生乱码,而你设计了一个截取函数,不但不会这样,还不会截断英文单词