关于这 2 年来,做开源项目的一些感慨

2020-12-04 11:46:04 +08:00
 Joker123456789

2 年了,一个开源项目 从最初的想法一点点迭代,到现在有了一点点用户, 从一开始的一个项目,变成了现在拥有微服务组件和网关组件的 微型生态,一路上,真是历经苦难。有质疑,有鼓励,有嘲讽。

有时候我真的在想,要不要就此打住,放弃维护算了,项目就挂在那,喜欢的就看一看,学一学姜太公,愿者上钩,我也落个轻松,但是总感觉有点可惜吧,毕竟是花了大量心血做的。

说起为什么要做这个项目,我或许已经记不清了,我只记得一开始并没有打算做这个东西,我只是想验证一下我对 springboot 的原理理解的对不对,于是我就尝试着自己去实现一个类似的框架。当我实现了基础功能后,我居然舍不得删除这份代码,所以就放到了 github 上托管, 那个时候也完全没有开源的想法,就是把 github 当成一个存放代码的网盘了。 没有开源协议,没有 readme,连代码结构也是一团糟。

这份代码就这样保存了下来,但是我每次闲下来都会不由自主的在脑海里盘算着,哪里写的不够好,哪里可以再优化一下,目录结构是否可以更优雅一点,细节是否可以再打磨一下等, 每次想到一些东西,就会去维护一下,然后乐在其中, 正是因为这样的维护,让这份代码变得越来越健壮,于是就有了分享给大家看看的想法。所以我做起了官网,开始在一些技术群里分享,但是得到的反馈却不太友好,几乎是清一色的嘲讽,质疑。大部分的嘲讽都集中在 [没新意,个人项目太垃圾等] ,每次面对这些嘲讽,我都在想,怎样才能让大家接受且愿意尝试下,而不是看了个文章介绍,就立刻否定了,所以我拼命的去优化我的代码,去加入一些新特性(或许不是新特性,因为每一个特性,都能在世界上找到包含此特性的项目)

就这样,

可以说完成了一次 集小成,一个项目就可以提供 中小型项目开发中常用的一些功能点。但是反应还是一般般,无人问津,没有人在意这是一个什么东西,每次的分享,都是一次被喷大会。不过其中也不乏一些理智的人,他们会理智的说出一些自己的看法,这给了我很大的帮助,我也非常感谢他们。

事情到了这一步,我也可以说是骑虎难下了,投入了这么多,总不能放弃吧,我只有硬着头皮往前走,我不断的去思考,到底是什么原因让大家不愿意尝试呢? 可能 [个人项目] 这个标签,本身就是原罪吧,也可能是我提供的生态不够,所以我做出了如下计划:

  1. 再一次的给项目减肥,丢掉一些在我能力范围内,可以替代的三方依赖
  2. 开发微服务组件,网关组件 来丰富生态
  3. 再一次的去优化文档,官网等,尽量体现出 这是一个用了心的项目 和 专业感

所以,tomcat 没了,直接采用了 HttpServer (在 JDK8-JDK14 上都测试过,都没问题), 不需要注册中心的微服务组件也开始投入了开发,网关也提上了日程,同时官网和文档日渐完善,我甚至找专业的人设计了 logo (我自己觉得挺好看的)

经历了 2 年的时间,这些都已经成为了现实,有了微服务组件,有了网关组件,有了自己的 logo,官网也比以前好看了很多,文档也比以前清爽简洁。

与此同时,也出现了另一个问题,项目的高度集成化,使得扩展性不够,比如 HttpServer 不好的时候,可否切换到 tomcat ? 微服务的熔断器,负载均衡 是否可以 插拔,甚至让用户自己开发? 用户是否可以自己开发组件?所以,接下来的一段时间,我开始了这个方向的优化, 到现在为止,都已经实现了,但是还存在一些问题:

接下来的工作重点,我会放在优化这几个点上。 至于更加长远的计划,那肯定是无限的向企业级开发靠拢,争取让他可以胜任大型项目。

2 年来,不断地优化,试错,面的各种嘲讽,早已成为习惯,总之我知道自己在干嘛就好了,即使无人问津也没关系,起码我可以从这件事中 学到一些东西,体会到一些东西,这也是一种价值吧,就像回归初心一般,我一开始仅仅只是为了验证我对 springboot 的原理理解的对不对,我只是乐在其中,其他的一切杂念,就让它烟消云散吧。

哦对了,这个项目叫 Martian http://mars-framework.com

3037 次点击
所在节点    Java
10 条回复
JingYM
2020-12-04 12:46:24 +08:00
加油,我也有个自己做个这样项目的梦想。
monkeyk
2020-12-04 12:57:40 +08:00
重点是找到 开源项目的 核心价值;
EKkoGG
2020-12-04 14:32:31 +08:00
厉害的 加油!
nickchenyx
2020-12-04 14:51:18 +08:00
官网做的看起来很正式了,这个传染机制注册,有个问题,如何实现统一的服务实例的治理呢——比如主动下线某个节点的(不是直接宕机那种)
yupozhang
2020-12-04 15:01:55 +08:00
加油呀。
我也有一个开源项目在维护
Spug 一个轻量自动化运维平台
特性:开源免费,简单好用,不需要安装 Agent,功能包含主机管理、主机批量执行、主机在线终端、文件在线上传下载、应用发布部署、在线任务计划、配置中心、进程端口站点监控、微信钉钉邮件报警等一系列功能。
开源链接: https://github.com/openspug/spug
Joker123456789
2020-12-04 15:03:31 +08:00
@nickchenyx 目前是跟宕机一样处理的,调不通 达到一个阈值就下线。

一开始是采用的心跳机制,但是考虑到每个服务都要定时给所有服务发心跳包,网络压力有点大,就改掉了。 牺牲了一点性能
37Y37
2020-12-04 15:14:55 +08:00
加油大佬
dream4ever
2020-12-04 15:33:04 +08:00
官网首页不考虑放上个人 GitHub 账号链接嘛,感觉 GitHub 账号已经是 coder 通用的名片了。
Joker123456789
2020-12-04 15:47:44 +08:00
@dream4ever 有连接啊,在 banner 上,有两个按钮,第一个就是。
dream4ever
2020-12-04 15:55:15 +08:00
@Joker123456789 我没表达清楚,我的意思是页面底部有你的各种社交媒体账号,但是没有你的 GitHub 账号的链接~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/732048

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX