Skip to content

license 限制#

flowchart TD
    A[如何选择开源许可证] --> B{是否要求修改版本<br>必须开源?}

    B -->|是| C{是否要求网络服务<br>也必须开源?}
    B -->|否| D[选择宽松许可证]

    C -->|是| E[AGPL许可证]
    C -->|否| F{GPL还是LGPL?}

    F -->|整个项目开源| G[GPL许可证]
    F -->|仅库文件开源| H[LGPL许可证]

    D --> I{是否需要专利保护?}

    I -->|是| J[Apache 2.0许可证]
    I -->|否| K{是否需要最大自由度?}

    K -->|是| L[MIT/BSD许可证]
    K -->|否| M{是否需要特殊条款?}

    M -->|允许商业使用| N[Apache 2.0/MIT/BSD]
    M -->|禁止商业使用| O[CC-BY-NC]
    M -->|要求署名| P[CC-BY]
    M -->|允许商业但要求相同许可| Q[CC-BY-SA]
    M -->|公共领域| R[CC0]

    J --> S[适合商业项目使用]
    L --> T[适合希望广泛采用的项目]
    G --> U[适合希望促进开源的软件]
    H --> V[适合希望被商业软件使用的库]
    E --> W[适合网络服务/SaaS项目]

    %% 许可证特性说明
    X[宽松许可证特点<br>允许商业使用、修改、闭源分发] --> D
    Y[著佐权许可证特点<br>要求开源、相同许可、专利授权] --> B
mindmap
  title 开源许可证限制与范围
  root
    MIT/BSD
      :::permissive
      允许
        商业使用
        修改
        闭源分发
        专利使用
      要求
        保留版权声明
        免责声明
    Apache 2.0
      :::permissive
      允许
        专利授权
        商业闭源
        商标使用
      要求
        修改声明
        版权通知
        专利状态变更通知
    GPL v2/v3
      :::copyleft
      要求
        源码公开(分发时)
        相同许可证
        专利授权
        注明更改
      禁止
        闭源分发
        增加额外限制
      特殊
        “Tivoization”限制(v3)
        兼容性限制
    LGPL
      :::weak-copyleft
      要求
        库源码公开(修改时)
        允许非LGPL主程序
        动态链接不传染
      禁止
        静态链接不公开修改
    AGPL
      :::strong-copyleft
      要求
        网络访问即视为分发
        用户获取源码权利
        修改版本必须开源
      适用场景
        SAAS服务
        网络应用
    Creative Commons
      CC0
        :::公共领域
        放弃所有权利
      CC-BY
        要求署名
      CC-BY-SA
        :::传染性
        要求署名+相同授权
      CC-BY-NC
        禁止商业使用
    BSL
      :::转换许可证
      特点
        源码可用
        时限后转MIT
        禁止非授权SaaS
      应用场景
        商业开源软件