乍一看到某个问题,你会觉得很简单,其实你并没有理解其复杂性。当你把问题搞清楚之后,又会发现真的很复杂,于是你就拿出一套复杂的方案来。实际上,你的工作只做了一半,大多数人也都会到此为止……。但是,真正伟大的人还会继续向前,直至找到问题的关键和深层次原因,然后再拿出一个优雅的、堪称完美的有效方案。—— 乔布斯
声明:以下内容仅代表本人观点,具有固有局限性,请辩证看待。任何有问题的地方也恳请指出。
开源是什么
我一直都认为开源是未来的趋势。用户创作的时代已经到来,作为一名开发者,手里握着强大的武器,个性化的创造自然不在话下。用户创作的目的不是孤芳自赏,而是自媒体式的分享。那么业务、框架的开发与不是自我消化,开源分享或许能够获得更大收益。个人的力量始终有限,我们不是大公司,技术在内部使用也能够逐渐完善。很多内容缺乏维护,缺乏管理,缺乏反馈,再好的东西也会逐渐吃灰。
原因/目的
开源是获得更多效益
金子只有挖出来了才知道他的价值,否则只是万千沙石中的一粒。技术代码分享出来了别人才知道你水平的高低,否则透过产品始终只能管中窥豹。开源,会吸引更多优秀开发者为你的项目加足马力。会有更多人来帮你发掘更多可能,帮你完善整个项目。助人助己,如是说。
开源是扩大影响力
一个项目,本身也不够完善,功能也不够健全,甚至比不上大公司。如何去和别人竞争。如何从庞然巨物的口中夺下一块吃食。开源就是一个方案。我见过很多项目刚开始是是一个完整的开源项目,随着项目的不断完善,转变成半商业化的模式。开发者帮你口口相传,营造口碑,帮你扩大影响力。
困局
但很显然,国内的开源氛围,尽管有众多开源活动,整体素质也有待提高。很多国内大公司也会有许多开源项目。但是却很少有项目能够广泛认可。一部分原因是因为很多公司做这些开源仅仅是为了KPI、OKR,那么这样的利益味过重的开源,那就不能称之为开源了。另一个原因是社区,很多大公司的开源毫无诚意,诚然,他是把内部一套完善的流程分享出来。但是他们除了这个开源,他们还有更重要的工作要去完成。开源是一件顺手的事。那么这样,真的会有来参与开源吗?整个社区还需要建设吗?没有社区的开源,我想不过是公开技术罢了。「community over code」,这是说社区建设是比代码编写更重要的事情。如果仅仅是公开代码,然后停止维护,一点都不更新,那就不是真正意义上的开源,或者说这是第一层次的开源。一个社区的建设,作为一名个人开发者,去商业化,会让我对社区感到认可。一个商业化过浓的社区,充斥着的不过是一堆伸手党,在底下提着一堆issue,抱怨这个难用,那个不行。很少人会去付出经历去贡献代码。这也是国内的常态。更有甚者,很多开源社区打着开源的旗号,不过是拉人进来当免费劳动力。畸形的开源现状,是中国亟待解决的难题。
如何参与开源之夏
起始
我从去年(2022)就知道了开源之夏。我当时也非常想去参加这样一个开源活动。不仅仅是为了提升自己的能力,也是为了让自己活得更多的项目经验。还有一部分是暑假找点事做,不能荒废了。但令人可惜的是,我当时在众多项目中搜罗了许久,发现并没有合适的项目。我的技术栈偏向前端,不过最近更喜欢接触AI研发。去年的项目列表仍旧是JAVA领头。无奈,退去。
到了今年,卷土重来。我跟着助手技术部的一众同学尝试参加这个开源之夏2023活动。今年与去年不同,今年的项目种类明显更为丰富,社区数量也有所上升。当然,竞争的人数也急剧增加。一个小小的项目也有可能会有十几个同学在虎视眈眈。看见有许多适合自己的项目,而且还有丰厚的奖金,这怎么能够视而不见。说实话,我是做了很多手准备的,一开始,暑假的安排之中,开源之夏只是一个备选项,我甚至考虑去实习。不过有一段时间,我看着各种各样的实习,我竟然一点提不起兴趣。不想上班。所以,我选择了去参加开源之夏。
说实话,我这学期事情非常多,开源之夏的项目申报阶段也没有过于尽心竭力。现在去看看我落选项目的那些申报书,我只能感慨,选他们是对的。一份努力,运气好的时候会有一分收获。申报期间,我有幸参加官方举办的线下分享交流会,了解到了很多的开源经历,对于开源这一件事也有了更深的认识。
避坑
在项目遴选申报期间,有一些看法分享给大家。
首先,选择一个项目,要选自己喜欢的。做任何事情,都不能想着过于功利,否则也不会有什么好结果。
第二点,就是注意甄别项目和导师。有许多项目的坑非常多。看到一个一个项目,要及时先与导师进行沟通,如果连沟通都没有,那么中选的几率不是很大。当然,也要尊重一下客观实际情况。有许多课题只是导师的一部分工作,虽然留了邮箱给你,但是他甚至不想指导,这一切的参加都想敷衍过去。到了项目人员确定阶段,说不定才会找到你,问问你啥情况,符不符合他的预期。遇到这样的情况,那也是没有办法的。有许多导师喜欢养鱼,当然,很多学生也养鱼。虽然想跟他沟通,他却跟你说你直接上交项目计划书就行。
第三点,甄别社区。有一些是真开源,即使他还是一个小小的项目,但是他们是想做开源的。但是还有一些项目,虽然在开源列表上,但是,怎么看他都跟开源毫无关系。随便github放个仓库,说我这里有项目。说不定,实际上,就是他工作有部分内容,刚好缺劳动力来帮他干活呢。更有甚者,有些社区他们的主要功能是一个完全商业化的产品,这个产品甚至没有免费试用的地方。他这边弄出一个产品插件的"开源"项目,说咱也是开源社区。*你辛辛苦苦开发一个插件,却发现整个产品都是收费产品,他的核心内容根本不开源。给他开发插件,是在帮他赚钱。他让你给他赚钱,说不定你还要感谢他。因为,他可能会跟你说,我决定把你的插件集成到咱这核心产品里了。这明显违反开源精神的开源项目,可千万不要助长了他们的势力。
项目
由于暑假还有更重要的项目要做,所以我一开始就挑了一个看起来开发起来内容不是很多也不是很难的项目。这个项目本身也是比较感兴趣的。我一开始就找到导师,跟他及时沟通。虽然导师貌似也是要养鱼,但是这只是我的备选项,所以没关系。要申报项目,我首先做了一部分调研,选定了一个具体方案。然后查阅相关资料,草拟了一个初步计划,发给导师看。导师觉得方向没啥问题,我就提交了。但是导师也没有说一定选我,甚至没有说过选我,只让我提交申报书就行了。我个人还是觉得太不确定了。因为,就我这个项目,也有很多人来想跟我竞争一手。甚至,说不定,是我从别人手中抢下来的呢。我做了一个大胆的决定,我将我的项目计划书直接放到了项目仓库的issue里,属于是告诉竞争者,这块肉是我的。
快到截止时间,导师找上了我。他要进一步了解我的能力,然后和其他人排个序,问了我一堆他觉得比较重要的东西。只能说我运气比较好,就选上了。不过,我现在想call导师,但是他好像大三实习去了,挺忙的,让我等几天,我只能先摆着了。
不过,整体的项目方案确实还需要进一步讨论。在这方面,我也需要做进一步的学习和调研。
生命不息 开源不止
开源,是一种技术交流。开源,是我们如今生活如此美好的原因之一。最近,我也想借开源之力,为我的一个小小idea落地生根。我认为开源,本身不需要任何事情,任何指标去评判,去约束。诚然,有很多人说高考可能是人生中比较公平的事情。但是但凡有一个评价指标,指标又不够全面,确实会出现许多不够公平的事情。你的能力需要别人的肯定,但不能因为别人的否定就觉得自己的努力毫无意义。在开源这件事情上,它本身就是一件非常有意义的事情。