在将源代码上传至 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 的开发一直断断续续,重大更新也很少。
此时,他们终于想起来还有“开源”这一回事儿了: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 的开源之旅值得大家关注和学习,可能这些代码所有者对“开源”的真正含义缺乏一些理解,从他们并不完全开放的许可协议以及种种代码泄露事件就可以看出来。他们最终放弃了“不允许分叉”的规定,但显然没有预料到会引发如此强烈的反应。这不禁让人怀疑,这是否是出于商业目的的一次炒作?或者,他们只是对开源的理解存在偏差?无论如何,这个事件为我们提供了一个观察开源生态的有趣案例。
10 月 18 日 -19 日,QCon 全球软件开发大会将在上海举办。从云原生工程、架构、线上可靠性、大前端、技术管理等经典内容,到 AI Agent、AI Infra、RAG 等大热的 AI 线+ 资深专家共聚一堂,深度剖析相关落地实践案例,共话前沿技术趋势。大会火热报名中,详情可联系票务经理 咨询。
*请认真填写需求信息,我们会在24小时内与您取得联系。