Skip to content

Commit 6362bdc

Browse files
committed
On branch edburns/dd-2785864-pre-public-non-code-changes Document version policy.
modified: .github/templates/index.html docs/adr/adr-002-maven-version-and-reference-implementation-tracking.md
1 parent 1186376 commit 6362bdc

File tree

2 files changed

+62
-2
lines changed

2 files changed

+62
-2
lines changed

.github/templates/index.html

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,12 @@ <h1>Copilot SDK for <span class="gradient-text">Java</span></h1>
3232

3333
<main class="container">
3434

35-
<div class="alert alert-warning">
36-
⚠️ <strong>Disclaimer:</strong> This SDK tracks the pre-GA GitHub Copilot SDKs for .NET and nodejs. This SDK may change in breaking ways. Use at your own risk.
35+
<div class="alert alert-warning">
36+
⚠️ <strong>Disclaimer:</strong>This is the official Java SDK for GitHub Copilot. This repository treats the official .NET and nodejs SDKs for GitHub Copilot as reference implementations. These SDKS are all officially supported as GitHub open source projects. The Java implementation follows the backward compatibility guarantees offered by the reference implementations. As such this implementation may introduce breaking changes, according to the policy declared by the reference implementations. Use at your own risk.
37+
</div>
38+
39+
<div class="alert alert-warning">
40+
⚠️ <strong>Artifact versioning plan:</strong>Releases of this implementation track releases of the reference implementation. For each release of the reference implementation, there may follow a corresponding relase of this implementation with the same number as the reference implementation. Release identifiers of the reference implementation are in the form `vMaj.Min.Micro`. For example v0.1.32. The corresponding maven version for the release will be `Maj.Min.Micro-java.N`, where `Maj`, `Min` and `Micro` are the corresponding numbers for the reference impementation release, and `N` is a monotonically increasing sequence number starting with 0 for each release. See the corrseponding architectural decision record for more information in the `docs/adr` directory of the source code.
3741
</div>
3842

3943
<div class="alert alert-info">
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
# Maven Version and tracking of versions released from the reference implementation
2+
3+
## Context and Problem Statement
4+
5+
Releases of this implementation track releases of the reference implementation. For each release of the reference implementation, there may follow a corresponding relase of this implementation with the same number as the reference implementation, allowing for additional metadata to version multiple releases of this implementation that track the same release of the reference implementation.
6+
7+
## Considered Options
8+
9+
- Simple number qualifier (0.1.32-0, 0.1.32-1, ...) fails on a subtle but important point: 0.1.32-0 is treated identically to 0.1.32 by Maven (trailing zeros are normalized away), and bare numeric qualifiers are pre-release semantics. Your "first release" would sort before the upstream bare version.
10+
11+
- Java and number in the qualifier (0.1.32-java.N
12+
13+
- java is an unknown qualifier that sorts correctly and accurately describes what it is — the Java-ecosystem release of this version.
14+
15+
- sp and number in the qualifier (0.1.32-sp.N)
16+
17+
- sp is a known Maven qualifier with a specific semantic ("service pack"), which is slightly misleading since your -java.0 isn't a service pack — it's the primary release.
18+
19+
My recommendation, with the test results backing it up: 0.1.32-java.0, 0.1.32-java.1, 0.1.32-java.2. It passes every constraint you stated, is accepted by Sonatype (arbitrary string, not ending in -SNAPSHOT), and is self-documenting. The only thing left to validate empirically is actually uploading one to the portal — but nothing in Sonatype's published requirements would reject it. See below for empirical validation.
20+
21+
## Decision Outcome
22+
23+
Choose option "Java and number in qualifier".
24+
25+
## Supporting information
26+
27+
Output from experiment to publish an artifact with GAV `io.github.edburns:helloworld:0.1.31-java.0`:
28+
29+
Everything looks healthy. Here's the status:
30+
31+
- ✅ GPG signing succeeded (no passphrase errors this time)
32+
- ✅ Upload to Central succeeded — deployment ID
33+
e8192af5-769d-4cd3-a6d9-5fc38b4dbf10 was accepted
34+
- ✅ Authentication is working — all status checks return successfully
35+
- ⏳ State: publishing — Central accepted the bundle and is propagating it.
36+
The plugin is polling repeatedly (27+ checks so far), waiting for state to
37+
change to published.
38+
39+
This is normal. Maven Central publishing can take 5–30 minutes to transition
40+
from publishing → published. The waitUntil=published setting in the POM
41+
means Maven will keep polling until it completes. Just let it run.
42+
43+
> Given that the purpose of this exercise was to test your assertion that a GAV with a Version such as this one would be valid to publish to Maven central , can we already conclude this is a true assertion?
44+
45+
- Yes. The version 0.1.31-java.0 has already passed Maven Central's
46+
validation. The publishing state means Central accepted the bundle —
47+
including its GAV — and is now replicating it to mirrors. If the version
48+
were invalid, it would have been rejected during validation before entering
49+
the publishing state.
50+
51+
So yes, the assertion holds: Maven Central accepts versions with dots inside
52+
the qualifier segment (e.g., 0.1.31-java.0).
53+
54+
## Related work items
55+
56+
- https://devdiv.visualstudio.com/DevDiv/_workitems/edit/2766089

0 commit comments

Comments
 (0)