OpenSourceCamp

开源准备快速入门

姜宁

启动一个开源项目

  • 将个人的愿景转化成为公共的愿景

  • 明确项目的定位边界

  • 将项目打包展示给公众

  • 为新参与的成员提供所需要一切资料和帮助

给项目选一个好名称

  • 响亮的名字一下子就让大家联想到项目是做什么?

  • 名字是便于记忆的, 双关语可能会让名字更加精彩。

  • 不与其他的项目重名, 且不侵犯任何商标权

  • 尽可能使用.net, .org, 或者.io 的顶级域名

  • 在社交媒体上使用相同的用户名

提供一个使命声明

  • 项目主页提供一个简短的项目描述或者使命声明

  • 声明放在项目首页显著位置, 最好是在项目名下方

  • 使命声明必须具体、并且紧凑简短

项目使命声明示例

The Apache™ Hadoop® project develops open-source software for reliable, scalable, distributed computing.

The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models. It is designed to scale up from single servers to thousands of machines, each offering local computation and storage. Rather than rely on hardware to deliver high-availability, the library itself is designed to detect and handle failures at the application layer, so delivering a highly-available service on top of a cluster of computers, each of which may be prone to failures.

声明项目的开源属性

  • 项目网站首页必须清楚写明这是一个开源项目

  • 声明项目类型是”自由软件“还是”开源软件“

  • 注意现在也有”提供源代码“软件许可

提供特性和需求列表

  • 列出软件支持的各种特性

  • 是软件使命声明的进一步扩展

  • 帮助读者快速决定这个软件是否适用

  • 考虑是否以开发者的身份参与其中

描述项目的开发状态

  • 帮助大家了解项目的进展状况

  • 了解项目承诺与现实情况的差距

  • 项目的维护情况,项目最近的发版

  • 项目的路标以及进展的情况

  • 不要夸大项目的稳定性

提供下载地址

  • 提供标准格式的软件二进制以及源代码下载

  • 提供标准化构建以及安装方法

  • 请在项目初始阶段就提供这些文档

  • 发布版本时需要提供一个唯一的版本号

版本控制

  • 使用Git来追踪项目的代码提交记录

  • 有多个代码托管平台可以选择

问题追踪系统

项目沟通渠道

  • 邮件列表

  • 聊天室 Slack

  • IRC频道

  • 建议把开发者和用户讨论区分分开

开发者指南

  • 软件开发环境设置,如何进行编译测试

  • 项目的架构说明文档

  • 开发者交流论坛的链接

  • 如何报告Bug和提交补丁的指导

  • 关于开发和决策方式的说明

项目文档

  • 清楚告诉读者他们所需的技术技能

  • 清楚完整地描述如何配置软件

  • 提供一个教程式的示例,演示如何执行一项普通任务

  • 标记文档中未完成的部分

  • 维护一个FAQ

开发者文档

  • 开发者文档由程序员编写

  • 主要用于帮助其他程序员理解代码

  • 以便他们能够对代码进行修改和扩展。

  • 用来记录与开发上下文相关的信息

Demo,视频,样例

  • 软件图形化用户界面的截图或者是视频

  • 如果是一个Web软件,可以提供Demo网站

  • 视频内容要简洁,时间控制在四分钟之内

托管平台

  • 项目的相关的资料存放

  • 协作网站提供

    • 代码库

    • Bug追踪

    • 开发wiki

    • 邮件列表

选择许可证

应用许可证

  • 在代码根目录下提供 LICENSE 或者 COPYING 文件

  • 源文件头加入 License header

    • 包含版权日期,所有者以及许可证信息

制定规则

  • 规则是大家长期积累的

  • 避免私下讨论,团队的智慧是无穷的

  • 把粗鲁的行为消灭在萌芽阶段,避免人身攻击

  • 制定行为准则 code of conduct

  • 践行显性化的代码检视

开放代码

  • 从第一天起, 项目就应该是能够对外开放的

  • 害怕额外的责任,害怕失去对项目的控制

  • 敏感信息被写入了代码库

  • 引入了内部的依赖

  • 模块化设计相关的问题

参考资料

问题

  • 大家可以现场提问

  • 在演讲之后沟通

  • 给我发送邮件