在开源中学习,在社区里成长

韩旭051 韩旭051     2022-12-09     209

关键词:

我的开源社区经历

hi你好,开源社区

image-20210624124224923

去年的这个时候,我有幸入选了 2020年的 GSOC 谷歌编程之夏,当时正值疫情期间的大二暑假,就这样在家里进行了为期三个月的开源社区相关的暑期实习,从中了解了很多知识,也学到了很多在学校收获不到的东西。刚好借着这个机会我可以谈一下我的这段学习经历。

大家作为IT相关的学生或者相关从业者对开源社区都应该并不陌生,开源作为一种贡献技术的方式,对整个技术界和开源社区的正向回馈是巨大的。近 10 年来,越来越多的项目加入了开源界。其中有许许多多的知名开源项目被人所认可和追捧。

说起开源 我首先想到的就会是 开源节流 这个词(开辟财源,节省开支),开源社区的开源虽然不是这个意思,指的是开放源代码,但是的确也达到了这个效果,热门的开源项目由全球顶尖的程序员进行维护,全世界的用户都可以及时的进行 bug 的反馈,任何人都可以维护提交分枝合并的请求,可以说是 免费且高效,深得老板的厚爱,对于程序员来说,好的生态环境,大家都在用 足够完善的文档教程和更加方便的和其他使用者 沟通讨论 都决定着 开源这是一场席卷全球的世界性运动,世界也因此变得更好。

别害怕,迈出第一步

日常开发中的 开源项目无处不在,无论是主流的服务器操作系统 Linux 还是 大家都在用的 文本 编辑器 VSCode 、Vim 版本管理的工具 Git,和免费又好用的 各种数据库 Mysql,MongoDB,Redis 以及 Apache Nginx Tomcat 这些 Web容器 和 最近大火的 虚拟化软件 Docker 、K8S 这些耳熟能详的软件 都是开源社区的产物。

大家作为拥有共同兴趣爱好的人聚集在一起,互相交流学习共同推进这些项目像更好的方向发展,让世界更加的开放。

去年的这个时候,我还是很迷茫,也有些害怕,不知道要从哪里入手,或是自己的能力和学识能否融入这个环境,自己是否能够给这些组织带来贡献呢?与其犹豫不决,不如迈出第一步,先找的自己合适的定位,不同的人总能找到适合自己的位置。

开源社区也一样,有很多的角色可以选择,

  • 你有领导的天赋就可以作为开源社区的领导者,规划社区的发展 方向带领社区像更好的方向发展 做大做强。
  • 你擅长开发,就可以维护和开发项目的新功能,构建自己的开源项目
  • 你擅长沟通,也可以做开源项目的维护者 解答大家提出的问题,宣传社区的项目完善项目的文档 等等。
  • 即使你上面的都不适合,你也可以做开源项目的使用者,把日常使用中遇到的问题 和自己 独到的问题解决方案 以及自己的各种看法都可以 发布到开源项目的社区,都会帮助到大家。

看起来成为一名开源贡献者很难,但是当你像我这样分析了社区的各个角色各个板块,总能发现自己可以贡献的地方,只要有热情,都可以积极地为开源社区的项目做自己的贡献,提PR,提Issue,反馈BUG,做分享,做答疑,教会身边的朋友使用做推广都是 开源贡献者可以做的事情。

我做了,我也变强了

  • 经常接触开源社区,必定会提升自己的技术能力,通过使用和融入这个项目,会对这个项目和领域逐步有了更深的了解,日积月累在潜移默化中学会了很多隐藏的知识

  • 通过解决社区的一个有一个的 BUG 难题,各种奇怪的报错 多次尝试,经过一次又一次的调试和验证,最终解决了的不仅仅是这个问题 本身,同时也会磨练出自己稳定沉着坚持和不放弃的极客精神,也会在一次次的 查阅资料和实际调试中 突破自己的学习方法 和 技术瓶颈。

  • 当你向开源项目提交的第一行代码被合并进分枝的时候,你的头像和名字便会出现在贡献者列表,看着排在前面的 专业大牛,你已经离他们更近了一步,这是对你付出了足够努力的肯定,Github 上每日增加的小绿点 会鼓励着你 不断地向前行进。

  • 通过贡献代码,可以证明你的技术水平和专业能力,更多的人也会看到你的贡献,提升你的技术影响力,开源社区也不是一个人独自负重前行,你也不会是孤军奋战,随着项目的不断壮大社区的人员不断增多,你会遇到更多志同道合的朋友,开源项目也会在你的建设下越做越大,社区变好了,你也变强了。

再说两句,我想

我自己不是top名校出身,也不是985更不是211,像更多的看到这里的朋友一样,在一所普通的大学,或是某一家培训机构,接触了编程,学习了计算机相关的技术。

但是自己的视野和技术似乎也就局限在了哪里,看到网络上各种厉害的同学大牛,总会觉得自己很渺小,看自己身边的同学样本也总是太少似乎没有什么更好的出路,然而当你融入开源社区之中,你会见到世界各地的,各个年龄段的朋友,大家因为一个开源项目而聚在一起,你的视野会被打开,你会看到世界更多的可能性,我们不一定非要考研 非要考公务员 非要挤破头进大厂,非要扎根一线城市成为资本的干电池,除了内卷,我们还有更多的出路,是理想还是幻想,是平凡还是平躺,在社区里你会看到对编程有着浓烈爱好的中学生,你也会看到自己一个人运营着一整个大项目的独立开发者,你会看到更多的出路,你会不再像以前那样畏畏缩缩,你可以发现自己的价值所在,你也可以凭借自己的努力获得自己应有的报酬,足够养活的起你自己。

如果你也对开源社区有一些兴趣,想要参与进来却又有些犹豫。

我先建议你去尝试一下,有些事情,得你自己亲自去试了,才能有话语权。

“2021腾讯犀牛鸟开源人才培养计划”火热报名中,欢迎热爱开源的你和我一起报名,学习成长。
官网&报名入口:
https://opensource.tencent.com/summer-of-code

在实际场景中学习设计模式——单例模式(代码片段)

在实际场景中学习设计模式——单例模式背景场景具体的编码说明意外的收获参考背景在编码的成长过程中,慢慢的会往高级的方向发展,比如设计模式。但是如果单独去硬啃这些设计模式,真的是非常非常的抽象&#x... 查看详情

赋予计算机从数据中学习的能力

...法把数据转化为知识。近年来涌现出许多强大的机器学习开源软件,现在是进入该领域的最佳时机,掌握强大的算法可以从数据中发现模式并预测未来。 查看详情

DataGrip - 如何在 DataGrip 中学习任何表格大小?

】DataGrip-如何在DataGrip中学习任何表格大小?【英文标题】:DataGrip-HowtolearnanytablesizeinDataGrip?【发布时间】:2016-06-0419:04:44【问题描述】:简单的问题是我想在DataGrip中学习表格大小。有什么捷径或者简单的方法吗..【问题讨论】... 查看详情

在软件中学习算法和保存数据

】在软件中学习算法和保存数据【英文标题】:LearningAlgorithmandSavingDatainSoftware【发布时间】:2008-12-3104:40:46【问题描述】:我来自网络开发背景,我想知道如何在Java/C++中制作学习算法。与其说是算法部分,不如说是让程序“记... 查看详情

java在javach04中学习oop(代码片段)

查看详情

如何在PHP中学习在线用户数? [关闭]

】如何在PHP中学习在线用户数?[关闭]【英文标题】:HowtolearnonlineusernumberinPHP?[closed]【发布时间】:2016-08-2116:02:40【问题描述】:我正在开发一个论坛,我需要统计在线人数。根据与之相关的旧问题,他们说应该使用count()函数... 查看详情

vue.js中学习使用vuex详解(代码片段)

在SPA单页面组件的开发中Vue的vuex和React的Redux都统称为同一状态管理,个人的理解是全局状态管理更合适;简单的理解就是你在state中定义了一个数据之后,你可以在所在项目中的任何一个组件里进行获取、进行修改,并且你的... 查看详情

编码器/解码器模型如何在深度学习中学习?

】编码器/解码器模型如何在深度学习中学习?【英文标题】:HowdoEncoder/DecodermodelslearninDeepLearning?【发布时间】:2018-11-0414:25:36【问题描述】:在了解了一些深度学习中的编码器/解码器模型(主要是在Keras中)之后,我仍然无法... 查看详情

在 python 中学习和使用增强的贝叶斯分类器

】在python中学习和使用增强的贝叶斯分类器【英文标题】:LearningandusingaugmentedBayesclassifiersinpython【发布时间】:2013-02-0116:56:38【问题描述】:我正在尝试在python中使用森林(或树)增强贝叶斯分类器(Originalintroduction,Learning)... 查看详情

我刚开始在 RHEL 6.3 的 Shell 脚本中学习脚本 [重复]

】我刚开始在RHEL6.3的Shell脚本中学习脚本[重复]【英文标题】:IjuststartedlearningScriptinginShellScript,RHEL6.3[duplicate]【发布时间】:2014-01-0312:53:41【问题描述】:如何在终端RHEL6.3中正确写入?如果不存在LOCAL_WORKING_DIRLOCAL_EVENT_LOG_WORKING_... 查看详情

在java A-Z中学习安全性的最佳方法是啥[关闭]

】在javaA-Z中学习安全性的最佳方法是啥[关闭]【英文标题】:WhatisthebestwaytolearnsecurityinjavaA-Z[closed]在javaA-Z中学习安全性的最佳方法是什么[关闭]【发布时间】:2013-12-2612:32:43【问题描述】:我是j2se/jee开发人员,是Java安全方面的... 查看详情

有助于在操作系统课程中学习 Windows 内核开发的资源?

】有助于在操作系统课程中学习Windows内核开发的资源?【英文标题】:ResourcestohelplearnWindowskerneldevelopmentinanoperatingsystemsclass?【发布时间】:2011-04-1404:18:38【问题描述】:我目前正在上大学操作系统课程,我们正在为我们的项目... 查看详情

K 意味着在 scikit 中学习内核死亡 - 由于长时间计算

】K意味着在scikit中学习内核死亡-由于长时间计算【英文标题】:KmeansinscikitlearnKerneldied-duetolongcomputations【发布时间】:2017-04-0801:23:12【问题描述】:我正在尝试使用k表示使用scikitlearn进行聚类。因此使用肘法找到k的最佳值。def... 查看详情

第二期悬赏活动rt-thread任务悬赏,一起来悄悄变强~

为什么要参与开源项目?**参与贡献,成就自身。**在开源项目中做了什么贡献,包括写文档还是提交代码,或是做了什么社区工作,这些都是你最好的简历。让自己的能力得到增长的同时,有时候会帮助... 查看详情

在纯 Java 中学习 JavaCV [关闭]

】在纯Java中学习JavaCV[关闭]【英文标题】:LearningJavaCVinpureJava[closed]【发布时间】:2012-07-1417:23:12【问题描述】:我正在努力学习JavaCV。众所周知,缺乏这方面的教育材料是一个很大的问题。在JavCV主页中,他们为“OpenCVCookBook”... 查看详情

在wsl中学习rustffi(代码片段)

最近从新学习RustFFI的使用,但是手头上没有可用的Linux环境(Windows编译c太麻烦了),于是就尝试着使用WSL来搭建Rust环境和简易的c编译环境,并记录下中间遇到的一些坑。感谢UnsafeRust群群友@框框对本文的... 查看详情

我正在尝试在 wordpress 中学习 ajax 以删除表格条目,但对放置感到困惑

】我正在尝试在wordpress中学习ajax以删除表格条目,但对放置感到困惑【英文标题】:Iamtryingtolearnajaxwithinwordpresstodeleteatableentrybutamgettingconfusedonplacement【发布时间】:2021-12-1610:37:23【问题描述】:我创建了一个wordpress插件来为不... 查看详情

在实践中学习深度学习框架的建议

1.重视控制台反馈给你的第一手建议,谜底就在谜面上。2.将控制台最关键的一行信息复制下来,粘贴到百度,百度不行谷歌(假设你的英语不太好)。在这个过程中你对问题的理解是会加深的,所以检索往往不是一... 查看详情