如何参与一个GitHub开源项目

Github作为开源项目的著名托管地,可谓无人不知,越来越多的个人和公司纷纷加入到Github的大家族里来,为开源尽一份绵薄之力。对于个人来讲,你把自己的项目托管到Github上并不表示你参与了Github开源项目,只能说你开源了自己的项目,可以任别人自由下载。
那么该如何参与Github的开源项目呢?为此,Github官方团队曾经写了一篇很棒的文章 Contributing to Open Source on GitHub,专业指导大家如何参与Github的开源项目。 下面是原文及翻译。


原文路径:https://guides.github.com/activities/contributing-to-open-source/



A great way to get involved in参与 open source is to contribute to the existing projects you’re using. GitHub is home to more than 5 million open source projects. There are projects for every skill set各个领域 like recipes, HTML/CSS, Ruby, Astrophysics and many more. This guide will cover涵盖 what you might find in a typical project and how to make a great contribution.

Find Projects

We recommend推荐 that you start by finding a project that you’re already (or are interested in) using. Here are a few great places to look:

  • GitHub Explore: Popular and trending热门 projects.
  • GitHub Stars: Projects starred by other people.
  • GitHub Showcases: A way to discover related repositories.相关库
  • Designer News: Front-end development and design projects.

A Typical Project

Below are some elements you’re likely to come across遇到 in an open source project on GitHub.

The Community社区

Projects often have a community around them, made up of组成 other users in different (formal or informal) roles:

  • Owner is the user or organization that created the project has the project on their account.
  • Maintainers维护者 and Collaborators协作者 are the users primarily doing the work on a project and driving the direction驾驶方向. Oftentimes the owner and the maintainer are the same. They have write access权限 to the repository.
  • Contributors贡献者 is everyone who has had a pull request merged合并 into a project.
  • Community Members are the users who often use and care deeply about the project and are active活跃 in discussions for features and pull requests.

The Docs

The what’s-what of common files in projects.

Readme

Nearly all GitHub projects include a README.md file. The readme provides a lay of the land for a project with details细节 on how to use, build and sometimes contribute to a project.

Contributing

Projects and project maintainers vary不同, so the best way to contribute will also vary. Keep your eye open for a doc labeled标注 CONTRIBUTING. Contributing docs detail the specifics about how a project’s maintainer would like to see patches补丁 or features功能 contributed. This can include what tests to write, code syntax语法 style or areas to focus on for patches.

License许可

LICENSE file, well, is the license for the project. An open source project’s license informs users what they can and can’t do (e.g., use, modify, redistribute重新发布), and contributors, what they are allowing others to do. There are many ways to license and open source project, you can read more about what each license means at choosealicense.com.

Documentation and Wikis

Many larger projects go beyond不止 a readme to give instructions指导 for how people can use their project. In such cases you’ll often find a link to another file or a folder named ‘docs’ in the repository.

Alternatively另外, the repository may instead代替 use the GitHub wiki to break down documentation.

Contributing to a Project

Now that you’ve found the material资料 for understanding the project, here is how you can take action.

Create an Issue话题

If you find a bug in a project you’re using (and you don’t know how to fix it), have trouble following the documentation or have a question about the project – create an issue! There’s nothing to it很简单 and whatever issue you’re having, you’re likely not the only one, so others will find your issue helpful, too. For more information on how issues work, check out our Issues guide.

Issues Pro Tips专业提示

  • Check existing issues for your issue. Duplicating重复 an issue is slower for both parties so search through open and closed issues to see if what you’re running into has been addressed解决 already.
  • Be clear about what your problem is: what was the expected outcome, what happened instead? Detail how someone else can recreate the problem.
  • Link链接 to demos recreating the problem on things like JSFiddle or CodePen.
  • Include system details like what the browser, library or operating system you’re using and its version.
  • Paste error output or logs in your issue or in a Gist. If pasting them in the issue, wrap包裹 it in three backticks: ` ``` ` so that it renders呈现 nicely.

Pull Request

If you’re able to patch修复 the bug or add the feature yourself – fantastic太棒了, make a pull request with the code! Be sure you’ve read any documents on contributing, understand the license and have signed a Contributor Licence Agreement (CLA) if required. Once you’ve submitted提交 a pull request the maintainer(s) can compare比较 your branch to the existing one and decide whether or not to incorporate合并 (pull in) your changes.

Pull Request Pro Tips

  • Fork the repository and clone it locally. Connect your local to the original原始的 ‘upstream’ repository by adding it as a remote远程. Pull in changes from ‘upstream’ often经常 so that you stay up保持 to date so that when you submit your pull request, merge conflicts合并冲突 will be less likely. See more detailed instructions here.
  • Create a branch for your edits.
  • Be clear about what problem is occurring出现 and how someone can recreate that problem or why your feature will help. Then be equally同样 as clear about the steps步骤 you took to make your changes.
  • It’s best to test. Run your changes against any existing tests if they exist and create new ones when needed. Whether tests exist or not, make sure your changes don’t break破坏 the existing project.
  • Include screenshots of the before and after if your changes include differences in HTML/CSS. Drag and drop拖放 the images into the body of your pull request.
  • Contribute in the style of the project to the best of your abilities尽你所能. This may mean using indents缩进, semi colons分号 or comments注释 differently than you would in your own repository, but makes it easier for the maintainer to merge, others to understand and maintain维护 in the future.

Open Pull Requests

Once you’ve opened a pull request, a discussion will start, around your proposed changes. Other contributors and users may chime in参与, but ultimately最终 the decision is made by the maintainer(s). You may be asked to make some changes to your pull request, if so, add more commits to your branch and push them – they’ll automatically go into the existing pull request.

If your pull request is merged – great! If it is not, no sweat没什么大不了的, it may not be what the project maintainer had in mind所期望的, or they were already working on it. This happens, so our recommendation建议 is to take any feedback you’ve received and go forth继续努力 and pull request again – or create your own open source project.



参与开源项目的最佳办法就是加入到你正在使用的已有项目上来。Github上有500多万开源项目,涉及到各个领域的技术,像 recipes, HTML/CSS, Ruby, Astrophysics等等。该指南将涵盖你在一个典型的项目中可能出现的事情以及如何为开源项目作出贡献。
找项目
我们推荐你从已正在使用的或感兴趣的项目开始。这里有几个很棒的地方供你参考:
GitHub Explore:受欢迎和热门的项目。
GitHub Stars:被其他人star过的项目(指的是你自己库的项目)。
GitHub Showcases:一个能搜索相关库的方法。
LayerVault News:前端和设计相关的项目。
一个典型的项目
下面是一些你在Github开源项目中可能遇到的因素。
The Community(社区)
项目通常会有一个社区维护,由不同角色(正规或非正规)的其他用户组成:
所有者(Owner):即创建该项目且在他们Github账户上有该项目的用户或组织。
维护者和协作者(Maintainers and Collaborators): 致力于一个项目并促进该项目发展的用户。通常所有者和维护者是同一个用户或组织,他们对项目库都有写的权限。
贡献者(Contributors):每一个对该项目发出过pull request并合并到项目中的用户都是贡献者。
社区成员(Community Members):即那些经常使用且非常关心该项目的用户,他们在讨论功能特征和pull request上非常活跃。
The Docs(文档)
一般项目中都有的文件。
Readme:几乎所有的Github项目都包含一个README.md文件。readme提供了该项目的一个概览及关于如何使用、构建甚至如何贡献于一个项目的相关细节。
Contributing:项目和项目维护者不同,所以每个项目所期望的作贡献的最佳方法也会有所不同。一定要注意一个标注为CONTRIBUTING的文档,Contributing文档详细描述了一个项目的维护者希望看到贡献的补丁或功能应该符合怎样的规格。这可能包含要写什么测试,代码语法规范或补丁集中的区域。
License:一个LICENSE文件当然就是该项目的许可证了。一个开源项目的license会告诉用户他们能做和不能做的(例如使用、修改、重新发布),及告诉贡献者他们允许其他人做的。有许多的办法对开源项目加上许可证,你可以在 choosealicense.com读到更多的关于每个许可证的含义。
Documentation and Wikis:许多大型项目有的不只有一个readme来指导人么如何使用他们的项目。在这种情况下你通常能够发现一个指向库中名为“docs”的另一个文件或文件夹的链接。
另外,该库也可能使用Github wiki来代替文档。
贡献于一个项目
既然你已经找到了理解该项目的相关资料,下面你就可以采取一些行动了。
建立一个话题
如果你发现了你正在使用的项目中的一个bug(但是你不知道怎么去修复它),或对文档有不解或对项目有疑问 — 那么创建一个话题吧!这非常容易且一般你不管创建什么话题,你都可能不是唯一一个出现该问题的人,所以其他人可能会发现你的话题很有帮助。关于更多的话题介绍,请查看我们的 Issues guide。
话题专业提示
在建话题之前检查已有的话题:话题重复对双方都无利,所以搜索整个正开放和已关闭的话题以检查你遇到的问题是否已经有人解决了。
务必对自己的问题有清晰的认识:期望的结果是什么?然而却发生了什么? 详细描述其他人如何重现该问题。
在像 JSFiddle或 CodePen类似的平台上重现该问题并给出问题demo的链接。
包含一些系统相关的细节,比如用的什么浏览器、库或操作系统及版本号。
在你的话题或在 Gist里贴出你的错误输出或日志。如果在话题里贴出来,请用三个反引号``` 包围起来使得能够良好的呈现给大家。
Pull Request
如果你能够修复bug或自己添加功能 — 太棒了,请发一个pull request吧!确保你已经读过任何关于contributing的文档,且需要理解license以及已经签过CLA(如果需要的话)。一旦你提交了一个pull request,维护者就会将你的分支与已有的分支作比较来决定是否要合并(即pull in)你作的改动。
Pull Request专业提示
Fork 该项目库及将它clone到本地。通过添加为远程的方式在本地连接到原来的‘upstream’库。经常从‘upstream’库pull in改动以保持库最新,这样当你提交pull request时,就不大可能发生合并冲突了。点 这里看更多的指导细节。
为你的编辑单独建立一个分支 。
务必清楚所出现的问题以及如何重现该问题或为什么你的功能有帮助。然后同样的要清楚做一些改变有哪些步骤。
最好测试一下。在任何已有的测试(如果存在)上运行你所做的改动并在必要时创建新的测试。不管测试存不存在,都要确保你的改动不会破坏已有的项目。
如果你的改动包含了HTML/CSS方面的不同,那么请包含改动前和改动后的截图。将你的图片拖放到你pull request的正文里。
尽你所能的在项目的风格上多做努力。这可能意味着使用不同于你自己Github库中采用的缩进,分号或注释,但是这让维护者更容易合并,也让其他人更容易理解和以后的维护。
开放的Pull Requests
一旦你打开一个pull request,就会有一个讨论,围绕你提出的改变作出探讨。其他的贡献者和用户可能会参与进来,但最终由维护者做决定。你可能会被要求对你的pull request做一些改变,如果这样,请给你的分支添加更多的commit并push它们 — 它们将自动的加入到已有的pull request里。
如果你的pull request被合并了——太好了!如果没被合并的话,也没什么大不了的,也许这不是项目维护者所期望看到的改动,亦或者他们已经致力于该bug或功能。这种情况有可能发生,所以我们的建议是:对收到的结果做出反馈,进一步努力然后再次pull request出去— 或者创建你自己的开源项目。


来自为知笔记(Wiz)


转载于:https://www.cnblogs.com/baiqiantao/p/fe712a833842ddf9b84d324b84dfc5d3.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/470065.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql数据库的多实例_MySQL数据库多实例应用实战 - 橙子柠檬's Blog

本文采用的是/data目录作为mysql多实例总的根目录,然后规划不同 的MySQL实例端口号来作为/data下面的二级目录,不同的端口号就是不同实例目录,以区别不同的实例,二级目录下包含mysql数据文件,配置文件以及启动文件的目…

微信企业号开发[二]——获取用户信息

注:文中绿色部分为摘自微信官方文档 在《微信企业号开发[一]——创建应用》介绍了如何创建应用,但是当用户点击应用跳转到我们设定的URL时,其实并没有带上用户的任何信息,为了获取用户信息,我们需要借助微信提供的OAut…

渗透思维导图

转载于:https://www.cnblogs.com/DonAndy/p/5914747.html

【计算机视觉】论文笔记:Ten years of pedestrian detection, what have we learned?

最近正在研究行人检测,学习了一篇2014年发表在ECCV上的一篇综述性的文章,是对行人检测过去十年的一个回顾,从dataset,main approaches的角度分析了近10年的40多篇论文提出的方法,发现有三种方法(DPM变体&am…

02-合并frame

进入IJKMediaPlayer工程--->--->选择release--->选择6s或者其他模拟器,Commandb编译--->选择真机版本,Commandb编译,查看finder,生成真机和模拟器两个版本的frameWork--->找到这个文件----> 真机和模拟器的IJKm…

mysql lib 5.5.28_mysql5.5.28在Linux下的安装

mysql5.5.28在Linux下的安装1. 下载mysql2. 解压假如tar包在/home/zdw/software目录下#tar -xvf mysql-5.5.28-linux2.6-i686.tar.gz3. 移动到/usr/local/mysql#mv mysql-5.5.28-linux2.6-i686 /usr/local/添加快捷方式mysql指向mysql-5.5.28-linux2.6-i686#ln -s mysql-5.5.28…

mysql与缓存脏读_MySQL 事务的隔离级别问题 之 脏读

1. 脏读所谓的脏读就是指一个事务读取了另一个事务未提取的数据。试想一下:a账户要给b账户100元购买商品,如果a账户开启一个事务,执行下面的update语句做了如下转账的工作:update account set moneymoney-100 where namea;update …

easyUI文本框textbox笔记

知识点&#xff1a; 1.图标位置 Icon Align属性&#xff0c;有left和right两个&#xff1b; 2.textbox的setvalue方法&#xff0c;getvalue方法。 <div style"margin:10px 0 20px 0"><span>Select Icon Align: </span><select οnchange"$…

《A First Course in Probability》-chape4-离散型随机变量-几种典型分布列

超几何分布&#xff1a; 超几何分布基于这样一个模型&#xff0c;一个坛子中有N个球&#xff0c;其中m个白球&#xff0c;N-m个黑球&#xff0c;从中随机取n(不放回)&#xff0c;令X表示取出来的白球数&#xff0c;那么&#xff1a; 我们称随机变量X满足参数为(n,m,M)的超几何分…

java内联_JAVA中的内联函数

在说内联函数之前&#xff0c;先说说函数的调用过程。调用某个函数实际上将程序执行顺序转移到该函数所存放在内存中某个地址&#xff0c;将函数的程序内容执行完后&#xff0c;再返回到转去执行该函数前的地方。这种转移操作要求在转去前要保护现场并记忆执行的地址&#xff0…

两端对齐布局与text-align:justify

百分比实现 首先最简单的是使用百分比实现&#xff0c;如下一个展示列表&#xff1a; 1 <!DOCTYPE html>2 <html>3 <head>4 <meta charset"UTF-8">5 <title></title>6 <style type"text/cs…

java拆分单元格_Java 拆分Excel单元格数据为多列

一、概述及使用工具在Excel表格里面&#xff0c;可设置将单元格中的文本数据按分隔符拆分为多列&#xff0c;下面通过Java程序来介绍具体实现方法。这里使用Free Spire.XLS for Java(免费版)来实现数据分列&#xff0c;需要导入Spire.Xls.jar文件到Java程序&#xff0c;可参考以…

win10下安装centos7双系统

国庆最后一天了&#xff0c;闲来无事装个双系统&#xff0c;用虚拟机的linux总有些不方便。 window下安装linux双系统有两中方法&#xff1a; 1.U盘安装 &#xff08;我采用的方法&#xff0c;后面详述&#xff09; 2.EasyBCD工具安装 &#xff08;使用EasyBCD完美实现Windows7…

java swing进度条_Java Swing创建自定义闪屏:在闪屏上添加Swing进度条控件(转)

本文将讲解如何做一个类似MyEclipse启动画面的闪屏&#xff0c;为Java Swing应用程序增添魅力。首先看一下效果图吧&#xff0c;原理很简单&#xff0c;就是创建一个Dialog&#xff0c;Dialog有一个进度条和一个Label用来分别显示进度和进度信息&#xff0c;而Dialog的宽度和高…

【JZOJ4817】【NOIP2016提高A组五校联考4】square

题目描述 输入 输出 样例输入 3 4 1 1 0 1 0 1 1 0 0 1 1 0 5 1 1 2 3 2 1 3 2 3 2 3 4 1 1 3 4 1 2 3 4 样例输出 1 1 1 2 2 数据范围 解法 设f[i][j]为以(i,j)为右下角的正方形的最大边长。 则f[i][j]min(f[i−1][j],f[i−1][j−1],f[i][j−1])1(a[i][j]1) 考虑…

java单例模式 uml_Java设计模式系列之单例模式

单例模式的定义一个类有且仅有一个实例&#xff0c;并且自行实例化向整个系统提供。比如&#xff0c;多程序读取一个配置文件时&#xff0c;建议配置文件时&#xff0c;建议配置文件封装成对象。会方便操作其中的数据&#xff0c;又要保证多个程序读到的是同一个配置文件对象&a…

Linux安全基础:grep命令的使用

grep &#xff08;缩写来自Globally search a Regular Expression and Print&#xff09;是一种强大的文本搜索工具&#xff0c;它能使用正则表达式搜索文本&#xff0c;并把匹配的行打印出来。Unix的grep家族包括grep、egrep和fgrep。 grep的工作方式是这样的&#xff0c;它在…

php面试题2018mysql_PHP程序员必会的MySQL面试题

01数据库字段类型MySQL常见的数据类型有哪些&#xff1f;MySQL数据类型分为数值类型、日期时间型和字符串类型。数值类型常见的是TINYINT、INT、DECIMAL&#xff0c;日期类型常见的有DATE、DATETIME&#xff0c;字符串类型常见的有CHAR、VARCHAR、TEXT。详细介绍见文章末尾的图…

【开发软件】推荐一款MAC OS X 下php集成开发环境mamp

这里给大家推荐一款在mac上搭建WEB服务器环境的集成环境安装软件&#xff0c;非常的好用&#xff0c;需要的朋友可以拿去&#xff0c;不用谢 ^_^之前苦于mac上搭建本地服务器之艰辛&#xff0c;找寻好久都没找到一款类似windows上集成的本地服务器环境&#xff0c;诸如phpstudy…

java 2分钟_java开发中的那些事(5)--------一点经历,败给2分钟的2个小时

特意记下这个经历&#xff0c;这个让我感慨万千又斗志昂扬的一次经历&#xff0c;这是经验&#xff0c;也是生活。故事的始末是这种&#xff0c;先给大家上几句代码&#xff0c;如今身在家中&#xff0c;仅仅能凭记忆敲打几行&#xff0c;大致意思倒不会错&#xff1a;{field:c…