开源项目贡献者_如何吸引新的贡献者加入您的开源项目
开源项目贡献者
by Shubheksha
通过Shubheksha
如何吸引新的贡献者加入您的开源项目 (How to attract new contributors to your open source project)
It’s hard to attract contributors to your FOSS project — especially contributors who are new to open source.
很难吸引到您的FOSS项目的贡献者,尤其是刚接触开源的贡献者。
Project maintainers often discuss making their open source projects more beginner-friendly, so they they can attract new contributors and make them feel welcome. But this dialogue often gets trapped in the echo chamber of maintainers themselves. Instead, it needs to involve the other party: the new contributors themselves.
项目维护者经常讨论使他们的开源项目更适合初学者,以便他们吸引新的贡献者并使他们感到受欢迎。 但是这种对话常常陷入维护者自己的回声室。 相反,它需要让另一方参与:新的贡献者自己。
During my short time as an open source contributor, I’ve browsed through tons of projects, and contributed to a few of them as well. In this post, I’ll try to list what appealed to me as a new contributor, and what didn’t. And I’ll use a few projects as case studies.
在担任开源贡献者的短时间内,我浏览了无数项目,并为其中的一些项目做出了贡献。 在这篇文章中,我将尝试列出吸引我成为新贡献者的因素,而不是吸引我的东西。 我将使用一些项目作为案例研究。
提示1:适当地标记初学者问题 (Tip 1: Label beginner issues appropriately)
This is definitely the most important consideration to me as a potential contributor.
作为潜在的贡献者,这绝对是我最重要的考虑因素。
Labels make it easier to find issues that can serve as a beach head for a first contribution. If your project doesn’t have these, it significantly raises the bar for contributing to it.
标签可以更轻松地找到可以作为第一手资源的问题。 如果您的项目没有这些内容,那么它将大大提高对其做出贡献的标准。
It is very difficult for someone unfamiliar with your codebase to gauge the difficulty of an issue. So a generic label like help wanted isn’t useful enough on its own. Try using more specific labels, such as good first bug, easy, low hanging fruit, etc. to communicate that an issue is easy enough for an initial contribution.
不熟悉您的代码库的人很难评估问题的难度。 因此,像help want这样的通用标签本身并没有足够的用处。 尝试使用更具体的标签,例如良好的初次发现错误,容易获得的结果,低垂的果实等,以表明问题足够容易进行初始贡献。
提示2:建立适当的贡献准则 (Tip #2: Establish proper contributing guidelines)
A well-written Contributing.md
can describe the workflow your project’s maintainers expected contributors to follow. This is easy to document, and will save both sides a significant amount of time.
编写良好的Contributing.md
可以描述您的项目维护人员期望的贡献者遵循的工作流程。 这很容易记录,并且可以为双方节省大量时间。
Specify whether the contributor is required to work on a separate branch for each issue, or to squash their commits and rebase their changes before submitting a PR. Try to link to an appropriate tutorials for each of these processes in case the contributor isn’t yet familiar with them.
指定是否需要贡献者针对每个问题在单独的分支上进行工作,或者在提交PR之前压缩其提交并重新存储其更改。 如果贡献者尚未熟悉这些过程,请尝试链接到每个过程的相应教程。
提示3:记录项目的设计,架构和目录结构 (Tip #3: Document your project’s design, architecture, and directory structure)
Having a document that gives a high-level overview of the design and architecture of your project can save both parties a lot of time.
拥有一个可以对项目的设计和体系结构进行高层概述的文档可以为双方节省大量时间。
Instead of explaining the same thing over and over again to every new contributor, take note of questions that are frequently and create an FAQ right there on your README.md.
不用一遍又一遍地向每个新贡献者解释同一件事,而要注意常见的问题,并在README.md上创建一个FAQ。
The steepest barrier for most new contributors is navigating dense codebases. Help newcomers find their way by offering a description of your folder structure.
对于大多数新贡献者而言,最大的障碍是浏览密集的代码库。 通过提供文件夹结构的描述来帮助新手找到方法。
A lot new contributors are junior developers who may not yet know a lot of common architecture and design patters. Create documents that highlight these decisions and the reasoning behind them.
许多新的贡献者是初级开发人员,他们可能还不了解很多常见的体系结构和设计模式。 创建突出显示这些决策及其背后原因的文档。
提示4:制定清晰的行为准则 (Tip #4: Put in place a clear Code of Conduct)
Create a proper Code of Conduct that explicitly states rules within your FOSS community. A lot of new contributors, including me, are scared of being treated badly, or looked down upon while trying to contribute.
创建适当的行为准则,明确规定您的FOSS社区内的规则。 包括我在内的许多新贡献者都害怕受到不良对待,或者在尝试贡献时被人鄙视。
Your Code of Conduct that clarifies how to report violations can help folks feel safe. This also entails calling out bad behavior at every step, irrespective of the stature of the person involved, and taking appropriate action.
您的行为守则阐明了如何举报违规行为,可以帮助人们感到安全。 这还需要在每个步骤中大声疾呼,不管涉案人员的身高如何,并采取适当的行动。
提示5:为拉取请求和问题创建模板 (Tip #5: Create templates for pull requests and issues)
A proper issue template can help people better describe the environment required to reproduce a bug. Contributors can then start working on the issue immediately, without needing to gather information from disparate places. This saves time for both parties.
适当的问题模板可以帮助人们更好地描述重现错误所需的环境。 然后,贡献者可以立即开始处理此问题,而无需从不同的地方收集信息。 这样可以为双方节省时间。
A similar argument can be made for pull request templates. Clearly lay out what’s expected when a contributor submits a PR, including the format of their commit message, test plan, the changes made. This will help with code review as well, saving everyone even more time.
拉取请求模板可以使用类似的参数。 明确列出贡献者提交PR时的期望,包括提交消息的格式,测试计划和所做的更改。 这也将有助于代码审查,从而节省了更多时间。
提示6:优先处理拉取请求 (Tip #6: Prioritize responding to pull requests)
Being the maintainer of a popular FOSS project is an incredible amount of work. Most people don’t get paid to contribute to FOSS — maintainers and contributors alike. Most maintainers don’t have enough time to review all PRs with the same amount of scrutiny.
成为受欢迎的FOSS项目的维护者是一项令人难以置信的工作。 大多数人没有薪水为FOSS做出贡献,无论是维护者还是贡献者。 大多数维护者没有足够的时间来审查所有具有相同审查量的PR。
Prioritize PRs so contributors can understand beforehand whether or not they can expect to receive feedback for a low priority/easy bug fix.
对PR进行优先级排序,以便贡献者可以事先了解他们是否可以期望收到针对低优先级/简单漏洞修复的反馈。
提示7:欢迎各种贡献 (Tip #7: Welcome all kinds of contributions)
Our field has a nasty tendency to look down on non-code translations. Please don’t let your project fall prey to this mentality.
我们的领域倾向于忽略非代码翻译。 请不要让您的项目成为这种想法的牺牲品。
Encourage all kinds of contributions, be they documentation, code, fixing typos, tests — anything at all.
鼓励各种形式的贡献,包括文档,代码,修正错误,测试等所有内容。
提示8:奖励新的贡献者 (Tip 8: Reward new contributors)
If you have the budget, reward new contributors by sending them swag such as stickers or shirts.
如果您有预算,请向新贡献者发送赃物,例如贴纸或衬衫,以奖励他们。
If your budget doesn’t permit that, then a simple shoutout or mention in a blogpost or on social media can also go a long way. It’ll make them realize that their contributions — no matter big or small — aren’t overlooked, and that they are valued.
如果您的预算不允许,那么在博客文章或社交媒体上简单地大喊大叫或提及也很长。 这将使他们意识到,无论大小,他们的贡献都不会被忽视,而且他们很有价值。
This establishes a feeling of belonging that may inspire them to contribute more.
这会产生一种归属感,可能会激发他们做出更大的贡献。
Kent C. Dodds made a nifty open source specification for this: All Contributors.
Kent C. Dodds为此制定了一个漂亮的开源规范: All Contributors 。
A good start can be maintaining a list of contributors on your project website and/or repository.
一个好的开始可以是在项目网站和/或存储库上维护一个贡献者列表。
Lastly, it never hurts to remember that everyone was once a junior developer. At some point, they needed help to get to the level they’re at today.
最后,记住每个人都曾经是初级开发人员,这无伤大雅。 在某些时候,他们需要帮助才能达到今天的水平。
This simple fact can go a long way in establishing a healthy culture of mentorship within your open source organization. Treating everyone with respect — irrespective of their background — is critical to running a successful open source project.
这个简单的事实对于在开源组织中建立健康的指导文化大有帮助。 尊重所有人(不论其背景如何)对成功运行开源项目至关重要。
I tweeted the above a while back, when I was just getting started with contributing to FOSS. But since then, a lot has changed. I’ve finally concluded:
当我刚开始为FOSS做出贡献时,我在上面发了一条推文。 但是从那以后,发生了很多变化。 我终于得出结论:
Open source is way more about people than it’ll ever be about code.
开源对人的意义远大于对代码的意义。
P.S. I am trying to create a list of beginner-friendly FOSS projects. If your open source project has any material relevant to new contributors, please consider opening an issue on this repository.
PS:我正在尝试创建一个适合初学者的FOSS项目列表。 如果您的开源项目包含与新贡献者有关的任何材料,请考虑在此存储库中打开问题。
A shout out to Dan Abramov, Kent C. Dodds and Quincy Larson for helping me with this piece by providing their perspectives as maintainers. ?
向Dan Abramov , Kent C. Dodds和Quincy Larson表示感谢,他们通过提供维护者的观点帮助我完成了这篇文章。 ?
If you have any further tips to add to this post, feel free to reach out to me or reply below.
如果您有任何其他提示可添加到此帖子中,请随时与我联系或在下面回复。
And if you found it useful, please tap or click “︎❤” to help to promote this piece to others.
如果您觉得它有用, 请点按或单击“︎❤ ”以帮助将此作品推广给他人。
翻译自: https://www.freecodecamp.org/news/how-to-attract-new-contributors-to-your-open-source-project-46f8b791d787/
开源项目贡献者
相关文章:

滑动轮播图实现最后一张图片无缝衔接第一张图片
原理:使用insertBefore和insertAfter方法调整图片顺序。 测试:firefox/chrome/IE11正常 已知不足:每次播放均使用了一次insertBefore和insertAfter,可考虑在最后一张图的时候将前几张图片整体后移。以后有空再优化。 1、HTML结构 …

一个完整的Installshield安装程序实例—艾泽拉斯之海洋女神出品(三) --高级设置一...
一个完整的Installshield安装程序实例—艾泽拉斯之海洋女神出品(三) --高级设置一 原文:一个完整的Installshield安装程序实例—艾泽拉斯之海洋女神出品(三) --高级设置一上一篇:一个完整的安装程序实例—艾泽拉斯之海…

数据结构,堆和栈和队列的概念
数据结构,堆和栈和队列的概念 1 什么是数据结构 数据结构是计算机存储,组织数据的反复改。数据结构是指相互之间存在的一种或多种特定关系的数据元素集合。 2 数据结构的逻辑结构 1 集合结构,元素都是孤立存在的 2 线性结构 ,…

电子白板 矢量 编码_当涉及白板编码采访时,请记住准备
电子白板 矢量 编码by Andy Tiffany通过安迪蒂芙尼(Andy Tiffany) 当涉及白板编码采访时,请记住准备 (When it comes to whiteboard coding interviews, remember to PREP) PREP is a mnemonic I created to help you remember the steps involved in solving whit…

机器学习实战笔记(Python实现)-03-朴素贝叶斯
--------------------------------------------------------------------------------------- 本系列文章为《机器学习实战》学习笔记,内容整理自书本,网络以及自己的理解,如有错误欢迎指正。 源码在Python3.5上测试均通过,代码及…

SQLite.swift的简单使用
使用cocoapod 来进行引入 pod ‘SQLite.swift’ // // SQLiteTool.swift // CreateLectureForSwift // // Created by coder on 2019/6/25. // Copyright © 2019 AlexanderYeah. All rights reserved. // import Foundation import SQLite // id let id Expression(“…

Cypress USB开发文档列表(积累中)
CyUSB.chm(pdf) \Cypress\Cypress Suite USB 3.4.7\Driver Cypress CyUSB.sys Programmers Reference 内容: CyUsb.sys、CyUsb.inf 驱动程序介绍,如何绑定设备到驱动程序,以IOCTL Interface、CYIOCTL.Hd的解释为主要内容的编程指导,主…

对象冒充_使用您的精神探照灯进行冒充冒名顶替综合症
对象冒充by Jaime J. Rios由Jaime J. Rios “Stop that imposter! Seize them!”“停止冒名顶替者! 抓住他们!” I first spotted my imposter two years ago. It happened when I began learning how to code.两年前,我第一次发现了冒名顶…

grep 函数
linux grep命令1.作用Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。 2.格式gr…

iOS weak 自动置为nil的实现
1 weak 自动置为nil的实现 runtime 维护了一个Weak表,weak_table_t 用于存储指向某一个对象的所有Weak指针。Weak表其实是一个哈希表, key是所指对象的地址,value是weak指针的地址的数组。 在对象回收的时候,就会在weak表中进…

iOS 缓存策略
Github https://github.com/gaosboy/kache https://github.com/swtlovewtt/WTRequestCenter https://github.com/hans007/CacheFile Image https://github.com/youger/UIImageView-ASIImageCache转载于:https://www.cnblogs.com/hl666/p/3931182.html

数据结构的简要介绍:图形如何工作
by Michael Olorunnisola通过Michael Olorunnisola 数据结构的简要介绍:图形如何工作 (A Gentle Introduction to Data Structures: How Graphs Work) So who wants to work at Google, Facebook, or maybe LinkedIn? Beyond their grueling interview process, o…

Catel(翻译)-为什么选择Catel
1. 介绍 这篇文章主要是为了说明,我们为什么要使用Catel框架作为开发WPF,Silverlight,和Windows phone7应用程序的开发框架。 2. 通用功能 2.1. 这是你的选择 针对需对开发者,再使用架构的时候是希望有很大的自由度的,但是大部…

iOS 三种类型的Block
Block 的copy 操作 Block 其实来讲有三种类型 全局块 NSConcreteGlobalBlock 栈块 NSConcreteStackBlock 堆块 NSConcreteMallocBlock 全局块存储在全局内存中,相当于单例 栈块存于栈内存中,超出其作用域则马上进行销毁 堆块存在于堆内存中&#x…

2.4G高频PCB天线设计
2.4G高频PCB天线设计转载于:https://www.cnblogs.com/LittleTiger/p/6215262.html

如何一起破解图形化Python调试器
15分钟内从零调试 (Zero-to-Debugging in 15 mins) You don’t realize the value of a debugger until you’re stuck working on a hard-to-visualize problem. But once you fire up a development environment with decent debugging capabilities, you’ll never look bac…

python 之路,Day11 (下)- sqlalchemy ORM
python 之路,Day11 - sqlalchemy ORM 本节内容 ORM介绍sqlalchemy安装sqlalchemy基本使用多外键关联多对多关系表结构设计作业1. ORM介绍 orm英文全称object relational mapping,就是对象映射关系程序,简单来说我们类似python这种面向对象的程序来说一切…

iOS事件响应链
1 如下 NSObject 显然是基类,都是继承与UIResponder. 可以看出UIApplication,UIView,UIViewController都是继承自UIResponder类,可以响应和处理事件 我们都是通过UIResonder 来查找控件的父视图控件。’ 发生触摸事件之后&…

论5级流水32bit risc cpu设计
前段时间用verilog写了一个32bit的risc cpu,五级流水,下板调试已经完全可用,准备后期加入浮点运算器,因为最近事情超级多,因此暂时先把RTL图传上来供大家参考,后面我会讲具体怎么设计。希望大家多多关注 :)转载于:http…

开源项目贡献者_嘿新手开源贡献者:请写博客。
开源项目贡献者by Shubheksha通过Shubheksha 嘿新手开源贡献者:请写博客。 (Hey newbie open source contributors: please blog more.) As a newbie open source contributor, I often felt lost and dejected. I couldn’t figure out how different modules fit…

instanceof, isinstance,isAssignableFrom的区别
instanceof运算符 只被用于对象引用变量,检查左边的被测试对象 是不是 右边类或接口的 实例化。如果被测对象是null值,则测试结果总是false。 形象地:自身实例或子类实例 instanceof 自身类 返回true 例: String snew String(&qu…

POJ - 3538 - Domestic Networks
先上题目: Domestic NetworksTime Limit: 2000MS Memory Limit: 65536KTotal Submissions: 732 Accepted: 204 Special JudgeDescription Alex is a system administrator of Domestic Networks Inc. His network connects apartments and spans over multiple buil…

iOS HitTest 机制
当用户触摸(Touch)屏幕进行交互时,系统首先要找到响应者(Responder)。系统检测到手指触摸(Touch)操作的时候,将Touch 以UIEvent 的方式加入到UIApplication 事件队列中去。UIApplica…

巨石加密_缓解巨石
巨石加密by Ian Belcher伊恩贝尔彻(Ian Belcher) 我们如何将技术堆栈转向基于服务,以开发人员体验为中心的设计 (How we pivoted our tech stack to a service-based, developer experience-focused design) This article documents the problems we experienced w…

Python函数中的参数(一)
函数传递参数时的简要关键点: 1、参数的传递是通过自动将对象赋值给本地变量名来实现的。函数参数在实际中只是Python赋值的一个实例。因为引用是以指针的形式实现的,所有的参数实际上都是通过指针进行传递的。 2、在函数内部的参数名的赋值不会影响调用…
LLDB 调试相关
LLDB 初始 LLDB 是一个有着 REPL 的特性和 C ,Python 插件的开源调试器。LLDB 绑定在 Xcode 内部,存在于主窗口底部的控制台中。调试器允许你在程序运行的特定时暂停它,你可以查看变量的值,执行自定的指令,并且按照你所认为合适的…

javascript优缺点_为什么要在JavaScript中使用静态类型? 优缺点
javascript优缺点by Preethi Kasireddy通过Preethi Kasireddy 为什么要在JavaScript中使用静态类型? 优缺点 (Why use static types in JavaScript? The Advantages and Disadvantages) We covered a lot of ground in Part 1! With syntax out of the way, let’…

大数的减法函数--c语言
代码展示: http://paste.ubuntu.com/23693598/ #include<stdio.h> #include<stdlib.h> #include<string.h> char * largeDiffer(char *a,char *b){ /* 使用说明 传入的a和b只能为整数 结果为a-b;返回的为字符指针,注意数组不要越…

json 基础
json格式 JSON格式:http://www.json.org/ python和JSON的关系请参考:http://docs.python.org/library/json.html JSON建构有两种结构: 1. “名称/值”对的集合(A collection of name/value pairs)。不同的语言中&#…

iOS 中 load 和 initialize的实现顺序
1 load 函数 调用时机,当类引用进项目的时候执行load函数,在main函数开始之前,与 这个类是否被用到是无关的,每个类的load函数都会自动调用一次。 1 父类和子类都实现load函数的时候,父类的load方法优先于子类 2 类…