你每天都在用开源软件,但可能从没想过它到底"免费"在哪。打开网页的那一刻,Linux、Firefox、Apache 这些名字背后,是一套运行了几十年的规则体系。这套体系让软件可以被查看、修改、再分发,但它从来不是没有代价的午餐。
问题在于,"free"这个词本身就有歧义。它既可以指"免费",也可以指"自由"。开源运动在90年代末试图解决的,正是这个歧义带来的麻烦——很多开发者担心,这个词会让企业望而却步,不敢碰那些在公共空间里协作开发出来的软件。
从70年代到今天,开源走过了什么
开源的概念比它的名字要古老得多。70年代初,互联网刚刚出现,软件常常通过 Usenet 和公告板在同行之间分发。到了80、90年代,家用电脑普及,各种模式开始分化:盒装付费软件、共享软件、免费软件,还有公有领域软件,各有各的玩法。
90年代末,开源运动正式登场。它要处理的,是商业软件和自由软件运动之间已经裂开的那道缝。这个时间点很关键——它决定了后来几十年里,开源到底是一种开发方式,还是一种意识形态。
几十年后的今天,开源软件已经渗透到日常使用的每一个角落。你浏览网页的时候,几乎可以肯定有开源软件参与其中:可能是你用来做所有事情的 Linux 操作系统,可能是你的 Firefox 浏览器,也可能是服务器那头的 Apache Web 服务器。多数时候,你根本不会意识到它的存在。
100多种许可证,选错可能惹上法律麻烦
开源许可证听起来是件好事,选择多嘛。开放源代码促进会列出了超过100种不同的许可证。但选择多也是一把双刃剑——你遇到的每一份许可证都得仔细检查,尤其是那些你根本不认识的。
常见的许可证大致有这么几种:
- MIT:限制极少,几乎可以做任何事
- Apache 2.0:同样宽松,允许高度自由的使用
- BSD 3-clause:宽松型,限制不多
- GPLv3:要求你在分发软件时一并提供源代码
这些许可证的核心差异在于"宽松程度"。MIT 和 Apache 让你几乎想做什么就做什么,而 GPL 则要求你把源代码和软件一起分发出去。GPL 带有强烈的意识形态色彩,这跟它出身于 GNU/自由软件基金会有关。
你实际会遇到或使用的许可证,很大程度上取决于你用的编程语言。C 程序常用 GPL,Java 项目倾向于 Apache,而 MIT 在 Ruby 和 Python 的代码仓库里很受欢迎。如果你要给自己写的软件选许可证,GitHub 上的 "Choose an open source license" 页面是个有用的工具,它会一步步引导你,并用简短的要点总结每种许可证的特点。
个人用没事,商用就得当心
不管你是要发布软件,还是只是想用别人的软件,都得搞清楚它背后的开源许可证是什么。个人使用的话,问题可能不大。但如果是拿别人的软件用于工作,或者把你修改后的版本再分发出去,就可能把自己暴露在法律风险里。
这里有个容易被忽略的点:很多人以为开源就等于"随便用",但许可证的条款是有约束力的。一些大公司都曾在上面栽过跟头。许可证不是装饰品,它是具有法律效力的协议,只是它约束的方式和传统商业软件不同。
回到最初的问题:开源是不是"好得不像真的"?从自由的角度看,它确实给了你查看、修改、分发的权利。但从成本的角度看,理解许可证、遵守条款、规避法律风险,这些都是要付出的代价。开源从来不是免费的,它只是把成本换了一种形式。
热门跟贴