本文是为了提高Symfony.cn的参与度,由我们编写的Git / GitHub介绍文章之一。

GitHub于2008年上线,目前,除了Git代码仓库托管及基本的Web管理界面以外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(Gist)等功能。正因为这些功能所提供的便利,又经过长期的积累,GitHub的用户活跃度很高,在开源世界里享有深远的声望,形成了所谓的社交化编程文化(Social Coding)。

GitHub允许你免费创建不限数量的“公开”代码仓库,虽有总的资源限额,但一般情况下够用。如果不想公开代码,或者你的代码占用存储空间比较多,你也可以选择成为付费的会员。

Atlassian的Bitbucket,是GitHub的竞争对手。与GitHub稍有不同,Bitbucket允许你免费创建任意数量的“私有“代码仓库,只有当你要为这些私有代码仓库添加5个以上的开发成员时,才需要额外付费,所以说,如果你的(商业)团队人数少于5人,不考虑与开源社区代码共享的问题,Bitbucket可能是更好的选项。

在GitHub,想要接触高水平的软件项目,了解最前沿的技术趋势,和上微博一样简单。

发现项目

如何在GitHub上找到你感兴趣(出于实际需要,或者研究的目的)的开源代码?你可以:

  • 在“发现”(Explore)页面查看由GitHub根据统计数据推荐的项目。在本文编写的时候,最热门的项目是Adobe的Brackets,一款用HTML,Javascript及CSS实现的代码编辑器。
  • 按开发语言的种类进行浏览,如PHP
  • 使用GitHub的搜索功能
  • 实际上,如果你看足够多的技术博客,一定会注意到,很多作者的代码都托管在GitHub。

GitHub上的开发者绝大多数都使用英语来交流,如果你觉得自己的英语还没有练好,可以先看看Symfony.cn发起的几个中文项目:

参与项目

那么,如何参与项目?

第一步自然是:获取代码。

你有两种方式获取代码:使用git客户端,或者直接用浏览器下载。不会用命令行的git?没关系,GitHub提供了Mac和Windows平台下的图形界面git客户端。

接下来,将开源代码与自写代码的整合过程中,你很可能会遇到如下情况:

  • 不能明确用法(典型问题:“运行不了”)
  • 遇到Bug(典型问题:“我的代码没问题,但下载下来的代码报错了”)
  • 还需要额外的功能(典型问题:“中文是乱码!”)

如果你遇到的是用法的问题,请先做充分的研究,至少要阅读相关的文档,或者在网上搜索其他人是否已经处理过同样的问题。如果仍然没有收获,你可以通过GitHub提交问题(Issues),其他用户,甚至项目作者本人,会尽可能地为你提供帮助。

或者,你已经在使用开源作者的代码,并尝到一些甜头(“周末不用加班了”),但你发现开源代码里有不能被忽略的bug,这时,你可以:

  • 换一个开源代码来用。有些时候,这是一个正确的选择。
  • 向开源项目作者报告bug。如果这个bug的优先级比较高,可能会由作者亲自解决。
  • 或者你等不了,而又有足够的能力,你可以自行修复这个bug。

最后一个方式是开源社区最欢迎的做法,而GitHub的定位也正是要鼓励这样的行为。同样的,如果某个开源项目里缺少了你所需要的功能,你可以在GitHub向作者提交功能的需求,或者,自己来实现它。

亮点

当你决定要通过GitHub修复现有项目的bug,甚至为其增加功能时,事情就变得有趣多了。其他的开发者,将会参与进来与你讨论,采纳,甚至赞赏你的工作(你对某个开源项目的贡献,会由GitHub自动记录)。

实际的操作需要你对Git有一定的了解。你首先可以在GitHub上把目标项目的Git源Fork一份(复制),这个副本你是有完全控制权的,你可以随意修改。当你完成代码工作(bug的修复,或者新增的功能),将代码同步到GitHub之后,可以通过GitHub向原作者发出一个Pull Request(PR)。原作者和其他用户会审察、测试你的代码,如果一切顺利,你的代码将被采纳,合并到目标项目里去。

欢迎你成为一名开源软件贡献者!

参考资料