我的开源项目在五个月内超过了 600 star
其实我在 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 一下哦~
我的开源项目在五个月内超过了 600 star的更多相关文章
- Android 开源项目及其学习
Android 系统研究:http://blog.csdn.net/luoshengyang/article/details/8923485 Android 腾讯技术人员博客 http://hukai ...
- [转]Android开源项目第二篇——工具库篇
本文为那些不错的Android开源项目第二篇--开发工具库篇,主要介绍常用的开发库,包括依赖注入框架.图片缓存.网络相关.数据库ORM建模.Android公共库.Android 高版本向低版本兼容.多 ...
- Android开源项目分类汇总
目前包括: Android开源项目第一篇——个性化控件(View)篇 包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView. ...
- Android开源项目
Android开源项目第一篇——个性化控件(View)篇 Android开源项目第二篇——工具库篇 Android开源项目第三篇——优秀项目篇 Android开源项目第四篇——开发及测试工具篇 And ...
- GitHub上史上最全的Android开源项目分类汇总 (转)
GitHub上史上最全的Android开源项目分类汇总 标签: github android 开源 | 发表时间:2014-11-23 23:00 | 作者:u013149325 分享到: 出处:ht ...
- GitHub上史上最全的Android开源项目分类汇总
今天在看博客的时候,无意中发现了 @Trinea 在GitHub上的一个项目 Android开源项目分类汇总 ,由于类容太多了,我没有一个个完整地看完,但是里面介绍的开源项目都非常有参考价值,包括很炫 ...
- Android开源项目第二篇——工具库篇
本文为那些不错的Android开源项目第二篇——开发工具库篇,**主要介绍常用的开发库,包括依赖注入框架.图片缓存.网络相关.数据库ORM建模.Android公共库.Android 高版本向低版本兼容 ...
- github上有android开源项目
下面是一些比较好的开源项目,总共分为5大类,也许对某一些人有用,有些项目也许将来某一天对自己也有用,所以整理到此,希望对大家有帮助.首先声明非原创,这篇blog的目的是分享给那些可能需要的人. htt ...
- Android开源项目第一篇——个性化控件(View)篇
本文为那些不错的Android开源项目第一篇——个性化控件(View)篇,主要介绍Android上那些不错个性化的View,包括ListView.ActionBar.Menu.ViewPager.Ga ...
随机推荐
- PyQt(Python+Qt)学习随笔:QTableView的cornerButtonEnabled属性
老猿Python博文目录 老猿Python博客地址 cornerButtonEnabled属性用于控制是否启用左上角的按钮.如果此属性为True,则启用视图左上角的按钮,单击此按钮将选择表视图中的所有 ...
- CODING DevOps 线下沙龙回顾一:DevOps 代码质量实战
11 月 22 日,由 CODING 主办的 DevOps 技术沙龙系列「质量」专场在上海圆满结束.在活动现场,四位来自腾讯等知名企业的技术大咖们分享了研发质量与效能的实战经验,与观众们共同探讨如何采 ...
- FreeSql.Repository (一)什么是仓储
欢迎来到<FreeSql.Repository 仓储模式>系列文档,完整文档请前往 wiki 中心:https://github.com/dotnetcore/FreeSql/wiki F ...
- Python测试框架unittest
Python测试框架unittest 一.unittest框架 (1)unittest特点 1.python自带的单元测试框架,不需要安装 2.用例执行互不干扰 3.提供不同范围的setUp和tear ...
- 女朋友突然问我DNS是个啥....
女朋友突然问我DNS是个啥.... 今天晚上我正在床上躺着刷手机,然后我女朋友突然说她的电脑坏了.说连着WIFi上不了网,让我给她看一下.(这就是有个程序员男朋友的好处) 然后我拿到电脑看了一下发现访 ...
- oracle 11g调优常用语句
1.查询表的基数及选择性 select a.column_name, b.num_rows, a.num_distinct cardinality, round( ...
- ORACLE 10g、11g批量刷新用户密码
一.ORACLE 10g批量刷新用户密码 select 'alter user ' || username ||' identified by values '''||password ||''';' ...
- python绘折线图
# -*- coding: utf-8 -*- import numpy as np import matplotlib.pyplot as plt #X轴,Y轴数据 y = [0.3,0.4,2,5 ...
- hive dml语法
Loading files into tables 语法 1 LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename ...
- Git的使用上传与下载github
下载git 下载git工具是第一步 Git的使用上传与下载 创建本地仓库 在选择的文件夹中鼠标右键打开git Bash here ,在命令行输入git init创建该文件夹的本地仓库 将文件夹文件提交 ...