作为开源代码库以及版本控制系统,Github拥有超过900万开发者用户。随着越来越多的应用程序转移到了云上,Github已经成为了管理软件开发以及发现已有代码的首选方法。
如前所述,作为一个分布式的版本控制系统,在Git中并不存在主库这样的概念,每一份复制出的库都可以独立使用,任何两个库之间的不一致之处都可以进行合并。
GitHub可以托管各种git库,并提供一个web界面,但与其它像 SourceForge或Google Code这样的服务不同,GitHub的独特卖点在于从另外一个项目进行分支的简易性。为一个项目贡献代码非常简单:首先点击项目站点的“fork”的按钮,然后将代码检出并将修改加入到刚才分出的代码库中,最后通过内建的“pull request”机制向项目负责人申请代码合并。已经有人将GitHub称为代码玩家的MySpace。
在GitHub进行分支就像在Myspace(或Facebook…)进行交友一样,在社会关系图的节点中不断的连线。
GitHub项目本身自然而然的也在GitHub上进行托管,只不过在一个私有的,公共视图不可见的库中。开源项目可以免费托管,但私有库则并不如此。Chris Wanstrath,GitHub的开发者之一,肯定了通过付费的私有库来在财务上支持免费库的托管这一计划。
github与社会化编程最近 GitHub 因为两件事成为了媒体的焦点,其一是 Wired 的一篇关于 Github 的文章以 Github 上的 Repository 的形式进行了发行,这让人对 GitHub 未来更广泛的应用充满了期待。其二是一名俄罗斯黑客通过 Ruby on Rail 的漏洞获得了 GitHub 的顶级权限,可以对进入的项目进行随意的 *** 作甚至彻底清空,这在开发者界造成了一场大恐慌,GitHub 的流行度也可见一斑。
GitHub - 不仅仅是版本控制
版本控制这个概念本身对于程序员来说并不新鲜,从 1982 年的 RCS,到 CVS、SVN,再到现在流行的 Git、Mercurial 等,但凡有规模的软件项目都会采用某种版本控制系统来追踪文件的变化、处理软件分支、避免版本混乱。只要拥有一台主机,任何人都能很容易的搭建自己的版本控制服务器。如果仅仅是提供一个支持版本控制的代码托管服务的话,那么其本身并无任何特色可言,但 GitHub 并不局限于此。
GitHub 的理念非常简单:社会化编程。像 Twitter 一样,每个人都可以在 GitHub 上发布自己的各种代码,以时间流的形式展现自己的开发进展,可以关注自己感兴趣的项目和开发者,发表评论,了解其最新的开发动态。但所谓的社会化,还不仅仅局限于此,GitHub 最重要的特征是以一种社交化、民主化的形式进行代码协作。
GitHub 的社会化编程理念可以说将开源的概念发挥到了极致:由于采用了 Git 这种分布式版本控制系统,所有人都可以对任意一个公共项目简单的进行分支开发,而不会对原项目有任何的影响;可以将自己对于项目的功能改进、漏洞修复、或有价值的代码提交给原开发者,一起对项目进行完善。
项目的派生(Fork)和拉拽请求(Pull Request)构成了 GitHub 最独具一格的工作模式,对提交代码的逐行评注及 Pull Request 构成了 GitHub 特色的代码审核。
GitHub 拥有一个非常鼓励合作的社区氛围。这一方面源于 GitHub 的付费模式:私有项目需要付费,而公共项目完全免费。这意味着 GitHub 上的大多数项目都是开源的,任何用户都有海量的开源项目选择可用来分支学习和贡献代码。GitHub 的项目关注、开发者关注、@回复、个人页面的工作项目信息等社交功能可谓完全为开源项目量身打造,大大的促进了用户之间代码的交流,非常适合于开源项目的沟通和管理。一个意外的发现是,在很多程序员的简历上,GitHub 的个人页面也已经成为了其一个重要的技能标志,这也鼓励了更多的人积极的加入 GitHub 的开源项目中。
对于大多数开源协作项目来说,这无疑是发挥大众认知盈余的最好工具。从 Ruby on Rail 框架、Linux 内核、jQuery脚本、Homebrew 包管理系统、Bootstrap CSS 框架,在众多明星项目的吸引力作用下, GitHub 已经成为最为活跃的开源社区,就连 Twitter、Facebook 等公司也选择了 GitHub 作为其开源项目的首选平台。
社会化如何改变编程
The power of GitHub I believe is that it allows programmers to share their work with their colleagues, learn from others, and work together with others.
GitHub 的最大优势在于程序员可以与他人分享各自的项目,彼此互相学习,并协同合作。
这段对于 GitHub 最大优势的描述在我看来正好总结了社会化对软件编程带来的最大变化。
更好的分享已有的代码和算法:
很多时候,我们并不需要从头去重建一套问题的算法,开放的社会化网络为我们寻求现有的解决方案提供了一个极佳的发现渠道。像 jQuery、PhoneGap、Appcelerator‘s TItanium 等这样的框架为 Web、App 开发带来了无比的便利,而它们就是从 GitHub 这样的社会化平台上成长起来的。
为开发者提供一个最好的成长平台:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)