[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)