Home Plane.so 免費開源且支援 Self-Hosted 的類 Asana/Jira 專案管理工具
Post
Cancel

Plane.so 免費開源且支援 Self-Hosted 的類 Asana/Jira 專案管理工具

Plane.so 免費開源且支援 Self-Hosted 的類 Asana/Jira 專案管理工具

Plane.so 專案管理工具使用介紹與搭配 Scurm 流程的使用

背景

Asana

在前司 Pinkoi 時第一次體會到 Asana 專案管理工具的強大,不管是內部專案管理或是跨團隊之間的協作,Asana 都能在其中擔任解耦人與人、人與事之間依賴的角色,提升協作效率。

在前司從產品團隊到經營、商業團隊 (如:HRBP, Finance, Marketing, BD…) 所有團隊都會有一個團隊公開的 Project 作為跨團隊間的單一協作入口,當其他團隊需要協助時,可以直接開一張 Task (也可以從 Template Task) 到該 Project (通常都會有一個 Need Help! Section),團隊內部收到 Task 後會接手進行安排。

與經營團隊的跨團隊協作,如採購、招募流程,可以直接開 Task 並透過他追蹤進度;與商業團隊的協作如行銷活動規劃、需要工程協助修改的任務…等等。

如果沒有 Asana 或類似的專案管理工具:

  • 任何事物我們都需要與對方團隊進行直接溝通,P0 事務直接溝通是最有效的,但日常上應該有 90% 都不會是 P0 事務,不管大小事都直接人對人溝通很沒有效率且會 打斷對方工作心流
  • 任務執行不透明,只有對談雙方知道狀況進度,如果是多方任務就只能靠溝通反覆確認進度;另外,主管也難掌握大家手上任務進行合理安排
  • 任務的安排,日常上我們會收到很多 Task,優先度有高有低、方向也很多面,有工具在才能搜集、歸類同類型的問題,日後一起挑出來解決;日常工作安排也較容易挑出重要的任務
  • 任務的交接,有工具紀錄任務細節、執行狀況,若遇到需要其他人協助時,可以快速從 Task 上的內容接手任務

回到專案管理上,Asana 提供彈性、多維度、自動化的專案管理工具,可以依照需求自行組合使用。

Asana 的使用方式有很多,以下僅舉幾個使用案例,建議先確定需求再找相關 Asana 範例套用使用。

Asana 台灣代理商亦有提供完整的教育訓練,有興趣可以與他們聯絡。

(本篇無業配)

範例1

團隊專案 Project

團隊專案 Project

  • To Do: 這週、下週將要開始的任務
  • In Progress: 正在執行的項目
  • Review: 已完成,等待 Sprint Review
  • Backlog: 任務池子,每週從中挑出 Task 安排執行

團隊 Scrum Project

團隊 Scrum Project

除了團隊主 Project 外會再開一個 Scrum Project 安排(Asana Task 可同時加入多個 Project)、回顧每個 Sprint 任務執行內容。

範例2

範例二是使用 Section 作為 Sprint 區分,每週會建立一個 Section 將任務拖入,另外透過 Label 標記其他狀態。

回到現實

如同前述,以上是前司 Pinkoi 有 Asana 專案管理工具的場景;這幾個月回到沒有專案管理工具的環境,可以說是更感覺到工具對工作效率的重要性。

目前環境沒有較現代的專案管理工具,基於採購(需控制支出)、內控問題(純內網)與個資稽核限制(必須地端),因此無法直接導入使用 Asana。

基於以上環境限制,只能先朝開源且支援 Self-Hosted 的專案管理工具著手,找到的解決方案不外乎就是:Redmine, OpenProject, Taiga…嘗試了幾套效果都不如預期,功能缺少、UI/UX 不友善;直到無意間找到一套 2023/01 才新推出的 Plane.so 專案管理工具。

順便推薦一下這個網站,收錄很多可以支援 Self-Hosted 的服務:

awesome-selfhosted A list of Free Software network services and web applications which can be hosted on your own servers awesome-selfhosted.net

說這麼多,以下正文開始。

目錄

本文分為:

  • Plane.so 介紹
  • Plane.so 操作教學
  • Plane.so x Scrum 工作流程範例
  • 附錄

可依照需求查看,Docker Self-Hosted 自架教學請參考下篇「 Plane.so Docker Self-Hosted 自架紀錄 」。

Plan.so 介紹

簡介

Plane 成立於 2022 年,是來自 美國德拉瓦州 和 印度 的新創公司,目前觀察 LinkedinGithub 活動大部分的開發人員都在印度;該公司目前已募集到 400 萬美元的啟動天使資金 (由 OSS Capital 投資)。

目前 Plane 佔據 Github 專案管理類別第一名 ,使用 AGPL-3.0 license 開源,第一版 2023/01 推出,目前扔持續在開發階段,尚未提供正式 Relase 版。

請注意: ⚠️ 開源 不等於 免費 ⚠️ 如同 Github 與 Gitlab,專案管理工具有很多類似 Github 的產品,例如 Asana, Jira, Clickup 但是還沒有一套足夠好用足以匹敵的 Gitlab 開源產品,而 Plane 的目標就是成為專案管理工具類的 Gitlab。

  • 約保持兩到三週更新一次開發版本,部分調整可能差距較大或仍有資安問題。
  • 暫時不支援多語系(中文)
  • 支援 Self-Hosted
  • 目前官方不提供從 Cloud 匯出,匯入到 Self-Hosted,只能自己透過 API 串接實現,因此若有考慮 Self-Hosted 地端使用,建議只把 Cloud 當成試用版使用
  • macOS App, iOS App, Android App 也正如火如荼開發中。

Plane Product Roadmap 可參考 官網資訊

[https://sites.plane.so/plane/459cfcdf-dc9c-49a6-9d4b-a89f91440189/?board=kanban](https://sites.plane.so/plane/459cfcdf-dc9c-49a6-9d4b-a89f91440189/?board=kanban){:target="_blank"}

https://sites.plane.so/plane/459cfcdf-dc9c-49a6-9d4b-a89f91440189/?board=kanban

開源 Repo:

方案

Plane 提供雲端版本服務,$0 美金起,Pro 提供更多框架與整合、自動化功能。

另外官方正在推廣 $799 早期終身方案,有興趣付費支持的團隊可以直接參考此方 案:

Community Edition (官方簡稱 CE 版), Self-Hosted 版本,同樣是 $0 美金起, 如果要使用進階功能依然要購買 Pro 但可以支援 Self-Hosted

框架

Plane.so 不同於 Asana 的多維度彈性但 Plane 由以下框架組成,供專案管理使用:

  • Issues:同 Asana Task,任何工作都開成 Issue 再安排處理或是當成留紀錄。

  • Cycles:類似 Sprint,一個迭代的時間週期或是版本,每個 Issue 只能存在在一個 Cycle。

  • Modules:專案、模組、分類功能,每個 Issue 可加入多個 Modules。

  • Layouts & Views:可以使用 甘特圖、行事曆、看板、列表、Sheet 模式檢視 Issues,也可以將篩選條件、顯示方式儲存為 View 方便快速檢視。

  • Inbox:Issue Proposed 流程,可建立提案 Issue,審核通過才會真的建立 Issue 到專案中執行,不通過則直接

  • Pages:簡易文檔功能,可以記錄一些工作、產品事項。

  • Drive:類似 Google Drive 團隊檔案功能。

目前免費版、CE (Self-Hosted)版 均無此功能。

Plane.so 操作教學

我們可以快速、免費直接的開始使用 Plane Cloud 版本:

Plane | Simple, extensible, open-source project management tool. Open-source project management tool to manage issues, sprints, and product roadmaps with peace of mind. app.plane.so

Workspace

  • 首次進入 Plane.so 會需要我們建立首個 Workspace
  • Workspace 同 Asana 工作區域,一隻帳號可以加入多個 Workspaces
  • 如果是小型公司跨團隊使用可以在同個 Workspace
  • 如果是大公司跨團隊,Plane 沒有如 Asana 的 Team 功能、Project 分組功能;在同個 Workspace 會導致 Projects 混亂,建議直接改成用 Workspace 區分團隊

創建完成後可在 Workspace 下拉選單上切換不同 Workspace,也可由此進入 Workspace Settings:

設定有:

  • General Workspace 大頭貼、名稱、網址
  • Billing and plans 付費資訊、升級方案
  • Integrations 第三方整合,目前免費版僅提供 Github, Slack 整合
  • Imports 匯入功能,目前僅提供 Jira, Github Project 匯入
  • Exports 匯出功能,目前僅提供 csv, excel, json 格式匯出
  • Webhooks API tokens,自行串接 API

比較重要的設定是 Members,我們需要邀請團隊成員加入 Workspace:

身份別:

  • Guest/Viewer 目前功能上無太大區別,僅能檢視 Issue、Comment、Emoji;如果是不同組織信箱外的外部使用者則為 Guest,同個組織則為 Viewer
  • Member 可操作所有功能
  • Admin 可進入 Settings

Home 首頁

  • Home 整個 Workspace 所有 Projects, 成員狀態
  • Anaytics 所有成員, Issues 分析
  • Projects 所有 Projects
  • All Issues 所有 Projects 的 Issues
  • Active Cycles 所有 Projects 當前 Cycle 狀態
  • Notifications Issues 通知

Projects

進入 Projects 查看所有公開、已加入的 Projects:

  • Project 名稱、簡介、封面圖、前綴 (Issue Alias e.g. APP-1 )
  • Project 權限:Public 所有加入 Workspace 的成員都能查看、加入;Private 只有受邀的成員能加入
  • Lead:Project 主要負責人

Project 右上角「…」可進行:

  • Add to favorites, Pin 到 我的最愛 (Your Projects 上方)
  • Publish 產生公開對外連結,如同官方 Roadmap Project
  • Draft Issues 查看已儲存的草稿 Issues
  • Archives 查看被封存的 Issues

其他設定:

  • General:專案一般設定
  • Members:專案成員、專案權限
  • States:專案 Issue 狀態 (後面會介紹)
  • Labels:專案 Labels 管理
  • Features:可控制要啟用哪些功能(預設不啟用 Inbox 功能)
  • Estimates:專案估時欄位設定 (後面會介紹)
  • Integrations:第三方整合 (Workspace 要先啟用)
  • Automations:目前免費版僅支援超過 X 時間就自動把 Closed Issues 封存、超過 X 時間自動 Close 未完成的 Issues

Issues

  • 進入後可由左方 Projects 建立 Project
  • 不同於 Asana,Plane 的 Issue 只能加入一個 Project
  • 右上角可切換顯示方式
  • 預設會展開所有 Sub-Issues,如果覺得很雜可以到 Display -> 取消 Show sub-Issues

點擊「Create Issue」開始建立 Issue:

  • 可儲存成草稿 Issues
  • 支援文字樣式、Code Block
  • 支援 Markdown
  • 支援文繞圖,可直接拖曳圖片上傳
  • 支援多位 Assignees (這點比 Asana 方便,Asana 只支援一個 Task 一位 Assignee)
  • 選擇 Priority,不同 Priority 有不同高亮樣式 (目前無法客製化 Priority)

  • 選擇 Modules,可以加入多個 Modules,例如: 登入優化 , App …(設定稍後介紹)
  • 選擇 Cycle,要在哪個 Sprint 做,只能選一個,例如: W22 , S22 , 2024–05 …(設定稍後介紹)
  • 目前不支援自訂 Issue Property
  • 選擇 Add parent,將此 Issue 作為 Sub-Issue 加入到 Parent Issue
  • 選擇 Labels (a.k.a Tag 功能)
  • 選擇 Start Date, Due Date… (目前不支援到準確時間、不支援 Repeated Issue)
  • 選擇 Estimate (a.k.a Scrum story point 或預計投入的資源),Estimate 可在 Settings 中調整、新增;不過目前限制只能啟用一個 Estimate 欄位並且 Estimate Value 只能設定 6 個。(官方 Roadmap 寫 2024Q2 會改進此功能)

  • 選擇 Issue State,State 可在 Settings 中調整、新增:

使用 AI 建立 Issue 內容:

  • 可以點擊建立旁邊的 AI 按鈕輸入 Prompt 自動產出預設 Issue 內容,點擊 Use this response 套用到 Issue Description。

Issue 創建好之後,在列表點擊會出現 Issue Preview 視窗,可以點展開進入 Issue Full-Screen 頁面:

點擊展開進入 Issue Full Screen Deatil 頁:

  1. 圖片預覽,可拖移或右鍵開新視窗放大 (目前無法點擊放大)
  2. 可點擊新增 Sub-Issue (Sub-Issues 目前不支援排序、Section 功能)
  3. 新增表情符號 (目前只有 👍👎😀💥😕✈️👀 七種表情符號)
  4. 上傳附加檔案 (不限於是圖片,但是圖片目前無預覽功能,需點擊查看)
  5. 留言討論區域 (目前中文選自會自動送出,請參考文末解決方案)
  6. 可訂閱/取消訂閱此 Issue 改變通知
  7. Relates to 可加入關聯的 Issues
  8. Blocking 可標記正在被此 Issue 阻擋執行的 Issue (目前無特殊功能)
  9. Blocked by 可標記正在阻擋此 Issue 執行的 Issue (目前無特殊功能)
  10. Duplicate of 標記重複的 Issue (目前無特殊功能)
  11. Labels 可快速標記、創建標記
  12. Linkes 相關連結,可加入 Figam, Google Doc 之類的外部連結
  13. 刪除、封存 Issue

Cycle 週期

  • 首頁會顯示當前 Cycle 與其執行狀況、燃盡圖
  • 還有即將到來的 Cycle、已完成的 Cycle
  • 目前需要手動建立 Cycle
  • 例如每兩週一個 Sprint 就要建立 SXX 然後指定時間週期
  • Cycle 時間週期無法重複
  • Cycle 時間週期不能選擇過去時間
  • Issue 只能加入一個 Cycle

  • 點擊進入可查看 Cycle 細節,上方可以使用不同顯示方式、Filter 查看 Issues
  • 右方有燃盡圖、執行狀況
  • 可依照 Assignees, Labels, States 查看 Issues

Modules 模組

  • 可以把 Modules 當成專案彙整、OKR 目標、職能分類(Design, FE, BE, App. . ) 來使用
  • 可設定專案 Lead & Members
  • 專案進度與 Issue State 不同,多了 Planned, Paused 狀態
  • 可設定日期範圍

  • 點擊進入可查看 Module 細節,上方可以使用不同顯示方式、Filter 查看 Issues
  • 右方有燃盡圖、執行狀況
  • 可依照 Assignees, Labels, States 查看 Issues
  • 可為 Module 加上 Link

Views

  • 可為常用的篩選條件、檢視模式建立 View,可以直接從此快速查看。
  • View 上方一樣可以使用不同顯示方式、Filter 查看 Issues

Pages 簡易文檔

  • Pages 提供所見即所得的文檔編輯器,可以很容易的撰寫文檔、插入圖片
  • 目前暫不支援目錄、分類功能,文檔一多會很混亂
  • 文檔權限:Public 所有 Project 成員可見、Private 僅自己可見。

Notifications Issues 個人通知功能

  • 訂閱的 Issues 之狀態、內容更改、新留言都會有通知
  • 預設自己建立的、被 Assign 的、Lead 的專案的 Issues 都會訂閱
  • 目前無 Slack 、第三方通知

目前僅能透過 Email 通知:

  • 從大頭貼 -> Settings -> Preferences -> Email 可打開 Email 通知

Dark Mode

  • 從大頭貼 -> Settings -> Preferences -> Theme 可選擇 Plane 主題

官方手冊

Plane Documentation - Plane Plane is an extensible, open source project and product management tool. It allows users to start with a basic task… docs.plane.so

其他操作、使用細節可參考官方文件。

⚠️⚠️聲明⚠️⚠️

以上是 2024–05–25 v0.20-Dev 版的使用介紹,官方仍如火如荼開發新功能與優化使用者體驗,上述功能限制在未來都可能已改善,請以最新版的體驗為主。

開發中專案難免有 Bug、體驗問題,請大家多給 Plane.so 團隊一點耐心;有任何問題也歡迎到下方回報:

Plane.so x Scrum 工作流程範例

架構

  • 每個團隊有自己的 Workspace
  • 每個團隊會有一個主要的產品 Project
  • Projects:其他可建立如行銷廣告 Project、客服支援 Project 或與外部合作的 Project,與產品主要開發 Project 分開
  • Modules:建立 Function Modules (設計, 前端, 後端, App) 方便 Team Lead 追蹤、將 OKR 或專案目標建立 Module (提升轉換率、OKR-1 提升 GMV…)
  • Cycle:依照 Sprint 週期建立 Cycle,假設是每週一個 Sprint 可建立 W12 or 照週一日期來建立 2024–05–27
  • 因目前無法自動建立 Cycle,因此需每月或每週先建立好未來的 Cycle
  • 有什麼工作都要開 Issue
  • Issue 可以的話加上 Start Date & Due Date、Modules、Priority
  • 如過一個 Issue 一直在 In-Progress & Cycle 中切換(一個 Cycle 做不完),可評估是否把 Issue 拆細,方便專案管理

流程

  • Sprint 週期:一週
  • Backlog:有什麼工作、發想都開 Issue,State = Backlog、 填寫 Estimate、Priority
  • 每週一 Sprint Planning Meeting:從 Backlog 挑選 Issues 與正在執行的 Issues (To Do or In progress)、設定 Priority/Estimate,安排本次 Sprint 執行,加入到 Cycle 中
  • Sprint 中如果有插單執行的 Issue 也需要直接開在本週 Cycle
  • Daily Stand-up:每日早上花 15 分鐘快速各自分享 Issue 執行狀況
  • Issue 準備執行、開始執行 更改狀態成 ToDo/In Progress
  • Issue 完成更改狀態成 Done,或是多建立一個 Review State
  • 每週五 Sprint Review Meeting:單純 Review 本週 Issues (不是 Planning 下週),已完成的 Issue 快速回顧,並確保有填寫 Estimate 方便日後統計。
  • 每週五盡量確保 Cycle 內所有 Issue 都是完成的, 未完成的 Issue 選擇加入下一週的 Cycle 或轉 Pending/Cancel
  • 持續迭代以上流程,管理所有 Issues、Projects

⚠️⚠️聲明⚠️⚠️

以上只是工作流程範例,請注意沒有完美的流程,只有適合您團隊的流程;請參考 Plane.so 提供的架構發揮創意找到最佳的專案管理方式。

附錄

API

Plane.so 是很乾淨的前後分離架構,因此有很完整的 API 可以使用,從 Workspace Settings 建立 API Tokens 後就能帶入 API Request Header X-API-Key 就能使用,API Endpoint 請求方式可參考官方 API 文件

但因官方文件尚未完善,很多請求方式並沒有列在文件中,最快的方式就是打開瀏覽器工具查看 Network 請求,去看官方如何請求 API 的,套上自己的 Key 就能使用。

Issue 評論,輸入中文時選完字就直接送出問題

開了 Issue 給官方&追了一下 Source Code,感覺修復機會蠻低的,因為一開始就沒考慮會需要選自的語言,因此直接綁定鍵盤 Enter Event 送出 Comment。

Browser Extension Workaround:

這邊提供一個自己寫的 Workaround JavaScript 腳本,去 Hook Enter 事件。

1.首先先安裝 JavaScript 瀏覽器注入外掛:

以上是 Chromium 共用的套件,其他瀏覽器也可以搜尋類似的 JavaScript Inject 注入工具。

2.回到 Plane.so 上點擊擴充套件 -> 點擊「+」

3.將以下 JavaScript 注入到 Plane.so

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
document.addEventListener('keydown', function(event) {
 if (event.key === 'Enter' || event.keyCode === 13) { // event.keyCode is for older browsers
  const focusedElement = document.activeElement;
  const targetButtons = focusedElement.parentElement.parentElement.parentElement.parentElement.parentElement.querySelectorAll('button[type="submit"]');
   if (targetButtons.length > 0 && targetButtons[0].textContent.trim().toLowerCase() === "comment") {
    console.log("HIT");
    // Focus the active element and place the cursor at the end
    focusedElement.focus();
    if (window.getSelection) {
     var range = document.createRange();
     var selection = window.getSelection();
     range.selectNodeContents(focusedElement);
     range.collapse(false);
     selection.removeAllRanges();
     selection.addRange(range);
    }
    event.stopImmediatePropagation();
   }
 }
},true);

  • 貼上程式碼後,按「Save」儲存。

回到 Plane.so (重整) 打開一個 Issue 測試 Comment 功能。

  • 按 Enter 選字已不會自動送出了,按空白 + Shift Enter 可換行,手動點 Comment 送出評論。

⚠️⚠️⚠️資安問題⚠️⚠️⚠️

因 Plane.so 還處於開發階段產品也很新,不確定是否有安全資安問題,建議不要上傳任何敏感資料,以免服務有重大問題時造成資料外洩,或使用 Self-Hosted 自架僅供本地內網使用。

Plane Self-Hosted 自架教學

有任何問題及指教歡迎 與我聯絡

===

View the English version of this article here.

本文首次發表於 Medium ➡️ 前往查看


This post is licensed under CC BY 4.0 by the author.

App 產品進入終點站,能做什麼事緬懷?

Plane.so Docker Self-Hosted 自架紀錄