Having some experience with both, I think they are quite different. N8n looks quite polished and seems primarily concerned about connecting pre-made blocks. There are custom code blocks (JS and Python only, with limited ability to import libraries), but it’s not something you’d use by default. I thinks it great for less-technical users when compared to windmill.
Windmill OTOH supports a bunch of programming languages for steps (Go, Rust, Python, TS, etc.) and seems to have a much more “code first” approach. Reusable blocks are more like code templates compared to n8n.
Hard to say which is better. I really like the ability in windmill to just write code for each step and it comes across more powerful, but it feels less polished and intuitive when compared to n8n.
Founder of windmill.
I'm not ashamed to admit than n8n feels more polished. There are a few reasons:
- Our team was and is still much smaller. We were 5 for the first 2 years, we are now 10 (year 3), and are continuing to hire to follow our growth.
- They have been around for longer and mature for longer, more time to iterate. We have reached some level of maturity recently and are now spending more iterations on polishing rather than new features.
- Their surface area is smaller, windmill does A LOT and expose more for the better or worse.
n8n has done a lot of things really well and although we have a different audience, there is a lot to learn from what they did very well and we have the upmost respect for them. We have some overlap, but I think ultimately we strive in different kind of orgs and will cohabit rather than compete.