akfish
2015-02-13 17:41:19 +08:00
开源和禁止商用是矛盾的概念,free software的free就包括商用,不允许商用就not free了。
大多数开源license并不允许你区别授权,比如你不能说满足xxxx条件的人能以MIT协议获得授权,而其他人则是另外的协议。
MIT,BSD,Apache这种协议不要考虑,太过宽松。那也就只有GPL协议可选了,因为大多数商业公司看到GPL就会恶心得吃不下饭(当然国内的流氓公司连屎都吃得下),所以如果你提供GPL以外的授权,他们肯定会欣然接受。
另外还有一个细节就是要附带一个Contributor Agreement,后续所有的contributor需要书面签署CA,不然不要merge他们的代码。CA的作用是让你可以随时修改license乃至闭源,这样能获得凌驾于license的权利。当然,所有签署了CA的contributor也获得了联合版权,闭源后他们也能继续在CA限定范围内免费使用。Google,Apple等公司的开源项目,往往都有CA。
需要注意的是,所有开源协议的法律强制效力,是需要版权所有者(即lz你)去强制实施的,你没有那个能力把人告到破产,就最好别开源。
另外一个选择就是不开源,只提供商业版,但是允许非盈利用途免费使用。