总结了一些真心话,对于如何做好一个开源项目有很大的帮助。本文将从项目背景、项目的开发历程、项目规划、技术栈总结进行项目复盘,讲一讲如何保持开源项目的生命力、如何选择优化的方向、开源项目究竟会帮助到谁?

1

项目介绍

开源项目 newbee-mall 项目是一套电商系统,包括 newbee-mall 商城系统及 newbee-mall-admin 商城后台管理系统,基于 Spring Boot 2.X 及相关技术栈开发。前台商城系统包含首页门户、商品分类、新品上线、首页轮播、商品推荐、商品搜索、商品展示、购物车、订单结算、订单流程、个人订单管理、会员中心、帮助中心等模块。后台管理系统包含数据面板、轮播图管理、商品管理、订单管理、会员管理、分类管理、设置等模块。

于 2019 年 10 月份正式开源,之后在项目改进的同时,又加入了 Vue 技术栈改造成前后端分离版本,Vue3 发布 release 版本后,又使用 Vue3 进行了重构。

仓库地址为:

GitHub :https://github.com/newbee-ltd

Gitee:https://gitee.com/newbee-ltd

目前,newbee-mall 系列开源项目中的几个仓库,Star 数量加起来也差不多 9k 左右,如下图所示。

当然,并不是一个非常好的数据,却是我做开源项目以来受到最多关注的项目了,之前也做了一些开源项目,基本都是1k、2k star的样子。

2

开源历程和项目规划

在 GitHub 上写一些开源项目,这件事情我做了 5 年了:

从 2017 年的第一个 ssm-demo 开源项目,到如今的 newbee-mall 系列项目,我也没想到能够一直坚持了下来。

至于为什么会写这个商城项目呢?大家通过我过往做的开源项目应该能看出一二,最开始做的是基础的 demo,后面是做一些小项目,之后也写过开源博客项目,由小项目到大项目,这是一个循序渐进的过程罢了,在三年时间里慢慢过渡,从无到有、由小至大,最终有了这样一系列的项目,在 2019 年开始开发并维护 newbee-mall 系列的开源项目。至于为什么会选择走商城方向,主要是在几个交流群里和大家沟通过,貌似大家对商城类的项目更为感兴趣,所以就决定开发了它。

这个项目其实 2018 年就在开发计划中了,但是一直没想好怎么做,做哪些功能,页面又怎么写,一方面因为这种项目比较麻烦,毕竟不是写一个学生管理系统,另一方面是工作比较忙,也一直没时间去做,所以一直拖到 2019 年的下半年。自从在网上写博客、在 GitHub 上开源了几个小项目之后,很多朋友都会选择与我沟通,或者问我一些问题,这其中有相当一部分还是学生或者 1-3 年经验的朋友,通过与他们的沟通呢,我在写项目和想问题的时候也有所改变,目前做的几个项目都更注重一些基础的东西:别太麻烦、运行顺利、别缺代码。

回到项目本身,通过上面说的几点呢,相信大家也能够看出来,我就是想写一个能够让大部分人,即使是初学者或者在校大学生,都能够运行起来的开源商城项目。

于是,新蜂商城就开源了。

随后的两年,newbee-mall 系列仓库也在不断地优化:前后端分离版本的开发、newbee-mall-plus 升级版本的开发、加入 Vue3 技术栈。

2020 年 5 月,新蜂商城 Vue 版本开源了。

2020 年 11 月,新蜂商城 Vue3 版本开源了。

2021 年 1 月,newbee-mall-plus 版本启动开发,计划加入三个功能:秒杀功能、优惠券、对接支付宝。

2021 年 3 月底,newbee-mall-admin 将会启动开发,使用 Vue3 + element plus 重构后台管理系统。

项目复盘1:
开发和维护一个开源项目,是一个长期的工作,并不是一朝一夕的事情,不是说开源了就没事了,要坚持长期维护,保持一个开源项目的长久生命力。一个开源项目的生命力,更多的还是掌握在作者手上,作为领航的舵手,一定要让舰船扬帆远航。

3

程序员那么可爱,怎么可能有坏心眼呢?

做开源项目也不是一件容易的事情,首先是要挤时间,其次是要花费更多的精力,对人的身体和精神都有一定的消耗。

除此之外,随着面对的人越来越多,听到的声音也越来越嘈杂,此时已经不是面向老板或者产品经理编程,而是面向技术人的编程。声音多了,其中肯定有好的,这是对作者的鼓励,也难免会有一些不好听的,这是对作者的质疑。

因为这个项目,收获了很多的朋友,收到了鼓励和感谢,有人会说谢谢十三哥,有人会说这个项目帮助了他学到了很多实战知识,有人说因为这个项目的开发经验而找到了工作、完成了课程作业等等。也收到了一些恶评和质疑,有些话我就当作没看到,有些人我也没时间搭理,在网上吵架是很没意思的一件事,首先,不一定不能吵赢这些吵架的高手,其次,即使你吵赢了,又能如何?而且有些评论虽说阴阳怪气,但是也不至于去和人家吵吵,继续做自己的事情就好了,本来就那么忙,哪有时间去吵架。

还有,因为这个开源项目,也发生了很多搞笑的事情,之前也写过文章记录。

举一个常见的例子,不只是我的开源项目,我看到其它开源项目中也会经常出现这种评论:

你写这种项目开源项目有什么用?

当然,上面这个问法我已经做了美化,有很多话是没法写在文章里的,我一般会向阴阳怪气的人这样回复:

不同阶段的开发人员的需求是不同的,你觉得这是一个很简单的项目所以会提出这些质疑,但是也有很多人一直催着我继续更新,因为你们所处的阶段是不同的,很多人是需要一些“不那么复杂”的基础项目去练手的,newbee-mall 系列的几个开源仓库都是如此,代码全部免费开源,有需要的人可以直接上手练习并掌握一些实战技巧,实用和免费这两点是非常重要的。我只是努力在完善一个项目,仅此而已,其实开源项目都需要宣传和关注,如果没有一点点数据的话,这个项目的作者也很快就会放弃维护的,这些都是很现实的问题。还有,做一个心理阳光的人,别总是动一些歪心思。

项目复盘2:
面对一些不友好的评论,保持平常心,如果是正经请教的就好好回复,遇到不懂礼貌的,一笑置之算了,我们程序员群体都是很可爱的人,程序员那么可爱,怎么可能有坏心眼呢?

4

技术栈总结和项目开发过程

开始,newbee-mall 只是一个供后端开发人员学习的项目,技术栈也都是偏后端,后来也加入了 Vue、Vant 等前端技术栈,这样,对于前后端开发人员来说,都是一个不错的练手项目,当前使用到的技术栈如下:

  • spring-projects

  • thymeleaf

  • mybatis

  • ColorlibHQ

  • tonytomov

  • t4t5

  • skytotwo

  • EasyCaptcha

  • wangeditor-team

  • Vue

  • Vue-Router

  • Vuex

  • Vant

前后端技术都有,主要是当下企业开发中比较常用的技术栈,后续会继续整合其它的技术栈到项目中,比如 Redis、Elastic Search、React 等等技术栈。

有些内容是自己琢磨的,更多地则是要多听一听用户的意见,整合他们的建议和自己的想法,然后做一个作者满意、用户也满意的修改,让项目更健康的走下去。

虽然不是公司里的项目,但是做开源项目也需要非常认真,不能吊儿郎当。开源项目也需要详细的设计和规划,加入什么功能,用什么技术栈,然后再花时间去测试和复盘,如果有问题及时调整,当然,每次我有新的想法也会在群里通知大家或者整理一篇文章分享出来,根据大家的建议再进行调整。

项目复盘3:
多听一听用户的声音,做开源项目也要认认真真,不能随随便便,但行好事,莫问前程。

5

佛曰:“渡人渡己”

《佛典》:“自未得渡而渡人者,菩萨发心,又自渡生死苦海,而又渡人。”

我并不是一个信佛之人,只是看到了这段话,觉得用在这里比较贴切。

确实,因为 newbee-mall 系列开源项目的原因,很多人都受到了帮助、得到了一些启发,也收到很多人的感谢信息,这一点,让我觉得很感动。作为作者,我并没有想到这个项目会如此的受欢迎,因为我之前也做过几个开源项目,最多也就 1k 左右的 Star,所以,直到今天我也非常激动。

静下来的时候,就会胡思乱想一些问题:我是谁?我从哪里来?我要到哪里去?

但是通常都得不到答案,有时候人会变得很沮丧和迷茫,因为生活或者工作中的事情,忽然变得很心烦,有时候甚至会不知道未来在哪里,不知道活着的意义在哪里。

PS:偶尔会胡思乱想,大部分时间还是非常正常的。

因为这个项目,让我觉得我能帮助到别人,这是一件非常非常不同的感觉,以前也有过类似的经历,比如给同桌讲题、帮朋友上分、给同事解决bug、帮家人分担压力,这些都会让自己觉得自己是一个可以被依靠的人,能够感觉到生活的意义。但是随着这个项目被越来越多的人所知晓,意义就变了,我不再是帮助一个人两个人,而是一个群体,这确实是一个船新的版本。

工作和生活都因为这个项目有了一些改变,每天都要花一些时间去学习、去和更多的人交流,每天都在进步,每天都很忙,也没有时间去胡思乱想了,最大的一点改变,莫过于因为这个开源项目而出版实体书这件事情,后面有时间我会写下这段经历。

项目复盘4:
帮助别人实际上是完善自身,提升自己又能更好的帮助别人,这或许就是佛说的“渡人渡己”吧。

6

总结思考

项目复盘1:
开发和维护一个开源项目,是一个长期的工作,并不是一朝一夕的事情,不是说开源了就没事了,要坚持长期维护,保持一个开源项目的长久生命力,至于一个开源项目的生命力,更多的还是掌握在作者手上。作为领航的舵手,一定要让舰船扬帆远航。

项目复盘2:
面对一些不友好的评论,保持平常心,如果是正经请教的就好好回复,遇到不懂礼貌的,一笑置之算了,我们程序员群体都是很可爱的人,程序员那么可爱,怎么可能有坏心眼呢?

项目复盘3:
多听一听用户的声音,做开源项目也要认认真真,不能随随便便,但行好事,莫问前程。

项目复盘4:
帮助别人实际上是完善自身,提升自己又能更好的帮助别人,这或许就是佛说的“渡人渡己”吧。

以上就是我对于 newbee-mall 这个开源项目的总结和复盘,当然,还有更多内容可以整理进来,但是鉴于篇幅原因(字数已经 3700+ 了),后面有时间会继续分享的。

有什么问题的话,大家可以给我留言,我们一起讨论。

● 一个基于 Vue3 的开源项目,3个月时间 star 终于破千!

● newbee-mall 开源商城新计划:秒杀功能、优惠券、对接支付宝

● 开源啦!一个基于 Vue 3 + Vant 3 的商城项目

● 程序员的副业:我靠写作赚到的第一笔收入

● Vue+Spring Boot 前后端分离的商城项目开源啦!

● 「2020年中总结」这半年我又做了哪些副业?

● 我在地铁上写了一个开源商城项目

● 开源项目在闲鱼、b 站上被倒卖?这是什么骚操作?

● 年终总结-2019年,我的副业元年

● 程序员,你怎么这么忙?

“程序员的小故事”公众号中除注明转载/出处外,皆为作者原创,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。

开源1年半,newbee-mall 收获 9K star|项目复盘相关推荐

  1. 27亿参数的「野生版」GPT-3开源,GitHub项目2.9K Star量

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 OpenAI 著名的语言模型 GPT-3 可以懂数学.翻译文字,还能写论文拿到及格成绩 ...

  2. GitHub 超全机器学习工程师成长路线图,开源两日收获3700+Star!

    作者 | 琥珀 出品 | AI科技大本营(ID:rgznai100) 近日,一个在 GitHub 上开源即收获了 3700+ Star 的项目,引起了业界的注意.据介绍,该项目以 TensorFlow ...

  3. 卧槽!GitHub标星7.9K star,抢茅台酒脚本竟然开源了!网友:已抢到,真香!

    点击上方"Github爱好者社区",选择星标 回复"资料",获取小编整理的一份资料 作者:GG哥 来源:GitHub爱好者社区(github_shequ) 这是 ...

  4. GitHub 吸星大法 - 一年收获 2000+ Star 的心得

    1. 前言 笔者做前端开发这些年,几乎每天都会刷 GitHub,也时不时在上面分享博客和做一些开源项目,也算是 GitHub 的重度使用者了,其中也掌握了一定的技巧,并在一年内收获了 2000+ St ...

  5. 如何仅凭 README 就名列 GitHub No.1 并收获上万 Star?

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 一个程序员买房经验总结项目名列 GitHub No.1,并收获上万 Star,见此让我不由得 ...

  6. 中文纠错Pycorrector是如何收获2000 Star的?

    (导语) 计算机行业发展至今,"开源"已逐渐成为技术茁壮成长最肥沃的土壤.而在中国,企业开源热闹非常,个人开源也方兴未艾.尽管个人开源困难重重,还是有一些开发者仍然在努力做着这样& ...

  7. 中文文本纠错神器Pycorrector是如何收获2000 Star的?

    点击左上方蓝字关注我们 计算机行业发展至今,"开源"已逐渐成为技术茁壮成长最肥沃的土壤.而在中国,企业开源热闹非常,个人开源也方兴未艾.尽管运营一个个人开源项目需要耗费大量时间精力 ...

  8. Mall电商实战项目专属学习路线,主流技术一网打尽!

    之前经常有朋友问我,mall项目该如何学习,按照什么顺序学习?我一般都会把<mall学习教程>的目录发给他,希望他按照教程顺序学习.我一直认为基于项目实战的学习,可以更好的掌握技术.mal ...

  9. Mall电商实战项目(一)

    Mall电商实战项目 一.项目搭建 一.mall整合SpringBoot+MyBatis搭建基本骨架 1.mysql数据库环境搭建 2.项目使用框架介绍 1.SpringBoot 2.PageHelp ...

最新文章

  1. 张小明教授+计算机,香港浸会大学、实验室兼职导师张晓明教授访问实验室并做学术报告...
  2. html悬浮的图片居中,HTML/CSS:图片居中(水平居中和垂直居中)
  3. Android笔记 使用AIDL和远程服务实现进程通信
  4. mariadb java_java 连接mariadb 无法获取数据源的问题,在ubuntu上部署的时候(原创)...
  5. python画六角图_六角图的画法
  6. 06.大厂面试题:请讲下SpringBoot的日志框架原理
  7. [Angular 2] Using events and refs
  8. Android高效加载大图、多图解决方案,有效避免程序内存溢出现象
  9. java继承小程序_Java小程序---接口中抽象方法的实现(解决了JAVA语言不能多继承的问题)...
  10. 3DS更新R4烧录卡内核
  11. RPGMakerMV的插件学习
  12. linux系统安装kms,Linux安装部署KMS服务器
  13. 最全SSH命令 - 11种用法
  14. 吴恩达深度学习课程笔记(二):改善深层神经网络
  15. win10怎么快捷锁定计算机,win10一键快速锁屏快捷键的两种使用方法
  16. mysql查询当前用户中所有的表空间_oracle 查看用户所在的表空间
  17. win7防火墙规则设置
  18. 汇编语言_使用int16h中断读取键盘缓冲区
  19. 【Day8.1】兰州牛肉拉面
  20. 北京爱立信的面试题及流程

热门文章

  1. 学好C++该看什么书呢?
  2. 你心目中的企业应用开发框架该怎样构建?
  3. 刚入职一个月的硬件工程师谈谈感受,分享一下个人的心得体会
  4. 第一章 Shell专题之文本处理工具(grep、cut、sort、uniq、tee、diff、paste、tr)
  5. 四年Java 欢聚时代面经,已拿offer
  6. 微信小程序---上传图片(视频)功能(单个/多个)
  7. 软件开发人员角色定位和分工
  8. windows socket网络编程一:最简单的服务器和客户端搭建
  9. nginx—status的使用
  10. 区块链蓝图世界的展望-区块链4.0