github创建开源项目
安德烈·彼得罗夫 ( Andrey Petrov )在Sourcegraph开源聚会上发表讲话,讲述了从他创建开源项目的成功和失败中学到的教训。
Andrey是流行的urllib3库和GitHub上其他流行的开源库的作者。 白天,他在Briefmetrics工作, 还是 YC 校友 ,前Googler和猫友 。 他主要用Python,JavaScript和Go编写程序。
为什么要开源?
安德烈在演讲开始时概述了开源的一些主要好处:
- 这是获取代码的免费复制备份的好方法。
- 它使链接和寻求帮助变得容易。
- 它可以帮助您在编程领域中发挥更大的影响力。
- 它使您可以从沉没成本中获得最大收益。
您已经在代码上投入了大量时间和精力。 开放源代码使其可用和可重复使用。 员工和公司一样来回走动,但是您和其他发现有用的人将始终可以使用开源代码。
urllib3的摘录,这是Andrey创建的流行的Python开源库。
开源有很多好处,但是已经有很多开源代码。 您如何使您的项目脱颖而出? 您可以使用以下4个步骤来构建出色的开源软件。
步骤1:定义成功的模样
urllib3每天有数百万人使用,在GitHub上拥有785个星,并且自2008年创建以来一直在增长。Andrey还有另一个项目ssh-chat ,在GitHub上拥有1,560个星,但是今天仅由15个人使用。 那么哪个项目更成功? 为了回答这个问题,Andrey描述了在项目开始时定义成功如何如何帮助您了解成功与否。
每个开源项目的开始都是这样的:
- 建立东西。 什么都可以
- 对最难的部分感到沮丧,构建库和工具来提供帮助。
- 丢弃原始项目,将精力集中在成为新项目的库上。
- 返回步骤2并重复。
urllib3的故事始于试图在2008年将数十亿个图像上载到S3的问题。使用现有的Python库,由于没有良好的并发支持,这将花费超过三周的时间。 您可以使用多线程S3客户端s3funnel,但是管理线程很麻烦。 您可以改为在s3funnel中使用工作池,但是现有的HTTP库无法重用连接,并且大多数解决方案都不是线程安全的或缺少多部分(文件发布)编码。 输入urllib3。
一小段请求,urllib3中的流行函数
用Andrey的话说:“(工程学中的)解决方案空间是关于构建某种东西并解决一个问题。对于urllib3来说,这个空间真的很小,对其他事物的解决方案真的很有用,这就是成功的原因。”
在定义项目目标时,请考虑解决小问题如何产生重大影响。
开源成功的另一种形式是ssh-chat,它是一种用Go语言编写的加密SSH聊天程序。 安德烈(Andrey)作为一个周末项目开始了ssh-chat。 对项目成功的主要贡献之一始于创建完整的自述文件。 正如Andrey所说:“拥有出色的README基本上是成功的80%。您需要为贡献者回答三个问题:“还有谁使用它?”“他们将其用于什么用途?”和“我在哪里可以获得更多帮助?”
ssh-chat片段,一种用Go编写的流行ssh-chat程序
但是,仅创建出色的自述文件并不会启动ssh-chat令人印象深刻的增长。 为了使其蓬勃发展,它需要更多的牵引力。
步骤2:招募核心贡献者
为了传播有关ssh-chat的信息,Andrey开始寻求帮助,寻求改进,并寻找方法吸引更多人参与该项目。 为了引起人们的兴趣,Andrey在Twitter上与人们进行了接触,并提供了免费的Go编程课程,以换取打开请求请求的权利。 这克服了使一些人参与并对该项目产生兴趣的最初惯性。 这些早期的贡献者最终成为ssh-chat的拥护者,并开始回答有关Stack Overflow的问题。
建立和维护开源项目的另一个组成部分是学习包容性。 安德烈说:“非常慷慨,非常客气地接受拉动请求”是树立更多社区兴趣的关键一步,也是许多开放源作者一开始就怀念的事情。 而且,让特定的人提出拉取请求比对他的Twitter追随者进行更普遍的询问要有效得多。
步骤3:行销并推广您的专案
通常,程序员往往不是自我推广类型,因此积极营销和推广开源项目并不是自然而然的。 考虑到这一点,安德烈(Andrey)确定了程序员可以自我宣传的方式来促进其项目的方式。
一种方法是编写有关您的项目的有趣的博客文章,以提供有关项目的故事和任务的更清晰的上下文。 媒体是在技术社区中共享的绝佳平台,比自托管博客拥有更多的潜在读者。
与为urllib3和ssh-chat工作的贡献者建立联系的其他机会包括:
- 回答有关堆栈溢出的问题(针对特定主题设置有关堆栈溢出的警报)
- 参与有关Hacker News,reddit / r / programming等的讨论。
- 出售给其他开源项目,并与他们建立合作伙伴关系。 “ urllib3成为当今最受欢迎的第三方Python库的唯一原因是因为它是请求的一部分。”
- 养活非巨魔:在公告中获得投票只是方程式的一半。 更多的活动和讨论产生了更多人点击它和更多更新的信息,因此,如果您回答几乎每个评论,则评论数量是原来的两倍。
步骤4:获利?
“我们想像Docker!” 我们不是吗?
有两件事帮助Docker发展成为一个广泛采用的开源项目:
- 资金很好。
- 它有成千上万的贡献者免费提供帮助。
Docker成功背后的关键见解之一是,在OSS项目疯狂流行之前,他们并没有过度关注业务模型。 那么如何复制呢? 输入“公司来源模型”,其中开源工作成为公司的核心能力和业务。
Corp'en源模型
包含corp'en来源的一些最知名公司包括:
- Docker(通过开放式内核)
- Gratipay(通过狗食自己的产品来获得收入)
- Nginx(通过咨询和支持)
- Mozilla(通过广告)
- GnuPG(通过慈善和赠款)
那么,您如何通过自由球员将自己的贡献货币化呢?
好吧,你没有。 至少不是直接的。
尽管urllib3被广泛采用,但Andrey透露他仅从单个用户那里获得了5美元(他很感激!),证明了项目的广泛采用并不一定提供可持续的收入模型来证明时间和精力的合理性。
一些公司,如Stripe和Sourcegraph都赞助开源工作。
开源:做到正确,正确做
开源是极其宝贵和有益的,但是要成功地做到这一点,您就必须要努力。
在这种情况下,构建urrlib3的许多工作都意味着将重点放在一个小而又常见的挑战上,编写出色的自述文件,与人们联系以做出贡献,并通过博客文章促进该项目。 还值得一提的是,每个项目都花了一些时间来吸引人,Andrey致力于随着时间的推移改进该项目,这有助于在编程社区中建立自己的声誉和尊重。
简而言之,这是使开源项目蓬勃发展的方法:
- 定义一个影响很多人的小型解决方案空间。
- 编写出色的自述文件,并招募可以并且将与您一起构建它的人。
- 通过博客文章和社交媒体活动营销和推广该项目。
- 确定并联系将从您的工作中受益的公司。
翻译自: https://opensource.com/life/15/5/4-steps-creating-thriving-open-source-project
github创建开源项目