-
Notifications
You must be signed in to change notification settings - Fork 20
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Windows support #31
Comments
Relatedly, there's been some good news for Linux environments on Windows, including Docker support within WSL (alleviating a lot of problems, including making the Pro vs. Home edition issue moot): https://devblogs.microsoft.com/commandline/announcing-wsl-2/ Note that this issue is about native Windows support, not support for running within WSL. Ideally we support both. The latter should be much easier to achieve once WSL2 is released and widely available. |
We now have a Windows machine that we can use to test the CLI and Docker. I got Nextstrain working with Windows 10 Pro on this machine with only a few rough spots. To summarize the installation steps that worked:
If we can figure out how to best install the CLI with the system-wide Python installation (via the Microsoft store) such that it runs as expected with a |
@tsibley this is an issue again with Python >=3.9:
Is there an alternative to |
Hmm. There wasn't a viable Some options I see (not exhaustive, obviously):
|
While reviewing @victorlin's PR for new Windows installation docs, I had some thoughts about this issue:
My vote would be to drop netifaces the functionality and dependency from the CLI. |
Agreed. I wasn't ever suggesting we do that!
Agreed.
This would be fine. Two questions:
Relatedly, there's a prototype I never got back to finishing where I used mDNS/Zeroconf to advertise |
Yeah, that's a great question where having more user data would help us. :D Does anyone use (or depend on) this feature? Do the people who use it feel comfortable figuring out their own IP address? Without that information, the original motivation for this feature still seems reasonable. If people use it and know how to get their IP (via whatismyip, etc.), it wouldn't cost us much to support the feature without the nicer UX. The mDNS/Zeroconf approach could eventually make this experience nicer again. If we didn't have this feature, we would encourage users to upload their builds/narratives to GitHub or a Nextstrain Group to share with others. If Ashley had been interning with us this last summer, that's the path I would have recommended. This direction of sharing via nextstrain.org also seems to be a bigger part of our mission than supporting local services. Given all of that, I'd be ok with dropping the feature completely and pushing for remote sharing. What do you think?
This feels like delaying the inevitable need to drop or support |
Agreed. (But note that whatismyip, etc. won't/can't show you your LAN address(es), only your WAN address, so folks will have to know a bit more about how to find it.)
Agreed that remote sharing is probably better for many sharing situations, but I think we should still provide a way for someone who knows what they're doing to have
Yeah, that's fair! Let's not do it. |
@tsibley Am I right in thinking this just requires deleting these lines, the best_remote_address function, and the netifaces imports?
This seems like a nicer long-term solution. Would this approach allow users to provide their preferred IP address to Could we drop the netifaces dependency now and then implement the |
@huddlej Yep, I believe that's all that'd be needed. There's no technical reason why we can't drop netifaces now and implement We'll still be degrading the UX, but hopefully that's not an issue (and if we hear otherwise, we can reconsider). |
We used the netifaces package to determine the network IP address to use in the URL displayed by `nextstrain view --allow-remote-access`. However, netifaces became unmaintained and thus stopped having wheels built for newer Python versions. This caused installation issues on a myriad of platforms since without wheels a full C toolchain is needed to install it. For more context, see discussion starting with this comment: <#31 (comment)> Fix installation issues by dropping the dep, albeit making the UX of --allow-remote-access a bit poorer. We unfortunately do not have the time to maintain a fork of netifaces ourselves, even just for making sure wheels get built. We should do better in the future if we reasonably can (e.g. use mDNS/Zeroconf to make nextstrain.your-computer.local Just Work, or even check if netifaces gets revived).
We used the netifaces package to determine the network IP address to use in the URL displayed by `nextstrain view --allow-remote-access`. However, netifaces became unmaintained and thus stopped having wheels built for newer Python versions. This caused installation issues on a myriad of platforms since without wheels a full C toolchain is needed to install it. For more context, see discussion starting with this comment: <#31 (comment)> Fix installation issues by dropping the dep, albeit making the UX of --allow-remote-access a bit poorer. We unfortunately do not have the time to maintain a fork of netifaces ourselves, even just for making sure wheels get built. We should do better in the future if we reasonably can (e.g. use mDNS/Zeroconf to make nextstrain.your-computer.local Just Work, or even check if netifaces gets revived). Resolves #137.
In #138 I've dropped netifaces and implemented |
I would like the CLI to work well on Windows when used with Docker for Windows on Windows 10 Professional or Enterprise in a very vanilla setup. I think it is most of the way there, but there are some showstoppers and several rough edges and sharp corners. It would also be very nice, and serve more users users, to support Docker Toolbox on Windows 10 Home or older versions of Windows. To do any of this requires access to a Windows machine (not a VM, unfortunately) for development and testing, which has been a blocker so far.
This issue is going to serve as a punch list of things that need addressing. Some items may be moved to separate issues in the future.
python
, nopython3
.docker run
invocation must not be standard Windows paths, but munged versions (e.g.//c/Users/…
). Affects volume mapping.The text was updated successfully, but these errors were encountered: