最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

項(xiàng)目經(jīng)驗(yàn)分享|Apache ShardingSphere 倪勻博:開(kāi)源本身沒(méi)有門(mén)檻,別為自己設(shè)限

2023-09-19 11:06 作者:開(kāi)源之夏  | 我要投稿


開(kāi)源之夏個(gè)人專(zhuān)訪(fǎng)與項(xiàng)目經(jīng)驗(yàn)分享持續(xù)開(kāi)放中,歡迎已從開(kāi)源之夏畢業(yè)或正在參與開(kāi)源之夏活動(dòng)的學(xué)生、導(dǎo)師一同加入專(zhuān)訪(fǎng)行動(dòng),掃描文末二維碼填寫(xiě)專(zhuān)訪(fǎng)問(wèn)卷,與大家分享你眼中的開(kāi)源之夏!

本期項(xiàng)目經(jīng)驗(yàn)分享來(lái)自 Apache ShardingSphere 社區(qū)中選學(xué)生——倪勻博,在開(kāi)源之夏 2023 中承擔(dān)的項(xiàng)目是Apache ShardingSphere: 增強(qiáng) SQLNodeConverterEngine,支持更多的 MySQL/PostgreSQL/opengaus SQL 語(yǔ)句。

#?關(guān)于 Apache ShardingSphere

ShardingSphere 于 2018 年正式進(jìn)入 Apache 基金會(huì)孵化器,2019 年進(jìn)入 CNCF 全景圖,于 2020 年成為 Apache 頂級(jí)項(xiàng)目。2020 年度國(guó)人主導(dǎo)最活躍的 Apache 軟件基金會(huì)項(xiàng)目,2021 年度 Apache 基金會(huì)年度報(bào)告中 ShardingSphere 代碼提交數(shù)量位列前十。目前 ShardingSphere 通過(guò)了中國(guó)信通院的《可信開(kāi)源項(xiàng)目》評(píng)估認(rèn)證,并獲得了《OSCAR 尖峰開(kāi)源項(xiàng)目及開(kāi)源社區(qū)》。?

官網(wǎng):https://shardingsphere.apache.org/


# 項(xiàng)目基本信息

項(xiàng)目名稱(chēng):Apache ShardingSphere: 增強(qiáng) SQLNodeConverterEngine,支持更多的 MySQL/PostgreSQL/opengaus SQL語(yǔ)句

項(xiàng)目導(dǎo)師:端正強(qiáng),SphereEx Senior Java Engineer, ShardingSphere PMC Member

項(xiàng)目描述:ShardingSphere SQL federation 引擎提供了對(duì)復(fù)雜 SQL 語(yǔ)句的支持,它可以很好地支持跨數(shù)據(jù)庫(kù)連接查詢(xún)、子查詢(xún)、聚合查詢(xún)和其他語(yǔ)句。SQL federation 引擎的一個(gè)重要組成部分就是將 ShardingSphere 解析的 SQL 語(yǔ)句通過(guò) SQLNodeConverterEngine 轉(zhuǎn)換為 SqlNode,利用 Calcite 實(shí)現(xiàn) SQL 優(yōu)化和聯(lián)邦查詢(xún)。本項(xiàng)目主要解決 SQLNodeConverterEngine 轉(zhuǎn)換過(guò)程中出現(xiàn) MySQL/PostgreSQL/OpenGauss SQL 語(yǔ)句轉(zhuǎn)換異常的問(wèn)題。

項(xiàng)目鏈接:

https://summer-ospp.ac.cn/org/prodetail/235930182

?

# 項(xiàng)目經(jīng)驗(yàn)分享

項(xiàng)目開(kāi)發(fā)方案

項(xiàng)目開(kāi)發(fā)方案大致如下:

1. 增加 test case

/test/it/optimizer/resources/converter 中增加對(duì)應(yīng)的 test case

2. 啟動(dòng)測(cè)試對(duì)比差異

需要啟動(dòng) SQLNodeConverterEngineIT 進(jìn)行測(cè)試,比較預(yù)期與實(shí)際的差異。測(cè)試核心代碼如下:

assertConvert 方法首先獲取 expected SQL,然后使用 SQLNodeConverterEngine convert 方法獲得經(jīng)過(guò)轉(zhuǎn)換得到的 actual SQL,最后進(jìn)行比較得出差異。

3. 修改轉(zhuǎn)換邏輯

使用 calcite 獲得正確的 SQLNode 列表。

對(duì)比后進(jìn)行修改,具體修改邏輯依據(jù) case 異常情況而有所不同。?

項(xiàng)目進(jìn)度

已完成工作

31個(gè)異常 case 全部修復(fù)完成并通過(guò) SQLNodeConverterEngineIT,修改涉及的部分如下:

1. MySQL/PostgreSQL/OpenGauss StatementVistor

2. SegmentExpression,如 UnaryOperationExpression、WindowsSegment

3. ExpressionConverter 及其子類(lèi)

4. ExpectedExpressionSegment 及其實(shí)現(xiàn)

5. Converter Parser 對(duì)應(yīng)的 test case

遇到的問(wèn)題及解決的方案

項(xiàng)目開(kāi)發(fā)過(guò)程中,有難有易,可以將問(wèn)題大致分為以下四類(lèi):

1. 先前已被修復(fù),僅需增加 test case

2. Parser 語(yǔ)法解析正確,Converter 轉(zhuǎn)換錯(cuò)誤

3. Lexer 詞法解析正確,Parser 語(yǔ)法解析錯(cuò)誤,Converter 相繼出錯(cuò)

4. Lexer 詞法解析錯(cuò)誤,Parser Converter相繼出錯(cuò)

接下來(lái),將結(jié)合一些修改邏輯較為簡(jiǎn)單的 case 的修復(fù)過(guò)程,對(duì)每類(lèi)問(wèn)題的解決方案進(jìn)行概括性說(shuō)明:

1. 增加 test case

對(duì)應(yīng) PR:#28311?https://github.com/apache/shardingsphere/pull/28311

修復(fù) caseselect_where_with_simple_expr_with_not

開(kāi)發(fā)過(guò)程:

增加 test case,在 selection-expression.xml 中增加:

2. 修改 Converter 邏輯

對(duì)應(yīng) PR:#27394?https://github.com/apache/shardingsphere/pull/27394/files

修復(fù) caseselect_with_database_name_and_schema_name_in_table

開(kāi)發(fā)過(guò)程:

修改 SimpleTableConverter convert() 方法,補(bǔ)充 addOwnerNames() 方法遞歸獲取多級(jí) owner,而不限制于兩層:

3. 修改 Parser 邏輯

對(duì)應(yīng) PR:#28321?https://github.com/apache/shardingsphere/pull/28321

修復(fù) caseselect_where_with_simple_expr_with_odbc_escape_syntax

開(kāi)發(fā)過(guò)程:

測(cè)試后發(fā)現(xiàn) MySQLStatementVisitor visitRemainSimpleExpr() 方法中沒(méi)有 odbc 的轉(zhuǎn)義符情況,增加新的情況:

4. 修改?Lexer 詞法

對(duì)應(yīng) PR:#28319?https://github.com/apache/shardingsphere/pull/28319

修復(fù) caseselect_with_json_value_return_type

開(kāi)發(fā)過(guò)程:

主要針對(duì) Lexer 部分說(shuō)明:在 BaseRule.g4 中,由于 regularFunction jsonFunction 前面,而 jsonFunction 的語(yǔ)法規(guī)則包含于 regularFunction,導(dǎo)致 jsonFunction 無(wú)法被識(shí)別。

因此,修改 BaseRule.g4 中的 functionCall

后續(xù)工作安排

回爐重造:檢查轉(zhuǎn)換結(jié)果

1. 安排緣由

在開(kāi)發(fā)的初始階段,由于自己對(duì)項(xiàng)目結(jié)構(gòu)的不熟悉,忽略了對(duì) calcite 的對(duì)比使用,因此,在部分 Converter 的修改中,所返回的 SQLNode 可能會(huì)存在類(lèi)型上的差錯(cuò),由于 getSQL() 方法并不會(huì)進(jìn)行類(lèi)型檢查,所以可能沒(méi)有被檢查出來(lái)。

2. 后續(xù)計(jì)劃安排

對(duì)異常 case 重復(fù)方案描述中的開(kāi)發(fā)過(guò)程,修改有差錯(cuò)的返回類(lèi)型。據(jù)導(dǎo)師指導(dǎo),可以在 e2e 中增加完整測(cè)試以判斷是否正確。

長(zhǎng)路漫漫:聯(lián)邦查詢(xún)完善

1. 安排緣由

開(kāi)發(fā)完成后,導(dǎo)師與我后續(xù)溝通中提到如果后續(xù)感興趣,可以繼續(xù)參加聯(lián)邦查詢(xún)的開(kāi)發(fā),自己本身想要繼續(xù)投入 Apache ShardingSphere 社區(qū)的開(kāi)發(fā)建設(shè),因此將繼續(xù)投入開(kāi)發(fā)。

2. 后續(xù)計(jì)劃安排

開(kāi)啟聯(lián)邦查詢(xún):

主要的使用場(chǎng)景是?sharding 分片場(chǎng)景下,跨庫(kù) join 和一些復(fù)雜的子查詢(xún),聚合查詢(xún)。進(jìn)行測(cè)試,查看可優(yōu)化的查詢(xún)并進(jìn)行修改。


# 參與全過(guò)程

OSPP 的結(jié)緣始于三月份與學(xué)長(zhǎng)的一次閑聊,當(dāng)聊起自己項(xiàng)目實(shí)踐缺乏的困擾時(shí),學(xué)長(zhǎng)建議我去試試開(kāi)源之夏。

聽(tīng)說(shuō)是和開(kāi)源社區(qū)合作,挺硬核的。這就是我對(duì) OSPP 的初印象:開(kāi)源、硬核。

自此,我開(kāi)始時(shí)不時(shí)關(guān)注 OSPP 的動(dòng)態(tài),同時(shí),我也告訴了兩位小伙伴,他們也在后來(lái)成為我申請(qǐng)時(shí)的極大助力。但我其實(shí)也陷入了一種恐懼中:硬核的項(xiàng)目,我真能扛下來(lái)嗎?與小伙伴的交流中,我們都有著這樣類(lèi)似的想法:開(kāi)源,離一位大二學(xué)生來(lái)說(shuō)似乎很遠(yuǎn)。

帶著這樣的預(yù)設(shè)心理障礙,我四月初注冊(cè)的賬號(hào)到五月中旬都沒(méi)有交出一份申請(qǐng)。我不止一次焦慮地翻看著長(zhǎng)長(zhǎng)的項(xiàng)目列表,麻木地盯著一些陌生的名詞再呆滯地關(guān)閉,現(xiàn)在回想起來(lái),其實(shí)是由于自己沒(méi)有正確評(píng)估自身情況進(jìn)行篩選。開(kāi)源沒(méi)有門(mén)檻,是我自己為自己設(shè)限。

就這樣拖延到了五月中旬,看著六月初的 ddl,我和小伙伴都坐不住了,最后還是 ddl 戰(zhàn)士的形狀。終于我下定決心,想著哪怕被全聚德了也好歹試一次。首先調(diào)整了自己的心態(tài),分析了自己的技術(shù)棧:優(yōu)先級(jí)最高的是 Java 相關(guān)的項(xiàng)目,其次 C++,C, Python 都可以接受,還有這學(xué)期剛學(xué)的編譯原理課用到的 Antlr4(最后起了極其重要的作用)。根據(jù)分析結(jié)果開(kāi)始篩選后,我開(kāi)始瘋狂發(fā)郵件

一些瘋狂發(fā)的郵件

這里值得一提的是,申請(qǐng)過(guò)程中,我參考了往屆參與的前輩的分享經(jīng)驗(yàn)與官方學(xué)生指南,比如這位學(xué)長(zhǎng)(https://space.bilibili.com/31839488)在b站的分享,都給了我很大的啟發(fā),在這里特別感謝!

在得到無(wú)數(shù)個(gè)已經(jīng)有人選的回復(fù)后,我遇到了 Apache ShardingSphere 社區(qū),當(dāng)時(shí)瀏覽項(xiàng)目列表時(shí),看到技術(shù)要求時(shí)我兩眼放光:Java+Antlr4+SQL,完美符合我的技術(shù)棧,我趕緊給導(dǎo)師郵箱發(fā)了意向申請(qǐng),并且詳細(xì)地寫(xiě)清楚了自己與項(xiàng)目的適配程度。所幸,導(dǎo)師最后回復(fù)我可以進(jìn)一步加微信聯(lián)系。

負(fù)責(zé)對(duì)接的小姐姐讓我對(duì)這個(gè)社區(qū)的初印象極好,她熱情地向我介紹著社區(qū)基本情況,并鼓勵(lì)著我參與社區(qū)的建設(shè)中去。交談期間,我們驚訝地發(fā)現(xiàn)我要聯(lián)系的項(xiàng)目導(dǎo)師恰好也在南京,而這個(gè)項(xiàng)目恰好處于沒(méi)有確定人選的狀態(tài)。我激動(dòng)不已,立即問(wèn)她要到了導(dǎo)師的聯(lián)系方式,最后也順利地開(kāi)始與導(dǎo)師一對(duì)一交流。

之前提到我有查看前輩的分享,我了解到在聯(lián)系前如果能在社區(qū)內(nèi)提交一些 PR 是最好的,但這也是我比較后悔的地方:因?yàn)樽约和系帽容^晚,不得不先去確定社區(qū)人選情況。在與端正強(qiáng)導(dǎo)師交流的初期,我表達(dá)了強(qiáng)烈的參與意愿,他也給我分配了一些 good first issue,我都抓緊完成,并在同時(shí)抓緊時(shí)間寫(xiě)好項(xiàng)目申請(qǐng)書(shū),卡在了申請(qǐng)的 ddl 前提交了申請(qǐng)書(shū)。

接著就是漫長(zhǎng)的等待期,我此時(shí)的心態(tài)已經(jīng)轉(zhuǎn)變?yōu)椋?strong>無(wú)論入選與否,我都想抓住投入開(kāi)源社區(qū)貢獻(xiàn)的機(jī)會(huì)。這樣的轉(zhuǎn)變也來(lái)自于先前申請(qǐng)期交的 PR,我真正動(dòng)手做了才發(fā)現(xiàn)其實(shí)沒(méi)有自己想的那么困難。我想,這也得益于 Apache ShardingSphere 社區(qū)成熟的建設(shè),無(wú)論是詳實(shí)的 Contributor Guide,還是積極耐心的 mentor,都讓我這個(gè)小白倍感安心。但同時(shí),我想無(wú)論是哪個(gè)開(kāi)源社區(qū),幾乎都不會(huì)對(duì)貢獻(xiàn)者設(shè)置過(guò)高的門(mén)檻,實(shí)際上,基本的文檔或是測(cè)試用例的增加,都可以成為一個(gè)毫不了解的開(kāi)發(fā)者的開(kāi)始。開(kāi)源,不再是遙不可及,而是觸手可得,先前對(duì)于它的恐懼儼然消失。

所以在等待期間,我開(kāi)始利用期末周的間隙了解 Apache ShardingSphere 本身,閱讀源碼與查閱手冊(cè)的同時(shí),導(dǎo)師也會(huì)推薦給我一些 issue,我會(huì)與他進(jìn)行溝通并盡力完成,也是在此期間,我逐漸熟悉了開(kāi)源貢獻(xiàn)的整個(gè)流程,為自己的未來(lái)正式開(kāi)發(fā)打好了基礎(chǔ)。

620日,我收到了入選的通知,之前的一位小伙伴也同樣被另一個(gè)社區(qū)選中,我也想感謝陪我一起度過(guò)申請(qǐng)期的兩位小伙伴,我們一起討論申請(qǐng)經(jīng)驗(yàn),互相督促對(duì)方申請(qǐng),也分享著申請(qǐng)的喜怒哀樂(lè),在臨近期末周的高壓期間,所幸有了他們的陪伴,我才完成了申請(qǐng),也很推薦大家在申請(qǐng)時(shí)找身邊志同道合的小伙伴一起。

入選后,社區(qū)將我們拉入了OSPP群,并給我們郵寄了社區(qū)禮物,直接參與感拉滿(mǎn) :)我也在此時(shí)意識(shí)到,屬于我的OSPP 2023旅程開(kāi)始了。

ShardingSphere社區(qū)送的馬克杯,陪伴自己度過(guò)一個(gè)個(gè)開(kāi)發(fā)夜
offer!

開(kāi)發(fā)的具體內(nèi)容之前已經(jīng)做了介紹,我這里著重分享一些開(kāi)發(fā)期間的心態(tài)與技巧經(jīng)驗(yàn)。本次開(kāi)發(fā)我需要去了解三種甚至更多的 SQL,其實(shí)在先前我也只是對(duì) MySQL 的基本使用有所了解,所以顯然,我需要去了解其他未知領(lǐng)域。在大學(xué)兩年的拷打后,我深諳 STFW RTFM 的重要性,因此讀手冊(cè)和源碼成了我主要的手段。問(wèn)答社區(qū)也是一個(gè)主要的獲取渠道,當(dāng)然由于中文轉(zhuǎn)義信息的流失和某些不完善,英文資料的優(yōu)先級(jí)更高些。在開(kāi)發(fā)期間,我也逐步克服了自己的膽怯,這主要體現(xiàn)在我開(kāi)始積極主動(dòng)地去和導(dǎo)師交流提問(wèn),我也和同社區(qū)不同任務(wù)的同學(xué)在環(huán)境配置等方面有所交流,我想這也是一個(gè)對(duì)我助力很大的方面??偟膩?lái)說(shuō),自己的心態(tài)變得不再是因?yàn)樽约翰涣私舛桓疫~步,而是在自己研究和與人交流后自信前行,前者會(huì)完全阻斷后續(xù)發(fā)展,而后者則會(huì)互相促進(jìn),不斷提升自信和能力。

在項(xiàng)目的整體安排上,我原本計(jì)劃是暑假每周完成固定量任務(wù),在 8 月中旬基本完成,預(yù)留的時(shí)間一方面做緩沖,一方面也是為了做進(jìn)一步完善。這樣的安排源于自己先前對(duì)類(lèi)似 OSPP 類(lèi)的開(kāi)源項(xiàng)目的調(diào)研,不少分享提到每年都會(huì)有不能按時(shí)完成、開(kāi)發(fā)中途失蹤的情況,我自己想盡量避免這樣的情況出現(xiàn),因此給自己設(shè)置了一個(gè)相對(duì)較緊張的 ddl。

計(jì)劃趕不上變化,我在暑假開(kāi)始時(shí)還有著兩周的暑期課程,自己在 5 月初還報(bào)名參加了一個(gè)長(zhǎng)戰(zhàn)線(xiàn)的編譯器開(kāi)發(fā)比賽。這里想說(shuō)的是:計(jì)劃永遠(yuǎn)要留足變化的余地。我在重新評(píng)估了自己的暑假情況后,對(duì)計(jì)劃做了重新調(diào)整:首先是暑期課程的兩周,因?yàn)檎n程安排很滿(mǎn),每一門(mén)課程都有大作業(yè),因此前兩周我大概率無(wú)法專(zhuān)心開(kāi)發(fā),但為了不讓自己生疏,我會(huì)每天抽出小部分時(shí)間去繼續(xù)熟悉開(kāi)發(fā),對(duì)產(chǎn)出的要求不高,能解決多少是多少。而在課程結(jié)束后,除了四門(mén)課程的大作業(yè)開(kāi)發(fā),還有將持續(xù)到八月中后旬的比賽,我的計(jì)劃是同步進(jìn)行,為 OSPP 留出至少一個(gè)晚上的時(shí)間,由于比賽要到廣州進(jìn)行四天的線(xiàn)下決賽,因此比賽期間應(yīng)該是無(wú)法進(jìn)行開(kāi)發(fā)了,所以我為自己劃定在比賽結(jié)束前的產(chǎn)出要求。

在線(xiàn)下決賽結(jié)束后,我將所有精力投入了剩余任務(wù)點(diǎn)的開(kāi)發(fā),最終在八月底完成了所有 PR 的提交,在提交 PR 的同時(shí),我也已經(jīng)與導(dǎo)師同步進(jìn)行 review 對(duì)接,所以最后在 9.4,我和導(dǎo)師完成了所有 PR review 和修改,并且完成了 18 個(gè) PR 的合并,在開(kāi)發(fā)前一個(gè)月完成了開(kāi)發(fā)。

回顧整個(gè)開(kāi)發(fā)過(guò)程,最大的感受就是要學(xué)會(huì)逼自己。從開(kāi)始對(duì)開(kāi)源的原生恐懼,到后來(lái)安排爆滿(mǎn)的不斷的計(jì)劃調(diào)整,對(duì)我而言都是前所未有的挑戰(zhàn),所幸在最后,在一次次逼自己后,我才知道自己的極限不止于此,也是順利地完成了整個(gè) OSPP 的開(kāi)發(fā)過(guò)程。

最后,我要特別感謝我的導(dǎo)師端正強(qiáng)先生在我開(kāi)發(fā)全程中的悉心指導(dǎo),感謝所有陪我走過(guò)這條開(kāi)發(fā)路的人,感謝 Apache ShardingSphere 社區(qū)和開(kāi)源之夏組委會(huì)給予我這樣一次寶貴的開(kāi)源經(jīng)歷!


# 開(kāi)源之夏個(gè)人隨訪(fǎng)

--項(xiàng)目經(jīng)歷--

OSPP請(qǐng)簡(jiǎn)單介紹一下自己,并說(shuō)一下自己的開(kāi)源經(jīng)歷吧。

倪勻博大家好,我是倪勻博,來(lái)自南京大學(xué)軟件學(xué)院的大三學(xué)生。我之前沒(méi)有任何開(kāi)源的經(jīng)歷,開(kāi)源在我最開(kāi)始的想象中遙不可及,真正接觸后才發(fā)現(xiàn)是自己為它預(yù)設(shè)了很高的門(mén)檻。

OSPP這是你第一次參加開(kāi)源之夏活動(dòng),體驗(yàn)如何?最開(kāi)始是如何了解到并決定參與開(kāi)源之夏活動(dòng)的?又是如何選擇項(xiàng)目、與導(dǎo)師建立溝通、準(zhǔn)備項(xiàng)目申請(qǐng)書(shū)的?

倪勻博可以用自己的總結(jié)博客里出現(xiàn)數(shù)次的詞來(lái)概括:值得,帶給自己一次硬核不水的履歷

相對(duì)于自己先前參加的各種工程項(xiàng)目比賽,離真實(shí)的工業(yè)界開(kāi)發(fā)更近,一對(duì)一的導(dǎo)師制度,活躍的社區(qū)氛圍,對(duì)自己而言都是一次全新體驗(yàn)。

最早是在與學(xué)長(zhǎng)的一次交談結(jié)識(shí)開(kāi)源之夏,當(dāng)時(shí)自己迫切希望一份足夠硬核的履歷,學(xué)長(zhǎng)因此向我強(qiáng)烈推薦了開(kāi)源之夏。決定參與是在自己進(jìn)一步了解開(kāi)源之夏后,自己當(dāng)時(shí)對(duì)于一段貼近工業(yè)界的實(shí)踐經(jīng)歷有著強(qiáng)烈的渴望,當(dāng)看到開(kāi)源之夏繁多的社區(qū)與豐富的項(xiàng)目列表后,我確定可能我找到了。

在選擇項(xiàng)目時(shí),我自己也經(jīng)歷過(guò)糾結(jié),剛開(kāi)始沒(méi)有清晰自己的定位,隨意地翻找著不符合自己技術(shù)棧的項(xiàng)目列表,產(chǎn)生了不配的恐慌。后來(lái)根據(jù)自己擅長(zhǎng)的技術(shù)檢索,并且有優(yōu)先級(jí)地進(jìn)行逐級(jí)篩選,最終鎖定了幾個(gè)社區(qū)。

確定好自己心儀的社區(qū)后,我試著去發(fā)郵件聯(lián)系導(dǎo)師,在郵件中寫(xiě)清楚自己與項(xiàng)目適配的優(yōu)勢(shì)所在,也表達(dá)了自己對(duì)社區(qū)和開(kāi)源的興趣。在與現(xiàn)在的導(dǎo)師溝通過(guò)程中,我也去完成了社區(qū)的一些?good first issue 并提交 PR?被成功合并。由于自己申請(qǐng)的整體時(shí)間較晚,這些都是在與導(dǎo)師聯(lián)系后才做的,我想如果準(zhǔn)備時(shí)間充足,最好可以先去自己心儀的社區(qū)內(nèi)解決一些基本的 issue,能在這樣的過(guò)程中對(duì)社區(qū)整體更了解,更利于做出最后的選擇。畢竟開(kāi)源也不只是限制于 OSPP 2023,多多參與能讓自己在開(kāi)源之路上走得更遠(yuǎn)。

最后準(zhǔn)備項(xiàng)目申請(qǐng)書(shū)參考了官方模板,并且將自己整個(gè)思考和準(zhǔn)備的流程清晰地表達(dá)出來(lái),包括對(duì)于背景的調(diào)研,一些相關(guān)文獻(xiàn)文檔的閱讀和總結(jié),以及一些對(duì)于任務(wù)的初嘗試和預(yù)備計(jì)劃,這些都能讓導(dǎo)師更加確定你有完成這個(gè)任務(wù)的能力。

這里值得一提的是,整個(gè)申請(qǐng)流程我是與身邊的兩個(gè)小伙伴結(jié)伴完成的,也參考了很多平臺(tái)的經(jīng)驗(yàn)分享,這些都給我的申請(qǐng)助力不少。

OSPP你是如何在緊湊的暑假安排完成甚至提前完成項(xiàng)目開(kāi)發(fā)任務(wù)的?有什么方法或tips可以分享給大家么?

倪勻博我想提前完成的關(guān)鍵在于安排的靈活變化,因?yàn)槲覀兪钇趯W(xué)校的報(bào)名確認(rèn)都較晚,所以在六月初申請(qǐng)結(jié)束時(shí),我并不知道暑期課程與其大作業(yè)需要的時(shí)間,同時(shí)我還有另一個(gè)從五月份持續(xù)到八月中旬的比賽,我因此預(yù)留了時(shí)間給這部分不確定事件。當(dāng)開(kāi)發(fā)真正開(kāi)始后,我才確定我的暑校會(huì)持續(xù)滿(mǎn)滿(mǎn)當(dāng)當(dāng)?shù)膬芍?,伴隨而來(lái)的是四門(mén)大作業(yè),參加的另一項(xiàng)比賽也需要持續(xù)的開(kāi)發(fā)和去廣州線(xiàn)下決賽四天,我在暑假開(kāi)始時(shí)就花了半天時(shí)間規(guī)劃整個(gè)開(kāi)發(fā)計(jì)劃,核心是將時(shí)間切塊,一段時(shí)間只專(zhuān)注一件事,并且嚴(yán)格遵循自己的開(kāi)發(fā)計(jì)劃。當(dāng)然,我曾經(jīng)也有過(guò)不少拖延的案底,所以我逼自己在八月底前完成全部開(kāi)發(fā),自己為自己設(shè)限,同時(shí)這也能為我可能出現(xiàn)的意外情況預(yù)留一個(gè)月的緩沖時(shí)間。開(kāi)發(fā)過(guò)程中,因?yàn)槲矣兄煌娜蝿?wù)點(diǎn),所以在每完成部分任務(wù)點(diǎn)后,我會(huì)和導(dǎo)師及時(shí)溝通進(jìn)行 code review,一方面分?jǐn)偭藢?dǎo)師 review 的壓力,另一方面也是在自己最為熟悉改動(dòng)的時(shí)候進(jìn)行二次更改,效果更好。最后,在緊湊的時(shí)間中,我也按時(shí)完成了所有任務(wù),并且在九月初全部完成合并,也是將到十月結(jié)束前的整個(gè)計(jì)劃都提前完成了。

--參與開(kāi)源社區(qū)--

OSPP介紹一下你眼中的?Apache ShardingSphere 社區(qū)吧。

倪勻博對(duì) Apache ShardingSphere 社區(qū)的最直觀(guān)的初印象是其高 star 數(shù),連續(xù)不斷的 commit 和 PR,這讓我確信這是一個(gè)活躍的社區(qū)。當(dāng)進(jìn)一步進(jìn)行開(kāi)發(fā)后,我感嘆于其項(xiàng)目之大,覆蓋范圍之廣,自己也在社區(qū)內(nèi)遇到不少耐心熱情的開(kāi)發(fā)者。社區(qū)也在入選后第一時(shí)間建群,并郵寄給我們小禮物,參與感拉滿(mǎn)。

OSPP你覺(jué)得在開(kāi)源社區(qū)中進(jìn)行開(kāi)發(fā)工作是一種什么體驗(yàn)?社區(qū)和導(dǎo)師為你提供了怎樣的幫助?

倪勻博對(duì)于剛進(jìn)入大三的我而言,這次開(kāi)發(fā)是我第一次擺脫學(xué)校環(huán)境,走入真實(shí)開(kāi)發(fā)環(huán)境的體驗(yàn)。我是學(xué)習(xí)軟件工程的學(xué)生,因此也上過(guò)不少針對(duì)大型工程項(xiàng)目構(gòu)建的專(zhuān)業(yè)課,但其實(shí)大多都停留在抽象的理論和規(guī)模較小的學(xué)生項(xiàng)目,我自然也對(duì)這些理論沒(méi)有很深刻的理解。而在 ShardingSphere 社區(qū)的開(kāi)發(fā)則是成熟且完善的,無(wú)論是詳實(shí)的規(guī)范文檔,還是完整的 CI/CD 流程,都讓我第一次意識(shí)到了我先前接觸的理論是有必要和效果的,也更激起我對(duì)本專(zhuān)業(yè)學(xué)習(xí)的興趣。

開(kāi)發(fā)過(guò)程中,免不了遇到很多困難,從剛開(kāi)始的環(huán)境配置,到對(duì)開(kāi)源整個(gè)流程的不熟悉,再到開(kāi)發(fā)過(guò)程中的部分環(huán)節(jié),我都得到了端正強(qiáng)導(dǎo)師的悉心幫助,他會(huì)協(xié)助我去逐步完成整個(gè)開(kāi)發(fā)過(guò)程,同時(shí)也會(huì)在一些諸如代碼風(fēng)格的細(xì)節(jié)問(wèn)題上糾正我。社區(qū)內(nèi)其他的開(kāi)發(fā)者也會(huì)與交流討論,我和社區(qū)其他任務(wù)的小伙伴結(jié)識(shí),也見(jiàn)到與我進(jìn)行同一個(gè)板塊開(kāi)發(fā)的外國(guó)友人,特別感謝一路上給予我?guī)椭乃腥恕?/span>

OSPP參與開(kāi)源之夏活動(dòng)以后讓你對(duì)開(kāi)源和開(kāi)源社區(qū)有了什么新的理解?

倪勻博我想,如果回到過(guò)去,我會(huì)對(duì)自己說(shuō):開(kāi)源本身沒(méi)有門(mén)檻,不要自己為它加上沒(méi)必要的門(mén)檻。我見(jiàn)過(guò)社區(qū)內(nèi)對(duì)文檔的細(xì)節(jié)、對(duì)測(cè)試用例的增刪,也見(jiàn)過(guò)對(duì)核心功能的修改,這些都屬于開(kāi)源貢獻(xiàn)的一部分。開(kāi)源本身,就展現(xiàn)著一種面向所有人的開(kāi)放態(tài)度,開(kāi)源社區(qū)也因此而活躍,在這里,你可以暢所欲言,也可以嘗試各種新的 idea,總會(huì)遇到志同道合之人,也會(huì)有 mentor 為你答疑解難。只要愿意鉆研,就能在開(kāi)源社區(qū)中收獲成長(zhǎng)。

OSPP之后是否打算繼續(xù)參與開(kāi)源社區(qū)或開(kāi)源項(xiàng)目?為什么?

倪勻博有這樣的打算,也不僅局限于 ShardingSphere 社區(qū),這次開(kāi)源經(jīng)歷激起了我對(duì)于開(kāi)源的興趣。這樣的成長(zhǎng)是不同于學(xué)校所學(xué),也是我覺(jué)得目前我很缺乏的實(shí)踐重要來(lái)源,之前有嘗試過(guò)一些自己的實(shí)踐項(xiàng)目,但也常常會(huì)因?yàn)槿鄙偻械幕锇楹椭笇?dǎo)的老師而卡殼,開(kāi)源恰好解決了這部分問(wèn)題。

--收獲與寄語(yǔ)--

OSPP你認(rèn)為參與開(kāi)源最大的動(dòng)力是什么?參與開(kāi)源對(duì)于高校學(xué)生來(lái)說(shuō)有什么意義?

倪勻博實(shí)打?qū)嵉哪芰μ嵘?。在之前與同學(xué)的交流中,我們時(shí)常會(huì)困擾于實(shí)踐經(jīng)歷的稀缺,課程項(xiàng)目往往受限于規(guī)模和時(shí)間,無(wú)法給予我們前沿的、完整的開(kāi)發(fā)體驗(yàn),而部分競(jìng)賽、項(xiàng)目則或多或少有些水,投入時(shí)間和精力后還是原地踏步,因此,開(kāi)源經(jīng)歷顯得格外誘人。參與本身也存在驅(qū)動(dòng)力,當(dāng)自己得知自己被合并的代碼會(huì)被許多人用到,這樣的成就感也會(huì)驅(qū)使自己繼續(xù)前進(jìn)。參與開(kāi)源本身就是一段出色的履歷,能夠證明自己的代碼能力,也能去了解到前沿的技術(shù),結(jié)識(shí)更多優(yōu)秀的人。

OSPP有什么話(huà)想對(duì)打算參加開(kāi)源之夏活動(dòng)的學(xué)弟學(xué)妹們說(shuō)?

倪勻博快來(lái),有獎(jiǎng)金!

這或許只是邁向開(kāi)源的一小步,但這會(huì)是你成長(zhǎng)之路上的一大步。

END

專(zhuān)欄編輯:大夢(mèng)

校對(duì):校大山、倪勻博

制圖:GoodWhite

專(zhuān)欄投稿請(qǐng)聯(lián)系開(kāi)源小助手:kaiyuanzhixia 或?qū)诰庉嫞?/span>Hungryfish34(備注專(zhuān)欄投稿加速通過(guò)),或填寫(xiě)下方專(zhuān)訪(fǎng)信息收集問(wèn)卷。


項(xiàng)目經(jīng)驗(yàn)分享|Apache ShardingSphere 倪勻博:開(kāi)源本身沒(méi)有門(mén)檻,別為自己設(shè)限的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
林周县| 新兴县| 武鸣县| 大田县| 山阳县| 焦作市| 故城县| 仁布县| 平塘县| 楚雄市| 建阳市| 抚远县| 和顺县| 化德县| 红河县| 关岭| 个旧市| 磐石市| 漠河县| 沛县| 临清市| 龙江县| 武宣县| 章丘市| 徐水县| 增城市| 顺平县| 定南县| 苏尼特左旗| 思南县| 余姚市| 建昌县| 容城县| 邵阳市| 久治县| 承德市| 建瓯市| 伊川县| 高尔夫| 牟定县| 鄂温|