2019独角兽企业重金招聘Python工程师标准>>>

近年来,越来越多的开发者选择将自己的产品以开源形式发布,有时的结果是——你满怀诚意地开源,却无人问津。尽管你的产品做得相当好,但是仅把产品的源代码公布出来,这还不算开源,因为其他用户可能无从下手。没有用户,久而久之,你的满腔热情就会熄灭。 那么如何才能让开源项目为更多人所知,成为一个真正牛X的开源项目呢?除了项目自身优秀外,你还需要注意以下事项。

一、有一个真正有用的README 即使你为你的开源项目制作了一个很好的网站,但是一些潜在用户很可能会首先通过阅读README文件来了解这个项目。因此,你要确保在README中提供尽可能全面的信息:

1. 依赖、安装信息 尽可能写清楚依赖、安装信息,最好能够让用户通过复制粘贴相关代码来添加依赖。比如这样。

2. 项目成熟度状态 不至于让用户在生产环境中用了几个月后才发现你的项目才处于Alpha阶段。

3. 详细说明项目支持的语言、运行环境和工具的版本 不至于让用户花费大量的时间去摸索你的项目的兼容性。

4. 明确所使用的许可证 这个许可证需要是流行的、用户都知道的,如果你自己创造一个或使用一个陌生的(比如WTFPL),那么没有用户敢于在自己的产品中使用你的开源项目的。你可以选择比较友好的 Apache Public License 2.0或Eclipse Public License等。需要注意的是一些许可证(比如MIT)也是比较流行的,但是没有提供任何专利保护。你也可以采用APL2/GPLv2双许可,让用户挑选适合他们的。

二、为你的项目写一个文档 写文档并不容易,且比较费时,但是对于用户来说,文档是了解一个项目最便捷、最省时的方式,还可以让用户相信你不会轻易放弃这个项目。 在文档中,把你的项目可以帮助用户完成的事情放在首位,这是用户决定是否使用这个项目的关键。此外,你要让用户相信做这个项目的是个人,而不是一个会产生代码的机器人。

三、项目可以很容易地升级 随着项目中bug的修复和一些功能的改进,你需要发布另一个版本。需要注意的是:

1. 向后兼容 不要因为不向后兼容,而让用户重写大量代码。这样会让用户愤怒,继而抛弃你的项目。当然,你也不必像OpenJDK那样兼容15年前的产品。

2. 更新日志 有一个清晰明确的更新日志,需要包含:该版本发生了什么变化?会破坏用户现有项目的代码吗?等等。比如Twitter的做法: 每修复一个bug,就在更新日志中写上一个简短的条目 每添加一个功能,就简要描述一下并附上一些示例代码 每改变一个API,就需要在日志中用粗体明确指出 如果你有多个分支,就需要为每个分支都写一份更新日志。

3. 版本标签 为你的项目的每一个版本打上一个标签,比如v1.0.0-alpha1、v1.0.0、v1.1.2,可以让你的用户很清晰地分辨出项目的版本。

4. 发布公告 项目发布后,接下来就需要为这个事件写一篇博文,或直接将公告发布到项目的邮件列表中。 在公告中需要说明这个项目有什么用,是否向后兼容,并给出更新日志的链接。

5. 项目状态标签 有些项目很长时间一直使用相同的版本号,比如1.1.0,而项目一直在改进。如果这是一个开发版本,你也需要通过标签来说明项目所处的开发阶段。比如: 1.1.0.pre1 1.1.0-alpha1 1.1.0-SNAPSHOT 总之,你要确保项目有一个严格的版本命名规划。

四、使用GitHub 在GitHub上,你可以很容易地做下面的事情: 发布你的项目 浏览和搜索代码 专注于项目issues 参与贡献,合并用户的贡献

五、确保有一个为用户提供支持的地方 如果你的项目达到一定的普及程度,你就会不断收到用户的提问。你需要有一个收集和回答用户提问的地方,比如论坛、邮件列表等。只要有一个交流的地方,用户也可以彼此提供帮助。久而久之,就会形成一个很不错的社区。

六、项目传递 不排除这种情况——你可能会对项目维护失去兴趣,或者你换了一个新工作不再使用当前的项目了。你可以在邮件列表上公布,让其他开发者接管你的项目。在Github上项目所有权转移会更容易,尤其是在别人为你的项目引入了新功能后。 无论如何,不要让项目死掉。

七、总结 总之,在你打算发布开源产品时,请确保它有: 清晰的依赖/安装说明 至少有一个简短的文档/指南 库中包含更改日志和相关标签 一些关于支持语言、运行环境、工具版本、项目成熟度的信息 邮件列表,供用户提问、相互帮助 八、最后 总之,要想让你的开源项目“发扬光大”,首先应该让它对用户更友好。除了项目文档外,其他事情花费不了多长时间。 另外,将项目开源出来容易,长时间维护就难了,因此,你还需要具备坚毅的精神和打持久战的准备。当然,如果你只希望将项目开源出来,而不指望它能够发展得多好,那么你完全可以忽略以上的所有内容。

转载于:https://my.oschina.net/lichaoqiang/blog/138981

如何做一个真正牛X 的开源项目相关推荐

  1. 打造一个高逼格的android开源项目——小白攻略

    小引子 在平时的开发过程中,我们经常会查阅很多的资料,最常参考的是 github 的开源项目.通常在项目的主页面能看到项目的简介和基本使用,并且时不时能看到页面汇中有好多的彩色标签,看起来很酷,很专业 ...

  2. 1个人,3个月业余时间,采用Flutter,居然仿写了一个淘宝电商开源项目

    来源 | https://www.jianshu.com/p/194448388ce9 前言 Flutter现在如火如荼,Google也在大力推广,是到了学习Flutter的时候了,今天推荐一款用Fl ...

  3. 《仿大众点评仿美团做一个评价网站——Java SSM》项目研发阶段性总结

    <仿大众点评仿美团做一个评价网站--Java SSM>项目研发阶段性总结 一.后台功能实现 (一).注册商家 (二).登录商家中心 (三).商家登录后台操作模块 (1).用户管理模块 (1 ...

  4. 『菜鸟手机助手』-做一个属于自己的AppStore-Android助手项目

    『菜鸟手机助手』-做一个属于自己的AppStore-Android助手项目 官方地址:http://www.cniao5.com/course/lessons/10124 注意:更新未完整,更新至41 ...

  5. Google 有哪些牛逼的开源项目?

    本文盘点 Google 开源项目中 Star 最多的 6 个开源项目.@逛逛GitHub 历史还盘点过百度.阿里.腾讯等互联网大厂的开源成果,可以查看历史文章翻阅. 本期推荐开源项目目录: 1. 核心 ...

  6. 手把手教大家在自己的Windows电脑上搭建一个视频电话系统(基于开源项目FreeSwitch+Linphone)

    目前可以做视频电话的流媒体开源项目有很多,那么今天我就手把手教大家(基于FreeSwitch+Linphone)搭建一个免费的开源的能在局域网中使用的视频电话系统,部署与配置都非常的简单,而且点对点的 ...

  7. 推荐一个必学的嵌入式开源项目

    给大家推荐一个非常适合学习的嵌入式开源项目:mjpg-streamer. 如果你有C语言.Linux基础,那研究这个项目将会对你的技术有很大的提升. mjpg-streamer是谷歌开源的视频采集服务 ...

  8. 项目分享 | 好牛X的开源项目,看完忍不住分享(高手作品分享)

    Hi! 我是小小,今天是本周的最后一篇,本篇将会分享一个开源项目 flash-waimai 一个外卖系统,需要有手机端,后台管理界面,其中api部分基于Spring Boot前端部分基于Vue. 技术 ...

  9. 介绍一个3d bim模型展示开源项目

    3d-bim-models-threejs 3d-bim bim是building information model 意思是建筑信息模型,本开源项目是使用nodejs,html5,threejs 制 ...

最新文章

  1. Docker的使用(一:Docker入门程序)
  2. 35国,14年,世界最大科学项目,「人造太阳」即将诞生!
  3. mysql 当前记录集不支持书签_存储过程 分页。当前记录集不支持书签。这可能是提供程序或选定的游标类型的限制。...
  4. iOS教程:Core Data数据持久性存储基础教程
  5. php 调用变量方法名,php中引用(变量和函数名前加符号)用法
  6. python蓝牙编程_蓝牙编程经典程序!
  7. Debug ASP.NET Core 2.0源代码
  8. Spring3 + JPA2 + Java EE6 App Server =配置混乱
  9. 开源 免费 java CMS - FreeCMS1.9 会员组管理
  10. ddos流量攻击有多少G_锐速云高防IP 专业防御大流量DDoS攻击
  11. LINUX下载编译libopusenc-0.2.1.tar.gz
  12. SEO与SEM有什么区别?
  13. ctf piapiapia(反序列化逃逸)解题记录
  14. 地球币earthcoin表情包征图大赛正式筹备准备中
  15. (memcpy,memmove...)内存函数还不会??别怕,我来助你一臂之力
  16. 虚幻4皮肤材质_UE4实时虚拟角色材质篇之Skin Material(一)
  17. 两台win10电脑连接同一个wifi怎么共享文件
  18. 当APO生产订单报工遇到物料账期没开
  19. SAN和NAS的区别
  20. 斑驳年华,与春暖有约

热门文章

  1. 未来PCB行业互联网+发展趋势
  2. 【反思】FB一年八个月工作教训
  3. 002,jvm启动流程
  4. nodejs(koajs)设置中文cookie无效
  5. 让apache支持ssl
  6. Python3基本数据类型(一、数字类型)
  7. 《团队-科学计算器-项目进度》
  8. 教你怎么样快速降低室内装饰设计污染
  9. Matlab之subplot函数
  10. Eclipse中Jar包的反编译(通过jar包查看源码)