Skip to content

Commit d2c9024

Browse files
committed
[RFC] Deprecate Windows support in Binary Buildpack BOSH Release
1 parent 4cf9049 commit d2c9024

1 file changed

Lines changed: 59 additions & 0 deletions

File tree

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
# Meta
2+
[meta]: #meta
3+
- Name: Deprecate and Remove Windows Support in Binary Buildpack
4+
- Start Date: 2025-01-15
5+
- Author(s): @tnikolova82, @ivanovac, @beyhan
6+
- Status: Draft <!-- Acceptable values: Draft, Approved, On Hold, Superseded -->
7+
- RFC Pull Request: (fill in with PR link after you submit it)
8+
- Related RFCs: [RFC-0050 Java Buildpack Migration to Golang](https://github.com/cloudfoundry/community/blob/main/toc/rfc/rfc-0050-java-buildpack-migration-to-golang.md)
9+
10+
## Summary
11+
12+
Deprecate and immediately remove Windows support from the Cloud Foundry Binary Buildpack. [`v1.1.21`](https://github.com/cloudfoundry/binary-buildpack-release/releases/tag/v1.1.21) will be the last release shipping Windows support. The next release will be Linux-only.
13+
14+
## Problem
15+
16+
- The Windows support in the Binary Buildpack is effectively unmaintained following the departure of its core maintainer from the CF community.
17+
- It is one of the only buildpacks (alongside [`hwc-buildpack`](https://github.com/cloudfoundry/hwc-buildpack)) supporting Windows, and the current maintainers have no Windows experience to support this use case.
18+
- No one has stepped up to maintain the Windows portion despite calls for help.
19+
- Shipping a Windows binary that maintainers cannot audit, patch, or verify is a risk that should not be prolonged.
20+
21+
## What is being deprecated
22+
23+
The Binary Buildpack's Windows support enables deploying pre-compiled Windows executables (e.g. `.exe`, `.bat` entrypoints) to Cloud Foundry Windows Diego cells. Concretely, the following pieces are being removed:
24+
25+
- The `binary-buildpack-windows` package: the BOSH release currently ships two packages — a Linux-compiled buildpack binary and a separate Windows-compiled buildpack binary. When CF schedules an app onto a Windows cell, the Windows variant is used as the buildpack runtime to detect, supply, and launch the app's binary. Only the Linux package will remain.
26+
- The `windows` stack entry in `binary-buildpack-release`'s `manifest.yml` and the corresponding job/packaging specs that wire the Windows package into the BOSH release.
27+
- Windows-specific buildpack code in [`binary-buildpack`](https://github.com/cloudfoundry/binary-buildpack), including:
28+
- Files guarded by `//go:build windows` build tags (e.g. Windows-specific `finalize`/`supply` and launcher logic).
29+
- Handling for Windows-style start commands and executable extensions (`.exe`, `.bat`).
30+
- Windows-targeted packaging scripts and any `GOOS=windows` cross-compilation in build tooling.
31+
- Windows CI: GitHub Actions / Concourse jobs that cross-compile, unit test, and integration-test the buildpack against Windows cells (including any `cflinuxfs*``windows*` matrix entries).
32+
- Windows integration test fixtures: sample apps containing Windows binaries used to validate end-to-end staging and running on Windows cells.
33+
34+
After removal, the buildpack will only detect and stage apps targeting Linux stacks (e.g. `cflinuxfs4`). Operators with Windows workloads that ship plain executables will need to pin to `v1.1.21` or fork.
35+
36+
## Proposal
37+
38+
- Designate [`v1.1.21`](https://github.com/cloudfoundry/binary-buildpack-release/releases/tag/v1.1.21) as the final release with Windows support. It will receive no further updates, including security patches, for the Windows stack.
39+
- Immediately (no transition period) remove all Windows-specific code, CI, and packaging from [`binary-buildpack`](https://github.com/cloudfoundry/binary-buildpack) and `binary-buildpack-release`, and cut a Linux-only `v2.0.0`.
40+
- Add deprecation notices to repos' `README.md`, CF documentation, and announce on `#buildpacks` Slack.
41+
- Affected users may pin to `v1.1.21` or self-maintain a fork.
42+
## Rationale and Alternatives
43+
44+
- Why immediate removal (no 6-month transition)?
45+
- The Windows code path is already de-facto unmaintained and a transition period changes nothing operationally, since no fixes are being produced anyway.
46+
- Continuing to publish Windows artifacts during a grace period creates a false impression of support and prolongs security risk.
47+
- `v1.1.21` remains available for any operator who needs to keep using Windows, where pinning is a one-line change.
48+
- Sustainability & security: maintainers cannot credibly support a platform they have no expertise on. Additionally, an explicitly removed path is safer than a quietly unmaintained one.
49+
- Alternatives considered:
50+
- Find new maintainers — attempted, none came forward.
51+
- Do nothing — leaves users without patches or clarity.
52+
53+
## Implementation
54+
55+
1. Announce deprecation and removal.
56+
2. Strip all Windows-specific code.
57+
4. Cut a Linux-only `v2.0.0` of `binary-buildpack-release`.
58+
5. Update CF documentation to reference `v1.1.21` as the last Windows-supporting release.
59+

0 commit comments

Comments
 (0)