周三,我在 GitHub Universe 上发表了一个十分钟的片段,标题雄心勃勃,标题为“开源项目的财务可持续性” 。
从今年早些时候起,GitHub 就邀请我作为GitHub Accelerator计划的代表发言。目标是分享该计划的一些建议,并谈论我自己尝试为我的Datasette开源项目实现财务可持续性的个人经历。
设定期望:Datasette 在财务上尚不可持续,至少就我的项目长期目标而言是这样。将迄今为止我探索的所有内容整合到短短十分钟内是一个重大挑战。
您可以在 YouTube 上看到我的演示文稿,或者嵌入在下面。请继续阅读幻灯片的带注释版本,该版本基于 Whisper 转录本,并以一些额外的清晰度和进一步阅读的链接进行了扩展。
最后,我呼吁大家采取一种新颖的方式,让公司能够帮助支持开源项目:支付维护人员费用,让他们以限时一小时的 Zoom 咨询电话的形式与您的团队交谈。开源开发者往往不善于要钱。如果您想支持某个项目,请尝试从现有的培训预算中向他们提供资金!
我在这里谈论所有开源中最难的一个问题:作为独立的开源开发人员,如果我们将这些东西赠送出去,我们如何谋生?
我们有十分钟的时间,这绝对足够解决这个问题了!让我们弄清楚吧。
重要的是要承认这是一个双面问题。
作为开源维护者,我们需要弄清楚如何让这些东西为我们带来经济利益。
作为开源软件的用户,我们也应该真正投入精力解决这个问题。如果您依赖开源软件,那么您需要它继续为您工作,并在未来很长一段时间内得到维护。
所以我想从问题的两个方面来解决这个问题。
Datasette 本身是一个 Python Web 应用程序,您可以将数据倒入其中。
您将该数据加载到 SQLite 数据库中,然后 Datasette 提供界面供人们探索该数据、过滤数据并将其可视化 – 例如在地图上。这是一个例子。
至关重要的是,Datasette 可帮助您在线发布该数据。
我的灵感来自 WordPress。如果您想发布内容,WordPress 有相应的机制。
我正在尝试构建 WordPress,但是是为了数据本身。在线发布结构化数据的最佳方式。
有关数据集的更多信息:
- 使用 Datasette 探索数据库是官方 Datasette 教程
- 使用 sqlite-utils 和 Datasette 清理数据展示了如何将其与我的另一个开源项目sqlite-utils结合使用来清理和转换数据。
最初的想法来自我在伦敦《卫报》所做的工作。
我们正在报告数据驱动的故事,我们也想发布这些故事背后的数据。
当时我们认为最简单的方法就是拥有一个博客。
因此,我们建立了卫报数据博客,每当我们发布由数据报告驱动的故事时,我们都会尝试以 Google 电子表格的形式发布该数据背后的数据。
我总觉得应该有更好的方法来做到这一点:应该有某种比仅仅将内容粘贴在电子表格中更开放、更强大、更灵活的机制。
我将 Datasette 作为一个业余项目工作了一段时间,然后我构建了一个真正让整个事情变得开放的功能。
受 WordPress 启发,我再次添加了插件支持。
如今,Datasette 拥有超过 128 个插件,可以让它执行各种有用的附加操作。
而且我已经意识到,就开源贡献而言,插件绝对是最好的模式。
我可以早上醒来,发现我的软件开发了一个新功能,并且它已发布到全世界,我什至不需要审查拉取请求!
将其作为扩展软件的机制真是太自由了。
如果您对人们可能试图为您的核心软件做出的贡献感到不知所措,我强烈建议开源维护人员查看插件系统。
Datasette 最初是一个业余项目,但我很快意识到,尤其是插件机制,这将是我未来 10 到 20 年想要从事的事情。
在我的职业生涯中,这种情况从未发生过。我很容易分心!你很少会遇到这样的项目:如果我在 10 年后继续从事这个项目,我仍然会对此感到兴奋。
所以我现在有两个目标。
首先,我希望能够养活自己。我想在接下来的十多年里继续致力于此。
但我也意识到独自做这种事情是有点孤独的。我想要一个团队。
这对于我来说作为一种心理技巧非常有用,因为我不是一个天生的资本家。我是一名开源工程师。
我发现,如果我要实现这些梦想,从支付团队费用的角度思考可以帮助我提高我的财务目标,并且更加雄心勃勃地从这件事中获得可观的收入。
到目前为止,我已经从一些幸运的、非常规的方式支持这个项目中受益匪浅。
当我听说斯坦福大学有一个名为JSK 新闻奖学金的计划时,我正在将其作为业余项目进行研究。每年,他们都会从世界各地挑选大约 20 名记者,并付钱让他们在斯坦福大学校园呆上一年,研究与新闻界相关的问题。
我申请时说,你知道,我实际上不是记者,但我为记者编写工具。这算吗?
他们决定确实如此。
因此,我得到报酬花了一年时间从事我的开源项目,事后看来,这完全毁了我。因为一旦你必须花一年的时间专注于你想做的事情,就很难接受别人介入告诉你去做其他事情。
自从那次奖学金结束后,我主要靠积蓄生活,偶尔也会做一些咨询工作——并努力保持这种状态,因为我很享受自己。
今年早些时候,我还有另外一次幸运:我被GitHub 加速器计划录取。
这是来自 GitHub 的一个计划,他们选择了 20 个开源项目,并赞助维护人员全职工作十周,同时还专注于解决这个更大的问题:我们如何使我们的项目在财务上可持续?
(加速器将于2024年再次运行,申请即将开放。)
本次活动的一大亮点是嘉宾演讲。每周我们都会收到一个不同开源项目的维护者的来信,他们发现了一个适合他们的模型。
从那里开始出现的主题令人着迷。
有些项目让赞助对他们来说非常有效,资助了多个开发商的团队。如果您的项目被广泛使用,您就可以完成这项工作。
这里的困难在于,这是一项营销和销售工作:您必须积极寻求赞助,并且必须与现有赞助商保持牢固的关系才能保持愉快。
另一个有趣的方法是承认,如果你的项目成功,有人会通过销售相关课程、教程和书籍赚大钱。既然你比任何人都更了解你的项目,也许那个人应该就是你!
一个适用于许多项目的经典解决方案是为人们托管它,将软件作为服务路线。 WordPress、MongoDB 和Plausible都是很好的例子。这是围绕开源项目建立业务的常用途径。
我要提到的最后一个选项是企业许可。提供具有不同许可条款、商业支持以及一些企业友好功能的企业许可版本。
我们从Sidekiq Ruby 消息队列项目的Mike Perham那里了解到了这一点,他在这方面取得了巨大的成功。
迈克非常明确地警告我们避免使用托管版本选项,尤其是作为独立开发人员。构建让你对客户数据负责的建筑,如果出现问题,你必须在凌晨 3 点起床去修复它。最好让您的客户自己运行软件并对软件负责。
在仔细考虑所有这些选项之后,我决定选择迈克警告要避免的托管选项!
我应该稍微证明一下这一点。
我在使用 Datasette 时遇到的一个问题是,我最初的目标受众是记者 – 当 Datasette 在某个服务器上运行时,它才是最有用的。
如果你告诉记者“这很简单!你所要做的就是启动 Linux 服务器, pip install datasette
,设置 systemd ,然后将其打开到互联网……” – 你刚刚丢失了 98% 的信息你的目标受众!
提供托管版本可以同时给我带来两件事。我正在获得一个已被证明有效的商业模式,而且我还解决了我的目标受众需要能够单击按钮并开始使用该软件的问题。
我将其称为Datasette Cloud 。
这就是我最后一种非常规形式的支持的来源。
我一直在一个名为Fly.io的托管平台上构建 Datasette Cloud,这对于此类项目来说绝对是完美的。 Fly 使为个人客户启动安全容器变得非常容易,因此我可以为每个人独立运行我的软件副本。
Fly 慷慨地赞助了该项目,资助一位自由开发人员(最优秀的Alex Garcia )与我一起工作,让这些东西发挥作用。
他们同意这一点是因为我们正在开源中构建并在公共领域工作,这可以成为他们的一个很好的案例研究,展示如何在他们的平台上解决此类问题。
因此,如果您是一家希望赞助开源项目的公司,那么向自由职业者支付报酬是一种非常慷慨且非常有效的提供支持的方式。
我想回到从两个方向解决这个问题的想法。作为开源用户,我们可以做些什么来帮助将资金投入到我们关心的项目上?
我给你一个建议:我们都可以参与其中的一点阴谋。
您应该做的是付费维护人员与您的团队交谈。
维护人员都是非常忙碌的人。我没有时间与人们进行大量的实践咨询……但我可以抽出一个小时来参加 Zoom 通话。
我现在已经做了其中的一些,它们绝对是一种非常棒的方式,可以让我在时间范围内做出承诺,通过做一些真正有用的事情,与人们谈论我的项目并分享我的专业知识,我可以赚到一些钱。
对于软件的最终用户来说,这也是一个很好的技巧,因为正如我之前暗示的那样,开源工程师通常擅长编写代码,但不擅长要钱。
有了这个模型,你不需要贡献者来询问!你可以把钱推给他们。
您可以与您正在使用的软件的维护人员联系并说:嘿,我们很想了解更多相关信息。我们将付钱给您,让您与我们的团队一起参加 Zoom 通话,回答问题并谈论您正在做的事情。
这是一个行动号召。如果您有自己依赖的项目并且想要支持它们,请尝试这种偷偷摸摸的反手方式来筹集资金。
每个公司都有培训预算。公司不擅长仅仅捐钱,但他们非常擅长聘请顾问。
因此,如果您可以将其制定为咨询协议,让维护人员与您进行长达一小时的通话,我认为这可能会非常有效。
请从另一方面继续努力。通过寻找方法将资金投入到您所依赖的项目来帮助我们解决这个问题!
原文: http://simonwillison.net/2023/Nov/10/universe/#atom-everything