Skip to content
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

RFC: Change the lifecycle spec to support Windows. #27

Closed
wants to merge 1 commit into from
Closed

RFC: Change the lifecycle spec to support Windows. #27

wants to merge 1 commit into from

Conversation

micahyoung
Copy link
Member

@micahyoung micahyoung commented Oct 14, 2019

Readable

Work-in-progress spec changes are here and subject to change
buildpacks/spec@master...greenhouse-org:windows-lifecycle

@micahyoung micahyoung changed the title Change the lifecycle spec to support Windows. RFC Change the lifecycle spec to support Windows. Oct 16, 2019
@micahyoung micahyoung changed the title RFC Change the lifecycle spec to support Windows. RFC: Change the lifecycle spec to support Windows. Oct 16, 2019

This RFC proposes adding official Windows support to the lifecycle which can be optionally used by all platforms and buildpacks. There will be a new Windows-specific, distributable lifecycle artifact containing cross-compiled versions of lifecycle commands. Buildpacks can be either Windows-specific or cross-platform by following Windows conventions. Windows-specific builder images can be created based on the lifecycle and buildpacks.

This introduces new functionality that is relevant to all personas that interact with buildpacks. This has no impact on existing users.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

despite this, i think any spec changes should probably enter as extensions, especially if there's a concern that the Docker for Windows is less than stable.

Copy link
Member Author

@micahyoung micahyoung Oct 21, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank Joe. I may have undersold the current stability of Docker for Windows - both the Desktop and Server container runtimes are far along - Docker Desktop got Windows containers in early 2018 and but Windows Server has had them since 2017. At this point, Pivotal PKS, Azure AKS and Google GKE have Windows Workers for Kubernetes in various Beta flavors but they'll be GA "any day now" and as far as I know, all of these soon-to-be-GA IaaS k8s are built against the same APIs that we'll depend on - the Docker client APIs and Windows OCI image format.

My caveat here in the RFC was mainly to point out this historical context and how Windows Docker containers are only now where Linux Docker containers have been for some time and so might possibly see some last minute changes. The major APIs we need are well defined though and Windows and Linux should very soon be equally stable.

As for having Windows defined in extensions, I'll admit I'm new to the RFC concepts but I'm wondering if there's a risk of having Windows defined just as an extension may lead to more Linux-only design choices that might, when it's time to implement them for Windows, require less elegant solutions or just wouldn't possible without an upstream change. This might mean reworking already-implemented specs and features or needing to feature-flag them off on Windows.

I feel like we've seen some examples of this in the current spec. One that popped up was relying on Linux shebang kernel support to enable scripts and binaries with the same file names - it's a handy feature for Linux but doesn't work well for Windows platforms which instead need explicit suffixes to determine whether they're executable or scripts. I'm not exactly sure what a cross-OS approach would have been but it certainly has lead us to need to come up with a new approach just for Windows, without the benefit of a single solution for both OSes.

I definitely wouldn't want Windows concerns to slow down RFC ideation but to me, it feels safer to resolve any issues well before spec and implementation happens or to explicitly agree to set aside Windows concerns when needed. This may even minimize the need for any Windows-specific spec concerns in the first place.

But I'd like hear other thoughts and concerns though.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not trying to jump the gun but I opened a spec PR with one potential approach to defining Windows within the current specs. I'm hoping this accounts for everything that needs to be defined but I'm still open to putting these wherever makes the most sense.

Copy link
Member Author

@micahyoung micahyoung Oct 22, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry for the noise. Struggling with the commenting flow

@nebhale nebhale closed this in 4e7d130 Nov 7, 2019
nebhale added a commit that referenced this pull request Feb 20, 2020
[resolves #49]

Signed-off-by: Ben Hale <[email protected]>
zmackie pushed a commit to zmackie/rfcs that referenced this pull request Mar 30, 2020
[resolves buildpacks#49]

Signed-off-by: Ben Hale <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants