今年暑假,EMQ 携手开源之夏,与高校学生开展了一场精彩纷呈的开源之旅。开源之夏(OSPP)是由中科院软件所「开源软件供应链点亮计划」发起的、面向高校学生的暑期开源活动,旨在鼓励在校学生积极参与开源软件的开发维护,促进优秀开源软件 区的蓬勃发展,培养和发掘更多优秀的开发者。
开源软件的协作开发模式,是当今软件领域开展的极为成功的大规模协作实践。近年来,我国高校、科研机构与企业在开源领域不断探索前进,将开源精神薪火相传,把一个个开源项目推向更好的未来。
EMQ 带着对开源的热忱与初心,携旗下 EMQX、MQTT X、LF Edge eKuiper 三大开源项目首秀开源之夏,吸引了不少对前端、SQL 语法、流式计算等领域感兴趣的学生。从项目选择、撰写项目申请书,到在核心研发工程师的指导下开展项目开发贡献代码,整个过程中每个参与者都收获满满。
EMQX 旗下项目|MQTT-SN 客户端实现
申请者:陈俊羽 南方科技大学电子科学与技术专业
项目描述:EMQX 是 EMQ 旗下的开源大规模分布式物联 MQTT 消息服务器,需要基于 Erlang 语言来实现一个 MQTT-SN v1.2 客户端,来完善 EMQX 对 MQTT-SN 关的功能测试和应用。
目前 Github 上主要的 MQTT-SN 客户端均为 C 或 C++ 语言版本,难以直接原生嵌入 Erlang 语言的 MQTT-SN 关中,本项工作的完成,也能够填补开源 区的这一空白。查阅项目地址。
结项 告
项目完成度:实现了 MQTT-SN 数据包的序列化和反序列化处理,实现了使用状态机对协议交互逻辑的处理,实习了 MQTT-SN 客户端的单元测试与集成测试。
代码贡献量:改动 21 个文件,新增 3828 行。
学习心得
非常开心能再次投入到开源之夏的活动,在导师的帮助下,顺利完成整个项目的开发,我感到非常幸运。
我选择这个项目的初衷是,在我学习了 Erlang 和 Elixir 语言的语法和基础知识之后,希望能有一个系统性的项目,能够让我进行函数式编程语言的实际应用,通过不同语言之间的对比,加深对于编程语言设计和操作系统的了解。
当了解到 EMQ 区主要使用的语言,是比较特别的 Erlang、Rust 和 Haskell 时,我就对这个 区有了较大的好感,包括后面和导师对接时,其专业水平令我非常认可。在编程上我有一定的基础,加上曾参与过两届开源之夏,我尽可能优先自己解决问题,但也有对于函数式编程和 MQTT-SN 协议不甚了解的地方,比如关于 Erlang 特有的 Actor 模型和使用的 mock 框架,每次当我询问导师时,都非常热情地帮我解答,也都马上能够迅速解决我的问题。
除了对项目的实现以外,我还尝试将某些较新的理念应用在项目中,比如,之前我已经了解到 Github Action 可以实现基于 CI/CD 的自动化检查测试,但这次在项目实施的过程中,我需要实现 HTML 格式文档的部署时,了解到 Action 同样可以实现对于项目主页的自动化部署,从而实现了文档随项目的自托管。也正是开源之夏这样一个开放性的活动,能够让我逐步探索各种新的技术和最佳实践。
项目成果
-
完成 MQTT-SN 客户端实现,并提供了命令行的发布/订阅的接口。
- 完成并发布了对外的接口文档
后记
感谢各位导师和学生对开源项目开发的奉献,希望有意深耕开源物联 数据基础设施软件领域的学生们持续精进技术能力,永葆对开源的热爱。EMQ 期待在不久的将来与各位新生力量共同打造高性能、高可用、高安全的世界级开源软件产品,服务人类未来产业与 会。
原文链接:https://mp.weixin.qq.com/s/X0G0ZZP1OkLxPpGBd8r0YQ
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!