目录

🍅点击这里查看所有博文

  随着自己工作的进行,接触到的技术栈也越来越多。给我一个很直观的感受就是,某一项技术/经验在刚开始接触的时候都记得很清楚。往往过了几个月都会忘记的差不多了,只有经常会用到的东西才有可能真正记下来。存在很多在特殊情况下有一点用处的技巧,用的不多的技巧可能一个星期就忘了。

  想了很久想通过一些手段把这些事情记录下来。也尝试过在书上记笔记,这也只是一时的,书不在手边的时候那些笔记就和没记一样,不是很方便。

  很多时候我们遇到了问题,一般情况下都是选择在搜索引擎检索相关内容,这样来的也更快一点,除非真的找不到才会去选择翻书。后来就想到了写博客,博客作为自己的一个笔记平台倒是挺合适的。随时可以查阅,不用随身携带。

  同时由于写博客是对外的,既然是对外的就不能随便写,任何人都可以看到。经验对于我来说那就只是经验而已,公布出来说不一定我的一些经验可以帮助到其他的人。遇到和我相同问题时可以少走一些弯路。

  既然决定了要写博客,那就只能认真去写。不管写的好不好,尽力就行。千里之行始于足下,一步一个脚印,慢慢来 ,写的多了慢慢也会变好的。权当是记录自己的成长的一个过程,等到以后再往回看时,就会发现自己以前原来这么菜😂。

  本系列博客所述资料均来自互联网,并不是本人原创(只有博客是自己写的)。出于热心,本人将自己的所学笔记整理并推出相对应的使用教程,方面其他人学习。为国内的物联网事业发展尽自己的一份绵薄之力,没有为自己谋取私利的想法。若出现侵权现象,请告知本人,本人会立即停止更新,并删除相应的文章和代码。

1、什么是开源?

  我们平时经常上github/gitee去查阅下载一些项目的源码,现成的代码拿来就用,白嫖就是爽。
在这里插入图片描述
  那到底开源项目到底是什么?

2、为何做开源?

  做开源不挣钱,这是确定的,但是为何要做开源,而且那么多人坚持做开源呢 —— 他们不是完全为了兴趣爱好,完全下班没事儿干。人只要付出劳动、付出努力,都是奔着目的性去的,有兴趣的原因,但是能让自己持之以恒做下去的,肯定不是兴趣。

  其实这个问题很简单,就像看书不挣钱(买书还花钱呢),但是为何要看书呢?因为大家都知道看书能提高自己的知识面和能力。而做开源也有相似的想过,只不过很多人没接触过不知道而已。我总结了如下几个理由:

  全面提高编程能力。 开源项目的发起者需要从 0 打造,每部分代码都需要自己负责。不像在公司中的一颗螺丝钉,只需要做好某一块就行了。
  提高自己的社区知名度。 github 上的 star 能间接的反应你的身价,它能让你得到业内认可。
  锻炼自己的产品意识。 因为做开源不再是单纯的技术活,UI、运维、推广、收集反馈、甚至成本预算,这些都得考虑。
  技术范儿、极客精神。 作为一名程序猿,能业余打造一款开源产品是一件很帅的事情,满足自己的虚荣心。
  有了充分的理由,那就开干!

3、开源方向

3.1、开源目标

  一些早期就知名的开源作品,很多都是因为作者在工作中遇到一个需求,而这个需求目前还没有开源产品去满足,因此自己做一个。但是对于我们大众基层程序猿,天天写业务代码,遇到这种需求的概率不是特别大。想要知道做什么,你就得先明白做开源的一些期望,然后再去想做什么。

  对于公司而言做开源就是为了提升公司在业界的知名度,说起 上海睿赛德电子科技有限公司,有谁知道是什么公司吗。

3.2、不做什么

  即做出来,推出去,要快。即,你做的快,别人用的也快。按照这种期望往下想,首先你能排除不做什么:

  大型的框架,比如rtt。 短期做不完,使用成本高。
  模仿已经成熟轮子,比如cjson、paho-mqtt、lvgl这些 。 有成熟方案,用户不会换。
  小众的东西,比如我们的产线工具。 基本没人用。

3.3、做什么

  排除以上这些,还剩下的范围就可以是我们可以考虑的:

  小而精的工具。 开发快,使用成本低。

  要有特色,哪怕是一个。 要和别人不一样,差异化竞争。比如llcom,就是可以在串口工具里面写Lua脚本控制工具的行为,这就比较有意思。

  受众要尽可能地广,目标使用者要足够的多。

  其中特色和受众广这个我觉得是最重要的,有时候一个东西实际没啥实际的作用,但是它start还挺多的。就这个我前几天看到的一个有趣的项目Kyome22/RunCat_for_windows,这个成绩看起来就非常的不错。

在这里插入图片描述

  实际这玩意就是个检测CPU占用率,CPU占用率越高,猫跑得越快。受众也是非常的广,只要是个用电脑的人都有可能会用它。

在这里插入图片描述

4、开源项目包含什么

  开源项目并不是只是一堆源代码。我总结了至少需要有以下内容:

4.1、源码

  源码由开源项目的发起者和长期贡献者共同维护,可直接修改项目代码。

  短期贡献者也可修改/提交代码,不过需要经过项目发起者审查,才可合入主干。前提是项目发起者制定了相应的规则,允许项目之外的成员提交代码,让其他人能够参与进来。

  上面提到了三个角色,这里简单说下我的理解

  • 发起者:要有着作为架构师掌握全局的能力,是方向的掌控者,是规则的制定者,也要对项目所涉及到的所有内容都一清二楚。

  • 长期贡献者:掌握一个或多个功能的开发/维护,对代码总体有一定的掌握,清楚提交代码意味着什么。

  • 短期贡献者:新增组件,修改部分遇到的bug,按照代码贡献规则发起pull requests。

4.2、代码贡献规则

  比如rtt在pull requests提交代码时需要填写提交说明

  这是RTT制定的代码编写规范

4.3、文档(Wiki)

  • 二次开发文档,项目中涉及到关键点(技术栈、函数、类)

  • 用户使用文档,我怎么用这个项目(未必需要参与到开源项目的开发中来)

  • 代码编写规则

  • 开源许可证

4.4、开发环境&运行环境

  • 二次开发者按照文档说明可以正常配置出开发环境

  • 使用者按照文档说明可以正常把项目用起来

4.5、问题(issues)

  • 用户提问,维护者答复

  • 问题共享(而不是私聊)有助于其他人遇到相同问题时去查阅

  • 提开发需求

  • 反馈BUG

4.6、问题列表和升级计划

  主要是针对5.4中说到的3、4点。记录当前问题,指定开发计划,以及何时解决、何时升级。

5、其他配套设施

  要做成一个成熟靠谱的开源软件产品,除了以上源码相关的方面,还需要以下配套的设施,才能完备。

  • 官网,如 rt-thread、wangEditor、LuatOS
  • 文档,可以和官网整合在一起
  • 问答社区, github issue
  • 及时交流社区,即 QQ 群、微信群

  那么本篇博客就到此结束了,这里只是记录了一些我个人的学习笔记,其中存在大量我自己的理解。文中所述不一定是完全正确的,可能有的地方我自己也理解错了。如果有些错的地方,欢迎大家批评指正。如有问题直接在对应的博客评论区指出即可,不需要私聊我。我们交流的内容留下来也有助于其他人查看,说不一定也有其他人遇到了同样的问题呢😂。

Logo

GitCode 官方账号,发布 GitCode 官方信息。包括产品更新、官方活动及优秀项目/组织推荐等。官方客服邮箱:kefu@gitcode.com

更多推荐