我的开源项目在五个月内超过了 600 star

2021-01-08 12:46:33 +08:00
 DtFlys

其实我在 2016 年年底就开始写了这个项目:Forest,一个能够将 HTTP 的所有请求信息(包括 URL 、Header 以及 Body 等信息)绑定到您自定义的 Interface 方法上,能够通过调用本地接口方法的方式发送 HTTP 请求的 Java 框架。

而当时并不知道有 Feign 的存在,Retrofit 也只是听说在 Android 上使用的类似框架,在 Java 后端没有相应的、能和 Spring 或 SpringBoot 良好集成的对应物。只能老老实实用 HttpClient 进行包装,导致我们公司项目有各种各样对 HTTP 千奇百怪的工具类封装,大多只要工具类的作者知道怎么使用。由于要大量请求第三方 Restful 服务,一段时间之后,各种第三方服务的 URL 变得难以管理,靠一个配置文件难以 hold 住各种不同的请求方法、有 Head 传参、有 Body 传参、有 JSON 格式、有 XML 格式。

所以我当时的需求很简单:有这样一个框架,能统一管理项目中所有第三方 URL 接口,不管是 HTTP 还是 HTTPS,是 JSON 还是 XML,是传 Query 参数还是 Body 表单数据,都能用一种统一且优雅的方式给描述出来,还能让不同的开发人员一目了然地知道这些接口是做什么的,url 是什么、body 是什么一看便知。

MyBatis 正好在这时候是国内最火的时候,JPA 也有用过,我就自然而然想到了用 Java 接口 + 注解的方式。接下来花了 1 个月就将 Forest 第一版就写好了,然后用它写了自己项目部分网络请求部分,之后便在公司内部推广开了,其中也是不断碰到问题不断解决的过程。

之前做开源 5 、6 年了,但真正入门,关于如何运营一个开源项目还是这最近 4 个月的事。 一开始只是将项目放到 Github 、Gitee,然后发一篇推广文就结束了,不知道后续工作要做什么,也不想去做。 所以几年来项目几乎无人问津、一直处于将死不死的状态。

直到 2020 年 7 月份开始,才意识到这样下去是行不通的。开源的关键还在于社区,需要有一个不断向你反馈问题的管道。于是开通了微信群,通过适当的推广不断有人加入进来,不断有人提出问题,不断反馈 BUG,我便引来了高考后最繁忙的几个月。进入到这样一个正向循环后会感到很忙、很累,每天都有解决不完的问题,上班完成公司工作之后,晚上要维护更新开源项目到凌晨 2 、3 点。但带来的收获也是可观的,除了见证了 Forest star 数的增长,也感受到了自身的成长,虽然没有经济利益上的收益(还要贴钱进去 〒▽〒)。但能看到自己的工作能带给其他程序猿价值,也是种无法言语的成就感。

哈哈,感谢看了我那么多废话,如果 Forest 对您有帮助,请 star 一下哦~

6531 次点击
所在节点    Java
33 条回复
kaka6
2021-01-08 13:24:10 +08:00
优秀优秀
vus520
2021-01-08 13:46:12 +08:00
高中弟弟?
haosamax
2021-01-08 13:46:23 +08:00
up!
monetto
2021-01-08 13:49:16 +08:00
@vus520 楼主说的是这是高考之后以来的最忙的事。理解力啊老哥。
young1lin
2021-01-08 14:23:00 +08:00
为什么你们的那几个 Factory 类,有些用 System.out.println 输出日志,还有代码注释掉不删的呢....是有什么特殊的地方吗? ForestSSLConnectionFactory 、HttpclientForestResponseFactory
bryan31
2021-01-08 14:47:11 +08:00
牛逼,已 star
DtFlys
2021-01-08 14:47:14 +08:00
@young1lin System.out.println 准备删掉了,只留下 log.info 输出的的日志
young1lin
2021-01-08 15:18:29 +08:00
@DtFlys 感觉整合 Spring 的那个,和 MyBatis 整合的差不多,也是 FactoryBean + 间接继承 ClassPathScanningCandidateComponentProvider 。不过 MyBatis 是自己定义 Log 类的,Spring 是用 Apache 的 Log 类,你们是依赖 Slf4j 。
foxcell
2021-01-08 15:20:22 +08:00
这玩意好,最近写一些 http 请求,挺烦的
DtFlys
2021-01-08 15:22:17 +08:00
@young1lin 对的,被你一眼就看出来了
moonrailgun
2021-01-08 15:44:25 +08:00
我比较关心适当的推广是什么推广
tikazyq
2021-01-08 15:50:24 +08:00
我会告诉你我的项目 1 个月内 1k stars 么 :D
DtFlys
2021-01-08 16:06:29 +08:00
@tikazyq 牛逼啊大佬
hefish
2021-01-08 16:07:10 +08:00
是个好东西,star 了。最近想搞清楚 java 的注解,但年纪大了,搞了几天都没法完全搞懂。等空下来继续搞。谢谢 lz 。
DtFlys
2021-01-08 16:11:31 +08:00
@hefish 谢谢 star
AndyAO
2021-01-08 16:16:00 +08:00
自己的工作能够被别人认可

是个令人感到愉快的事情

谢谢你分享这些宝贵的经验
DtFlys
2021-01-08 16:43:37 +08:00
@AndyAO 过奖了,我也只是扯一些自己的浅见,比我厉害的大佬多的是
ArJun
2021-01-08 17:17:58 +08:00
竟然不放到 github 的哦,这么大的交友网站都不用
DtFlys
2021-01-08 17:24:53 +08:00
@ArJun 有放到 github: https://github.com/mySingleLive/forest
只不过重心还是在 Gitee
lzuntalented
2021-01-08 17:53:04 +08:00
厉害呀,我的开源快两年了只有 300 星

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

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

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

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

© 2021 V2EX