今年暑假,EMQ 攜手開源之夏,與高校學生開展了一場精彩紛呈的開源之旅。開源之夏(OSPP)是由中科院軟件所「開源軟件供應鏈點亮計劃」發起的、面向高校學生的暑期開源活動,旨在鼓勵在校學生積極參與開源軟件的開發維護,促進優秀開源軟件社區的蓬勃發展,培養和發掘更多優秀的開發者。
開源軟件的協作開發模式,是當今軟件領域開展的極為成功的大規模協作實踐。近年來,我國高校、科研機構與企業在開源領域不斷探索前進,將開源精神薪火相傳,把一個個開源項目推向更好的未來。
EMQ 帶著對開源的熱忱與初心,攜旗下 EMQX、MQTT X、LF Edge eKuiper 三大開源項目首秀開源之夏,吸引了不少對前端、SQL 語法、流式計算等領域感興趣的學生。從項目選擇、撰寫項目申請書,到在核心研發工程師的指導下開展項目開發貢獻代碼,整個過程中每個參與者都收獲滿滿。歷經三個月的項目開發和一個月的 PR 合并期,中選并參與 EMQ 開源項目的學生均順利通過結項審核。在此,我們恭喜陳俊羽、雷佳祥和葛玉菲三位同學,也感謝各位用心敲下的每一串代碼,與 EMQ 共同為開源物聯網基礎設施軟件建設貢獻力量。
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 同樣可以實現對于項目主頁的自動化部署,從而實現了文檔隨項目的自托管。也正是開源之夏這樣一個開放性的活動,能夠讓我逐步探索各種新的技術和最佳實踐。
項目成果:
1、完成 MQTT-SN 客戶端實現,并提供了命令行的發布/訂閱的接口。
2、完成核心功能的單元測試、與 EMQX MQTT-SN 網關的集成測試。本項目的覆蓋率達到 65%。
3、完成并發布了對外的接口文檔
MQTT X 旗下項目|Electron 桌面客戶端軟件的自動更新
申請者:雷佳祥 太原科技大學計算機科學與技術學院-智能科學與技術
項目描述:MQTT X 是 EMQ 旗下的一個強大的跨平臺 MQTT 5.0 桌面和 CLI 客戶端。目前已經支持并提供了完整的 MQTT 協議的功能測試能力,需要一些針對前端和網絡功能方面的優化,使其更加完整易用。本項目將為 MQTT X 添加一些可自動更新版本的功能,程序內更新后顯示新版本的發布日志等的功能,用戶可以減少一些手動操作來更快體驗和使用到后續新版本的功能,從而提升整體的軟件使用體驗。
結項報告:
項目完成度:根據項目的產出要求(實現自動化更新與彈出更新日志),已全部完成并上線。
代碼貢獻量:貢獻代碼量為 200 行左右,已發布到新版本。
學習心得:
很慶幸此次暑假能發現并參加開源之夏這么有意義的活動,整個活動技術氛圍十分濃厚,同學們在參與競選的時候也表現得十分積極。開源在我看來是一個十分有意義的事,在此之前我不太理解開源,也沒有接觸過開源,感謝這次活動能讓我步入開源的大門。
技術上的提升:
·極大開拓了前端開發的視野,在做這個項目之前,我還只認為前端可能就是開發網站、APP、微信小程序的工程師,做完這個項目后,我發現前端還可以幫助 PC 端應用實現諸如自動化更新等強大的功能,只要是做優化、處理用戶交互方面的功能都是前端的開發范圍。
·更加了解了 Electron、Typescript 等技術,對跨平臺開發有更多的了解。
·熟悉了基本的 git 操作與 GitHub 的提交 PR 的流程,以前不明白 git 的用處,現在極大熟練了 git 與GitHub 的使用。
綜合能力的提升:
·遇到困難時,多了很多從容,善于使用搜索來了解 bug 并解決 bug。
·從學生思維轉變為工程師思維,即:遇到自己不會的技術時,可以以解決問題為目的,去學習新的技術,這樣效率會非常的高。
·開發時會頻繁的與導師溝通,需要表達清楚問題所在,所以在開發的過程中也極大的提升了我的溝通能力。
項目成果:
自動化更新功能上線后已經下載目標版本的安裝包,完成了各種場景下的更新測試。
LF Edge eKuiper 旗下項目|流式計算窗口函數優化探索
申請者:葛玉菲 西安郵電大學軟件工程專業
項目描述:LF Edge eKuiper 是由 EMQ 發起的 Go 語言實現的輕量級物聯網邊緣分析、流式處理開源軟件項目,現已捐贈給 LF Edge基金會。窗口函數是流式計算的核心概念之一,也是開源邊緣流式計算引擎 eKuiper 常用的功能之一。eKuiper 實現了幾種常見的時間窗口和計數窗口,但是目前對于較長時間的窗口的優化仍較為欠缺。流式計算窗口的使用場景多種多樣,業界和學術界已有較多的研究和優化方案。本項目的目標是實現并設計 WASM 擴展框架,方便用戶使用 WASM 函數擴展 eKuiper 的處理能力。完成項目可以幫助開發者更深入地理解流式計算、大數據領域和數據庫 SQL 引擎等方面的通用知識并應用于今后的工作學習中。
結項報告:
項目完成度:已按照原定方案實施項目,并積極完成了提高部分的課題。
代碼貢獻量:改動 26 個文件,新增 1355 行,刪除 4 行。
學習心得:
很高興能夠參加暑期開源活動,整個活動參與下來,我從中學到了很多,不但了解到了很多開源社區,更是可以在一個社區深造,完成項目。開源在我看來是非常有意義的,不但可以開闊眼界,而且每個人都有可能為開源社區做出貢獻,并在與開源同好們交流的過程中獲得很大的提升。此外,想要上手某一項技術時,盡量查詢社區官方文檔,這是了解學習最好的途徑。
技術上的提升:
·了解并學習了一門新技術 Webassembly,通過咨詢社區導師和查閱社區文檔學會這項技術的使用,學會如何運用到我的開源項目中。
·熟練了代碼的調試。調試也可以讓我們很方便的了解代碼的運行堆棧與過程。
·學會如何上手了解一個社區的項目,熟悉了基本的 git 操作與 Github 提交 PR 的流程。
項目成果:
成功將 WASM 引入 ekuiper 插件機制,使其可以在流式 SQL 中調用 WASM 形式的函數。
后記
感謝各位導師和學生對開源項目開發的奉獻,希望有意深耕開源物聯網數據基礎設施軟件領域的學生們持續精進技術能力,永葆對開源的熱愛。EMQ 期待在不久的將來與各位新生力量共同打造高性能、高可用、高安全的世界級開源軟件產品,服務人類未來產業與社會。
審核編輯黃昊宇
-
開源
+關注
關注
3文章
3251瀏覽量
42407 -
EMQX
+關注
關注
0文章
8瀏覽量
267
發布評論請先 登錄
相關推薦
評論