“因为无法从捐赠中抽成,谷歌把我的开源 App 下架了!”

2023-10-27

众所周知,苹果税和谷歌税的存在,即“只要你的 App 在 App Store 或 Google Play 上架,产生的收入就必须分给苹果或谷歌。”

这个“收入”包括:收费 App 的下载费、游戏充值费、订阅服务费等,广泛的抽成范围加上 30% 的高比例,一直为开发者所抱怨。好在今年苹果和谷歌都对此进行了相应调整:

  • 苹果:今年起,对每年营收在 100 万美元以下的小型企业和开发者,抽成比例降至 15%;

  • 谷歌:今年 7 月 1 日起,开发者每年首 100 万美元收入只抽成 15%。

虽然对于大型企业而言依旧是 30% 的抽成占大头,但这些举措对大多数小型企业和个人开发者来说却是实打实打了“对折”,因此一时之间并无太多异词。

可近来,Hacker News 上又出现了一则有关谷歌抽成并引起颇多议论的热帖:这款开源 App 因包含项目网站的链接而被 Play Store 下架。

在这里插入图片描述

热议的点在于,谷歌将其下架的理由是该 App 中链接的项目网站底部包含向开源作者进行捐赠的方式。该 App 的开发者在 GitHub 上表示:“如果我们想让人们对我们的开源项目进行捐赠,谷歌就要从(捐赠)中抽成。

在这里插入图片描述

一、为寻求更广泛的使用,将开源项目封装为 App 却遭拒

这个被 Google Play 下架的 App 名为 Language Transfer,是由个人开发者 Mihalis Eleftheriou 制作的一款完全免费的语言学习应用。

图片

其实这款 App 的原身是一个开源项目,为了快速推广该开源工具的使用,大约一年前 Mihalis Eleftheriou 决定将其封装为 App

“但当我们第一次(在 Google Play 上)发布时,这个 App 就被拒绝了。”Mihalis Eleftheriou 透露,原因是 App 中有一个为 Language Transfer 项目募集捐赠的 Patreon 链接。(PS:Patreon 是一个创建于 2013 年的众筹网站,旨在通过这个众筹平台来解决艺术家或开发者的创作和收益转化问题,Patreon 用户可为自己支持的工作者赞助一定金额的钱,助其完成新内容的创作。)

图片
对此,Mihalis Eleftheriou 直言“糟糕”。

对免费开源项目而言,借助 Patreon 进行众筹其实是一种募集资金的常见方式,甚至早在 Language Transfer 以 App 形式出现之前,该开源项目就一直是完全依靠捐赠才坚持下来的,但谷歌却因为不能从中获得相应比例的分成,拒绝了这款 App 的上架。

这就与 Mihalis Eleftheriou 的初衷背道而驰了:原以为将开源项目封装为 App 是将这些免费语言课程推向全球的最佳方式,但不能链接筹款平台却令开源项目的坚持运行都成问题。

Mihalis Eleftheriou 有些委屈,他认为谷歌为了一些非营利组织可以破例不收取抽成,但 Language Transfer 只是由他一个人经营的小项目,即便通过那个 Patreon 链接进行捐赠只是支持开源项目的一种表达方式,谷歌也一定要从中抽成。

但最终,Mihalis Eleftheriou 还是屈服了。他将 App 中原本的 Patreon 链接全部替换成了 Language Transfer 官网链接,也不再包含任何引导人们向项目捐赠的字眼

果不其然,谷歌接受了这个版本的 App,Language Transfer 成功在 Google Play 上架,距今已有一年,下载量达 5w+。

二、梅开二度:App 被下架,又是同样的理由

原以为日子会这样平静地继续下去,但 8 月 14 日早上,Mihalis Eleftheriou 突然发现 Language Transfer 又被下架了。

Mihalis Eleftheriou 描述道:“跟谷歌惯常的作风一样,App 的下架毫无通知,仅提供了一系列截图。”

在这里插入图片描述
在这里插入图片描述

通过这些截图可以明显看出,应该是谷歌的某个审查人员访问了 Language Transfer 中链接的官网,划到了页面最底部,又通过两次点击找到了为该项目提供资金的方法,因此将 App 整个下架了。(注:这并非开发者后期更改的,早在谷歌首次批准 Language Transfer 上架时,这个链接就已经存在了。)

“我们的 App 不允许链接到项目网站的主页,除非我们完全去除人们能为项目进行捐赠的所有方式。”Mihalis Eleftheriou 无奈表示道。

这次,Mihalis Eleftheriou 还是对谷歌妥协了。他提交了一个 PR(Pull Request)“删除所有指向 languagetransfer.org 的直接链接”,希望以此解决问题,让 App 重新上架。但 Mihalis Eleftheriou 也表示,作为一款开源 App,他仍将在 App 中链接相应的 GitHub 和 Facebook 页面,通过这些链接应该也能找到对项目捐赠的途径。

在这里插入图片描述

三、引起公愤后,谷歌恢复了该 App

虽然 Language Transfer 并非主流 App,但 Mihalis Eleftheriou 在 GitHub 上诉说的这番遭遇还是引起了许多开发者的关注与愤怒:

@lodenrogue :“如果他们不解决这个问题,我将删除我所有的 Google 帐户。”

在这里插入图片描述
还有许多开发者在 Mihalis Eleftheriou 的 GitHub 下替他出谋划策

@ocdtrekkie:“你可以联系国会议员,要求他们尽快投票支持《开放应用市场法案》(该法案的主要目标是禁止谷歌和苹果惩罚应用开发商在其平台之外收费的举动)。应用市场不断滥用的唯一解决方案是采取法律行动。”

@Greg-Boggs:“你可以尝试获得现有非营利组织的支持。”

@ashsidhu:“唯一的长期解决方案是支持开放网络。我们对封闭式花园屈服得越多,他们就越猖狂。我可以帮助你编写一个 PWA,它的性能和功能与 Android 应用相当。虽然如今 Play Store 拥有更多用户,但我们需要首先通过开放网络平台为每个人都提供服务。”

通过开发者们的激烈讨论,该话题在 Hacker News 日榜被顶上一位,越来越多人关注到了谷歌这个可谓引起公愤的举动。

或许是出于舆论压力,谷歌不久后就恢复了 Language Transfer 的上架,并且没有再要求删除其中项目网站的链接。Mihalis Eleftheriou 也提交了一个恢复“删除所有指向 languagetransfer.org 的直接链接”的 PR。

在这里插入图片描述
对于谷歌的这个举动,有开发者 @dessant 想起了许多此前因为同样理由被迫暂停的开源 App

“从现在开始,Google Play 团队是否会允许开源项目在应用菜单中添加捐赠链接?出于完全相同的原因,此前有好几个优秀的开源项目被暂停。如果 Google Play 团队能够明确他们目前对开源 App 中捐赠链接的看法,那么目前由于担心被删除而失去潜在捐赠的项目就可以恢复捐赠,那就太棒了。”

不过截止目前,谷歌官方还未对此做出明确回应。那么你对此次事件有什么看法呢?

参考链接:

  • https://github.com/language-transfer/lt-app/pull/44

  • https://news.ycombinator.com/item?id=28172490

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“因为无法从捐赠中抽成,谷歌把我的开源 App 下架了!” 的相关文章

  • AVPlayerLooper 每次迭代后黑闪

    我正在使用 Apple 的示例代码在UICollectionViewCell背景 我在用着AVPlayerLooper 因为它是同一视频的迭代 我的问题是 当视频结束时 它会显示轻微的黑屏闪烁 也许它正在将视频搜索到0时间 我不确定 这是代
  • MPMoviePlayerController 播放 YouTube 视频

    如何在 iPhone 上的 MPMoviePlayerController 中播放 YouTube 视频 同时避免进入全屏模式 这个问题已经在这里提出 MPMoviePlayerController 正在播放 YouTube 视频吗 htt
  • 如何在ios上定义可达性超时

    我使用 Reachability 类来了解我是否有可用的互联网连接 问题是当wifi可用但不能上网时 NetworkStatus currentReachabilityStatus方法花费太多时间 my code Reachability
  • 滚动视图下的iOS swift 4 imageview:双击缩小

    我已经应用了图像视图来通过捏合来放大 缩小 那很容易 当在图像视图上应用双击时 无法检测到选择方法 我使用 Xcode 9 和 swift 4 您能告诉我滚动视图是否应该应用双击手势吗 var previewImage UIImage ni
  • iOS Swift 中断键盘事件

    我在拦截键盘事件时遇到问题 我已将我的 iOS 与 SteelSeries Free 游戏手柄控制器 连接 当连接到 iOS 时 它将被检测为蓝牙键盘 这是在我打开Notes时测试的 按下游戏手柄上的任何按钮都会写一个字母 我需要拦截此按钮
  • Swift - 停止 avaudioplayer

    我正在尝试将音板构建到应用程序中 并找到了一种使用标签来控制播放声音的有效方法 不过 我现在正在尝试集成一个可以与 stop 方法上的AVAudioPlayer但是我当前的代码出现错误 EXC BAD ACCESS 这就是我现在正在使用的
  • 失败:错误域=NSURLErrorDomain代码=-1004“无法连接到服务器。”

    首先 我想列出我已阅读并尝试实现答案的帖子 避免重复 iOS 9 和 iOS 10 中的应用程序传输安全问题 https stackoverflow com questions 40280936 app transport security
  • 使用 Swift 3 和 Realm 同步 Apple Watch 和 iPhone

    我需要从 Apple Watch 和 iPhone 显示和修改我的数据结构 数据库 我目前正在使用一个简单的领域结构 其中有一个对象 A 和一个可以容纳大量 A 的对象 B 因此 在 iPhone 上 用户可以创建 B 并添加 A 当然还可
  • Itunes Connect 测试飞行公共链接有效性

    苹果最近为试飞版本启用了公共链接功能 我们可以与任何人共享此链接 他可以使用此公共链接安装应用程序 此公共链接背后的构建有效期为 90 天 我的问题是 与用户共享公共链接后 我们可以增加构建的到期时间吗 这样公共链接的有效性就会增加 我们不
  • JavascriptCore:在 JSExport 中将 javascript 函数作为参数传递

    JavascriptCore是iOS7中支持的新框架 我们可以使用 JSExport 协议将 objc 类的部分内容公开给 JavaScript 在javascript中 我尝试将函数作为参数传递 像这样 function getJsonC
  • 应用程序更新后 PFUser currentUser nil

    我已经在 App Store 中更新了我的 iOS 应用程序 对于安装更新的用户来说似乎存在一个错误 他们的PFUser currentUser正在返回nil 知道为什么会发生这种情况吗 要添加信息 我在我的应用程序中使用此代码启用自动用户
  • “Firebase Storage”,用于图像 - 但是,获取实际的 URL?

    正在将图像发送到 Firebase Storage 系统 sr a StorageReference ie FIRStorageReference let task sr putData data task observe success
  • 如何截断 UITableView Cell TextLabel 中的文本,使其不隐藏 DetailTextLabel?

    我有一份电话费率清单 textLabel是国家 地区并且detailTextLabel是我必须显示的速率 对于某些字符串 textLabel太长并且detailTextLabel变得隐藏 是否有一个设置可以自动调整文本 如果太长了 这是一个
  • 将声音图形化地表示为波

    我创建了一个记录和播放声音的应用程序 我正在寻找一种显示简单波形的方法 记录声音的表示 不需要动画 只需一个简单的图表 如果可以选择波的子集也很好 当然更好 也播放该部分 总而言之 我正在寻找什么 一种以图形方式将录制的声音表示为波的方法
  • 无法在 iOS UIWebView 中加载完整的 Facebook 评论插件

    我有一个简单的ViewController在 UIWebView 中加载 FB 评论插件 implementation ViewController void viewDidLoad super viewDidLoad UIWebView
  • 沙盒测试帐户反复询问 iOS 应用内购买的密码

    我用 Swift 语言开发了一个应用程序 我添加了应用内购买来删除广告 我还创建了一个沙箱帐户来测试 但后来我忘记了这个账户的信息 我不确定信息 密码输入屏幕仍然以闪烁的屏幕显示方式显示 即使我重置设备并重新加载它 也没有任何好处 实际上一
  • 使用 FFT 执行音频分析

    我已经被这个问题困扰好几天了 并且浏览了几乎所有相关的 StackOverflow 页面 通过这次活动 我现在对 FFT 是什么及其工作原理有了更深入的了解 尽管如此 我在将其实现到我的应用程序中时遇到了极大的困难 简而言之 我想做的是为我
  • iOS AVCaptureVideoDataOutput 消耗太多内存

    我在用AVFoundation使用iPhone相机捕获视频的框架 我的代码 self session AVCaptureSession alloc init self output AVCaptureVideoDataOutput allo
  • 在集合视图单元格中播放视频,就像在 Facebook 应用程序时间轴中播放的视频一样

    我想在集合视图单元格中播放视频 要求就像 Instagram 时间线 播放视频就像在 facebook 时间线中播放视频 为此 我使用了 UICollectionViewCell 我有一些图像 没有视频 现在我是来自画廊的图像 我正在使用相
  • 从基元创建自定义形状

    我正在尝试通过组合原始形状来创建自定义物理形状 目标是创建一个圆形立方体 合适的方法似乎是初始化 形状 变换 我在这里找到的https developer apple com library prerelease ios documenta

随机推荐

  • JAVA命令行编译运行程序

    JAVA源程序名扩展名必须是 java 并且主文件名必须是 1 如有public类必须写public类的名 2 如没有public类则主文件名任意 编译源程序 javac d 目录名 源文件 以上命令中 d 目录名代表将编译产生的二进制码文
  • 用计算机对视频进行剪裁和编辑,Win10系统剪裁视频功能怎么用?windows10剪裁视频功能使用方法介绍...

    最近 有不少Win10正式版用户向小编咨询新系统上是否有好的视频剪切软件 答案是肯定的 我们只要利用Win10系统中的 照片 就可以快速实现剪裁视频操作 接下来 小编就向大家介绍windows10系统剪裁视频功能的使用方法 具体方法如下 1
  • HTTP GET参数的获取

    REQUEST METHOD的值一般包括POST和GET两种 GET参数的获取 在GET方法下 CGI程序无法直接从服务器的标准输入中获取数据 因为服务器把从标准输入接收到的数据编码到环境变量QUERY STRING 或PATH INFO
  • 乒乓球捡球机器人_捡球机器人

    本帖最后由 章 于 2020 12 31 08 41 编辑 27 副本 JPG 108 08 KB 下载次数 0 2020 12 24 20 17 上传 制作背景 我国的国球是乒乓球 有许多人从小开始学习打乒乓球 而在学习打乒乓的过程中 为
  • QT:在QTableView中使用各种自定义委托

    原文地址 https blog csdn net lhchen922 article details 38367719 相关文章 1 QT 在QTableView中使用各种自定义委托 https blog csdn net zgrjkflm
  • OpenHarmony 标准系统HDF框架之I2C驱动开发

    OpenHarmony 标准系统HDF框架之I2C驱动开发 主要内容 I2C 基础知识 I2C 基础知识 概念和特性 I2C 基础知识 协议 四种信号组合 I2C 调试手段 I2C 调试手段 硬件 I2C 调试手段 软件 HDF 框架下的
  • 关于前端开发常见状态码

    前端开发常见状态码 2开头代表服务器已接收请求 3开头代表重定向 需要进一步操作才能完成请求 4开头代表客户端错误 5开头代表服务器错误 2开头代表服务器已接收请求 200 代表请求成功 并返回了想要的数据 202 服务器接受请求 但未处理
  • 【JS】中文繁简转换

    不多说 比较简单 有对照表就行 下面贴源码 var 简繁对应表 锕 錒 锿 鎄 皑 皚 嗳 噯 蔼 藹 霭 靄 爱 愛 嫒 嬡 碍 礙 暧 曖 瑷 璦 庵 菴 谙 諳 鹌 鵪 鞍 鞌 埯 垵 铵 銨 暗 闇 晻 晻 翱 翶 翺 翺 鳌 鰲
  • Java面试总结,Redis宕机数据丢失解决方案,看完这篇彻底明白了

    一 前言 长文警告 事实上我不愿意写太长的文章 一面是太冗余 一方面读者容易疲倦 但是只要是涉及到源码级别的 就肯定篇幅不短 因为太短肯定没意义也解释不清楚 但是相信 耐心看完这个文章一定会对Spring源码有所收获 最近有很多读者面试的时
  • python报错urllib2.URLError:和error[Errno 104]

    在ubuntu16 04上使用python的skimage io imread 函数读取网页上的图片时 出现如题所示的错误 gt gt gt img io imread https cdn pixabay com photo 2015 02
  • 教你怎么使用Python对word文档进行操作

    使用Python对word文档进行操作 一 安装Python docx Python docx是专门针对于word文档的一个模块 只能读取docx 不能读取doc文件 说白了 python就相当于windows操作系统 QQ就是跑在wind
  • Spring Security默认用户生成分析

    1 首先创建进行环境搭建 创建SpringBoot项目 引入SpringSecurity依赖 编写简单的Controller 2 使用断点进行源码查看 首先访问资源localhost 8080 hello 之后会被 login页面拦截 在
  • C语言数字转换字符串

    转载自 https www cnblogs com bluestorm p 3168719 html C语言itoa 函数和atoi 函数详解 整数转字符C实现 C语言提供了几个标准库函数 可以将任意类型 整型 长整型 浮点型等 的数字转换
  • SpringJDBC的JdbcTemplate在MySQL5.7下不支持子查询的问题

    SpringJDBC的JdbcTemplate在MySQL5 7下不支持子查询的问题 org springframework jdbc BadSqlGrammarException PreparedStatementCallback bad
  • IT项目管理——08.项目质量管理

    年龄 40以下 学位 博士 专业 管理学相关专业 学术成果 以第一作者发表10篇以上高水平论文 个人品质 爱国敬业 做事严谨 为人正直 崇尚科学 教学经验 有过项目管理相关课程教学经验 投掷30次的结果 不能反映正态分布
  • 史上最管用的C盘深度清理秘籍

    使用电脑的用户都知道 使用电脑一段时间后 会堆积很多无用的文件 不仅占用磁盘空间 而且导致系统运行速度变慢 所以清理c盘垃圾是非常有必要的 无论我们给C盘分多大的分区 Windows都有办法把它填满 像休眠文件 系统页面文件这都是动辄GB级
  • 反激式开关电源的原理是什么

    反激式开关电源是一种常见的电源转换器 其原理是将输入电压通过一个开关管进行高频开关 将电压转换为脉冲信号 再通过变压器进行隔离和变换 最终输出所需的电压 具体来说 当开关管导通时 输入电压经过变压器变换后 输出电压上升 并通过输出电容器进行
  • 轻量级的Python IDE —— Thonny

    现在的开发工具太多了 而且每个开发工具都致力于做成最好用最智能的工具 所以功能越堆越多 越怼越智能 安装这些开发工具比较烧脑 经常需要经过许多配置步骤 作为一个 Python 开发者来说 好多人光是这些配置都要弄半天 配置好之后 打开软件
  • [架构之路-178]-《软考-系统分析师》-17-嵌入式系统分析与设计- 3- 分区操作系统(Partition Operating System)概述

    目录 本文概述 1 1 什么是分区操作系统 1 2 分区操作系统出现背景 1 前后台系统 Foreground Background System 2 实时操作系统 RTOS 本文概述 随着嵌入式系统日趋复杂化以及对安全性要求的不断提高 采
  • “因为无法从捐赠中抽成,谷歌把我的开源 App 下架了!”

    众所周知 苹果税和谷歌税的存在 即 只要你的 App 在 App Store 或 Google Play 上架 产生的收入就必须分给苹果或谷歌 这个 收入 包括 收费 App 的下载费 游戏充值费 订阅服务费等 广泛的抽成范围加上 30 的