Collaboration in Windmill
Collaboration in Windmill is simplified through various features and workflows.
Windmill offers a draft system for scripts, flows, and apps, allowing multiple iterations and collaboration before deploying. Drafts are available to anyone with write access to the underlying item. It provides a simple way to iterate on items with multiple collaborators.
Windmill employs a granular permission system along with folder and group permissions. Users can be assigned to groups, and folders can be granted read/write access to groups or individual users. This system enables fine-grained control over who can access and modify specific items. Items can also be selectively shared with specific groups or users.
Workspaces in Windmill enable a dev/staging/prod workflow directly from the web interface. You can create separate workspaces for different stages of development, such as development, staging, and production. This allows for easy deployment of changes from one workspace to another. Workspaces provide logical isolation and enable a structured approach to managing different environments.
This feature is Cloud plans & Enterprise Self-Hosted only.
Multiplayer editing is available for script editing in the Cloud & Enterprise Self-Hosted of Windmill. It allows simultaneous collaboration and displays a presence bar to avoid conflicts. Windmill is actively working on adding multiplayer editing for flow and app editors as well. This feature enhances real-time collaboration among team members.
This feature is Cloud plans and Self-Hosted Enterprise Edition only.
Windmill supports 2-way sync from any source control (hence github and gitlab, but also any other source control) leveraging our CLI and CI actions. The CLI can pull a workspace locally (of all the items one has permission on, if admin, it will be the entire workspace) and push local changes to the remote. The CLI has an internal state stored in .wmill which can detect conflicts when changes have been made both locally and on the remote.
You can use this to:
Backup regularly your workspaces to git.
Develop locally using your favorite code editor and push changes to the remote.
Implement a dev/staging/prod workflow where changes are automatically pulled from one workspace and transformed into a pull request. And only once the pull request is approved are the changes deployed to the target workspace. This enable full GitOps style of deployments while still allowing users to use the web UI to edit scripts/flows/apps/.