今年暑假,EMQ映云科技携手开源之夏,与高校学生开展了一场精彩纷呈的开源之旅。开源之夏(OSPP)是由中科院软件所「开源软件供应链点亮计划」发起的、面向高校学生的暑期开源活动,旨在鼓励在校学生积极参与开源软件的开发维护,促进优秀开源软件社区的蓬勃发展,培养和发掘更多优秀的开发者。
开源软件的协作开发模式,是当今软件领域开展的极为成功的大规模协作实践。近年来,我国高校、科研机构与企业在开源领域不断探索前进,将开源精神薪火相传,把一个个开源项目推向更好的未来。
EMQ带着对开源的热忱与初心,携旗下EMQX、MQTTX、LF Edgee Kuiper三大开源项目首秀开源之夏,吸引了不少对前端、SQL语法、流式计算等领域感兴趣的学生。从项目选择、撰写项目申请书,到在核心研发工程师的指导下开展项目开发贡献代码,整个过程中每个参与者都收获满满。
历经三个月的项目开发和一个月的PR合并期,中选并参与EMQ开源项目的学生均顺利通过结项审核。在此,我们恭喜陈俊羽、雷佳祥和葛玉菲三位同学,也感谢各位用心敲下的每一串代码,与EMQ共同为开源物联网基础设施软件建设贡献力量。
申请者:陈俊羽南方科技大学电子科学与技术专业
项目描述:EMQX是EMQ旗下的开源大规模分布式物联网MQTT消息服务器,需要基于Erlang语言来实现一个MQTT-SNv1.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同样可以实现对于项目主页的自动化部署,从而实现了文档随项目的自托管。也正是开源之夏这样一个开放性的活动,能够让我逐步探索各种新的技术和最佳实践。
项目成果
1.完成MQTT-SN客户端实现,并提供了命令行的发布/订阅的接口。
2.完成核心功能的单元测试、与EMQX MQTT-SN网关的集成测试。本项目的覆盖率达到65%。
3.完成并发布了对外的接口文档
申请者:雷佳祥 太原科技大学计算机科学与技术学院-智能科学与技术
项目描述:MQTT X是EMQ旗下的一个强大的跨平台MQTT 5.0桌面和CLI客户端。目前已经支持并提供了完整的MQTT协议的功能测试能力,需要一些针对前端和网络功能方面的优化,使其更加完整易用。
本项目将为MQTT X添加一些可自动更新版本的功能,程序内更新后显示新版本的发布日志等的功能,用户可以减少一些手动操作来更快体验和使用到后续新版本的功能,从而提升整体的软件使用体验。
结项报告
项目完成度:根据项目的产出要求(实现自动化更新与弹出更新日志),已全部完成并上线。
代码贡献量:贡献代码量为200行左右,已发布到新版本。
学习心得
很庆幸此次暑假能发现并参加开源之夏这么有意义的活动,整个活动技术氛围十分浓厚,同学们在参与竞选的时候也表现得十分积极。开源在我看来是一个十分有意义的事,在此之前我不太理解开源,也没有接触过开源,感谢这次活动能让我步入开源的大门。
技术上的提升:
极大开拓了前端开发的视野,在做这个项目之前,我还只认为前端可能就是开发网站、APP、微信小程序的工程师,做完这个项目后,我发现前端还可以帮助PC端应用实现诸如自动化更新等强大的功能,只要是做优化、处理用户交互方面的功能都是前端的开发范围。
更加了解了Electron、Typescript等技术,对跨平台开发有更多的了解。
熟悉了基本的git操作与GitHub的提交PR的流程,以前不明白git的用处,现在极大熟练了git与GitHub的使用。
综合能力的提升:
遇到困难时,多了很多从容,善于使用搜索来了解bug并解决bug。
从学生思维转变为工程师思维,即:遇到自己不会的技术时,可以以解决问题为目的,去学习新的技术,这样效率会非常的高。
开发时会频繁的与导师沟通,需要表达清楚问题所在,所以在开发的过程中也极大的提升了我的沟通能力。
项目成果
自动化更新功能上线后已经下载目标版本的安装包,完成了各种场景下的更新测试。
申请者:葛玉菲 西安邮电大学软件工程专业
项目描述:LF Edgee Kuiper是由EMQ发起的Go语言实现的轻量级物联网边缘分析、流式处理开源软件项目,现已捐赠给LF Edge 基金会。窗口函数是流式计算的核心概念之一,也是开源边缘流式计算引擎eKuiper常用的功能之一。eKuiper实现了几种常见的时间窗口和计数窗口,但是目前对于较长时间的窗口的优化仍较为欠缺。
流式计算窗口的使用场景多种多样,业界和学术界已有较多的研究和优化方案。本项目的目标是实现并设计WASM扩展框架,方便用户使用WASM函数扩展eKuiper的处理能力。完成项目可以帮助开发者更深入地理解流式计算、大数据领域和数据库SQL引擎等方面的通用知识并应用于今后的工作学习中。
结项报告
项目完成度:已按照原定方案实施项目,并积极完成了提高部分的课题。
代码贡献量:改动26个文件,新增1355行,删除4行。
学习心得
很高兴能够参加暑期开源活动,整个活动参与下来,我从中学到了很多,不但了解到了很多开源社区,更是可以在一个社区深造,完成项目。开源在我看来是非常有意义的,不但可以开阔眼界,而且每个人都有可能为开源社区做出贡献,并在与开源同好们交流的过程中获得很大的提升。此外,想要上手某一项技术时,尽量查询社区官方文档,这是了解学习最好的途径。
技术上的提升:
了解并学习了一门新技术Webassembly,通过咨询社区导师和查阅社区文档学会这项技术的使用,学会如何运用到我的开源项目中。
熟练了代码的调试。调试也可以让我们很方便的了解代码的运行堆栈与过程。
学会如何上手了解一个社区的项目,熟悉了基本的git操作与Github提交PR的流程。
项目成果
成功将WASM引入ekuiper插件机制,使其可以在流式SQL中调用WASM形式的函数。
感谢各位导师和学生对开源项目开发的奉献,希望有意深耕开源物联网数据基础设施软件领域的学生们持续精进技术能力,永葆对开源的热爱。EMQ期待在不久的将来与各位新生力量共同打造高性能、高可用、高安全的世界级开源软件产品,服务人类未来产业与社会。
2023-04-07 EMQ 映云科技发布了 《EMQ&阿里云Lindorm联合方案:解决物联网关键业务场景数据处理难题》的文章
2023-03-24 EMQ 映云科技发布了 《来2023全球边缘计算大会与EMQ探讨云边协同落地实践》的文章
2023-03-20 EMQ 映云科技发布了 《EMQ&南洋万邦|深度激活工业数据潜力,加速绿色制造数智化转型升级》的文章
2023-02-24 EMQ 映云科技发布了 《EMQX在Kubernetes中如何进行优雅升级》的文章
2023-02-24 EMQ 映云科技发布了 《EMQX Cloud Serverless正式上线:实现三秒部署的MQTT Serverless云服务》的文章