你知道吗?80% 的维护者认为招募新的贡献者是一个挑战,92% 的雇主认为很难雇用到开源人才。而另一方面,52% 的开发者希望为开源做出贡献,33% 的人不知道从哪里开始,31% 的人认为自己不够熟练。公共数据显示,社会对具有开源技能的人有很大的需求。因此,让我们看看如何才能够把开源作为一份职业,以填补这个供需之间的差距吧!
掌握一个技能
开源旅程的起点仅仅是你擅长的某个技能罢了。许多开发者会在空闲时间从事开源工作,他们在不熟练的领域投入精力,并把这些技能引入到技术领域里来。像机器学习(ML)、云原生和大数据分析这样的技能是很受欢迎的,因为许多项目都围绕着它们而进行。
开发者必须不断尝试,直到找到自己感兴趣的东西为止。例如,当我开始在开源领域工作时,我选择了移动用户界面(UI)和 Web 开发(包括前端和后端)方面的工作。这个选择并不简单,我花了很多时间来弄清楚我想从事什么。因此,重要的是要遵循你的兴趣,通过学习和建立项目来探索不同的领域。很多时候,理论教程可能不如建立实际项目更有帮助。掌握技能的唯一方法是将所学的东西应用到实际项目中。
如果你已经在某项技术和项目上投入了很长时间,那么你应该花时间好好分析一下。如果你对这个项目不感兴趣,那么放弃它可能是更好的选择。然而,这也可能是一把双刃剑。有可能你会发现一些感兴趣的东西,从而产生一个新的权衡。如果经过了充分的分析,你也知道了自己倾向于哪些技能组合,那么下一步就是建立自己的项目。
建立一个项目
无论项目的内容如何,只要它是活跃的,就会产生很大的价值。但请记住,一旦它开源了,你千万不要被大家的反应所左右。并且记住,无论你是为一个应用程序建立一个 UI,还是仅仅记录一个适当的注释、资源或 URL 的列表,你的工作都可以对开源用户有很大帮助。
在很大程度上,学习不同的工具有助于建立开源项目。因此,学习关于版本控制系统、Git、GitHub 和 GitLab(大多数项目都在它们上面)的一切是很重要的。由于互联网上已经有足够的教程,我只收集了一些可以在 navendu.me/osidays
上找到的。你需要通过撰写文档和公开自己学到的内容,来“公开学习”才行。
打造一份职业
你可以通过三种方式在开源领域建立一份职业。
构建、扩展你自己的开源项目,并让它盈利
如果你想要建立一个自己的项目,发现并解决问题是一个很好的经验法则。记下别人可能面临的问题,一个项目需求就这样产生了。你的项目的市场规模只能通过试验和错误来估计。对于既没有太多资金的、也没有太多经验个人贡献者来说,社交媒体、博客、帖子和会议上的讲话,都会在很大程度上有助于接触到用户。这些平台可以为你的开源项目带来巨大的流量。
资金在几乎所有的商业模式中都起着重要作用。Mozilla 基金会依靠自愿捐款来资助其项目。MariaDB 采用了延迟开放源代码的商业模式。IBM 的许多开源项目遵循开放核心的商业模式,即项目的核心部分是开源的,而周围的附加部分是闭源的和专有的。红帽公司不出售代码,而是出售专业服务,如支持、工具和围绕项目的技术援助。这些商业模式的例子可以被采用,以此来建立一个项目,将它开源,并使其盈利。
“即使你不是维护者,也要做维护者的工作。”
在一个以开源商业模式建立项目的公司工作
成为贡献者和维护者社区的一份子,参与会谈和参加会议将有助于你为项目做出贡献。你可以根据引导来完成第一次贡献,但它不一定得是代码。一个大的代码库可能看起来很吓人,但关键是要从小的地方着手。找到一个问题并解决它,这将有助于你了解贡献流程、代码库和项目设置等。
非代码的贡献也是有价值的。擅长写作的人可以通过撰写文档,或者为社交媒体写作来贡献。擅长设计的人,可以设计一个模板、一个颜色方案,或者也可以致力于创造一个更好的用户界面。与资深工程师相比,新人发现错误的概率很高。他们可以测试、确认并报告他们的用户体验,从而提升项目质量。另一个领域是新手引导,很多开源项目将导师和新手联系起来,并帮助后者做出重要贡献。还有一个选择是成为组织者或社区管理员,这意味着你将承担起项目经理的角色,确保功能完全按照预期交付,路线图得到遵循,贡献者得到照顾。大多数开源项目缺乏适当的管理,因为工程师们都不喜欢做这一类工作。
社会上有很多实习项目可以帮助你赚钱,比如谷歌的编程之夏(GSoC)和 Linux 基金会的导师制(在这里,被指导者有津贴,可以根据需要全职或兼职工作)。如果你能很好地发展你的技能,你可以在你实习的公司获得一个全职的职位。例如,如果你在红帽公司的一个项目中工作,你有机会被全职雇用,因为你在那里已经有了知名度。
正如 NumPy、SciPy 和 Anaconda 的作者 Travis Oliphant 所说,“建立一个开源项目,让人们为它做出贡献,然后从他们当中招聘。” —— 这也是我获得全职工作的方式。
- 随着时间的推移,你所做贡献的质量和数量会不断提升。最好长期参与一个项目,因为这样可以发现更多的贡献领域。投身进去做贡献会让人们注意到并认可你。
- 开源项目缺乏项目经理,因此成为项目经理将有助于你的职业生涯。
- 成为一个维护者,做一些工程师应该做的事情,如审阅代码、设计系统、撰写文档和帮助他人做出贡献。
- 好的贡献的关键是“提前付出”,这意味着你需要通过分享经验和智慧来帮助新人,并确保他们不犯错误。
获得赞助以从事开源工作
作为个人,如果你正在为某个公司建立的项目而工作,你可以要求获得资助。值得注意的是,只有当你的贡献很大时,组织才会乐意赞助你。但是,如果你建立了自己的项目,并且有大量的用户群,你可以向用户要求资助。
作为一个组织,你可以通过像 Open Collective、Patreon 和 GitHub Sponsors 这样的平台来筹集资金,让人们为你的项目捐款。像 Linux 基金会和 Mozilla 基金会这样的开源巨头也提供资金来支持项目。GitHub 已经给 15 个印度贡献者的项目提供了资助。
我曾经花了三个月时间建立了一个开源项目。这个项目后来被 《Product Hunt》 和 《JS Weekly》报道,还在上过 GitHub 趋势榜排名第一的位置。正是这个项目让我走上了开源事业的道路。