Skip to content

Commit

Permalink
Writing
Browse files Browse the repository at this point in the history
  • Loading branch information
hcourdent committed Nov 18, 2024
1 parent d78c2ba commit 5edf000
Show file tree
Hide file tree
Showing 12 changed files with 170 additions and 47 deletions.
Binary file added docs/assets/compared_to/flow_kestra.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/compared_to/flow_windmill_kestra.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/compared_to/kestra_pricing.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/compared_to/prefect_pricing.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed docs/assets/compared_to/prefect_pricing.png.webp
Binary file not shown.
Binary file modified docs/assets/compared_to/windmill_gh.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed docs/assets/compared_to/windmill_gh.png.webp
Binary file not shown.
193 changes: 152 additions & 41 deletions docs/compared_to/kestra.mdx
Original file line number Diff line number Diff line change
@@ -1,44 +1,155 @@
# Windmill compared to Kestra
import DocCard from '@site/src/components/DocCard';

# Kestra vs Windmill

![Windmill Kestra](../assets/compared_to/windmill_kestra.png 'Windmill Kestra')

{/*
Context of this page writting
- We, are Windmill, an open-source workflow engine and developer platform.
- Kestra is a competitor
- We want to draw an honest comparison between the two
Overall thoughts on Kestra
- when developers come to Windmill, they don't have to "learn" another framework but just write their code in the language they know with the tools they already have (like vs code / code editor on the web app) and then the "settings" are in an intuitive UI and not a yaml that they have to kindof learn (Kestr
Intro, context
- Dates, Kestra recent uplift since fundrasing announcement in 2024
- Leave placeholder for Windmill
Notes on Kestra:
- Native support for Python, R, Node.js, Julia, Ruby, Shell, or PowerShell, but everything else via Docker
- Similar architecture based around the queue being the central source of truth for the event driven orchestration of tasks / flows / job
- Dependency caching and pre-installed dependencies seem to be also supported for Python or when using Docker but has to be done manually
Bad / OK (on Kestra):
- No baked-in approvals (you can use the pause, then wait for incoming webhook manually) -> In Windmill: approval steps
- No app builder / automated UI generation for script input fields? -> In Windmill: we have the low-code App editor
- No visual flow builder / editor -> Flow editor in Windmill
- No reusable variables / secrets / resources (can use external vaults though) -> In Windmill: we have reusable variables, secrets, resources
- No auto dependency installing / caching (you have to do it manually for scripts on the workers) -> In Windmill: we auto-install and cache dependencies for you, you focus on writing code
- YAML only
- You have to always go through IO and read write files between steps
- Simple arguments to functions are passed as env variables, which is inconvenient
- No worker logs or metrics? (couldn’t find them in the dashboard)
- Performance (see benckmark, leave placeholder)
- No AI assistant autocomplete code
Good
- Workflow as code editor
- Huge amount of triggers (through plugins)
- Backfill
- Simple: only a flow editor, a script is a one step flow (in Windmill, flows are orchestrated scripts, architecture choice)
- Super easy install as well (download Docker compose file) that comes with pre-populated tutorial flows
- A *lot* of plugins
*/}
[Kestra](https://kestra.io) is an event-driven orchestration platform that allows developers to build and run workflows declaratively in code.

We have tested and conducted performance benchmarks on Kestra, and this page outlines our conclusions. Please note that the content is written by Windmill; feel free to [contact us](../misc/6_getting_help/index.mdx) for any requests or modifications.

## Open source

Both Windmill and [Kestra](https://github.com/kestra-io/kestra) are fully open source and can be self-hosted. They both offer an easy installation process through Docker Compose, with pre-populated tutorial flows to help users get started.

Windmill provides and integrates into its platform a [public community Hub](https://hub.windmill.dev/) where users share useful and proven scripts, flows, and applications.

![Windmill GitHub](../assets/compared_to/windmill_gh.png 'Windmill GitHub')

<div className="grid grid-cols-2 gap-6 mb-4">
<DocCard
title="Self-host Windmill"
description="Self host Windmill in 2 minutes."
href="/docs/advanced/self_host/"
/>
</div>

## Language support and dependencies

Kestra provides [native support](https://kestra.io/docs/workflow-components/tasks/scripts/languages) for Python, R, Node.js, Julia, Ruby, Shell, and PowerShell scripts. Additional language support is available through Docker containers. While this offers flexibility, there are some key differences in how dependencies are handled:

- In Kestra, dependency caching and pre-installed dependencies need to be managed manually by the user
- Windmill automatically handles [dependency](../advanced/6_imports/index.mdx) installation and caching, allowing developers to focus on writing code
- Windmill supports [TypeScript](../getting_started/0_scripts_quickstart/1_typescript_quickstart/index.mdx), [Python](../getting_started/0_scripts_quickstart/2_python_quickstart/index.mdx), [Go](../getting_started/0_scripts_quickstart/3_go_quickstart/index.mdx), [Bash](../getting_started/0_scripts_quickstart/4_bash_quickstart/index.mdx), [SQL](../getting_started/0_scripts_quickstart/5_sql_quickstart/index.mdx) and more [languages](../getting_started/0_scripts_quickstart/index.mdx) natively

![Script languages](../../static/images/script_languages.png 'Script languages')

<div className="grid grid-cols-2 gap-6 mb-4">
<DocCard
title="Languages"
description="Windmill supports TypeScript, Python, Go, PHP, Bash, SQL and Rust or launch docker containers."
href="/docs/getting_started/scripts_quickstart"
/>
<DocCard
title="Dependencies in Windmill"
description="Learn how Windmill handles dependencies automatically."
href="/docs/advanced/imports"
/>
</div>

## Architecture and development experience

Both platforms share a similar architecture centered around a queue-based system for event-driven orchestration of tasks and flows. However, there are several key differences in the development experience:

### Configuration and workflow building

Kestra:
- Uses YAML-only configuration for workflows where scripts are referenced as files
- Requires passing arguments between steps through file I/O
- Passes simple arguments as environment variables
- No visual flow builder/editor

Kestra takes a code-only approach. Workflow creation is done through a YAML file. Each task is a value in the YAML, and most of your tasks will be separate files that need to be referenced in the flow (e.g. Python code can type `io.kestra.core.tasks.scripts.Python`, `io.kestra.core.tasks.python.Commands`, `io.kestra.core.tasks.python.Script`).

![Kestra flow example](../assets/compared_to/flow_kestra.png 'Kestra flow example')

Windmill:
- Provides a UI for workflow configuration and step advanced settings
- Offers a visual [Flow Editor](../flows/1_flow_editor.mdx)
- Allows direct passing of arguments between steps
- Supports both UI-based and code-based workflow creation

In Windmill, a step is simply a script in a language—nothing more. From the flow editor, you can select an existing script from your workspace or the Hub, or just write it directly in the integrated code editor. Each step can either be forked or saved as a separate script in your workspace.

![Windmill flow example](../assets/compared_to/flow_windmill_kestra.png 'Windmill flow example')

{/* TODO: ADD VIDEO OF THE SAME FLOW CREATION, WHEN MONACO IS FIXED? */}

### Developer tools

Windmill is designed to integrate seamlessly with your existing tool stack and workflows, specifically:
- [Local development support](../advanced/4_local_development/index.mdx)
- [Windmill CLI](../advanced/3_cli/index.mdx)
- [Git sync](../advanced/11_git_sync/index.mdx) for version control
- [VS Code extension](../cli_local_dev/1_vscode-extension/index.mdx)
- Built-in code editor with [AI assistance](../core_concepts/22_ai_generation/index.mdx) for autocomplete and code generation

Although Kestra offers an alternative for some of these features ([Version control with Git](https://kestra.io/docs/version-control-cicd/git), [Server CLI](https://kestra.io/docs/server-cli)), it does not allow for as seamless an integration with your existing tools.

<div className="grid grid-cols-2 gap-6 mb-4">
<DocCard
title="Local development"
description="Develop from various environments such as your terminal, VS Code, and JetBrains IDEs."
href="/docs/advanced/local_development"
/>
</div>

## Features comparison

Kestra and Windmill have a very similar set of features (they address the same needs); however, there are a few features where they stand out from each other.

### What Kestra does differently (and well)

{/* Say they are good with data pipelines? */}

- Large number of trigger types through [plugins](https://kestra.io/plugins)
- [Backfill](https://kestra.io/docs/concepts/backfill) capabilities
- Simple architecture where a script is treated as a one-step flow, only one editor

### What Windmill offers additionally

- [Automated UI generation](../core_concepts/6_auto_generated_uis/index.mdx) for script and flows input fields
- Custom platform (and pricing) for [operators](../core_concepts/16_roles_and_permissions/index.mdx#operator) to only trigger flows
- [Approval steps](../flows/11_flow_approval.mdx) to pause a flow execution until approval
- [Low-code App Editor](../apps/0_app_editor/index.mdx) for building UIs
- Reusable [variables, secrets](../core_concepts/2_variables_and_secrets/index.mdx), and [resources](../core_concepts/3_resources_and_types/index.mdx)
- Built-in worker [logs and metrics](../core_concepts/9_worker_groups/index.mdx#queue-metrics) (EE only)

### Everything else

For everything else, both platforms offer core workflow engine features like [scheduling](../core_concepts/1_scheduling/), [webhooks](../core_concepts/4_webhooks/index.mdx), and [error handling](../core_concepts/10_error_handling/index.mdx).

## Performance

[Performance benchmark placeholder - reference to comparative benchmarks with other workflow engines]

## Pricing

Windmill has a transparent pricing policy, with clear steps for implementation. Every feature mentioned above is free with Windmill, unless mentioned otherwise (EE). See all Enterprise Edition features on our [Pricing page](/pricing).

Windmill is cheaper at scale and can be used for free at any scale thanks to its open source nature.

As of November 18, 2024, Kestra does not disclose its Enterprise pricing (see below).

Kestra's pricing:

![Kestra pricing](../assets/compared_to/kestra_pricing.png 'Kestra pricing')

<div className="grid grid-cols-2 gap-6 mb-4">
<DocCard
title="Pricing"
description="Windmill's subscription plans and simulations."
href="/pricing"
/>
<DocCard
title="Plans & How to Upgrade"
description="Windmill transparently provides the content and pricing of its upgraded plans."
href="/docs/misc/plans_details"
/>
</div>

## Conclusion

Kestra offers a solid foundation for workflow orchestration with its extensive plugin system. We believe that Windmill is a more intuitive solution for developers: the user doesn't need to "learn" a new framework but simply write code in the language they already know, using the [tools](#developer-tools) they are already familiar with (VS Code, GitHub, etc.). Dependencies are automatically handled and all settings are in an intuitive UI, not in a YAML file that only a few developers in your organization are familiar with.

The choice between the two may come down to specific needs: if you're looking for a pure workflow orchestration tool with extensive plugins, Kestra might be sufficient. However, if you need a more complete platform that includes UI building, automated dependency management, and intuitive development experience, Windmill would be the better choice.
9 changes: 4 additions & 5 deletions docs/compared_to/prefect.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,9 @@ Windmill offers a clean slate, allowing you to fully explore its platform before
Windmill's open-source nature ensures that the platform is tested, approved, and continuously enhanced
to meet the community's needs.

Windmill provides and integrates into its platform a [public Community Hub](https://hub.windmill.dev/)
where users share useful and proven scripts, flows, and applications.
Windmill provides and integrates into its platform a [public community Hub](https://hub.windmill.dev/) where users share useful and proven scripts, flows, and applications.

![Windmill GitHub](../assets/compared_to/windmill_gh.png.webp 'Windmill GitHub')
![Windmill GitHub](../assets/compared_to/windmill_gh.png 'Windmill GitHub')

<div className="grid grid-cols-2 gap-6 mb-4">
<DocCard
Expand Down Expand Up @@ -407,11 +406,11 @@ Windmill has a [transparent pricing policy](/pricing), with clear steps for impl

Windmill is cheaper at scale and can be used for free at any scale thanks to its open source nature.

As of September 20, 2023, Prefect does not disclose its Enterprise pricing (see below). Its Organization pricing is more expensive than Windmill's Team Plan.
As of November 18, 2024, Prefect does not disclose its Enterprise pricing (see below).

Prefect pricing:

![Prefect pricing](../assets/compared_to/prefect_pricing.png.webp 'Prefect pricing')
![Prefect pricing](../assets/compared_to/prefect_pricing.png 'Prefect pricing')

<div className="grid grid-cols-2 gap-6 mb-4">
<DocCard
Expand Down
2 changes: 1 addition & 1 deletion docs/compared_to/retool.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ Windmill offers a clean slate, allowing you to fully explore its platform before
Windmill's open-source nature ensures that the platform is tested, approved, and continuously enhanced
to meet the community's needs.

Finally, Windmill provides and integrates into its platform a [public Community Hub](https://hub.windmill.dev/)
Finally, Windmill provides and integrates into its platform a [public community Hub](https://hub.windmill.dev/)
where users share useful and proven scripts, flows, and applications.
Unlike Retool, where you are limited to pre-written templates by the Retool teams.

Expand Down
2 changes: 2 additions & 0 deletions docs/core_concepts/9_worker_groups/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -328,6 +328,8 @@ View logs from any workers or servers directly within the service logs section o
You can visualize metrics for delayed jobs per tag and queue delay per tag.
Queue metrics is an [Enterprise Edition](/pricing) feature.
Metrics are available under "Queue metrics" button on the Workers page.
Only tags for jobs that have been delayed by more than 3 seconds in the last 14 days are included in the graph.
Expand Down
11 changes: 11 additions & 0 deletions src/components/Pricing.js
Original file line number Diff line number Diff line change
Expand Up @@ -621,6 +621,17 @@ const sections = [
},
link: '/docs/core_concepts/error_handling'
},
{
name: 'Queue metrics',
tiers: {
'tier-free-selfhost': false,
'tier-enterprise-selfhost': true,
'tier-enterprise-cloud': true,
'tier-free': false,
'tier-team': false
},
link: '/docs/core_concepts/worker_groups#queue-metrics'
},
{
name: 'Prometheus metrics',
tiers: {
Expand Down

0 comments on commit 5edf000

Please sign in to comment.