[HN Gopher] Windmill.dev ___________________________________________________________________ Windmill.dev Author : tosh Score : 178 points Date : 2022-05-05 13:04 UTC (9 hours ago) (HTM) web link (docs.windmill.dev) (TXT) w3m dump (docs.windmill.dev) | rubenfiszel wrote: | Hello, author here. I did not plan to have a wide announcement | today tbh. This is the repo: https://github.com/windmill- | labs/windmill | | I have my YC interview in 10 minutes and wanted to OSS it before. | Agree it lacks a lot of polishing, but that will be done in about | 2 weeks :) | | JS/TS through Deno is coming in a week, I am currently working on | a draft pull request for it. | | Really happy to answer all the questions after my interview :) | | (I host the demo on a small hetzner node, please be gentle to it, | I will scale it up asap :)) | | PS: Since it's HN: The backend is all in Rust and the feature I | am most proud of is automatic parameters and dependency inference | for locking the dependency versions and generating the frontend | of your app by analyzing the scripts using simple but | surprisingly good heuristics :) | poofsoda wrote: | Good luck with the interview!! | raviparikh wrote: | Congrats on the (unintentional) launch and on getting into YC! | | We're working on something similar at https://www.airplane.dev/ | - same scripts-to-apps approach, schedules, trigger from Slack, | etc. | | Would love to chat sometime and compare notes if you're up for | it - ravi@airplane.dev | rubenfiszel wrote: | Yes of course. I would lie if I said I was not aware of your | existence. Your product and team is dope and I will reach out | to you! | grn wrote: | What did you build the website with? It looks really nice and | I'm looking for something I could use with my project. [1] | | [1] https://github.com/gregnavis/active_record_doctor | rubenfiszel wrote: | Update: I GOT IN!!! | devoutsalsa wrote: | Hell yeah! I'm drinking a bottle of red wine to celebrate | your victory. | jamesmcintyre wrote: | Now you must share a detailed account of your interview! | Congrats! | sam1r wrote: | Congrats! You are already on the front page, and your demo | day is miles away. That is awesome. | | EDIT: Months away - sorry, I am flying on spirit atm. | sebmellen wrote: | Awesome! Would love to hear more about the business model | you're thinking of. Can't wait for Deno JS/TS! | dvaun wrote: | Congratulations! | bm-rf wrote: | Congrats! We currently use rundeck to ssh into servers to run | python automations. This looks to be a much more elegant | solution. | echelon wrote: | Congrats!! That's awesome! :D | | When did you submit your application? And when did they | notify you about the interview? | | You applied as a solo founder? That's a huge stamp of | approval. | aisrael wrote: | Congrats! | fernandotakai wrote: | congrats! | wantlotsofcurry wrote: | Congrats!!! | metadat wrote: | Does the script analysis support bash scripts? | jzig wrote: | It reminds me of a simpler version of Apache NiFi | (https://nifi.apache.org/) | ryukafalz wrote: | This looks pretty neat! Once the FOSS self-hostable version is | out I might try it out for my local hackerspace, it seems like it | might be useful for those little things that are too small to | warrant standing up infrastructure at our small scale. | rubenfiszel wrote: | If you're up to it, I can send you an email when it's ready to | try, likely tomorrow. The Dockerfile is mostly working as is, | you just need to setup the DB, pass the connection info and do | some manual superadmin rows insertion. I will automate the | process asap. | maneesh wrote: | I would love access! just tried to deploy and it threw me a | docker authorization error. | rubenfiszel wrote: | You can always login with your github account for now: | https://alpha.windmill.dev | | I am not doing anything fancy for building the dockerfile: | https://github.com/windmill- | labs/windmill/blob/main/.github/... | | Running the docker on the other hand require to pass a few | env variables, among them the connection info to a PG | instance. It also require to setup an user by editing | directly the database and hashing by hand your password | which is super inconvenient. I am working right now on | making the process easier, did not expect self-host users | so early. | Aeolun wrote: | If your stuff is marketed as OSS and you get on HN, the | first question would definitely be "where's the docker | file/image". | | At least, that's always _my_ first reaction when seeing | something cool like this. | philsnow wrote: | I twitched a little when I saw lists and dicts included as | default arguments in one of the examples: def | main( ..., obj: dict = {"even": "dicts"}, | my_list: list = ["or", "lists!"], ... | | has modern python made these less footgun-y? the issue being that | the code _looks_ like 'obj' and 'my_list' are as provided in the | default arguments every time the function is called, but the | defaults are instantiated once and they can be modified inside | the function: def foo(msgs=["hello"]): | print(msgs) msgs.append("world") foo() # | prints ['hello'] foo() # prints ['hello', 'world'] | foo() # prints ['hello', 'world', 'world'] | | Nonetheless, introspecting on default arguments like that looks | like a fine way to turn functions into UI elements if you're | going to contrive that those functions aren't going to be re- | entered multiple times in the same python runtime. | animal_spirits wrote: | Nope, this is still a "feature" of python and will continue to | be | gigatexal wrote: | Pricing info? | rubenfiszel wrote: | It's OSS so free if you self-host, otherwise I have a pricing | plan on the landing page but it I focused so far only on | delivering a beta and not on billing. Hence, right now there is | no quota on anything and it is all free for the hosted version. | I will be delighted if it provides value to you, get adoption, | and I will figure out how to monetize later. | jzig wrote: | Anyone know of anything like this but in JS/TS? | eatonphil wrote: | I build a somewhat similar app, DataStation [0], that is in | JavaScript and Go. It supports scripting in Python, Julia, R, | JavaScript, Ruby, etc. | | The server version of it exists and I run it myself but that | process is not documented yet. (Most people use it as a desktop | app today.) | | [0] https://github.com/multiprocessio/datastation | anyfactor wrote: | This is very interesting. I was actually looking for a | cleaner way to write SQL and Python code. I find writing | multistring SQL query on Python code messy so looking forward | to giving DataStation a shot. | | Couple of question- | | - Are you building this as a pure Open Source project? I | couldn't find the pricing section, and you have built it as | an electron project. I am curious to know about your pricing | strategy. | | - Have you considered incorporating dbt or dbt like syntax | query? | eatonphil wrote: | > - Are you building this as a pure Open Source project? I | couldn't find the pricing section, and you have built it as | an electron project. I am curious to know about your | pricing strategy. | | Long-term plan is that everything currently open source | will always be open source (and there's quite a lot I | believe). I'd like to release a hosted (paid) SaaS version | for teams and an enterprise version also aimed at teams. | | But the desktop app that exists now will always be free and | open source. And I have no plans to stop adding new | databases, file sources, and scripting languages as needed | to the open source core. | | > Have you considered incorporating dbt or dbt like syntax | query? | | I think it's already pretty close to this. You can import | data within SQL queries (works with SQLite, MySQL, and | PostgreSQL) using the `DM_getPanel` syntax. For everything | else you can use Jinja-style templates [0]. This allows you | to, for example, run a query to select IDs based on some | filter in a PostgreSQL database and then pass those IDs to | an Elasticsearch filter in another panel -- without writing | any code. | | [0] https://datastation.multiprocess.io/docs/latest/Panels/ | Macro... | anyfactor wrote: | Thank you for responding. You have built something | incredible. Also, I really like how you have incorporated | gifs in the documentation. | | Wishing you all the best luck! | eatonphil wrote: | Thank you! It's still early stages of course. Always | grateful for any feedback if you ever have any; feel free | to share on discord or email me. | giraffe_lady wrote: | I just use the "future" slack sdk for this. It uses deno, rides | on the slack auth, and has a little DB in there for storing | config and state if you need it. Slack itself provides basic | but sufficient UI tools. | | I don't know if in practice this is really the same as what OP | is providing and it's tied to slack which is abstractly bad. | But if you're already working in ts and running slack it's very | powerful for how easy it is. | thomasqbrady wrote: | Can you say a bit more about what you mean? Are you talking | about this: https://api.slack.com/future? If so, I'm not sure | how it relates, but maybe I'm missing something? | giraffe_lady wrote: | I'm more likely I'm missing something, or assuming the main | use of windmill is similar to how I use this, when it's | just a small overlap. | | The problem I needed to solve was how to enable employees | outside of engineering to run scripts written by engineers, | without them having to set up/interact with a full | scripting environment like node. Particularly managing | secrets and auth was a problem. | | That slack "future" thing makes it very easy to drop a js | or ts script into a new "workflow" and push it into the | slack org. You can attach it to a slack modal or form, have | auto-complete hints, just generally piggy-back on the slack | UI that everyone is already familiar with. | | It's basically deno with the slack UI over it from the | user's perspective. | | Again I don't know if this solves any problems people would | be using windmill to solve, but if I were using windmill | I'd probably be using it for something similar to this. | moritonal wrote: | I think Node-Red, if I understand this site at all. | rubenfiszel wrote: | It will support JS/TS in about a week | ohgodplsno wrote: | >UI is autogenerated from your scripts.Gain velocity, reduce tech | debt. | | "Reduce tech debt by using this tool that might or might not be | maintained in a few years to build a critical part of your | business workflow" is a bold take I didn't think I'd see this | year, but here we are. | rubenfiszel wrote: | Agreed that is why it is primordial for this kind of core tools | to: | | - make it OSS | | - build a community around it that can continue without the | startup being around if needed | | I have done the first, the second is my aim. | abeppu wrote: | Given the name, and premise of creating flows of python scripts | ... is this intended to make people think of Airflow? A lot of | what we see in the demo video (on a scheduled basis run a | sequence of steps which gather data, produce some summary | statistics, share it to slack, parameters which can be defined | when a run is triggered or from prior steps, etc etc) is very | familiar to users of existing workflow systems. | | The UI to create/author flows seems slick, but I also think that | for important flows, teams will want to be able to review changes | to flows, make cross-cutting updates to several flows when a | popular script or connector is updated, etc, in which case being | able to view/edit/diff flows as code is quite valuable. | rubenfiszel wrote: | Demo is a bit old (2 months ago), I need to reshoot it. | | It has some resemblances with Airflow but one aim is to make it | accessible to less technical users that can treat modules like | blackbox. Similar to Zapier but the code is inspectable and | editable at any point. At the core, it is a | scheduler/orchestrator of script execution, so it's similar to | Airflow in that sense, but the product is really not meant for | the same usage. | | I picked the name a bit randomly because it is retro and one of | the first automation humans have created. I did not think too | much about it but now I love it :) | olah_1 wrote: | I believe that Anvil is a competitor: https://anvil.works/ | tomatowurst wrote: | very cool, did not know there was a market for python web | products. constantly being gaslighted by frontend/backend.js | crowd. | wmichelin wrote: | `import *` in the screenshot. | | just poking fun, I understand that by no means should you wait | for perfection before shipping. Congrats on getting to the front | page! | rubenfiszel wrote: | Actually I wanted to point out that there is a pyright LSP | server interacting with Monaco that would highlight those kinds | of error. It is not that unintentional! | Aaronstotle wrote: | This is amazing, at one of my previous employers, a colleague had | started learning python and was able to automate a lot of the | tedious work with python. | | Something like this would have been perfect. | debarshri wrote: | This looks very similar to airplane.dev, is that intended? | raviparikh wrote: | Agreed, it does look very similar to what we're building at | https://www.airplane.dev/ | | However I've come across a few other similar products as well | over the past year we've been building Airplane, and frequently | things appear superficially similar but there's a difference in | focus/use case/target customer/etc. For example, Airplane is | focused on support, customer success or ops use cases (e.g. "I | wrote a script to delete a user record / reset a 2fa token / | etc, I can use Airplane to let the customer support team have | access in a safe way"). Whereas I've seen other tools in this | space target more of a "programmable Zapier" type use case | (e.g. "For every new customer, I want to use a Python script to | hit the Slack API and generate a custom notification.") | | It'll be interesting to see how Windmill evolves over time. | debarshri wrote: | Thanks for the clarification! Also, recently I discovered | retool workflows [1], something I think people would use ops, | customer success flows too. In general, automation like these | solves relevant problem in an org. | | [1] https://docs.retool.com/docs/building-a-workflow-with- | the-re... | metadat wrote: | Is airplane.dev fully OSS and self-hostable? | Aeolun wrote: | Hmm, I can totally see where this is a great idea. When that | docker file/image is up I'll give it a spin. | aftbit wrote: | Looks really interesting! We have an "eng-b_team" channel which | is a place for all of the non-technical folks at my company to | collaborate on scripts, SQL queries, etc. They would love to use | something like this. How do we set up a self-hosted instance to | try it out? | eatonphil wrote: | https://github.com/windmill-labs/windmill#how-to-self-host | | Looks like those instructions don't exist yet. | rubenfiszel wrote: | The Dockerfile mostly work by itself, the only thing you will | lack is how to generate the super-admin. Sorry I didn't | expect to have any announcement today but promised it will be | filled by EOD :) | acgourley wrote: | I'd use it for basic process automation, airtable data IO, | triggering marketing campaigns or slack bots, etc. | | It's a heavy weight feature request but if I could lean on it in | the way I lean on Prefect.io now for spinning up cloud workers on | demand I'd use it for a lot more. | thealistra wrote: | This could really use some better explaination with examples. I | am a dev for 15 years and I have no idea what it does after a | minute of looking at it | eatonphil wrote: | It makes sense to me (but maybe because I'm building something | similar). | | You write code and they host it for you and provide a GUI | around your code. It's like a crazier (in a good way) version | of Kibana or Grafana or Metabase. In Kibana/Grafana/Metabase | they provide a hosting platform for queries -- any queries | within your internal eng team. This provides a hosting platform | for scripts. | | Whether or not that is exactly what they are trying to do, it's | what I'm trying to do. What I wish I'd had at many prior | companies. | | I can't find them now while trying to search but it also | reminds me of some tools I've seen that generate a GUI from a | description of a tool's command line flags. | mritchie712 wrote: | Streamlit maybe? | eatonphil wrote: | Yeah that looks similar! I think I've seen open-source | terminal GUI (TUI) wrappers too. | bityard wrote: | To me, it looks like Rundeck with a much better UI. | rubenfiszel wrote: | Yes for sure, I need to improve the docs! I have had issues | explaining it in simple terms because it is a system that is | quite obvious once you get it but confusing from a first look. | I have aimed to make it consistent everywhere to reduce | complexity. | | Better and simpler docs will be my sole focus for the following | weeks + JS/TS support. | | I have some diagrams and a step-by-step explanation on the | README: https://github.com/windmill-labs/windmill | | But the step-by-step is missing the concepts of variables and | resources. If you have any feedback i'd be glad to hear it. I | will opensource the website EOD too. | WorldMaker wrote: | I read it as a "functions" ("scripts") host similar to AWS | Lambda or Azure Functions with a better overall UI especially | for notebook/REPL-driven development. | | I've been automating a lot of tasks in multiple languages | including Python with Azure Functions last few years, and I | find this tool interesting to some of my use cases (though not | immediately applicable because of existing cloud commitments, | as such things go). I have at times thought that it would be | great if I had a "Notebook view" of the Python Functions in | Azure (preferably with strong git integration) to make some | Data Scientist workflows easier. I've also had times where it | might be nice when a cache needs to be "kicked" or a cleanup | process run if I had a simple automated GUI for certain | Function invocations or queue message drops that I could point | a Business Analyst to. | | In the first use case, I'm aware that Azure offers Notebook | workspaces and there is some flow between building a test | Notebook environment and then eventually migrating some of the | code into a Functions app; but it is definitely not a | streamlined all-in-one product and instead requires piecing | together a bunch of semi-related ones and hopping back and | forth between multiple different Azure resources. It also | doesn't help that there seem to be fork between "general | Notebook environments" and "ML Notebook environments" that | seems more artificial than natural and complicates standing | anything up in the first place. (Which is to say currently we | aren't really using any of Azure's Notebook tools because they | are too complicated and divorced from the use cases we need | them. Every now and then I circle back around to explore them | and the complexity just makes me angry.) This tool seems to | already have some better ideas to approach that workflow and | I'm curious to watch it, at the very least if it encourages | Microsoft to up their game in competition with it. | | As for the other use case, I know Azure Functions has almost | all of the reflection metadata it needs to offer better tools | here even in Python and Typescript already, but its Code/Test | tool is definitely underpowered compared to the metadata it | already has. It would be interesting to see if this new project | provides competitive fire there. | scandox wrote: | They host "scripts" and "apps" that you can execute against | "resources" (i.e. databases etc...). So basically a | lightweight, online environment for running code without any | deployment? | | I suppose an example might be marketing has a DB of prospective | customers and this would allow devs to quickly write scripts to | clean it, apps to allow people to add to it and automated tasks | to trigger events (eg. an email) based on certain metrics | etc... | | I guess it means being able to rapidly build fairly throwaway | systems for internal use. | puchatek wrote: | So... Self-hosted AWS lambdas (but only for python)? | stronglikedan wrote: | I immediately recognized it as rules-based automation (RBA), | but maybe because I work with those types of apps. | umvi wrote: | Seems like a Python-based alternative to something like Google | Apps Scripts | omarhaneef wrote: | To me it looked like a low-code tool to automate "processes" | like Zapier/ifttt and so on. Basically a glue between apps with | a little python thrown in for transformations. ___________________________________________________________________ (page generated 2022-05-05 23:00 UTC)