We currently don't have an "official" stance on Windows support.
I think _guaranteeing_ full support for windows (including dev environments such as documentation building and the ability to deploy to Cloud) might not be feasible, but being able to cleanly articulate what can be expected to work vs. not work might be possible.
I believe that _most_ of our local execution should work on Windows, with minor adjustments to how we handle temporary files (see for example #858 ).
There are varying degrees to which we can push this:
This last item is probably impossible, given that the Flow needs to be serialized to binary and placed inside a Docker container for most versions of Cloud deployment, and I'm not sure how much we can ensure this process is cross-platform compatible.
I'm personally leaning towards having an appveyor CI job, although in truth I think it will be a large pain to debug given that I don't personally have access to a Windows machine (I'm open to hearing of ways to handle this).
cc: @jlowin @joshmeek @dylanbhughes @zdhughes for any opinions / discussion points I might be missing
I worry that a CI job that, sort of by definition, would only fail for odd cross-OS reasons that we (Prefect) and the majority of our users would neither expect nor have an easy way to solve — can’t be part of the pipeline at this stage. Without dedicated support, it would introduce friction far disproportionate to the comfort it gave any Windows users. I would vote for option 2 at this time, myself.
I'm on Windows and keen to give prefect a go to replace a custom dask ETL pipeline. I'm happy to open issues/PRs for any problems I come across...
@dhirschfeld Absolutely! That would be awesome!
@dhirschfeld 👍 that would be wonderful to hear how it goes
Update on this; I tried to see what I could learn (as a non-Windows user) on a Windows machine. I used GitBash + a full install of Anaconda3.
pyyaml and pytest)is_serializable debugging utility function. The timeout handling errors are coming from the fact that lambda functions aren't serializable, and to be totally honest I'm not sure why they don't occur on Unix based machines as well.Overall, I have two takeaways:
1.) working on Windows machines is really difficult and unpleasant for me
2.) the actual errors (after dealing with installation), were very mild and appear to be easily fixable
I didn't reach a conclusion with this exercise, but it was definitely informative.
That's very helpful. It sounds like we can make the experience at least not-terrible with a small amount of work, but larger guarantees may require deep dives?
Yup, that's my impression.
Ok, I've spent time on this and I've concluded that all of the core functionality of Prefect _should_ work on Windows (as we suspected).
However, given my complete lack of skill at navigating Windows machines and how hard it is for me to even setup a proper dev environment, I'm going to close this issue in favor of "we will respond to issues as they are opened" until this resurfaces as a priority.
Most helpful comment
I'm on Windows and keen to give prefect a go to replace a custom dask ETL pipeline. I'm happy to open issues/PRs for any problems I come across...