【#我与开源的故事# | 第2期】开源是一种精神,也是一种实践

作者 | GsCy

“开源”这两个字在生活中倒是常常会看到,只是在看到上海开源信息技术协会这篇叫做《张国锋:我的开源之路》的推文前,我还从未去琢磨过其背后的意义和精神。

也正是这篇推文让我意识到,一路走来,我早已与开源结缘,并在不知不觉中理所当然的享用着它所带来的美好。

但如果要我说清楚自己是何时与开源相知相识的,我也实在是不知道如何开口。从无到有,在我还没有意识到的时候,开源已经完成了它在我生命中0到1这个过程。

这是一个循序渐进的过程,一点一滴的,悄无声息,如佛家说缘起性空,并不是有那么一个突然的瞬间,它就这样出现,从此我便结缘了开源。现实是,不知何时缘起,只是蓦然回首,已经缘生。

但是在这个过程中,也确有一些映像深刻的回忆,像是时间中的一些关键节点一样,无论你和缘分偏离得多远,总是会这这些节点被拉回正轨,遇到该遇到的人,完成该完成的事,接上该接的缘。就好像,冥冥之中,真的有天命的安排和命运的捉弄。

缘起

我从小就有一个黑客梦,想想自己躲在暗处,用电脑控制整个世界,劫富济贫,好了不起,厉害得不得了。高中毕业,本想选个编程专业,可是被招生简章上五花八门的专业名给骗了,莫名其妙选了一个偏机械的专业,偏离梦想,越走越远。

不过好在,隐藏在心中的星星之火并没有熄灭,学校不教,那我就自己学。经过一番摸索和考察,懵懂的我借着网络资料最终选择了貌似很厉害的c,一个0基础的小白,连编程语言是什么都搞不懂的小白,勉强在大学期间学了一遍c,至于结果,只能说聊胜于无。

这个c的水平自然是拿不出手的,毕业以后,选了一个专业相关的工作开始搬砖。和众多毕业生一样,从最初的期待到后面的迷茫甚至是痛苦,对未来极度缺乏期待性的情况下,曾经心中的星星之火又开始闪耀。

有了前车之鉴和一定的经历之后,再次经过摸索和考察,我选择了火热的Python。和c学了几年什么都不会做不一样,Python仅仅几个小时的学习,就可以写出爬虫、自动化工具、可视化数据分析之类的成品。而这,正是Python丰富开源库的优势,或许,这也是我与开源结缘的起点,只是当时我还并没有意识到。

与此同时,当初学了几年什么也做不了的c似乎并没有白费,正是因为当初那段看似没用经历的铺垫,让Python变得特别的简单易学。

这也让我意识到,我们所做的每一件事情都是有用的,也许在当下看来是白费力气,可是在将来的某个时候,必定会派上大大的用处,所以尽管去做便是,不必有太多的功利心,也不必有必成的决心。用流行语讲,就是做好该做的,静待该来的,而用孔老师的话说,叫做尽人事听天命。

帮助爱好者构建自己的应用

Python用久了,小白也会觉得自己无所不能,不敢说海底捞鳖和上天揽月,但是什么人工智能机器视觉都是小case,大不了就调包嘛,一个包不行就两个,反正开源也不要钱。

我逐渐开始膨胀,有了做个完整项目练手的想法,结合自己实际需要,想着做个个人专属博客,以后出去找工作,还可以当个案例或者项目经历。

说巧不巧,有时候人就是不得不相信天意,恰好那一阵子发生了疫情,于是我把大把时间放在上面,经常挑灯夜战,不仅不累,反而感觉自己充满活力,有用不完的精力。

但很遗憾,这并不是一次完美的尝试,但至少它让我知道,一个完整的项目并不是Python一种语言就能搞定的,以个人博客这种web项目为例,还包括前端、数据库、服务器等方面,需要会html、js、sql、Linux等诸多技术。

我已经不记得自己奋战了多少个日日夜夜,只是有一天,看着自己的半成品:奇丑无比的页面、时而出问题的逻辑、还有实在不知道该怎么写的预期功能等。我一度开始绝望,开始怀疑我自己:也许我真的不适合做一个coder,从选错专业到学c,命运已经多次给了我暗示,这一次,既然已经努力过,也许是时候接受命运的安排了吧!

说实话,当初的具体情况已经记不清了,只记得自己后来不知道在哪找了一个开源的个人博客,只经过一两天的魔改,一个漂漂亮亮个人定制的博客就上线了。

那之后,我越发开始发现开源的魅力,计算机技术分支众多,一个完整的项目包含各种不同的领域,程序员不可能熟悉所有的内容,开源可以帮助程序员之间共享自己的成果,减少彼此的工作量。

帮助小团队快速落地

后来,我又遇到一个小团队,他们的idea刚刚起步,业务内容需要与互联网融合,但是就当前现状而言,一是没钱,一是需要快速开发抢占先机,还有就是不确定能不能成功。

找了几家软件开发的公司比对,对方基本都是配了一个最小开发团队,需要2/3个前端,1/2个后端,还要架构师、测试,如果要ios和安卓还得单独配人,这样下来不仅周期长费用高,而且给这个团队带来了极大的不确定性。

作为一个试探性的产品,团队想要的是快速落地和低成本,快速试错和迭代,不行就换一个项目,而软件开发公司给出的方案显示难以接受。

当我机缘巧合碰到他们时,我首先想到的就是是否有合适的开源项目可用。最后经过一番比对,他们的想法确实很新颖,没有高度匹配的开源项目,不过作为一个web项目,倒是有不少开源可用的框架,最终他们选择了Django,虽然也花了不少功夫,但和全新开发来讲,简直就是轻松愉快。

快速构建大型应用

最近的一次,就是odoo了,公司想进行数字化转型,但是又不愿意花钱,而且不改变公司流程去套现有erp那套,而是想让erp来适应公司现有流程,换句话说:定制化的erp。

经过几经周折,已经是“不重复造轮子”的老油条的我,当我发现odoo时,简直就是眼前一亮。

之前也试过几款其他的开源erp产品,要么是太偏向性要么就是太小众。偏向性而言,这些erp总是想做成一个具体的产品,如库存管理、财务管理,几乎没有自己改造的可能性;就小众而言,使用量少,名不见经传,总是会担心维护和安全性问题。

我喜欢odoo的一个主要原因在于,odoo提供了一套底层的基础平台,开发者可以在此基础上完全定制自己想要的erp,这种定制有绝对的灵活性,真正达到了随心所欲的地步;另一方面,就是强大的社区团队和维护团队,这对开源来说无可厚非是极为重要的。


我想,无论未来遇到什么样的项目,我必定会先寻求开源的解决方案,一来我不想别人的项目都上线了我还在撸代码,毕竟如吉多所言,人生苦短;二来,开源的优势是众人拾柴火焰高,众多开发者的参与,会优胜劣汰自然选择出最佳的方案,取之于民再惠之于民。

当然,开源是一种精神,是人类社会思维结晶的共享,使用开源并回馈开源,促进人类社会的共同进步。

当然,我不得不承认的是,“白瞟”如今已经成了一种社会常态,常常让开源人士感到寒心,但无论如何,落在高处,开源是一种精神,落在低处,开源是一种实践,值得我们去做,也许前路漫漫,但如王阳明先生所说:

立志用功如种树然,方其根芽,犹未有干;及其有干,尚未有枝;枝而后叶,叶而后花。实。初种根时,只管栽培灌溉。勿作枝想。勿作叶想。勿作花想。勿作实想。悬想何益!但不忘栽培之功,怕没有枝叶花实?