diff --git "a/\347\254\2543\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\345\246\202\344\275\225\346\211\276\345\210\260\351\200\202\345\220\210\347\232\204\351\241\271\347\233\256\350\277\233\350\241\214\350\264\241\347\214\256.md" "b/\347\254\2543\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\345\246\202\344\275\225\346\211\276\345\210\260\351\200\202\345\220\210\347\232\204\351\241\271\347\233\256\350\277\233\350\241\214\350\264\241\347\214\256.md" index b142687021573dc6bed38a4e7c3edc7d4f13c504..a3d4ca999214c1d76a666594e34acd5a96d6cdf6 100644 --- "a/\347\254\2543\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\345\246\202\344\275\225\346\211\276\345\210\260\351\200\202\345\220\210\347\232\204\351\241\271\347\233\256\350\277\233\350\241\214\350\264\241\347\214\256.md" +++ "b/\347\254\2543\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\345\246\202\344\275\225\346\211\276\345\210\260\351\200\202\345\220\210\347\232\204\351\241\271\347\233\256\350\277\233\350\241\214\350\264\241\347\214\256.md" @@ -1,11 +1,104 @@ -1. 符合自己的技术栈项目。这个是最起码的要求,总不能选一个自己都不了解的语言项目进行贡献。 +# 如何找到适合的项目进行贡献 -2. 在工作和学习中使用比较多,比较熟悉的项目。这样你在动手修改它的代码之前就已经对它有了充分的了解,至少你是熟悉这个项目的各类使用方式和接口。 +## 前言 -3. 各个模块耦合性比较低的项目,比如组件库、工具库,容易找到入手点。如前端所使用的 element-ui ,antd-ui 组件库。组件库的耦合性较低,向组件库增加或修改某一个组件也较为方便。同时工具库也是一个不错的选择,新增或修改某一个功能也较为容易。相反,模块之间耦合性比较大的项目可能就不太合适,比如各种大型的框架,这类开源项目耦合性较高。 +说到“如何找到适合的项目进行贡献”,首先,我们先来聊一聊:什么是所谓“适合的项目”? -4. 兴趣是最好的向导。为自己感兴趣的开源项目做贡献,会更加充满热情和动力。 +- 比如青春时代的你,偶然邂逅了一见钟情的Ta; -5. 针对人而不同就会有不同的语言,对于自己比较熟悉的语言开始,从工作中或者培训当中挑选出比熟悉的项目进行贡献。 +- 比如快意江湖的你,身边结识了意气相投的朋友; +- 比如唱着单身情歌的你,在Starbucks Coffee等待着第一次见面的相亲对象 + +正所谓“最贵的未必是最好的,最适合的一定是最好的”(不要问我这句话的出处,问就是摘自本人语录),这句话放在寻找开源项目上也适用。 + +想要找到适合自己的开源项目,首先要了解自己。 + +想象一下,你要追求爱慕已久的女神,或者要结识志同道合的朋友,是不是需要了解女神的爱好,朋友的秉性? + +哪怕一次不确定的相亲,也会打扮得衣冠楚楚。可能最后未必合适,那么喝完这杯Starbucks,咱们就此别过,好聚好散。 + +OK,刚才我们用通俗易懂的类比向大家说明了什么叫“适合”,接下来我们言归正传。 + +## 目的 + +首先,要明确参加项目的初衷和目标。下面列举了一些例子,供大家参考。 + +- 对xx项目仰慕已久,想要“掀起她的盖头来”(听说或见过,想要深入了解开源项目) +- 工作中使用到xx项目,日久生情,愿意做彼此的欢喜冤家(工作中经常使用,但也会遇到棘手的问题,喜提issues) +- 抱xx项目的大腿,成为一名牛x哄哄的contributor(想要提升自己内力,以及职业生涯的含金量) +- 没有什么喜欢的项目,随便看看(了解前瞻性技术,保持技术新鲜度) + +- …… + +下面就带着这些目标,开始“按图索骥”。 + +## 方法 + +### 寻找项目信息的渠道 + +- 从开源网站寻找 + - 比如:Github、GitLab、Gitee、Oschina、CSDN、InfoQ等 +- 参加技术沙龙 + - 比如:中国软件技术大会、Pivotal技术峰会、各种Meetup等 +- 加入技术讨论群 + - 比如:QQ群、微信群、钉钉群等 +- 和身边人沟通 + - 比如:老师、同学、同事、朋友 + +### 匹配合适项目的维度 + +- 从个人兴趣着手 + + - 兴趣是最好的老师。 + + 和谈恋爱一样,只要保持热情,那么Ta就是适合你的;反之,就要酌情放手 +- 从个人技术栈着手 + + - 比如:C、C++、C#、Java、Python、Golang等 + +- 从工作需求着手 + + - “世*有伯乐*,然后有千里马”。一定是现有需求,而后才有解决方案。 + + 比如:前端的Vue、Reactor,后端的SpringBoot、SpringCloud,大数据相关的Spark、Fink、Hadoop等 + +### 参与项目贡献的方法 + +- 成为contributor,参与项目代码维护与功能迭代 +- Fork项目,向项目提交PR +- 提交和解答issues,积极参与项目讨论,保持社区活跃度 +- 积极推广项目落地,包括公司内部、各技术群等 + +### 参与项目贡献的注意事项 + +- Issues + - 按照项目要求的格式提交(格式要求、内容要求、语言要求等) +- Code + - 按照项目要求的编码规范编写代码(代码缩进、代码换行等) + - 项目一般会提供不同IDE对应的配置文件,达成代码格式统一 +- Comment + - 按照项目要求的格式编写注释(代码注释、Git提交注释等) + +- 沟通 + - 沟通是项目发展的基石,多和一个项目的朋友say hello + +## 写在后面 + +本文带大家了解了什么是适合的项目?寻找项目信息的渠道有哪些?如何为自己匹配合适的项目? + +并为大家提供了参与项目贡献的常见方法和注意事项,供大家参考。 + +希望大家通过阅读本文,可以找到适合自己的开源项目,为你的开源项目添砖加瓦! + +## 更多优质建议 + +> 欢迎大家积极参与补充! + +1. 符合自己的技术栈项目。这个是最起码的要求,总不能选一个自己都不了解的语言项目进行贡献。 +2. 在工作和学习中使用比较多,比较熟悉的项目。这样你在动手修改它的代码之前就已经对它有了充分的了解,至少你是熟悉这个项目的各类使用方式和接口。 +3. 各个模块耦合性比较低的项目,比如组件库、工具库,容易找到入手点。如前端所使用的 element-ui ,antd-ui 组件库。组件库的耦合性较低,向组件库增加或修改某一个组件也较为方便。同时工具库也是一个不错的选择,新增或修改某一个功能也较为容易。相反,模块之间耦合性比较大的项目可能就不太合适,比如各种大型的框架,这类开源项目耦合性较高。 +4. 兴趣是最好的向导。为自己感兴趣的开源项目做贡献,会更加充满热情和动力。 +5. 针对人而不同就会有不同的语言,对于自己比较熟悉的语言开始,从工作中或者培训当中挑选出比熟悉的项目进行贡献。 6. 在工作使用中进行过扩展,并且经受过生产实践,就可以将代码贡献到对应的开源项目中。 +