Plane.so Free Open Source and Self-Hosted Support Project Management Tool Similar to Asana/Jira
Introduction to the use of Plane.so project management tool with Scurm process
Background
Asana
At my previous company Pinkoi, I first experienced the power of Asana project management tool. Whether it was internal project management or collaboration across teams, Asana played a role in decoupling dependencies between individuals and tasks, enhancing collaboration efficiency.
In my previous company, all teams, from product teams to operations, business teams (such as HRBP, Finance, Marketing, BD, etc.), had a publicly accessible Project as a single collaboration entry point across teams. When other teams needed assistance, they could directly create a Task (which could also be from a Template Task) in that Project (usually with a Need Help! Section). The team would then take over the Task internally for execution.
For cross-team collaboration with the operations team, such as procurement and recruitment processes, tasks could be directly created and progress tracked through Asana. For collaboration with business teams, such as marketing campaign planning, tasks requiring engineering assistance, and more.
Without Asana or similar project management tools:
- Direct communication with the other team for anything is most effective for P0 tasks, but in daily operations, 90% of tasks are not P0. Direct communication for all tasks, regardless of size, is inefficient and can disrupt the workflow of the other team.
- Task execution is not transparent, and only the parties involved in the conversation know the progress. For tasks involving multiple parties, progress confirmation relies on repeated communication. Additionally, supervisors find it challenging to manage task allocation for everyone.
- Task assignment: We receive many tasks daily, each with varying priorities and directions. Having a tool allows us to collect and categorize similar issues for future resolution. It also makes it easier to prioritize important tasks in daily work.
- Task handover: A tool records task details and progress. When assistance from others is needed, task details can be quickly accessed for task handover.
Returning to project management, Asana provides flexible, multidimensional, and automated project management tools that can be customized according to requirements.
There are many ways to use Asana. The following are just a few examples of use cases. It is recommended to determine your needs before applying relevant Asana examples.
Asana’s Taiwan distributor also provides comprehensive educational training. If interested, you can contact them.
(This article is not sponsored)
Example 1
Team Project
- To Do: Tasks to start this week or next week
- In Progress: Projects currently in progress
- Review: Completed and awaiting Sprint Review
- Backlog: Task pool, tasks picked from here weekly for execution
Team Scrum Project
In addition to the main team Project, a Scrum Project is created to manage tasks (Asana tasks can be added to multiple Projects simultaneously) and review the execution content of each Sprint.
Example 2
Example two uses Sections to differentiate Sprints, creating a new Section each week for tasks and using Labels to mark other statuses.
Back to Reality
As mentioned earlier, the scenarios with Asana project management tools at my previous company Pinkoi. In the past few months, returning to an environment without project management tools has made me realize the importance of tools for work efficiency.
The current environment does not have a more modern project management tool, based on procurement (expense control), internal control issues (pure intranet), and personal data audit restrictions (must be on-premises), so Asana cannot be directly introduced for use.
Due to the above environmental limitations, we can only start with open-source and self-hosted project management tools. The solutions found are nothing more than: Redmine, OpenProject, Taiga… Several solutions were tried, but the results were not as expected, lacking functionality and having unfriendly UI/UX. It wasn’t until I accidentally found a project management tool called Plane.so, which was newly launched in January 2023.
By the way, I recommend this website, which includes many services that support self-hosting:
awesome-selfhosted A list of Free Software network services and web applications which can be hosted on your own servers awesome-selfhosted.net
That’s enough talk, let’s get to the main content.
Table of Contents
This document is divided into:
- Introduction to Plane.so
- Plane.so Operation Tutorial
- Plane.so x Scrum Workflow Example
- Appendix
You can refer to the next section “ Plane.so Docker Self-Hosted Setup Record “ for Docker self-hosted setup instructions.
Introduction to Plane.so
Overview
Plane was founded in 2022 and is a startup company from Delaware, USA, and India. Currently, most of the developers observed on Linkedin and Github are in India. The company has raised $4 million in seed funding (invested by OSS Capital).
Currently, Plane ranks first in the Github project management category, is open-source using the AGPL-3.0 license, was launched in January 2023, and is still in the development phase, with no official release yet.
Please note: ⚠️ Open-source does not mean free ⚠️ **, just like Github and Gitlab, there are many project management tools similar to Github, such as Asana, Jira, Clickup, but there is no product good enough to compete with Gitlab’s open-source products yet. Plane aims to be the Gitlab of project management tools.
- Approximately updated every two to three weeks, with some adjustments that may have significant differences or still have security issues.
- Currently does not support multilingual (Chinese).
- Supports Self-Hosted
- The official version does not provide export from Cloud to import into Self-Hosted. It can only be achieved by integrating through the API. Therefore, if considering using Self-Hosted on-premises, it is recommended to treat Cloud as a trial version only.
- macOS App, iOS App, Android App are also actively under development.
You can refer to the Plane Product Roadmap on the official website:
Open Source Repo:
Solution
Plane offers cloud-based services starting at $0, with Pro providing more frameworks and integration, as well as automation features.
Community Edition (referred to as CE by the official), Self-Hosted version, also starting at $0, if you want to use advanced features, you still need to purchase Pro but can support Self-Hosted.
Framework
Plane.so differs from Asana’s multidimensional flexibility, but Plane is composed of the following frameworks for project management:
- Issues: Similar to Asana Task, any work is opened as an Issue for scheduling or as a record.
- Cycles: Similar to Sprints, a time cycle or version of iteration, each Issue can only exist in one Cycle.
- Modules: Projects, modules, classification functions, each Issue can be added to multiple Modules.
- Layouts & Views: You can use Gantt charts, calendars, kanban boards, lists, and Sheet mode to view Issues, and you can save filtering conditions and display methods as Views for quick viewing.
- Inbox: Issue Proposed process, you can create a proposal Issue, and it will only be created in the project after approval, otherwise directly
- Pages: Simple document function, can record some work, product matters.
- Drive: Similar to Google Drive team file function.
Currently, the free version and CE (Self-Hosted) version do not have this feature.
Plane.so Operation Tutorial
We can quickly and freely start using the Plane Cloud version directly:
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
- When you first enter Plane.so, you will need to create your first Workspace.
- Workspaces are similar to Asana workspaces, where one account can join multiple Workspaces.
- For small companies with cross-team usage, you can use the same Workspace.
- For large companies with cross-team usage, Plane does not have features like Asana’s Team function or Project grouping; using the same Workspace will lead to confusion in Projects, so it is recommended to use Workspaces to differentiate teams directly.
After creation, you can switch between different Workspaces on the Workspace dropdown menu and also access Workspace Settings from here:
- General Workspace avatar, name, URL
- Billing and plans payment information, upgrade plans
- Integrations third-party integrations, currently only Github and Slack integrations are available in the free version
- Imports import function, currently only Jira, Github Project imports are available
- Exports export function, currently only csv, excel, json formats are available for export
- Webhooks API tokens, self-integrate API
One of the most important settings is Members, where we need to invite team members to join the Workspace:
- Guest/Viewer currently have no significant differences in functionality, can only view Issues, Comments, Emojis; if they are external users with different organization emails, they are Guests, if they are from the same organization, they are Viewers
- Member can perform all functions
- Admin can access Settings
Home Page
- Home displays all Projects and member statuses in the Workspace
- Analytics analyzes all members and Issues
- Projects lists all Projects
- All Issues lists all Issues in all Projects
- Active Cycles shows the current Cycle status of all Projects
- Notifications for Issue notifications
Projects
Enter Projects to view all public and joined Projects:
- Project name, description, cover image, prefix (Issue Alias e.g.
APP-1
) - Project permissions: Public can be viewed and joined by all Workspace members; Private can only be joined by invited members
- Lead: Project’s main responsible person
In the top right corner of the Project, click on “…” to:
- Add to favorites, Pin to My Favorites (above Your Projects)
- Publish to generate a public external link, similar to the official Roadmap Project
- Draft Issues to view saved draft Issues
- Archives to view archived Issues
Other settings:
- General: general project settings
- Members: project members, project permissions
- States: project Issue statuses (will be introduced later)
- Labels: project Labels management
- Features: control which features to enable (Inbox feature is not enabled by default)
- Estimates: project estimation field settings (will be introduced later)
- Integrations: third-party integrations (Workspace must be enabled first)
- Automations: currently, the free version only supports automatically archiving Closed Issues after X time, automatically closing unfinished Issues after X time
Issues
- Enter from the left side to create a Project under Projects.
- Unlike Asana, Plane’s Issue can only be added to one Project.
- You can switch display modes in the top right corner.
- By default, all Sub-Issues are expanded. If it feels cluttered, you can go to Display -> Uncheck Show sub-Issues.
Click “Create Issue” to start creating an Issue:
- Save as draft Issues.
- Support text styles, Code Block.
- Support Markdown.
- Support text wrapping around images, you can directly drag and drop images to upload.
- Support multiple Assignees (more convenient than Asana, which only supports one Assignee per Task).
- Choose Priority, different Priorities have different highlighting styles (currently unable to customize Priority).
- Choose Modules, can add multiple Modules, for example:
Login optimization
,App
… (settings will be introduced later). - Choose Cycle, where to work in which Sprint, can only choose one, for example:
W22
,S22
,2024-05
… (settings will be introduced later). - Currently does not support custom Issue Properties.
- Choose Add parent, add this Issue as a Sub-Issue to the Parent Issue.
- Choose Labels (a.k.a Tag function).
- Choose Start Date, Due Date… (currently does not support precise time, does not support Repeated Issue).
- Choose Estimate (a.k.a Scrum story point or estimated resources to be invested), Estimate can be adjusted or added in Settings; however, currently only one Estimate field can be enabled and Estimate Value can only be set to 6. (Official Roadmap states that this feature will be improved in 2024Q2).
- Choose Issue State, State can be adjusted or added in Settings.
Create Issue Content using AI:
- Click the AI button next to Create to enter a Prompt and automatically generate default Issue content, click Use this response to apply it to the Issue Description.
After creating the Issue, clicking on it in the list will bring up the Issue Preview window, where you can click to expand into the Issue Full-Screen page:
Click to expand into the Issue Full Screen Detail page:
- Image preview, can be dragged or right-clicked to open in a new window for enlargement (currently unable to click to enlarge).
- Click to add a Sub-Issue (Sub-Issues currently do not support sorting or Section functions).
- Add emojis (currently only seven types of emojis available: 👍👎😀💥😕✈️👀).
- Upload additional files (not limited to images, but currently images do not have a preview function, need to click to view).
- Discussion area for comments (currently, the Chinese selection will be automatically submitted, please refer to the solution at the end of the document).
- Subscribe/unsubscribe to this Issue to change notifications.
- Relates to can add related Issues.
- Blocking can mark Issues that are being blocked by this Issue (currently no special function).
- Blocked by can mark Issues that are blocking this Issue (currently no special function).
- Duplicate of marks duplicate Issues (currently no special function).
- Labels for quick tagging, creating tags.
- Links related links, can add external links such as Figam, Google Doc.
- Delete, archive Issue.
Cycle Cycle
- The homepage will display the current Cycle with its execution status and burnout chart.
- It also shows upcoming Cycles and completed Cycles.
- Currently, Cycles need to be created manually.
- For example, if a Sprint is every two weeks, you need to create SXX and specify the time cycle.
- Cycle time cycles cannot be duplicated.
- Cycle time cycles cannot be selected in the past.
- Only one Issue can be added to a Cycle.
- Click to view Cycle details, use different display methods and filters to view Issues at the top.
- There is a burnout chart and execution status on the right.
- View Issues based on Assignees, Labels, and States.
Modules Modules
- Modules can be used as project summaries, OKR goals, and functional categories (Design, FE, BE, App, etc.).
- You can set project Leads & Members.
- Project progress is different from Issue State, with additional Planned and Paused statuses.
- You can set date ranges.
- Click to view Module details, use different display methods and filters to view Issues at the top.
- There is a burnout chart and execution status on the right.
- View Issues based on Assignees, Labels, and States.
- You can add a Link to a Module.
Views Views
- Create Views for commonly used filter conditions and viewing modes to quickly view from here.
- You can use different display methods and filters to view Issues at the top of the View.
Pages Simple Documentation
- Pages provide a WYSIWYG document editor, making it easy to write documents and insert images.
- Currently does not support directories or categorization, and documents can become messy when there are many.
- Document permissions: Public for all Project members to see, Private visible only to yourself.
Notifications Issues Personal Notification Functionality
- Subscribed Issues will receive notifications for status changes, content updates, and new comments.
- By default, Issues created by yourself, assigned to you, or in projects where you are the Lead will be subscribed.
- Currently no Slack or third-party notifications.
Currently, only Email notifications are available:
- Turn on Email notifications from Profile -> Settings -> Preferences -> Email.
Dark Mode
- Choose the Plane theme from Profile -> Settings -> Preferences -> Theme.
Official Manual
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
⚠️⚠️Disclaimer⚠️⚠️
The above is the usage introduction for version 0.20-Dev as of May 25, 2024. The official team is still actively developing new features and optimizing user experience. The functionality mentioned above may be improved in the future. Please refer to the latest version for the best experience.
During the development of the project, there may be bugs and user experience issues. Please be patient with the Plane.so team. If you have any questions, feel free to report them below:
- Issue Reporting: https://github.com/makeplane/plane/issues
- Official Discord: https://discord.com/invite/A92xrEGCge
Plane.so x Scrum Workflow Example
Architecture
- Each team has its own Workspace.
- Each team will have a main product Project.
- Projects: Other projects can be created such as marketing ad projects, customer support projects, or projects collaborating with external parties, separate from the main product development project.
- Modules: Create Function Modules (design, frontend, backend, app) for easy tracking by Team Leads, and establish OKRs or project goals within Modules (improve conversion rates, OKR-1 increase GMV, etc.).
- Cycle: Create Cycles based on Sprint cycles, for example, if there is a Sprint every week, you can create
W12
or use the date format like2024-05-27
. - Since Cycles cannot be automatically created at the moment, it is necessary to create future Cycles monthly or weekly.
- All work should be initiated by opening an Issue.
- If possible, Issues should include Start Date & Due Date, Modules, and Priority.
- If an Issue keeps switching between In-Progress and Cycles (cannot be completed within one Cycle), consider breaking down the Issue for better project management.
Process
- Sprint Cycle: One week
- Backlog: Open Issues for all work and ideas, State = Backlog, provide Estimate and Priority.
- Weekly Sprint Planning Meeting: Select Issues from the Backlog and those currently in progress (To Do or In Progress), set Priority/Estimate, arrange for execution in the current Sprint, and add them to the Cycle.
- If there are ad-hoc Issues to be executed during the Sprint, they should also be opened directly in the current week’s Cycle.
- Daily Stand-up: Spend 15 minutes each morning quickly sharing the status of Issue execution.
- Prepare and start executing Issues, change status to ToDo/In Progress.
- Upon completion of an Issue, change status to Done, or consider creating a Review State.
- Weekly Sprint Review Meeting on Fridays: Review the Issues completed during the week (not for Planning the next week), quickly review completed Issues, and ensure Estimates are filled in for future reference.
- Try to ensure that all Issues within the Cycle are completed by the end of the week. For unfinished Issues, decide whether to include them in the next week’s Cycle or change to Pending/Cancel.
- Continuously iterate through the above process to manage all Issues and Projects.
⚠️⚠️Disclaimer⚠️⚠️
The above is just an example of a workflow. Please note that there is no perfect process, only the one that suits your team. Refer to the structure provided by Plane.so to unleash creativity and find the best project management approach.
Appendix
API
Plane.so has a clean frontend-backend separation architecture, providing a comprehensive API. After creating API Tokens from Workspace Settings, you can use the API by including the API Request Header X-API-Key
. For API Endpoint request methods, refer to the official API documentation.
However, since the official documentation is not yet complete and many request methods are not listed, the quickest way is to open the browser tools, check the Network requests, and see how the official site makes API requests. Then, apply your own Key to use it.
Issue Comment, submitting the question directly after selecting Chinese characters
Opened an Issue with the official & followed the Source Code, feeling that the chances of fixing it are quite low, because it didn’t consider the need to select the language from the beginning, so it directly binds the Enter Event on the keyboard to submit the Comment.
Browser Extension Workaround:
Here is a workaround JavaScript script I wrote to hook the Enter event.
- First, install the JavaScript browser injection plugin:
This is a shared extension for Chromium, other browsers can also search for similar JavaScript Inject tools.
- Go back to Plane.so, click on the extension -> click on “+”
- Inject the following JavaScript into 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);
- After pasting the code, click “Save”.
Go back to Plane.so (refresh) and open an Issue to test the Comment function.
- Press Enter to select a word will no longer automatically submit, press Space + Shift Enter to line break, manually click Comment to submit a comment.
⚠️⚠️⚠️Security Issue⚠️⚠️⚠️
Because Plane.so is still in the development stage and the product is very new, it is uncertain whether there are security issues. It is recommended not to upload any sensitive data to avoid data leakage in case of major issues with the service, or use Self-Hosted to self-host for local intranet use.
Plane Self-Hosted Self-Hosting Tutorial
For any questions and suggestions, please feel free to contact me.
===
===
This article was first published in Traditional Chinese on Medium ➡️ View Here