獲選提案

Linux Odyssey - 互動式終端機教學網站

提案人 Justin Lin
獲選茁壯團隊

Linux Odyssey 是針對程式設計和 Linux 初學者設計的互動終端機教學網站,以遊戲化方式學習 Linux 指令,將 Linux 變成一個互動遊戲環境,從「學習 Linux」變成「玩 Linux」。與傳統 Linux 教學相比,Linux Odyssey 免去了安裝步驟,提供真實的 Linux 容器環境,並以沉浸式劇情、關卡式遊戲提升學習樂趣,更導入了資安領域 CTF(Capture the Flag) 的概念,使學習者更能從實際應用中獲得成就與樂趣。

02.簡單介紹您的提案

Linux Odyssey 是針對程式設計和 Linux 初學者設計的互動終端機教學網站,以遊戲化方式學習 Linux 指令,將 Linux 變成一個互動遊戲環境,從「學習 Linux」變成「玩 Linux」。與傳統 Linux 教學相比,Linux Odyssey 免去了安裝步驟,提供真實的 Linux 容器環境,並以沉浸式劇情、關卡式遊戲提升學習樂趣,更導入了資安領域 CTF(Capture the Flag) 的概念,使學習者更能從實際應用中獲得成就與樂趣。

04.專案介紹影片

05.專案團隊討論共筆

06.此專案於 g0v slack 的頻道名稱

linux-odyssey

07.提案代表人

Justin Lin

08.提案代表人的 g0v Slack 帳號名稱與成員識別碼

Justin Lin

09.提案團隊簡介

團隊成員共 4 人,皆為北科大智動科學生。
Justin Lin:專案發起人、後端、DevOps 工程師。
Neil Chen:遊戲設計、前端開發者。
Annie Huang:前端開發者、自動化測試。
Ray Gur:活動、行政。

10.提案團隊是否一半以上成員年齡為 20歲以下(含)?

是

11.本專案與哪幾項聯合國永續發展目標 SDGs 相符?(可複選)

SDG 4 優質教育

12.為什麼要做這個專案?(動機)

我是一位六年的 Linux 使用者,一直以來都努力的向身邊的人推坑 Linux 與自由軟體的美好,但往往都是得到「感覺很難」的回應。Linux 很難嗎?或許有一點,但它絕對是每個人都有辦法克服的。我自己在學習 Linux 的過程,就像是在經歷一場精采的冒險:克服一個個困難,並在過程愈來愈了解電腦的運作原理。我希望這樣的經驗能傳達給更多人,讓每個人都能學會運用 Linux 與自由軟體,成為數位時代屹立不搖的獨立個體。

13.請描述此專案使用者的故事,包含使用者身份、使用者遇到的困境、使用動機。

  • 高中生:在高中學習程式語言,卻不知道如何運用指令建立開發環境,因此無法運用所學進行應用。透過 Linux Odyssey 可以學習如何運用指令,開始能自己解決問題。
  • 資工系學生:於大學學習作業系統,學習過程枯燥且困難,若沒有大量實際操作經驗,常變成要用的時候才在查指令。透過 Linux Odyssey 可以在關卡當中運用指令來解決問題,提供即時回饋,並透過大量操作與自己解決問題來增加記憶。
  • 資訊老師:上 Linux 與作業系統的課,不容易提供學生實際操作的環境,每個學生程度不一也難以控制進度。使用 Linux Odyssey 作為上課教材,可以讓每個學生依自己的進度來學習,老師也能設計客制化關卡來作為課程環境。

14.專案預計提供何種解決方式,並請詳細說明其功能/服務

本專案提供一個互動式終端機教學平台,讓學習者以實際操作來熟悉終端機的使用方式,並提供視覺化的工具,如檔案樹,來降低理解純文字系統的門檻。此外,我們未來預計開放第三方開發者來設計課程,可讓教學者運用此平台設計專屬課程應用在教學裡。

我們目前 MVP 已上線在網站上:https://linuxodyssey.xyz

15.目前已有哪些類似專案?請嘗試分析其不足需優化之處。(若目前無類似專案,請寫「無」)

  1. LabEx:一個提供線上操作環境的教學網站,同時備有教學課程與操作環境,與我們相當類似。然而操作環境本身偏向實驗場,較無遊戲性的設計,比較難讓使用者感受到解決問題的快感。同時教學課程也偏專業取向,缺乏如我們的檔案樹這類幫助使用者理解的 UI 工具。
  2. 線上課程網站:如 Udemy、Codecademy。已經提供大量而優質的教學內容,不論是文字或是影片形式,規模比我們完整且成熟,但無法提供我們有的「互動性內容」,學習者也必須自己安裝環境。
  3. 線上程式練習網站:如 Codewars、Exercism,有關卡式設計,有(部分)遊戲性,但是教學主軸為程式語言,而非終端機操作與作業系統。

16.綜合以上,請摘要成 200 字左右的段落,說明專案目標、受眾與獨特性:

為了解決高中生、資工系學生和資訊老師在學習終端機和作業系統應用時的困難,我們的專案 Linux Odyssey 提供一個互動式終端機教學平台。此平台透過實際操作和視覺化工具,如檔案樹,使學習更直觀、有趣。它允許教師根據學生需求設計客製化的教學內容,從而提高教學效果。

與現有的線上學習平台相比,Linux Odyssey 的特點是其遊戲化學習和強互動性。我們的平台不僅提升學習動機,還通過實際操作加強理解和記憶。相較於需要自行設置環境的線上課程,Linux Odyssey 提供一個即時、整合的學習環境,讓學習者更專注於學習內容。這種獨特的學習方法在提供高效和互動體驗方面具有不可替代的價值。

17.請提供本專案的示意圖或介面設計草圖

18.請列出專案使用到的數位工具及技術/程式語言

  • 溝通:Matrix Element
  • 專案管理與知識庫:Notion
  • 開發:
    • 前端
      • VueJS
      • Tailwind
      • XtermJS:網頁終端機
    • 後端
      • NodeJS
      • ExpressJS
      • Docker
    • 資料庫
      • MongoDB
    • DevOps
      • GitHub Action
      • Cypress:自動化測試
  • 設計
    • UI 設計:Figma
    • 動畫製作:Canva
    • 海報設計:Photoshop
  • AI 輔助工具
    • GPTs:Linux Odyssey Advisor
    • GitHub Action:ChatGPT code review
    • Matrix ChatGPT bot(安裝在群組中可直接討論)
    • Copilot
    • 圖像生成
      • GPT4 DALL-E
      • Leonardo.AI
      • Canva
  • 社群與行銷
    • Facebook
    • YouTube
    • 問卷:SurveyCake

19.請提供本專案預計開源之軟體套件、授權文件、圖檔等之連結,並標注各自授權方式源之項目

20.你覺得本專案可能會面臨的困難有哪些?你將如何解決這些困難?

  1. 技術實現的複雜性:專案涉及複雜的後端處理和前端展示。解決這個問題需要嚴格的代碼審查和測試流程,以確保程式碼品質。目前已經因為複雜度開始出現一些問題。接下來我們打算將專案以 TypeScript 重寫,並開發完整的單元測試、關卡測試與端到端測試,以提升系統穩健度。

  2. 用戶體驗設計:為了確保平台對初學者友好,需要精心設計 UI/UX。我們通過用戶測試收集回饋與指令,透過分析這些資料,可用來改進用戶體驗與關卡設計。

  3. 維護和擴展性:隨著用戶基數和功能需求的增加,保持系統的穩定性和擴展性是一個挑戰。目前已知本系統無法同時負荷大量使用者同時使用。因此接下來會研究如何在 k8s 自動擴展與負載平衡。

  4. 教學內容的創建和維護:創建吸引人且教育性強的內容是一大挑戰,且非常需要人力。我們希望建立一個開放的社區,鼓勵第三方開發者和教育工作者參與內容創建,並提供明確的指南和工具,幫助生成高品質的教學內容。

  5. 市場接受度和推廣:對於新的學習平台而言,獲得用戶認可和吸引用戶參與始終是一個挑戰。我們會持續與學校、教育機構的合作,報名比賽,參加相關會議和線上論壇,以及運用社交媒體進行推廣,來提高專案的知名度和吸引力。

21.專案目前需要哪些方面的幫助呢?

  1. 技術顧問:我們需要技術顧問來評估使用的框架、架構設計。特別是關於生產環境部署這塊(如 k8s)。
  2. 與學校的合作機會:我們希望能有更多與學校的合作機會,目前設定最適合的受眾為高中至大學生。
  3. 宣傳:我們需要有宣傳、行銷方面的建議,也需要更有效的分析使用者回饋的方法。
  4. 經費:我們需要有經費來支付伺服器開銷,目前是使用 GCP 的免費體驗金。

22.本次專案孵化競賽後,未來可能進一步的發展?

我們希望在 2024 六月完成系統所有主要功能的開發,讓系統能支援第三方開發者設計課程,且能夠與一些教育機構合作,採用我們的系統作為教材。最終目標是能建立如 Codewars 的社群,有許多創作者與使用者,能不斷為平台帶來新的內容。

23.你有什麼其他想補充的事情嗎?

我們於 11/24-27 至福科國中帶領六個班的國三學生,在資訊課體驗我們的系統。在收集到的學生反饋顯示了系統的多個改進點:學生們普遍認為新手友善,操作上易於上手,並且覺得體驗很有趣,像是益智遊戲。在經過週末的系統與介面調整後,在 11/27 約有六成學生能獨立完成關卡。然而,也存在一些關於介面和操作體驗流暢性的問題。學生們指出終端機的文字過多且密集,導致閱讀困難。

在我們實地帶班的觀察,我們發現學生難以吸收文字內容,常常明確過關的提示就寫在對話中卻找不到。或者是只是複製貼上指令,沒有理解指令的用途。

為改善這些問題,我們規畫進行以下改進:減少終端機內部的文字量,並改加入其他媒體如短影片來作為輔助教學工具,以加強新手引導。此外,伺服器的穩定性和響應速度也需優化,以確保良好的操作體驗。對於增加遊戲性,可以考慮加入計分系統或進度條,以提高參與度。

GitHub:https://github.com/linux-odyssey/linux-odyssey
我們的 Facebook 專頁:https://www.facebook.com/LinuxOdyssey