写点什么

没见过这么荒谬的开源要求!20 多年老牌软件仅开源一个月就删除了全部代码

  • 2024-10-18
    北京
  • 本文字数:3536 字

    阅读完需:约 12 分钟

大小:1.52M时长:08:52
没见过这么荒谬的开源要求!20多年老牌软件仅开源一个月就删除了全部代码

在将源代码上传至 GitHub 仅一个月后,WinAmp 的所有方突然删除了整个 repo。其中相当一部分源代码恐怕并非由其贡献,但同样“惨遭毒手”。

 

此前,Winamp 播放器兑现了今年 5 月的承诺,于 2024 年 9 月 24 日正式在 GitHub 上发布了 Windows 版本的源代码。该源代码主要用 C++ 编写,并附带有关于库依赖项和构建工具的信息。一经开源便在 GitHub 上引发了强烈的社区反响,在短时间内获得了数千次 fork。

 

但如今,整个仓库已彻底消失。

 

时代变了,老牌软件想借“开源”的力量寻求新生

 

Winamp,这款诞生于 1997 年的媒体播放器,在 MP3 风靡的年代迅速走红,对于 40 岁左右的程序员来说,它一定不陌生。

 


Winamp 以简单易用、功能强大著称,可定制的界面、丰富的音频格式支持、炫酷的视觉效果和皮肤系统深受用户喜爱。此外,Winamp 还支持在线收听广播和播客,为用户提供了更多选择。

 

然而,随着 Nullsoft 被 AOL 收购,Winamp 的开发逐渐停滞,并于 2013 年正式停产。这一消息让众多忠实用户感到惋惜。

 

在 Winamp 即将关闭之际,澳大利亚墨尔本的开发者 Peter Zawacki 发起了一场声势浩大的请愿活动。他呼吁 AOL 能够继续开发 Winamp,或者将它的源代码开源,让广大开发者接力维护。Zawacki 在请愿书中写道:“Winamp 是有史以来最好的媒体播放器,没有任何一款软件能完全取代它。”

 

为了挽救 Winamp,许多程序员自发加入了这场请愿活动。他们希望能够让 Winamp 继续存在,并将其交到热爱它的用户手中。然而,AOL 对此一直保持沉默,没有给出任何回应。这不禁让人感到失望。

 

2014 年,Radionomy 接手了 Winamp 项目,试图重振这款经典播放器,但无奈市场风向已变,音乐流媒体服务逐渐占据了主流。已经过时的不光是以点对点的形式下载 MP3,还包括 WinAmp 的 Web 版播放器和配套的移动版应用。而且 Winamp 的开发一直断断续续,重大更新也很少。 

 

2023 年,WinAmp 的所有方 Llama Group 重新推出了这款曾备受推崇的 Windows 媒体播放器。

 


Winamp 5.9 Final

 

此时,他们终于想起来还有“开源”这一回事儿了: 2024 年 5 月,他们宣布 Llama 将在当年晚些时候发布项目源代码。之后依照承诺于 9 月完成了源代码发布,同时开源的还有旗下多款其他产品。

 

GitHub 页面写道:“它的开发速度减慢了,但现在,它的源代码对社区开放,允许开发人员改进和现代化播放器以满足当前用户的需求。”

 

在此之前,Llama Group 还曾发布了另一项声明,其中详细介绍了对 Winamp 的“重新构想”,将其重新定位为创作者的音乐流媒体平台,但这一举措似乎没有取得很好的效果,考虑到在同一领域有 Spotify 和 Apple Music 等巨头竞争对手,这并不奇怪。

 

开放代码,但不开源

 

不过在此番将代码仓库删除之前,整个源代码发布过程并不顺利。初始版本附有自定义的许可证,即 WinAmp 协作许可证(WCL)的 1.0 版本,其中包含以下条件:

 

  • 不得分发修改版本:您不得以源代码或二进制形式分发修改版本的软件。

  • 不得分叉:您不得创建、维护或分发软件的分叉版本。

  • 官方分发:只有官方仓库的维护者才被允许分发软件及其修改版本。

 

而且,其他项目也不能使用 Winamp 名称。任何发布 Winamp 修改版本的人都可能面临 Llama Group 的法律行动。Winamp 的首席执行官 Alexandre Saboundjian 明确表示:“Winamp 将保持对软件的所有权,并将决定官方版本的创新内容。”

 

以 Mozilla Firefox 为例,它对商标的保护与 Winamp 类似,但对代码的开放程度更高。Firefox 的代码基于较为宽松的 Mozilla 公共许可证,开发者可以自由地创建修改版本。不过,为了保护品牌形象,他们不能将修改后的版本称为“Firefox”。正因如此,Debian Linux 上的 Firefox 曾被改名为“Iceweasel”。

 

对比 Mozilla,Llama Group 不仅不允许人们在其他项目中使用 Winamp 名称或 Winamp 代码,并且它保留对贡献给核心项目的任何工作的完全所有权。部分 GitHub 用户很快指出(包含在代码仓库的评论当中,如今也被一并删除),上述要求有违 GitHub 服务条款。Hackaday 网站也提到,这样的协议要求表明其并不是真正的开源,Llama Group 的目的仅仅是为了免费获取开发资源,以维护自己的 Winamp 应用程序。

 

最初参与项目的联合开发者 Justin Frankel 同样对此表达了质疑态度:“哪怕我对项目还有点想法,也会被许可条款给扼杀掉。这么荒谬的开源要求我还是第一次见。”

 

开放源代码不等于开源,尽管他们似乎在努力用“开放源代码(opening up its source code)”等短语来暗示这一点。技术分析师 Steven J. Vaughan-Nichols 指出,这可能是一种开放清洗(Open washing)的“伪开源”行为。之所以这样做,是因为如今“开源”对开发者和买家来说都很有吸引力。此外,在欧盟,被认为是开源的软件可以利用最近通过的《网络韧性法案》(CRA),该法案保护开源开发免受繁重的法规约束。

 

很难讲这份“禁令”到底能不能执行到位。另外,上传的源代码中还掺杂一些 GPL 2 的源代码,也让 WCL 做出的开放性限制变得毫无意义。

源代码发布也是一团糟

 

以 WinAmp 协作许可证(WCL)“开源”的 1.0 版本仅适用于 Windows 版本。Mac、Android 和 iOS 版本将继续保持完全的专有性质。虽然源代码附带编译信息,但需要特定版本的 Visual Studio 2019 才能构建。

 

代码仓库里还有其他好东西,有些甚至有着共同的传承。例如,WinAmp 的原作者 Nullsoft 还开发过其他工具,比如早期音频流媒体服务 Shoutcast,其最终成为 AOL 中的一部分。

 

GitHub 上公布的 WinAmp 源代码还包括 Shoutcast 分布式网站音频服务器(DNAS)的服务器代码副本。

 

在我们看来,该公司应该不是故意要分享这些代码的,毕竟 Llama Group 并不具备发布权。作为 Radionomy 的一部分,该公司已经在 2022 年连带业务将其出售给了 Azerion。尽管之前也曾尝试删除,但最终发现不太可行,因此只能作罢(信源来自项目评论,但现在也已被删除)。

 

仓库中还有一些英特尔和微软的源代码,且在删除之前就已经注明。总而言之,WinAmp 开源项目其实相当杂乱,堪称是软件领域的潘多拉魔盒。而且跟魔盒一样,一旦开启就无法被再次关闭。

 


该公司在动手删除前对此作出了回应,在 1.0.1 版本中对 WCL 加以修改,调整为允许分叉但阻止分发修改之后的版本。由于 WinAmp 许可证已被修改为允许分叉,因此该代码在短时间内就被分叉了好几千次。

 

秉持着“黑粉也是粉”的原则,WinAmp 此番开源虽然搞得不太漂亮,但至少还是为这款老旧的 Windows 应用程序吸引到了大量新关注。

 

不过从实用主义的角度来看,许可证中的诸多限制导致项目开源缺乏现实意义。作为一个典型案例,这也说明了为什么开源运动声势浩大,但仍有不少企业拒绝加入。毕竟面向大众市场的传统专有软件项目往往会包含来自其他厂商的大量代码成果,而且多数是为了实现互操作性。清理代码仓库以实现开源发布是一项相当艰巨的任务,而且要把代码交给别人之后,项目本身对公司很可能不再有任何商业价值。既然如此,又何必花大价钱耗费员工精力来清理原有代码呢?

 

而如果老员工们不再参与,那情况只会更糟。之前提到的联合开发者 Frankel 还创建了文件共享应用程序 Gnutella,并早在 20 多年前就离开了公司。他随后成立了 Cockos,并打造出 Reaper 数字音频工作站。

 

总而言之,这是个没有简单答案的问题。也许一部分捐者可以为程序员们提供法律赔偿,也许会有程序员愿意自愿提供清理服务,包括甄别并处理那些可能引发法律纠纷的代码内容。

 

总之 WinAmp 的开源之旅值得大家关注和学习,可能这些代码所有者对“开源”的真正含义缺乏一些理解,从他们并不完全开放的许可协议以及种种代码泄露事件就可以看出来。他们最终放弃了“不允许分叉”的规定,但显然没有预料到会引发如此强烈的反应。这不禁让人怀疑,这是否是出于商业目的的一次炒作?或者,他们只是对开源的理解存在偏差?无论如何,这个事件为我们提供了一个观察开源生态的有趣案例。

 

参考链接:

https://www.howtogeek.com/winamp-source-code-release/

https://www.theregister.com/2024/10/16/opensourcing_of_winamp_goes_badly/

https://www.theregister.com/2013/11/26/petition_to_save_winamp/

https://hackaday.com/2024/09/24/winamp-releases-source-code-but-is-it-really-open/

https://www.xda-developers.com/winamp-source-code-available-open-source/

https://www.zdnet.com/home-and-office/home-entertainment/winamp-is-not-going-open-source-heres-what-it-is-doing-and-why/

https://hackaday.com/2024/09/24/winamp-releases-source-code-but-is-it-really-open/

https://www.bleepingcomputer.com/news/software/winamp-releases-source-code-asks-for-help-modernizing-the-player/

https://opensourcewatch.beehiiv.com/p/winamp-opens-its-code-but-it-doesn-t-open-source-its-code

 

2024-10-18 10:0010278

评论

发布
暂无评论
发现更多内容

二本Java菜鸟9面字节遭虐,苦修数月深造这份 Java面试宝典,终进阿里

Java 程序员 架构 面试 计算机

2021南京国际智慧工地装备展览会

南京专业智博会

智博会 智慧工地展览会 智慧工地论坛会

交Y所K线机器人系统开发功能介绍(源码搭建)

量化系统19942438797

机器人 k线

CSS交互动画指南之keyframes

devpoint

CSS css3 9月日更

架构实战营 - 模块三作业

Alex.Wu

Opus从入门到精通(一):简介

轻口味

android 音视频 9月日更

内网渗透横向攻击流程

网络安全学海

黑客 网络安全 信息安全 渗透测试 WEB安全

南京主题展2021国际大数据产业展会/论坛会

南京专业智博会

大数据 智博会 南京智博会

物联世界2021南京物联网展览会

南京专业智博会

物联网展览会 物联网论坛会 物联网智博会

JavaScript 进阶(二)下

Augus

JavaScript 9月日更

直播预告丨走进云溪数据库之高可用方案

云计算

架构实战营-模块三作业

南山先生

「架构实战营」

Vite + Vue3 + OpenLayers 手动控制缩放级别

德育处主任

大前端 地图 vite openlayers Vue 3

模块三作业:学生管理系统架构设计文档

apple

区块链“牵手”金融 面临诸多挑战

CECBC

Go 专栏|并发编程:goroutine,channel 和 sync

AlwaysBeta

Go 语言

云智一体破解AI落地“最后一公里”难题,企业智能化转型再获新利器

百度大脑

人工智能

2021年第十四届南京智慧城市展览会

南京专业智博会

智博会 智慧城市展览会 智慧城市论坛会

雪花算法,什么情况下发生 ID 冲突?

Java 架构 分布式 算法

《中国梦》打造数亿中产阶级!疯了,疯了,全涨疯了!!

CECBC

乘风破浪携手共赢——博睿数据深圳渠道大会圆满落幕

博睿数据

联邦学习框架浅析

趣链科技

中原银行分布式缓存实践

中原银行

redis 中间件 分布式缓存 中原银行

研发工具链介绍

百度开发者中心

学习 最佳实践 方法论 研发工具

阿里大佬怒写“Java初学者宝典”,让你就业没压力

Java 阿里巴巴 程序员 面试 计算机

不会 Lua?Python 助你快速上手 Apache APISIX 插件开发

API7.ai 技术团队

Python Apache 开源 API网关 APISIX

【Vuex 源码学习】第四篇 - Vuex 中 Getters 的实现

Brave

源码 vuex 9月日更

Apache APISIX 为 KubeSphere 提供更好用的网关及 K8S Ingress Controller

API7.ai 技术团队

Apache 开源 API网关 APISIX KubeSphere

面试官zookeeper 是如何实现一致性的?我大意了,让我回去等通知

Java 面试 分布式 后端

(AL智博会)2021南京国际人工智能主题展

南京专业智博会

人工智能展览会 人工智能论坛会 人工智能智博会

Android的Ftp断点上传---Aria使用笔记

Changing Lin

9月日更

没见过这么荒谬的开源要求!20多年老牌软件仅开源一个月就删除了全部代码_开源_Tina_InfoQ精选文章
OSZAR »