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

Support Windows #3

Open
jankeromnes opened this Issue Oct 11, 2015 · 13 comments

Comments

4 participants
@jankeromnes
Member

jankeromnes commented Oct 11, 2015

Currently, the Janitor only supports Debian-based development environments.

However, some of the large software projects that the Janitor aims to support (e.g. Firefox) also need Windows-based environments for development and bug-fixing.

EDIT: Progress on Windows support is currently tracked in https://github.com/JanitorTechnology/janitor/projects/4

@jankeromnes jankeromnes added the Server label Nov 14, 2016

@jankeromnes jankeromnes added Docker and removed Server labels Mar 2, 2017

@jankeromnes

This comment has been minimized.

Show comment
Hide comment
@jankeromnes

jankeromnes Jul 31, 2017

Member

@nt1m is currently trying to set up a Windows VM for Janitor.

It looks like Docker supports Windows images, but we'd probably need a dedicated Windows hosting server for it to work (because we get image operating system "windows" cannot be used on this platform errors on our Linux servers).

@etiennewan mentioned that we might need:

[...] to have Windows Server 2016 to use the Windows container feature (with Docker as a container manager)
To test locally, Win10 should be enough (but you won't find W10 on a server, that's why I pointed out WS2016 is required)

Member

jankeromnes commented Jul 31, 2017

@nt1m is currently trying to set up a Windows VM for Janitor.

It looks like Docker supports Windows images, but we'd probably need a dedicated Windows hosting server for it to work (because we get image operating system "windows" cannot be used on this platform errors on our Linux servers).

@etiennewan mentioned that we might need:

[...] to have Windows Server 2016 to use the Windows container feature (with Docker as a container manager)
To test locally, Win10 should be enough (but you won't find W10 on a server, that's why I pointed out WS2016 is required)

@jankeromnes

This comment has been minimized.

Show comment
Hide comment
@jankeromnes

jankeromnes Jul 31, 2017

Member

Previously, I remember that @espadrine also experimented with something similar.

He fired up a Windows 7 ISO image using QEMU on a Linux server, and was able to connect noVNC to a VNC server inside the Windows 7 VM, giving you access to a Windows web remote desktop.

But it would probably need a lot more work to become usable for Janitor, as you'd need to checkout a project's sources and build dependencies (something reproductible Docker instructions are amazing at) in order to set up a fully working, up-to-date dev environment that people can use to hack on projects and submit contributions for review.

I'm also not clear how Cloud9 IDE would work with such a setup.

Member

jankeromnes commented Jul 31, 2017

Previously, I remember that @espadrine also experimented with something similar.

He fired up a Windows 7 ISO image using QEMU on a Linux server, and was able to connect noVNC to a VNC server inside the Windows 7 VM, giving you access to a Windows web remote desktop.

But it would probably need a lot more work to become usable for Janitor, as you'd need to checkout a project's sources and build dependencies (something reproductible Docker instructions are amazing at) in order to set up a fully working, up-to-date dev environment that people can use to hack on projects and submit contributions for review.

I'm also not clear how Cloud9 IDE would work with such a setup.

@jankeromnes

This comment has been minimized.

Show comment
Hide comment
@jankeromnes

jankeromnes Jul 31, 2017

Member

@etiennewan was actually able to run the Cloud9 SDK on Windows 10:

15:16:11 <@etiennewan> Using C9sdk on a windows env : you can open files, edit them and save them, use the terminal (Windows' CMD.exe will be used). You may need to rewrite the runner (windows syntax, paths) in order for them to work
15:16:22 <@etiennewan> runners*
15:17:19 <@jankeromnes> etiennewan: wow, have you seen this in action?
15:18:00 <@jankeromnes> etiennewan: I was afraid C9 dependencies (e.g. node, tmux, etc) might not be available on Windows, and was thinking of hooking it up in a cygwin or git-bash like environment (or bash-for-windows, which now exists)
15:18:09 <@etiennewan> yes, I actually ran c9sdk on my windows laptop directly before creating a Vagrant env for my c9sdk local workflow

Member

jankeromnes commented Jul 31, 2017

@etiennewan was actually able to run the Cloud9 SDK on Windows 10:

15:16:11 <@etiennewan> Using C9sdk on a windows env : you can open files, edit them and save them, use the terminal (Windows' CMD.exe will be used). You may need to rewrite the runner (windows syntax, paths) in order for them to work
15:16:22 <@etiennewan> runners*
15:17:19 <@jankeromnes> etiennewan: wow, have you seen this in action?
15:18:00 <@jankeromnes> etiennewan: I was afraid C9 dependencies (e.g. node, tmux, etc) might not be available on Windows, and was thinking of hooking it up in a cygwin or git-bash like environment (or bash-for-windows, which now exists)
15:18:09 <@etiennewan> yes, I actually ran c9sdk on my windows laptop directly before creating a Vagrant env for my c9sdk local workflow

@espadrine

This comment has been minimized.

Show comment
Hide comment
@espadrine

espadrine Jul 31, 2017

Previously, I remember that @espadrine also experimented with something similar.

Technically, it isn't bad. I was mostly worried about violating Microsoft's license if I published a service.

espadrine commented Jul 31, 2017

Previously, I remember that @espadrine also experimented with something similar.

Technically, it isn't bad. I was mostly worried about violating Microsoft's license if I published a service.

@jankeromnes

This comment has been minimized.

Show comment
Hide comment
@jankeromnes

jankeromnes Jul 31, 2017

Member

I was mostly worried about violating Microsoft's license if I published a service.

I've heard that's why every Windows-enabled cloud service uses Windows Server, I guess they have service-compatible licenses.

Member

jankeromnes commented Jul 31, 2017

I was mostly worried about violating Microsoft's license if I published a service.

I've heard that's why every Windows-enabled cloud service uses Windows Server, I guess they have service-compatible licenses.

@nt1m

This comment has been minimized.

Show comment
Hide comment
@nt1m

nt1m Aug 1, 2017

Member

There's microsoft/windowsservercore which is microsoft's official docker image for windows.

I've also learnt there's microsoft/nanoserver which is a extremely light version (256MB!) of Windows server core.

See https://stefanscherer.github.io/is-there-a-windows-docker-image-for/ which is an interesting article.

Member

nt1m commented Aug 1, 2017

There's microsoft/windowsservercore which is microsoft's official docker image for windows.

I've also learnt there's microsoft/nanoserver which is a extremely light version (256MB!) of Windows server core.

See https://stefanscherer.github.io/is-there-a-windows-docker-image-for/ which is an interesting article.

@Coder206

This comment has been minimized.

Show comment
Hide comment
@Coder206

Coder206 Aug 1, 2017

Member

@ntim My only concern with those images is that there is no Windows GUI...

Member

Coder206 commented Aug 1, 2017

@ntim My only concern with those images is that there is no Windows GUI...

@jankeromnes

This comment has been minimized.

Show comment
Hide comment
@jankeromnes

jankeromnes Sep 14, 2017

Member

There's microsoft/windowsservercore which is microsoft's official docker image for windows.

I've also learnt there's microsoft/nanoserver which is a extremely light version (256MB!) of Windows server core.

Sounds useful! I think we'd want to go with microsoft/windowsservercore (hosted on a Windows Server 2016 instance, e.g. on AWS) because it has more chances of having all necessary dependencies that developers might need to comfortably work on Firefox and Servo, while microsoft/nanoserver might be tricky (in the same spirit that we use a full ubuntu image instead of a very light one like alpine).

However, @Coder206 you make a good point about the GUI, which is required if we want to support anything like VNC, Visual Studio, Visual Code, and any other graphical thing that Servo / Firefox developers might find useful, other than Cloud9 SDK (which seems to work on Windows). I wonder if we can find something like our virtual X server but for microsoft/windowsservercore. Maybe a VNC server of some kind comes with its own virtual GUI?

Member

jankeromnes commented Sep 14, 2017

There's microsoft/windowsservercore which is microsoft's official docker image for windows.

I've also learnt there's microsoft/nanoserver which is a extremely light version (256MB!) of Windows server core.

Sounds useful! I think we'd want to go with microsoft/windowsservercore (hosted on a Windows Server 2016 instance, e.g. on AWS) because it has more chances of having all necessary dependencies that developers might need to comfortably work on Firefox and Servo, while microsoft/nanoserver might be tricky (in the same spirit that we use a full ubuntu image instead of a very light one like alpine).

However, @Coder206 you make a good point about the GUI, which is required if we want to support anything like VNC, Visual Studio, Visual Code, and any other graphical thing that Servo / Firefox developers might find useful, other than Cloud9 SDK (which seems to work on Windows). I wonder if we can find something like our virtual X server but for microsoft/windowsservercore. Maybe a VNC server of some kind comes with its own virtual GUI?

@jankeromnes

This comment has been minimized.

Show comment
Hide comment
@jankeromnes

jankeromnes Oct 19, 2017

Member

Update: Unfortunately Windows containers don't seem to have any graphical interface:

At this time, no, Docker for Windows Server 2016 does not support GUI-based applications. This is because Windows containers are based on either Nano or Core Server, which do not allow users to start up a GUI-based interface nor RDP into the container.

Source: https://success.docker.com/KBase/Does_Docker_for_Windows_Server_2016_support_GUI-based_applications%3F

EDIT: Well that's basically what @Coder206 said.

Member

jankeromnes commented Oct 19, 2017

Update: Unfortunately Windows containers don't seem to have any graphical interface:

At this time, no, Docker for Windows Server 2016 does not support GUI-based applications. This is because Windows containers are based on either Nano or Core Server, which do not allow users to start up a GUI-based interface nor RDP into the container.

Source: https://success.docker.com/KBase/Does_Docker_for_Windows_Server_2016_support_GUI-based_applications%3F

EDIT: Well that's basically what @Coder206 said.

@jankeromnes

This comment has been minimized.

Show comment
Hide comment
@jankeromnes

jankeromnes Oct 27, 2017

Member

We should probably try using Azure then: https://azure.microsoft.com/en-us/

They're supposed to have many advanced features, so I hope they'll have our requirements:

  • private development environments with reasonable performance and (web-compatible) virtual desktop
  • way to pre-build/pre-configure a Windows image with everything needed for Firefox/Servo development (so that we can create environments very fast using an API, rather than asking people to wait for N hours)

Optionally:

  • exposed web ports for Cloud9 IDE and other web previews (but virtual desktop + properly configured visual studio might be enough)
Member

jankeromnes commented Oct 27, 2017

We should probably try using Azure then: https://azure.microsoft.com/en-us/

They're supposed to have many advanced features, so I hope they'll have our requirements:

  • private development environments with reasonable performance and (web-compatible) virtual desktop
  • way to pre-build/pre-configure a Windows image with everything needed for Firefox/Servo development (so that we can create environments very fast using an API, rather than asking people to wait for N hours)

Optionally:

  • exposed web ports for Cloud9 IDE and other web previews (but virtual desktop + properly configured visual studio might be enough)
@espadrine

This comment has been minimized.

Show comment
Hide comment
@espadrine

espadrine Nov 29, 2017

espadrine commented Nov 29, 2017

@jankeromnes

This comment has been minimized.

Show comment
Hide comment
@jankeromnes

jankeromnes Jan 25, 2018

Member

See also https://discourse.janitor.technology/t/scripting-azure-vm-image-builds/142 where @Coder206 found out how to script VM configuration and image creation using Azure's API.

Member

jankeromnes commented Jan 25, 2018

See also https://discourse.janitor.technology/t/scripting-azure-vm-image-builds/142 where @Coder206 found out how to script VM configuration and image creation using Azure's API.

@jankeromnes jankeromnes added this to the windows milestone Jan 25, 2018

@jankeromnes jankeromnes added this to In Progress in Windows VMs [needs budget] Jan 25, 2018

@jankeromnes jankeromnes added WIP and removed Docker labels Jan 25, 2018

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment