前几天朋友老李急匆匆找我,说他公司开发的内部管理系统被人把代码传到了GitHub上,老板差点发火。他问我:源代码能随便公开吗?这事儿还真不是一句能或不能就能说清的。
要看谁写的代码
如果你是公司雇员,上班时间写的代码,那版权基本归公司。哪怕是你一个人熬夜肝出来的,也不能自己说开源就开源。就像你在餐厅当厨师,菜谱是店里花钱研发的,你拍下来发朋友圈都可能被辞退,更别说全网公开了。
个人项目另当别论
周末自己写个小工具,比如用Python做个自动整理桌面的脚本,这种个人作品你想托管到GitHub完全没问题。很多人就是靠公开这些小项目积累粉丝,后来还接到了好工作。
def clean_desktop():
<span class="comment"># 移动所有.jpg文件到图片文件夹</span>
move_files('*.jpg', 'Pictures')
<span class="comment"># 清理下载目录</span>
move_files('*.zip', 'Downloads')
用了别人的库要注意
就算你的项目是自己写的,如果用了MIT、GPL这类开源协议的第三方库,公开时就得遵守对应规则。比如GPL要求衍生作品也必须开源,而MIT就宽松很多,只要保留原作者声明就行。
有次一个学员把自己的小程序传到码云,结果被人指出用了Apache协议的组件但没加许可证文件,最后只能下架重来。
敏感信息必须处理
最怕的就是一激动把整个项目推上去,结果config.py里还躺着数据库密码和API密钥。之前有家公司就是这样,代码公开三小时,服务器就被扫爆了,损失不小。
真要分享,记得先检查有没有硬编码的账号密码,可以用环境变量代替:
import os
DB_PASSWORD = os.getenv('DB_PASSWORD') <span class="comment"># 从环境读取</span>
然后在说明文档里写清楚需要自行配置。
有些行业碰都不能碰
做金融、医疗或者军工相关系统的,代码基本都是保密级的。别说公开了,离职交接都要签保密协议。这类项目连本地备份都得加密,U盘拷走都可能违法。
所以啊,源代码能不能公开,关键看三点:谁出的钱、有没有用别人的东西、里面有没有敏感内容。拿不准的时候,先问问法务或者上级,比事后补救强得多。