解决开源项目资金问题的 8 种方法

尽管开源项目取得了诸多成功,但开发者们痛苦地意识到这种模式开始出现了裂痕。当事实上的主要开发者厌倦了独自承担所有工作,或者当不同团体开始争执不休导致项目分裂时,会发生什么?假设出现了一个bug,但没有人愿意去修复。也许核心程序员们决定他们只想要吃饭。开源的概念转变了软件开发,使其变得更便宜、更快速、更互动,并且通常更安全、设计得更好。但是多年后的今天,它仍然不能可靠地支付账单。

钱不能解决我们所有的问题,但它的确可以解决一些问题。如果我们投入更多的现金来解决开源的问题会怎样?如果开源模式可以让大家团结起来写出漂亮的代码,为什么它就不能组织我们筹集资金来资助更多的开发呢?

以下是今天正在尝试的八种开源资金模型。有些相对较新,其他一些是最初开源许可证出现时随之产生的模型的更新版本。所有这些模型都试图更好地连接创造者与他们继续工作所需的资金。这些模型没有一个是完美的,但如果它们能帮助至少一些开发者修复一些bug,那么它们就是一场胜利。

加密代币 

虽然比特币或以太坊这样的加密货币占据了新闻头条,但还有许多其他组织采用类似的方法,有时甚至使用相同的开源软件来创建他们自己的数字货币。这些货币中最流行的方案之一就是加密代币,这是对游乐园、电玩城或洗衣中心使用的代币的数字化再想象。

例如,BAT代币是使用Brave浏览器进行广告支付的必需品。Filecoin(FIL)用于在Filecoin分布式文件网络中支付备份存储费用。Gitcoin作为Allo协议的赠款计划的一部分被使用,该协议支持许多去中心化金融应用。

在某些情况下,代币类似于商业软件的许可证。如果你想运行该软件,你必须购买一个代币。虽然一个优秀的编码者可能能够重写开源代码中的门卫部分,但普通用户既没有时间也没有技能去做这件事。支付一小笔钱购买内部代币,并帮助项目继续下去,将会是一个更简单的选择。

一些货币设计者对于创建一个完整的生态系统有着更宏大的计划。代币只是介导软件的生产和消费。Sandbox(SAND)和Decentraland(MANA)是管理资源的两个例子,如在不断扩大的元宇宙的某个角落的土地或化身。

这些工具正在随着日益增长的加密货币和NFTs的世界一起发展,其中很多也是建立在开源代码上的。

Drips 

想象一下,每个月写一张支票,这笔金额就像魔法一样在你使用的所有不同软件项目之间共享。Drips网络追随的是像United Way这样的传统系统的脚步,使人们可以一步捐赠给多个慈善机构。

这个网络想做的不仅仅是针对开源项目的第一层面和最显眼的层面。每个维护者都可以指定应该将一部分分享给它自己使用的开源代码。这可以深层嵌套。因此,如果项目A是使用B和C构建的,而C是使用D和E构建的,那么对A的任何捐赠都会流向其他四个项目。

开发人员决定使用以太坊区块链进行交易,这个选择为项目带来了透明度。任何选择开始支持一个项目的人都可以审计通过公共区块链流动的货币,看看谁得到了多少。它既灵活又开放,就像它所支持的代码一样。

云时代许可证 

最初的开源许可证是为每个人桌上都有一台电脑,或者可能在走廊尽头的服务器房间的世界编写的。它们通过强制人们在“分发”软件时包含代码来鼓励分享。

当云计算开始占主导地位时,这种类型的许可证就不再那么有效了。一位在大型科技公司的律师告诉我:“我们不分发代码,所以我们不需要遵守GPL。”他们构建了大量的内部版本而从未共享过。

像Affero通用公共许可证云服务(AGPL-CS)或服务器端公共许可证这样的最新许可证旨在强制参与,即使是在云计算时代。有些公司如Elastic Search正在设计他们自己的许可证,做的也大体相同。

在这些例子中,仅仅将软件连接到网站就被算作分发。如果一家公司使用软件,它应以某种方式做出贡献。这些懂得云计算的许可证使个人或公司不分享他们的代码就能赚大钱变得更加困难。

更强的许可证仍然服务于市场需求。开发者可以下载并尽可能多地实验。他们可以贡献并感受到对代码的共同所有权。他们不需要担心成本急剧上升、功能被削减或任何其他来自供应商锁定的麻烦。

同时,它们激励购买商业许可证以支持持续的开发。从产品中获得真正价值的用户有动力资助持续的集中开发。

不那么开放的许可证 

理查德·斯托曼有句名言:“自由如言论,而非啤酒。”现在,一些开发者正在创建既不提供这两种自由的许可证——但他们仍然提供了足够的开放性,满足了用户的好奇心。

一个版本是“免费层”,它提供足够的访问权限来测试新想法,甚至可能运行一个小型的个人网站,同时对更实质的使用收费。当开发者只是实验时,他们不会遇到任何阻碍,但如果他们想要开始认真的事情,他们需要付费。

另一个例子是许可用户阅读但不分发的许可证。一位开发者告诉我,他经常允许付费客户完全访问代码以进行审计或实验,但他不会公开发布。客户可以看到他们想看的内容,但他们不能削弱公司或免费提供软件。

这些许可证提供了一些使开源流行的内容,而不牺牲强制支付的能力。

二次方资助 

一些开发者更喜欢支持具有广泛吸引力的项目。二次方资助是设计有一个反馈循环的,它比几个大礼物更多地奖励许多小礼物。换句话说,它奖励得到最多人支持的项目。这种方法通常受到大捐赠者的欢迎,他们想利用众筹的智慧来指导他们的捐赠。他们不是使用一个严格的线性匹配程序,而是使用一个关键于捐赠者数量的二次方函数。一些更极端的版本可能选择更极端的函数。

代码赏金 

开源的原始想法之一是用户发布他们的请求,然后宣布对第一个交付代码的编程团队的奖励或赏金。这个过程后来变得更有组织。现在像huntr、buidlbox和Bountysource这样的网站就是让开发者更容易找到想要支付新代码费用的用户的几个例子。像谷歌这样的一些公司也直接提供自己的赏金项目。

奖学金或工作 

最常见的解决方案是团队雇佣开源开发者,并指派他们至少花一部分时间在开源代码上工作。开发者得到稳定的收入,公司得到了对代码的第一手了解和一定程度上引导开发的能力。

这个过程已变得更加正规化。一些公司正在将工作结构化为奖学金,并提供特定的资助,有时是固定时长,有时是开放式的承诺。有些公司用这种方式支持他们迫切需要支持的项目,其他公司则仅仅为了支持社区而提供资助。

直接给现金 

祖父母总是知道,在生日卡片里塞入一些现金是最好的礼物。开源世界继续寻找简单的方法,使得直接向做工作的人捐款变得更容易。在安装或更新软件时看到明确的通知和支持请求并不少见。例如,许多Linux发行版在人们下载二进制文件时都会明确请求。

一些公司有组织他们的支持和捐款的项目。这些程序有时被称为“FOSS基金”或赠款。许多较大的科技公司已经意识到,从开源世界不断取而不予是短视的。包括谷歌、彭博、微软和Linux基金会在内的公司都有此类项目。

如今,对科技公司来说,这样的礼物变得更容易理解。过去,会计师们乐于无所作为,依赖他人的辛勤工作。现在,软件开发人员及其管理者意识到与构建代码的社区成为支持伙伴是有用的。他们意识到没有免费的午餐,一些良好的资助对维持他们企业基础的软件走得更远。


作者:Peter Wayner

更多技术干货请关注公号【云原生数据库

squids.cn,云数据库RDS,迁移工具DBMotion,云备份DBTwin等数据库生态工具。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/153100.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NTLM 认证支持的添加与实现

我在psf/requests项目中报告了bug #932,并提出了一个关于支持HTTP NTLM认证的问题。这篇文章将详细介绍问题背景和解决方案。 HTTP NTLM认证是一种用于验证用户身份的协议。在某些场景下,用户可能需要使用NTLM认证才能访问某些网站或资源。然而&#xff…

SpringCloud 微服务全栈体系(十五)

第十一章 分布式搜索引擎 elasticsearch 五、RestClient 操作文档 为了与索引库操作分离,再次参加一个测试类,做两件事情: 初始化 RestHighLevelClient酒店数据在数据库,需要利用 IHotelService 去查询,所以注入这个接…

C语言第十七弹--求100中9的个数

求100中9的个数 思路:求9个数 就包括了个位和十位的9, 那么就需要分别拿到个位9和十位的9 ,然后9的个数相加就是100中所有9个数之和。 1.获取个位 100以内一个数%10时 就会获得它的余数即个位 如果结果等于9 个数。 2.获取十位 / 10就可以…

什么是嵌套路由?如何定义嵌套路由?

嵌套路由是指在一个路由中套入另一个路由,实现多层路由配置的方式。具体来说,当一个路由需要包含另一个路由时,可以将这个路由配置为父路由,将包含的路由配置为子路由,从而形成一个嵌套路由。 在React中,可…

Linux shell编程学习笔记28:脚本调试 set命令

0 引入 在Linux Shell 脚本编程的过程中,编写简单功能的脚本,代码不多,一般阅读起来没什么难度,有问题也比较有查出原因和修正。但是当脚本要实现的功能较多,代码变得较为复杂时,阅读起来就不那么容易看明…

一道简单的积分题目

题目如下图&#xff1a; 解法1&#xff1a; 解法2&#xff1a; 解法3&#xff1a; 错误做法&#xff1a; 在 x ∈ ( 0 , ∞ ) 上有 ln ⁡ x < x &#xff0c;令 f ( x ) ln ⁡ x 1 x 2 &#xff0c; g ( x ) &#xff1d; x 1 x 2 ∴ f ( x ) < g ( x ) &#x…

Qt按钮大全续集(QCommandLinkButton和QDialogButtonBox )

## QCommandLinkButton 控件简介 QCommandLinkButton 控件中文名是“命令链接按钮”。QCommandLinkButton 继承QPushButton。CommandLinkButton 控件和 RadioButton 相似,都是用于在互斥选项中选择一项。表面上同平面按钮一样,但是 CommandLinkButton 除带有正常的按钮上的文…

SpringCloud之Feign

文章目录 前言一、Feign的介绍二、定义和使用Feign客户端1、导入依赖2、添加EnableFeignClients注解3、编写FeignClient接口4、用Feign客户端代替RestTemplate 三、自定义Feign的配置1、配置文件方式全局生效局部生效 2、java代码方式 四、Feign的性能优化连接池配置 五、Feign…

代码随想录算法训练营第六十天丨 单调栈03

84.柱状图中最大的矩形 思路 单调栈 本地单调栈的解法和接雨水的题目是遥相呼应的。 为什么这么说呢&#xff0c;42. 接雨水 (opens new window)是找每个柱子左右两边第一个大于该柱子高度的柱子&#xff0c;而本题是找每个柱子左右两边第一个小于该柱子的柱子。 这里就涉…

从入门到精通,mac电脑录屏软件使用教程!

“mac电脑怎么录屏呀&#xff0c;刚买了一台mac电脑&#xff0c;用了几个月感觉挺流畅的&#xff0c;最近因为工作原因&#xff0c;需要用到录屏功能&#xff0c;但是我不会操作&#xff0c;想问问大家有没有简单易懂的录屏教程&#xff0c;谢谢啦。” 在日常生活中&#xff0…

几个强力的nodejs库

几个强力的nodejs库 nodejs被视为许多Web开发人员的理想运行时环境。 nodejs的设计是为了在运行时中使用JavaScript编写的代码&#xff0c;它是世界上最流行的编程语言之一&#xff0c;并允许广泛的开发者社区构建服务器端应用程序。 nodejs提供了通过JavaScript库重用代码的…

FastJsonAPI

maven项目 pom.xml <dependencies><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>2.0.26</version></dependency><dependency><groupId>junit</groupId>&l…

代码随想录算法训练营第11天|● 20. 有效的括号 ● 1047. 删除字符串中的所有相邻重复项 ● 150. 逆波兰表达式求值

20. 有效的括号 简单 给定一个只包括 ‘(’&#xff0c;‘)’&#xff0c;‘{’&#xff0c;‘}’&#xff0c;‘[’&#xff0c;‘]’ 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序…

Java读写Jar

Java提供了读写jar的类库Java.util.jar&#xff0c;Java获取解析jar包的工具类如下&#xff1a; import java.io.File; import java.io.IOException; import java.net.URL; import java.net.URLClassLoader; import java.util.Enumeration; import java.util.HashMap; import …

【图像分类】【深度学习】【Pytorch版本】ResNet模型算法详解

【图像分类】【深度学习】【Pytorch版本】 ResNet模型算法详解 文章目录 【图像分类】【深度学习】【Pytorch版本】 ResNet模型算法详解前言ResNet讲解Deep residual learning framework(深度残差学习框架)残差结构(Residuals)ResNet模型结构 ResNet Pytorch代码完整代码总结 前…

【练习】检测U盘并自动复制内容到电脑的软件

软件作用&#xff1a; 有U盘插在电脑上后&#xff0c;程序会检测到U盘的路径。 自己可以提前设置一个保存复制文件的路径或者使用为默认保存的复制路径&#xff08;默认为桌面&#xff0c;可自行修改&#xff09;。 检测到U盘后程序就会把U盘的文件复制到电脑对应的…

PyTorch微调终极指南1:预训练模型调整

如今&#xff0c;在训练深度学习模型时&#xff0c;通过根据自己的数据微调预训练模型来进行迁移学习&#xff08;transfer learning&#xff09;已成为首选方法。 通过微调这些模型&#xff0c;我们可以利用他们的专业知识并使它们适应我们的特定任务&#xff0c;从而节省宝贵…

sqlserver 删除master数据库特定前缀开头的所有表的sql语句

sqlserver数据库删除指定数据库特定前缀开头的所有表的sql语句sqlserver删除数据库指定字符开头的所有表的sql语句 USE master;DECLARE TableName NVARCHAR(128); DECLARE SQL NVARCHAR(MAX);DECLARE TableCursor CURSOR FOR SELECT name FROM sys.tables WHERE name LIKE Whi…

【miniQMT实盘量化4】获取实时行情数据

前言 上篇&#xff0c;我们介绍了如何获取历史数据&#xff0c;有了历史数据&#xff0c;我们可以进行分析和回测。但&#xff0c;下一步&#xff0c;我们更需要的是实时数据&#xff0c;只有能有效的监控实时行情数据&#xff0c;才能让我们变成市场上的“千里眼&#xff0c;…

go defer用法_类似与python_java_finially

defer 执行 时间 defer 一般 定义在 函数 开头, 但是 他会 最后 被执行 A defer statement defers the execution of a function until the surrounding function returns. 如果说 为什么 不在 末尾 定义 defer 呢, 因为 当 错误 发生时, 程序 执行 不到 末尾 就会 崩溃. d…