普通视图

发现新文章,点击刷新页面。
昨天以前Sean's Note

ICANN75 - 吉隆坡之旅

2022年9月23日 20:10

很高興這次能在 NII 舉辦的「ICANN 公共政策研習營」獲選為優良學員,受邀參與位於馬來西亞吉隆坡的 ICANN75 年度會議,並提供旅費補助。

Note: There’s also a English version of this post.

前情提要

ICANN 是統籌分配管理全球 IP 位址及網域名稱的非營利組織,內部分為多個 Stackholder Group(利害關係人團體),由下而上的討論制定政策

在台灣由 NII 每年舉辦兩場研習營,只要全程參與就能拿到數千元的獎學金,並且每年選出幾位優秀學員參與 APrIGF 及 ICANN 等國際會議。

一個是 網路治理研習營,分為網路安全、平台規範、數位人權三組,探討多個相關議題。
今年我被邀請於閉幕時 分享參與經驗,並獲選為優良實習學員,以中文撰寫 三篇 會議 摘要

另一個則是 ICANN 公共政策研習營,透過扮演 GAC 政府代表、ALAC 群眾代表、GNSO 網域代表,針對頂級域名相關議題,分組討論組內的觀點,再於模擬會議上凝聚全體共識。
這次我順利獲選為優秀學員,並得到旅費、住宿、防疫旅館、生活費等全額補助,前往吉隆坡參與 ICANN75 大會。

分為各個 Stackholder Group 討論 ICANN 公共政策研習營合照

旅程規劃

由於 NII 核銷規定,只能訂購指定日期的航班,無法自費在當地多留個幾天。
再加上來回確認延誤了訂購時程,只剩沒多少航班可供挑選了。

因此我選擇在週六晚上到新加坡轉機,隔天早上再飛馬來西亞。也因為這個晚上轉機的時間,讓我能參訪新加坡樟宜國際機場的多處美景。

晚上逛新加坡樟宜國際機場 順利報到,取得 ICANN75 名牌

接著週一、週二、週三,整天都在參加 ICANN75 會議,其中有 6 個場次是合約中指定的,剩下的讓我自由挑選。

回程航班訂在週四下午,也因此無緣參與最後一天的 Public Forum 等議程。

參與 ICANN75 APRALO 議程
(圖源:ICANN Flickr
參與 ICANN75 APAC Space 議程
(圖源:ICANN Twitter

認識新朋友

第一天抵達 KLCC(吉隆坡會議中心,Kuala Lumpur Convention Centre)時,NII 的理旋跟我說可以去參與 NextGen 議程,認識一下與我同年的小朋友們。

在 ICANN75 會場遇到的所有人都相當的友善,我只是靠近聽他們在聊些什麼,就直接叫我名字(應該是看名牌)跟我打招呼,並歡迎我加入對話。

前兩天由於時間因素,沒能跟 NextGen 計劃的夥伴們一起吃晚餐,讓我覺得非常失落。

而在週三晚上,我們約去中國城逛街,再到 Jalan Alor 美食街一起吃泰式料理。

吉隆坡中國城 共享泰式料理

我們 5 人之中,沒有人的母語是英文,但他們都非常包容我一直打結的英文。

來自馬來西亞的 Adlin 送了在地的精品巧克力、
來自柬埔寨 Somaly 送了我吳哥窟鑰匙圈、
Phyo 送我緬甸當地的糖果。

沒想到在 ICANN 會議期間會認識到這麼多好朋友,我很後悔沒有準備任何台灣紀念品。(甚至出國前把所有新台幣都換成了馬來西亞令吉)

來自馬來西亞的 Adlin 來自柬埔寨的 Somaly

結語

我真的很榮幸能有機會去吉隆坡與來自各地的朋友交流,未來將繼續深入研究 ICANN 政策及網路治理,希望有天能成為 ICANN Fellow,再次見到令我感動的大家。

點心休息時間 APAC 團體照
(圖源:ICANN Flickr

本文同步分享於 TwitterFacebook, 如果有什麼想法,都歡迎來留言區交流。

相關連結

Kubernetes 網站貢獻心得

2022年8月5日 18:00

前言

今年 4 月時,在讀文件的過程中發現了個小錯字,發 PR 後看到 Kubernetes GitHub 的完整流程覺得很酷,就開始參與社群、持續貢獻到現在了。

在研讀完幾份貢獻者說明文件、實際參與過數百個 PR 後,來寫篇中文筆記介紹整套制度流程。

本文將先快速帶過發 PR 後到 merge 經過的階段,接著解釋 標籤的意義,最後統整 社群成員身份 及晉升流程。

發起 Pull Request 後會發生哪些事

在 Kubernetes 的專案中,大多是由 @k8s-ci-robot 負責各項自動化任務的,先來講講行為流程。

在出現新的 Pull Request 時,根據改動的檔案加上不同標籤,例如:

  • 在 k/website 專案中,自動加上 sig/docs
  • 如果更動的行數在 30 - 99 行,標示為 size/M
  • 依照檔案所在的資料夾,加上語言 language/zh 標籤
  • 如果使用者有乖乖簽署貢獻者授權協議,加上必備的 cncf-cla: yes 標籤

在加上標籤後,根據修改到的檔案隨機指派兩名 Reviewer,並告訴使用者在收到 lgtm 後該找哪位 Approver 協助。

@k8s-ci-robot 為 PR 加上 label 分類
@k8s-ci-robot 為 PR 加上 label 分類(k/website#35700

過 10 分鐘後,輪到為每個 PR 建置預覽網站的 Netlify 機器人出場了,會留言告訴我們測試站的連結、失敗的話錯誤原因是什麼。

Netlify 機器人產生好預覽網站
Netlify 機器人產生好預覽網站(k/website#35700

再來只要等搜集到 lgtm + approved 兩個標籤,並且沒有 do-not-merge/holdneeds-rebase 等負面標籤,就會被放進 Merge pool 中。

在 Merge pool 中,為了避免衝突需要等待幾秒到幾分鐘的時間,排到隊後就會自動合併進去啦!

得到 lgtm 及 approved 後自動被合併
得到 lgtm 及 approved 後自動被合併(k/website#34311

標籤的意義

前面快速帶過了整個 Pull Request 從發起到成功合併的流程,再來介紹一下數百個標籤中比較常用的幾個。

正向標籤

lgtm,即 Looks good to me 的意思,任何 Kubernetes 組織成員都可以使用 /lgtm 指令加上此標籤。

LGTM 標籤的意義是「這份程式碼改動看起來不錯」,因此只要檔案有更動,這個標籤就會消失,需要重新用 /lgtm 指令加回來。

得到 lgtm 標籤後更動檔案
得到 lgtm 標籤後更動檔案(k/website#35411

approved,代表這個 PR 的大方向已被核可。

每個檔案所屬的資料夾都有對應的 OWNERS 檔案,記錄著哪些檔案由哪些人擔任 Approver。機器人會確保 PR 修改到的每個檔案都有對應的 Approver 核可,才會加上這個標籤。

lgtm 不同的是,就算檔案被修改過,approved 標籤也不會消失。

使用 approve 指令
使用 approve 指令(k/website#35506

cncf-cla: yes 是第三個不可或缺的標籤,在官方規則下,大家不該 review 沒有這標籤的 PR。

為了確保免於未來潛在的法律爭議,大型專案通常都會要求貢獻者簽署 CLA 授權協議(Contributor License Agreement),只要照著指示一次性的簽署完畢就行了。

CLA 貢獻者授權協議
CLA 貢獻者授權協議(k/website#32897

負面標籤

只要 PR 包含任一個負面標籤,就無法被自動合併。

最常見的是,PR 作者與任何 Kubernetes 成員都可以使用的 do-not-merge/hold

當遇到根本性的錯誤,會用 /hold 來請作者特別注意,常見狀況是 git 操作錯誤,或動到不該動的檔案。

也因為 PR 作者可以自己 /unhold 解除,有時也會被用來作為讓 PR 作者自行控制何時被 merge 的工具,像是最後再次確認有沒有小地方要修改,或是部落格文章希望在哪天發佈。

被 hold 的實際狀況
被 hold 的實際狀況(k/website#34722

在 commit 訊息中包含禁用關鍵字的話,則會出現 do-not-merge/invalid-commit-message

由於專案中已經有 @k8s-ci-robot 來做各種自動化事務了,為了避免意外發生,禁止在 commit 訊息中觸發原先 GitHub 提供的自動化操作。

例如不能在 commit 中寫 Fixes: #xxxThanks @xxx 等,這些要移到 PR 說明欄。

無效的 commit 訊息
無效的 commit 訊息(k/website#34456

needs-rebase,偵測到 merge conflict 時會自動加上此標籤,解決後這個標籤就會自動消失了。

do-not-merge/work-in-progress,只要在標題前面加上 [WIP],或透過 GitHub 介面設定為 Draft PR,就能得到這個標籤了。

分類標籤

最直覺簡單的就屬檔案大小了,計算方式是新增的行數與刪除的行數相加。
這可以幫大家快速判斷需要花多少時間 review,也提醒沒事不要塞一大坨更動,讓 PR 變成過於肥大。
例如最小的 size/XS 代表更動了 0 - 9 行,到修改超過 1000+ 行的 size/XXL

根據不同的面向,會被標上不同的 SIG 特別興趣小組(special interest group)標籤:
sig/docssig/releasesig/security

有些 PR 也會被標上屬於哪個領域:
area/blogarea/web-development

在各語言的資料夾中,會被標上語言標籤,方便在地化翻譯者們過濾:
language/zhlanguage/enlanguage/ko

對於 issue,則是分為不同的種類:
kind/featurekind/bugkind/supportkind/cleanup

社群成員身份

全球 500 萬名 Kubernetes 開發者的數量龐大,光是 k/website 就有 4,100 位貢獻者了,因此 k8s 社群也有一套相對成熟的權限機制。

身份總覽

在開始詳細介紹之前,先讓我快速整理一下 Kubernetes 組織中各身份擁有的大略權限。

(A) 任何人

只要有 GitHub 帳號都可以發 PR、幫忙 review 給意見

(B) Member 組織成員

可以用 /lgtm 指令表示看過、沒問題

也能用 /close/hold/retitle 等指令管理 PR

(C) Reviewer 審核者

在有人發新的 Pull Request 時,bot 會隨機指派 2 位 Reviewer

(D) Approver 批准者

在 PR 被初步 review 過後,會指派 Approver 來做最終確認

在 Approver 確認過大方向無誤後,可以用 /approve 指令核可

(E) Tech Lead / Maintainer / Owner

有專案的管理權限、可以設定 /milestone 指定合併的目標時間

如何開始這場冒險

第一步當然是先熟悉社群、開 issue 發 PR,實際瞭解社群運作。

在找到問題準備修復前,最好可以找 3 - 10 個 PR,看看大家是如何互動的,幫助自己更快融入社群。

Member 組織成員

要成為 Member 的門檻非常低,只要發 5+ 個 PR,並找 2 位 Reviewer 協助背書(sponsor),就可以申請成為組織成員。

申請成為 Kubernetes 組織成員
申請成為 Kubernetes 組織成員(k/org#3440

很酷的一點是,Kubernetes 社群連 GitHub 組織成員都是用 git 管理、自動更新同步的,只要修改對應的 YAML 設定檔,@k8s-ci-robot 就會自動寄發邀請函。

接受邀請成為 Kubernetes 組織成員後,就有了 /lgtm 半通過、/close 關閉 PR、/hold 要求暫緩等大多數的權限,可以隨時參與 PR review。

Reviewer 審核者

如果想成為 Reviewer 身份,規定上的最低限制是成為 Member 至少 3 個月,並且 review 過至少 20 個 PR。

在自認對整個專案程式碼的大架構足夠熟悉後,就可以找 Approver 協助背書,送出申請。

這邊的申請流程跟成為 Member 不同的是,申請的 PR 可以自己開就好,只要約 12 - 48 小時就能成功了。
前面提到想成為 Member 的話需要先開 issue,等過了 3 - 30 天後負責人有空時,才會來批次處理加入申請。或許也跟 Member 身份門檻較低、申請數量過多有關吧。

申請成為 Kubernetes 的 Reviewer
申請成為 Kubernetes 的 Reviewer(k/org#3436

以 k/website 的中文語系為例,每當有新的 language/zh PR 時,就會在 sig-docs-zh-reviews 之中隨機指派兩個人為 PR reviewer,以確保在大家不會累死自己的前提下,每個 PR 都有人能幫忙處理。

這身份承擔的責任在某些時候還蠻重的,但似乎沒有額外授予其他權限,比較像是願意為社群付出、為下一階段鋪路。

Approver 核可者

在擔任 Reviewer 至少 3 個月後,就可以由 Subproject Owner 提名為 Approver 了。

擔任 Approver 必須在技術層面展現合理的判斷,為程式碼品質做高層次的把關,並作為新進貢獻者們的導師。

願意在社群持續貢獻半年一年的志願者們,通常都能順利取得這個身份,相應的 /approve 權限賦予 Approver 們決定 PR 能不能被合併到專案的權力。

Subproject Owner / Tech Lead / Maintainer / Admin

後續身份沒有一套通用的準則,在取得社群內大家的信任後,得到更多的權限也代表著更大的責任。

像是我很好奇那幾位主要貢獻者們到底是怎麼管理時間的,都已經有正職工作了還有辦法投入那麼大的心力在開源貢獻。

後記

我在六月成功加入 Kubernets 組織,因為很喜歡這邊的社群氛圍,期間持續發 PR、幫別人 review,這段期間算是相對積極的貢獻者。

剛成為 Member 才 2 個月的我,在上週被 k/website 最主要的維護者破例提名為 Approver 且通過了,讓我覺得非常驚喜。

因此整理相關資訊分享給身邊的社群朋友們,希望未來有更多人一起加入,期待能做出更多有意義的貢獻。

被提名為中文 Approver
被提名為中文 Approver(k/website#35563

本文同步分享於 TelegramTwitterFacebook, 如果有什麼想法歡迎留言讓我知道。

如果有興趣一起成為 Kubernetes 的貢獻者,歡迎加入 @SeanTalk@CNTUG 群組一同交流。

參考連結

來迺陽明交大水所在 陽交校慶系列活動

2022年2月4日 16:00

前言

上週三 1/26 看到活動後,晚上臨時起意想藉這個機會參訪各大校區,趁著年假走訪完 10 個校區、共 50 個景點啦~

經過親身走訪(踩雷)後,原本想在留言提供活動破關技巧的,但愈寫愈長就乾脆獨立一篇文章出來,若是哪裡內容不夠充足還請不吝告知。

參訪歷程

由於一開始沒有打定主意挑戰全部達成,因此時間上分為三段旅程。

第一段旅程

上週四 1/27 中午睡醒後,從山頂的研三舍出發,看著活動地圖規劃路線後,先用 40 分鐘走訪光復校區每個拍照點,再搭校車去陽明吃午餐。

吃完鮭魚親子丼後,第一次踏入陽明校園,尋找打卡點的途中有些曲折(見下段闖關攻略), 隨著愈爬愈深入,頭髮也因汗水愈來愈濕,用花了 90 分鐘爬山、尋點,終於順利找到所有打卡點。

完成光復及陽明各 15 個景點後,借了陽明圖書館旁的 YouBike 2.0,騎腳踏車前往興建中的士林校區拍照,結束後再轉乘公車到管理學院使用的北門校區。

來迺陽明交大水所在 興建中的士林校區 來迺陽明交大水所在 北門校區 交大管理學院
興建中的士林校區 北門管院校區

第二段旅程

原先最不考慮的是蘭陽院區,但發上噗浪跟朋友聊了之後,一查才發現宜蘭是真的是離台北很近,開始規劃行程後就愈來愈確定要去了。

揪了朋友週六 1/29 下午出發,搭乘國道客運抵達礁溪後,沿路買了些在地美食,傍晚欣賞礁溪夜景,晚上回飯店泡溫泉。 隔天 1/30 吃完飯店早餐後,再去了重口味溫泉魚,中午搭火車到宜蘭。

區間車抵達宜蘭站後,蘭陽院區跟新民分院都在步行 10 分鐘範圍內,各別拍照留影後,就買個伴手禮搭國道客運回家。

來迺陽明交大水所在 蘭陽附設醫院 來迺陽明交大水所在 宜蘭附設醫院 新民分院
蘭陽附設醫院 宜蘭新民分院

桃園青埔

原先在新聞報導及維基百科都只提到位於青埔,沒有確切路名或地圖,週日晚上與另一位桃園同學聊天時,意外的從籌設計畫書對照出了青埔全球校區的實際位址。
不過透過 Google 街景或 OSM 上的衛星空拍照都只看到一片荒地,雖然不知道可以從何處拍攝,但還是打定主意隔天起床後前往。

除夕 1/31 中午搭高鐵到桃園,坐一站機場捷運到 A19 桃園體育園區站後,發現月台上的角度恰好能清楚看到青埔校區建築預定地, 喬好角度拍完照後就原路折返了,回到樹林整趟旅程只用了 3 小時。

來迺陽明交大水所在 桃園青埔全球校區 建築預定地
桃園青埔全球校區 建築預定地(圖中灰色三角形空地)

第三段旅程

初三 2/3 早上七點起床,跟家人去苗栗大湖親戚家採草莓,結束後下午回台北的路上,再順道載我回交大宿舍。

今天初四 2/4(五)睡飽後,上午先到博愛校區踩點,再去六家客院拍照,準備搭高鐵。

來迺陽明交大水所在 來迺陽明交大水所在
博愛校區 六家客院

台南歸仁

中午抵達高鐵台南站,最遠的歸仁校區也達成啦! 因為想說來台南至少玩個一天再回去,不過適逢年假返家人潮,六日的高鐵對號座都已完售,所以有點過分的待到初七 2/7(一)才回家。

再來的 3 天要在做好防疫準備的前提下,多品嚐台南在地美食、去高雄逛燈會,讓自己放個寒假。

來迺陽明交大水所在
台南歸仁校區

闖關攻略

雖然 8 個校區看起來很多,但其實也就新竹台北各 3 個、宜蘭台南各 1 個。如果願意捨棄蘭陽院區、台南歸仁,其實這活動只要一天時間就能達成了,而且交通成本 $50 有找。

新竹

光復校區的景點有按照建議順序編排過,只要從任意數字開始依序或逆序走訪,剛好可以用適合人類的最短路徑繞一圈完成。

來迺陽明交大水所在 新竹光復校區活動景點地圖
新竹光復校區活動景點地圖(來源:活動頁面)

新竹拍完光復校區後,可以騎 YouBike 或搭校車去博愛校區。
回到光復後,再搭校車去六家校區,享受客院人文氣息。

以下是 總務處事務組 提供的校車時刻表,除了例假日及春節停駛,學期間班次還算多。

來迺陽明交大水所在 光復博愛線 交通接駁車時刻表 來迺陽明交大水所在 客院高鐵線 交通接駁車時刻表 來迺陽明交大水所在 光復陽明線 交通接駁車時刻表
光復博愛線 客院高鐵線 光復陽明線

完成新竹 3 個校區的任務後,到中正堂搭光復 - 陽明接駁車,還能順便抽「呷意陽光獎」。

來迺陽明交大水所在 活動獎項 呷意陽光獎
活動獎項(來源:活動頁面)

陽明

雖然陽明校區的編號較無規則,但 15 個景點大致沿著主要幹道分佈。參考下圖的建議路線開始往上爬,基本上就能(很喘得)輕鬆完成。

來迺陽明交大水所在 台北陽明校區活動景點地圖
台北陽明校區活動景點地圖(來源:活動頁面)

有幾個我當初找比較久的景點供參考:

(8) 憶空間:位於圖書館內,要走大馬路那側(西側)進去,不是圖上標示的位置。

(3) 三角公園:現在只有全綠一片,看到岔路就可以拍照了,信中照騙是以前的樣子。

來迺陽明交大水所在 三角公園
三角公園實際樣貌

(4) 金門石:在 (1) 榕園裡面,建議用不同角度拍攝避免爭議。

(13) 陽明廣場:從上方繞過牙醫學院後,順著樓梯往下走。可以參考衛星空拍圖,紅色點即為陽明廣場,可走綠色箭頭的路線到達。

來迺陽明交大水所在 陽明廣場 衛星空拍圖
陽明廣場衛星空拍圖

(5) 神農坡:範例圖片要求要山腳下的刻字,可以爬上 (9) 異空間後再往下走。

(2) 韓園:位於人行步道上,共同教育中心與山頂網球場中間,別像我傻傻照著圖片地標跑到大馬路上找不到。

(6) 韓偉石:位於 (2) 韓園字樣後方,寫著「非以役人,乃役於人」。

來迺陽明交大水所在 韓園
韓園內紀念碑

如果還是找不到,可以參考我那天 Google Photos 記錄的路徑、拍照點,主辦單位給的編號已經用紅色字標示在上面了。

來迺陽明交大水所在 陽明闖關攻略地圖
陽明闖關攻略地圖

一路逛到山頂運動場後,可以走最短路徑下來到圖書館,借台 YouBike 2.0 前往下一個校區。

台北

從陽明圖書館出發,照著導航往下坡騎,預計 20 分鐘就能到興建中的士林校區了。可以先不要還腳踏車,停在工地前面的停車場人行道,拍完照再往回騎 200 公尺去志成公園還車。

還完車後往前走幾步就是公車站了,搭 206 到捷運北門站附近後,再徒步 10 分鐘就能抵達北門校區了。

我的終點是走去西門町吃飯、回到樹林的家;如果是要搭豪泰回學校的話,也能當天來回,不過回程的交通成本就容我先忽略不計了。

後記

到家後在想參訪陽明怎麼能那麼累,查了地圖才知道,從大門口走到山頂的水平距離同樣是 700 公尺,交大只爬升 30 公尺,但陽明卻整整爬升了 130 公尺。
事後想想都走到山頂田徑場了,距離唭哩岸山、軍艦岩也沒多遠,其實可以考慮繼續往上爬才對,是當時沒做足功課。

感謝總務處發想這個 校慶系列活動, 否則除了光復、陽明、博愛外,不會有去其他校區的契機。

從粉專大略整理,簡單記錄一下聲稱完成 8 校區共 36 景點的同學們:

名次 暱稱 完成日期
1 陳*霖 2022-02-01
2 Sean Wei 2022-02-04
3 洪*勛 2022-02-07
4 包*承 2022-02-08
5 David Chen 2022-02-08
6 Calvin 2022-02-09
7 葉*妤 2022-02-12
8 YC Shun 2022-02-12
9 Ann Cheung 2022-02-15

這次響應活動 5 個縣市跑下來,雖然光是交通住宿就肯定超過第 2 名的 $5,000 獎金, 寫成文字紀錄所額外花費的時間成本更不用說,但滿滿的收穫不是金錢能衡量的,很鼓勵大家也來享受這活動的樂趣。

來迺陽明交大水所在 國立交通大學 陽明校區 校名掛牌
國立陽明交通大學 台北陽明校區

本文同步分享於 TelegramTwitterFacebook, 如果有什麼想法,或是願意協助補充,都歡迎來留言讓我知道,祝順利達成任務!

❌
❌