开源、闭源与代码可见

前言

作为非码农的我来说,第一次从开源软件了解到Github。,从而错误的将Github里所有项目都默认视为开源,免费。但随着不断的了解我意识到这是错误的,所以写下这篇文章对新的认知总结,其中可能也会存在错误。积极欢迎各位指出问题。

认识开源、闭源与代码可见

开源(Open Source)

代码不仅公开,还通过OSI认证的开源许可证(如 MIT、GPL(GPLv3GPLv2)、Apache)明确赋予用户四大自由:

  • 使用自由:可免费用于任何目的(包括商业)。
  • 修改自由:可根据需求调整代码。
  • 分发自由:可分享原始代码或修改后的版本。
  • 衍生作品自由:允许基于原代码开发新项目(需遵守许可证规则)。
特性 MIT GPL Apache 2.0
自由度 最宽松,几乎无限制 强约束(Copyleft) 较宽松,但有专利保护条款
衍生作品要求 无需开源 必须开源(同 GPL 协议) 无需开源
专利授权 无明确条款 隐含专利授权 明确专利授权
版权声明保留 ✅ 必须保留原协议和版权声明 ✅ 必须保留协议和版权声明 ✅ 必须保留协议、版权和修改声明

代码公开(Source Available)

仅表示代码可以被任何人查看(如 GitHub 的公开仓库),但未明确授予用户使用、修改或分发的法律权利

  • 示例:某公司公开了旧版软件的代码,但声明“仅供学习参考,禁止商业使用”。

闭源(Closed-Source Software)

也称为专有软件(Proprietary Software)源代码不向公众开放,且用户的使用、修改、分发等权利受到严格限制的软件。

结论

  • 协议决定性质:开源或闭源是软件的法律性质,由协议(许可证或 EULA)定义。
  • 代码公开是技术状态:独立于法律授权,仅说明代码是否可见。
  • 关键区别
    • 开源 = 代码公开 + 许可证赋予自由。
    • 闭源 = 代码可能公开/私有 + 限制性协议。
    • 代码公开 = 纯技术可见性(无法律授权)。

在Github上进行区分

开源/代码公开 VS 闭源

  • 公开仓库(Public Repository):代码对所有人可见
  • 私有仓库(Private Repository):代码仅对特定用户可见,通常是闭源的(用户无权限访问)。

开源 VS 代码公开

  • 检查根目录的 LICENSE 文件:大多数开源项目会在仓库根目录包含一个 LICENSELICENSE.mdLICENSE.txt 文件,明确声明授权条款。
  • GitHub 自动检测:在仓库主页的右侧边栏,查看 “About” 栏,如果有许可证信息(如 MIT、GPL-3.0、Apache-2.0 等),则为开源项目。
  • 无许可证文件:即使代码公开,若没有明确许可证,则默认受版权保护(视为闭源或“仅代码可见”)。