我是怎么做开源的

简介:

我最近发现我对开源(Open Source)的看法和我的很多朋友不一样。我对开源的态度一贯是:

这段代码能够很好的解决我的问题。假如它也能解决你的问题,我很欣慰。但是假如它不能,我愿意做一些改进,但是我也会拒绝一些让代码变的臃肿的的想法。最后,做一个成熟的库大约需要几年的时间。成熟我是指足够的稳定来发布一个最终的版本,或者有人做了一个高级版本。我不认为一个开源的项目能说明我在这个行业的成就。

但是和别人的交流我发现他们不愿意做开源的原因如下:

1. 代码不够成熟

2. 不想写文档

3. 不想被需求和各种邮件占用太多时间

我完全理解这几点,但是我开发生涯中的一些事件改变了我的看法。

那是我的第一个开源项目,我一直不敢拿出来开源,直到我把他用在生产环境中稳定的运行了一年,我有足够的自信相信我这个项目能解决一些问题。它是一个 .NET 对象关系映射库,叫做 NORM,在2005年发布。我相信你没有听说过这个项目。我花了好几个月的时间来完善这个项目,但是没有人在乎。然后我就不想再发布什么东西了。我现在相信不论我发布什么都不会引起人们的注意,所以我最好还是尽快的发布,如果不行,那就承认失败,然后继续前进。

没有人会为自己写文档,他们为其他将要用这个软件的人写文档。人们很少从使用他们开源软件的人那里得到什么。这个简单的现实导致文档的稀缺。但是,缺乏文档不代表你不能开源你的软件,它只是意味着你的软件推广起来会比较慢。

我两年以前开源了 expectations,没有任何文档,并且在一年之内都没有任何文档。在这一年中,很少有人关注了这个项目。但是这个项目确实对一些人来讲很有用,所以还是有一些应用。最终,有一些用户开始产生一些 pull request,提交一些文档。他们的共享让我产生了撰写文档的动力。我没有动力为潜在的使用者提供文档。但是我把代码放在那里,有人用了,这个就让我产生了动力,因为这些使用者实实在在就在那里。

如果你很幸运的创建了一个广泛使用的项目,你将毫无疑问的被各种邮件淹没。刚开始,我相信任何人都会被这种成功冲昏头脑,认为增加的工作量不是什么大问题。但是慢慢的你会发现,这就像是第二份全职工作,然后你会想着究竟是为了什么?在开发者中的声誉并不能让你提早退休。不管怎样,这不能成为你不做开源的借口。还有,我相信 GitHut 已经改变了游戏规则。如果你的项目托管在 GitHut,当你打算停止维护这个项目的时候,会有很多人愿意 fork 你的项目,继续开发的。

我并没有因为离开自己的项目而良心不安。如果你的想法真的有价值,会有人愿意接替你的位置的。很有可能是有几个人愿意接替你,然后最强的那个生存了下来。我见到的类似的项目有 Capistrano。Jamis Buck 在2009年高调的离开了这个项目,但是我知道还是有很多人到今天还在使用它。我坚信假如你的项目真的很好,即使有一天你决定去做其他事情,这个项目也会活的很好。

我看起来不像是一个开源的好公民,过早的发布,过早的离开。如果真的是这样的话,我愿意接受批评,但在我看来事实并不是这样。

目录
相关文章
|
8月前
|
敏捷开发 架构师 Java
GitHub上线重量级分布式架构原理设计笔记,开源的东西看着就是爽
在分布式系统中,一次业务处理可能需要多个应用来实现,比如用户发送一次下单请求,就涉及到订单系统创建订单,库存系统减库存,而对于一次下单,订单创建与减库存应该是要同时成功或者同时失效,但在分布式系统中,如果不做处理,就很有可能订单创建成功,但是减库存失败,那么解决这类问题,就需要用到分布式事务……
|
9月前
|
运维 小程序 数据可视化
不用写代码也能开发,产品经理是怎么做到的?
不用写代码也能开发,产品经理是怎么做到的?
|
存储 Java 程序员
如何写好技术文档——来自Google十多年的文档经验
如何写好技术文档——来自Google十多年的文档经验
439 1
如何写好技术文档——来自Google十多年的文档经验
|
设计模式 Java 程序员
|
人工智能 Kubernetes 中间件
大公司开源怎么做?SOFAStack给出了一个很好的例子
大公司开源怎么做?SOFAStack给出了一个很好的例子
大公司开源怎么做?SOFAStack给出了一个很好的例子
|
SQL 存储 分布式计算
“开源”vs“商业”,差别到底有多大?这篇测试一目了然
来自用户的声音… 开源就能搞定,还要选商业方案吗? 我是小白用户,开源方案上手快吗? 性能有极致要求,开源能满足吗? 追求性价比,哪种方案更适合我? 我对MySQL很熟悉,数据分析场景适合吗? 上述问题如何解?看阿里云帮你对比分析!
15038 0
“开源”vs“商业”,差别到底有多大?这篇测试一目了然
|
前端开发 JavaScript API
如何阅读大型前端开源项目的源码,授人以鱼不如授人以渔
目前网上有很多「XX源码分析」这样的文章,不过这些文章分析源码的范围有限,有时候讲的内容不是读者最关心的。同时我也注意到,源码是在不断更新的,文章里写的源码往往已经过时了。因为这些问题,很多同学都喜欢自己看源码,自己动手,丰衣足食。
1705 0
|
Java 数据库 NoSQL
也许能帮到你一点!eboot框架基础版发布
每次开发都从0开始,重复造了无数个轮子,或者是把之前的项目抠出来,改吧改吧。但是技术的更新速度太快,甚至还见过现在开发的项目用jdk1.6的,因为老项目用的1.6······ 为了简化项目开始这一步的操作,有了开发eboot的念头,已经有很多前辈开发过类似这样的东西,在这里先感谢一下走在前面的前辈们,但是每个人的都会有一些不同,能给大家提供多一种的选择也就足够了 eboot简介 目前发布一个基础版,适用于中小型项目开发,后续会加入更多功能,以满足大型项目的需求。
1243 0
|
JavaScript 前端开发