JanitorTechnology / janitor

The fastest development system in the world.
https://janitor.technology
GNU Affero General Public License v3.0
128 stars 22 forks source link

Support Windows #3

Open jankeromnes opened 9 years ago

jankeromnes commented 9 years ago

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 commented 7 years ago

@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 commented 7 years ago

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 commented 7 years ago

@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 commented 7 years ago

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 commented 7 years ago

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 commented 7 years ago

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 commented 7 years ago

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

jankeromnes commented 7 years ago

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 commented 7 years ago

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 commented 7 years ago

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:

Optionally:

jankeromnes commented 6 years ago

See also https://discourse.janitor.technology/t/windows-container-support-would-be-really-really-cool/85

espadrine commented 6 years ago

This company probably has related tech as well: https://shadow.tech/technology, you might be able to talk to them.

On Mon, Nov 27, 2017 at 2:37 PM, Jan Keromnes notifications@github.com wrote:

See also https://discourse.janitor.technology/t/windows- container-support-would-be-really-really-cool/85

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/JanitorTechnology/janitor/issues/3#issuecomment-347183540, or mute the thread https://github.com/notifications/unsubscribe-auth/AAGJUWTqlTonfDj9kR3b2v9BWtnUJx-Yks5s6rsvgaJpZM4GMvxP .

jankeromnes commented 6 years ago

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.