今天的越写越写悦快乐系列文章为大家带来作为开发者如何开始一个开源项目。经常浏览GitHub、Bitbucket的小伙伴肯定都知道世界上有成千上万的项目被发布在网络上,我们经常使用开源软件构建我们的产品或服务,同时也努力为开源世界贡献一些自己的力量,让开源成就我们,让我们在开源中绽放。
什么是开源
当一个项目被开源,这意味着任何人都可以出于任何目的查看,使用,修改和分发你的项目。 开源软件在开源许可的情况下发布并得以传播。
流行的开源协议
为什么开源
个人或组织为何想要开源一个项目,有各种各样的的原因,例如:
- 协作
- 采用和重组
- 透明度
开源并不仅仅限于软件。您可以开源任何事物,从数据集到书本。查看 GitHub Explore 开找找有什么是你可以开源的。
开源是指”免费”吗?
开源最大的吸引之一是它不花钱。 但是,”免费”只是开源的总体价值的一个副产品。因为开源许可证要求任何人可以几乎出于任何目使用,修改和共享您的项目,项目本身往往是免费的。 如果该项目花钱使用,任何人也都可以合法地复制和使用免费版本。因此,大多数开源项目是免费的,但”免费”不是开源定义的一部分。 有些方法可以通过双重许可或有限功能间接地为开源项目收费,同时仍然遵守开源的官方定义。
启动自己的开源项目
一般来说,如果你乐意于他人对你工作的查看和反馈,你就应该开源你的项目。无论您决定开展项目的哪个阶段,每个项目都应包括以下文档:
- 开源协议 - Open Source License
- 项目介绍 - README
- 贡献指南 - Contributing Guidelines
- 行为准则 - Code of Conduct
作为项目的发起者或维护者,这些组件将帮助你交流你的期望,管理贡献并保护每个人的合法权益(也包括您自己的)。他们能够大大增加你积极体验的机会。如果您的项目在 GitHub 上,则将这些文件放在您的根目录中,并使用推荐的文件名将有助于 GitHub 识别并自动将其显示给读者。
选择协议
开源许可证保证其他人可以使用,复制,修改和贡献给您的项目,而不会产生不良后果。 它也可以保护您免受繁琐的法律影响。启动开源项目时,请务必包含许可证。法律工作是非常无趣的。但好消息是,您可以将现有许可证复制并粘贴到存储库中。只需要花这么一点时间,就能保护你的辛苦工作。MIT, Apache 2.0, 和 GPLv3 都是非常流行的开源许可证, 但你可以选择其他选项。当你在GitHub上创建新项目时,你可以选择许可证。包括开源许可证将使你的GitHub项目成为开源。
选择开源协议 - 图片来自简书App编写项目介绍
自述文件不仅仅是用于说明如何使用你的项目。他们还可以解释你的项目为什么重要,以及它可以为你的用户做什么。
在您的自述文件中,尝试回答以下问题:
- 这个项目做什么?
- 为什么这个项目有用?
- 如何开始?
- 如果需要,我可以在哪里获得更多的帮助?
您可以使用自己的README回答其他问题,例如处理贡献,项目的目标以及许可证和归属信息。 如果您不想接受他人的贡献,或者您的项目尚未准备好作为产品提供使用,请将这些信息写下来。
当你在根目录中包含一个 README 文件时,GitHub 会自动将其显示在存储库的主页上。
编写贡献指南
贡献文件 (CONTRIBUTING File) 告诉你的受众如何参与你的项目. 例如,你可以包括一下信息:
- 如何提交错误报告(尝试使用issue 和 pull request 模板)
- 如何建议一个新功能
- 如何配置你的环境和运行测试
除了技术细节, 贡献文件也是一个供你传达对贡献期待的机会, 例如:
- 你在寻求的贡献类型
- 你项目的路线图或者版本
- 贡献者应该(或者不应该)如何与你取得联系
使用热情友好的语气并提供具体的贡献建议(例如编写文档或者搭建网站)可以大大提高新人的参与度。
建立行为规范
最后,行为准则有助于为项目参与者的行为设定基本规则。这在你为社区或者项目推出一个开源项目的时候尤为有价值。一份行为帮助你促进健康,有建设性的社区行为,这也会减轻你作为维护者的压力。
更多信息,请参见 行为规范指导。
除了传达你期待参与者如何行动,行为规范也倾向于描述这些期待针对谁,适用于何时,以及对于违规行为的处理方法。
就像开源许可证一样,有现成的行为规范,所以你不必自己编写。贡献者公约是一个行之有效的行为规范,已经被用在超过4000个开源项目,包括 Kubernetes,Rails,以及 Swift。无论你使用哪一种,你都应该准备好在必要时执行行为规范。
将文本直接粘贴到项目存储库中的 CODE_OF_CONDUCT 文件中。将文件保存在项目的根目录中,以便轻松找到,并从 README 中链接到它。
项目命名
选择一个容易记住,有创意,能表达项目用意的名字。例如:
如果你的项目是基于一个已存在的项目创建,那么使用他们的名字作为你项目名的前缀会帮助你阐述你项目的用途。
在项目的整个生命周期中,你需要做很多文字工作:READMEs,教程,社区文档,回复issues,甚至肯能要处理很多来信和邮件。
是否是官方文档或者一封普通的邮件,你的书写风格都是你项目品牌的一部分。考虑你可能会拥有粉丝,以及这是你想传达的声音。使用热情,通俗易懂的语言(如”他们”,即使是指一个人)能够让新来的贡献者感觉项目非常欢迎他们。使用简单的语言,因为你的读者可能英语不是很好。
开源项目清单
文档
- 需要为项目指定一个开源协议
- 项目要有基础文档 (README, CONTRIBUTING, CODE_OF_CONDUCT)
- 易记的项目名,指出项目是做什么的,不能和已存在的项目冲突或者商标侵权
- 最新的issue队列,组织和标记清除的issues
代码
- 项目使用一致的代码风格和明确的功能/方法/可用的名字
- 注释清晰的代码,记录意图和边缘案例
- 在修改历史,issues或者 pull requests 中没有敏感的信息 (例如 密码或者其他不能公开的信息)
人
如果你是代表个人:
- 你已经告诉了你的法律部门,以及/或者理解了你公司(如果你是某一家公司的员工)的开源政策和IP
如果你有一家公司或者组织:
- 你已经告诉了你的法律部门
- 你有一个宣布和促进项目的营销计划
- 一些人被允许管理社区互动(回复issues,检查和合并pull requests)
- 至少有两人管理访问项目
参考
个人感想及收获
“talk is cheap, show me the code.” 开源不仅仅说说而已,而是真真切切的逻辑表达,更是一行一行代码形成的业务场景,让我们提炼软件生产过程中的工具、技巧、方法和框架,构建适合业务的工具栈和技术路径图,在适当的时候为开源社会贡献自己的一份力量,让我们在开源的道路上一路同行,携手构建更加美好的世界。希望大家继续保持学习的热情,持续构建更快更好的产品或服务。若是我的文章对你有所启发,那将是我莫大的荣幸。
网友评论