我的开源项目在五个月内超过了 600 star - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
DtFlys
V2EX    Java

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

  •  
  •   DtFlys 2021-01-08 12:46:33 +08:00 7166 次点击
    这是一个创建于 1738 天前的主题,其中的信息可能已经有所发展或是发生改变。

    其实我在 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 一下哦~

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

    是个令人感到愉快的事情

    谢谢你分享这些宝贵的经验
    DtFlys
        17
    DtFlys  
    OP
       2021-01-08 16:43:37 +08:00
    @AndyAO 过奖了,我也只是扯一些自己的浅见,比我厉害的大佬多的是
    ArJun
        18
    ArJun  
       2021-01-08 17:17:58 +08:00
    竟然不放到 github 的哦,这么大的交友网站都不用
    DtFlys
        19
    DtFlys  
    OP
       2021-01-08 17:24:53 +08:00
    @ArJun 有放到 github: https://github.com/mySingleLive/forest
    只不过重心还是在 Gitee
    lzuntalented
        20
    lzuntalented  
       2021-01-08 17:53:04 +08:00
    厉害呀,我的开源快两年了只有 300 星
    DtFlys
        21
    DtFlys  
    OP
       2021-01-08 18:04:56 +08:00
    @lzuntalented 不错了,我的项目在 gtiee 上也有 2 年多时间了,但真正的增长是近几个月才有的,之前 2 年多只有 100 不到的 star
    PoetAndPoem
        22
    PoetAndPoem  
       2021-01-08 18:09:21 +08:00
    部署,上手快吗
    DtFlys
        23
    DtFlys  
    OP
       2021-01-08 18:15:07 +08:00
    @PoetAndPoem 照着文档做,啪的一下,很快的
    Rache1
        24
    Rache1  
       2021-01-08 19:01:18 +08:00   1
    这个文档的对比度太高了,刺眼睛
    Helsing
        25
    Helsing  
       2021-01-08 21:40:41 +08:00 via iPhone
    Retrofit 就是设计给 Java 用的,底层是用的 okhttp,Android 要加别的库才可以使用
    gaoyujian2015
        26
    gaoyujian2015  
       2021-01-09 09:54:56 +08:00
    请教下楼主怎么做早期的宣传推广,最近也想把一些项目开源但是不知道怎么宣传
    yazoox
        27
    yazoox  
       2021-01-09 18:23:05 +08:00
    又有需要学习的了
    LowBCoder
        28
    LowBCoder  
       2021-01-09 19:32:20 +08:00
    是不是相当于于 SpringBoot 版本的 Feign ?
    DtFlys
        29
    DtFlys  
    OP
       2021-01-09 22:12:56 +08:00
    /div>
    @Helsing 是的,我后来也有所了解,不过 Retrofi 和 SpringBoot 没有直接的集成,不过最近有个国内的小伙做了 retrofit-spring-boot 也挺好的
    DtFlys
        30
    DtFlys  
    OP
       2021-01-09 22:13:53 +08:00
    @LowBCoder Feign 本身就可以和 SpringBoot 集成,当然也可以不集成,不过 Feign 更多的是用来微服务领域作为 RPC 框架。
    DtFlys
        31
    DtFlys  
    OP
       2021-01-09 22:15:57 +08:00
    @gaoyujian2015 首先需要把文档写好,不但要写的详细,还是写的简单易懂,容易上手,最好能配合一些上手的 Demo 更好。此外再是写一些文章介绍你的项目,投放到一些流量高的平台,至于文章写得好不好就看你本事了。
    SkyLine7
        32
    SkyLine7  
       2021-01-12 16:29:01 +08:00
    大佬牛逼,坚持就是胜利
    riccox
        33
    riccox  
       2021-01-14 13:58:09 +08:00
    针不戳!希望可以一直维护下去,别用着用着没了 :(
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2575 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 04:57 PVG 12:57 LAX 21:57 JFK 00:57
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86