Conversation
| @@ -1,4 +1,4 @@ | |||
| format_version: 1.0.4 | |||
| format_version: 2.0.0 | |||
There was a problem hiding this comment.
@elastic/ecosystem what should we do with test packages? I see some options:
- Leave them as they are, update or add packages only to test new features in new versions.
- Upgrade all of them to v2, copy
goodtogoodv1and leave this one as reference for v1. - Duplicate all packages, leaving v1 packages to test backwards compatibility.
There was a problem hiding this comment.
It depends on the approach we choose - copy all spec files or leave them as is.
Leave them as they are, update or add packages only to test new features in new versions.
I would be for this option. We definitely don't need more copied files here :)
There was a problem hiding this comment.
I would go also for the option 1, to avoid having more folders/files copied.
I was wondering about the test packages whose goal is to test errors. Should they be updated/copied to test those errors in both formats v1 and v2 ?
| changes: | ||
| - description: Add definition for the license file in a package | ||
| type: enhancement | ||
| link: https://github.com/elastic/package-spec/pull/367 |
There was a problem hiding this comment.
We should probably release all pending changes before merging this.
| ## This file documents changes in the package specification. It is NOT a package specification file. | ||
| ## Newer entries go at the bottom. | ||
| ## | ||
| - version: 2.0.0-next |
There was a problem hiding this comment.
Current approach keeps both majors in the same branch. This implies that releasing a minor for one major would require the release of new versions for all majors with changes. Releasing a new version will require to close all changelogs with changes, and push tags for all new versions mentioned in changelogs.
This makes me wonder a couple of things:
- AFAIK we are not using minors for anything, should we do something about this? Or should we reduce versioning to only majors?
If we implement minors we could have more control on what is released for each major, but following current approach we would need to duplicate the spec and rules for each minor. - Should we have one branch per major? This would complicate other things, we would need an entry point for
NewSpec, that instantiates one spec per major from a different import path.
There was a problem hiding this comment.
With reducing versioning I mean to use format_version: 2 in manifests. We would keep the versioning here in changelogs.
There was a problem hiding this comment.
Is there an option to keep it simple and forget about branches? This is a spec repository, we don't expect too many bugfixes :)
There was a problem hiding this comment.
We can completely freeze version 1 when 2 is released, but I would expect a period where version 2 is in development, there are several potentially breaking changes that will need some time to be implemented. At least during this time we are going to need some kind of synchronization between both versions.
🌐 Coverage report
|
mtojek
left a comment
There was a problem hiding this comment.
Initialize a new format version v2 as a copy of current v1 code. Semantic rules are instantiated from a new set of builders, one per major.
I reviewed a similar project, compose-go, to see how they process incoming changes. It looks like the owners manage only one spec file instead of many spec-per-version files.
I'm wondering if we can try a similar approach, and mark properties/features in spec as deprecated in X version, removed in Y version.
WDYT?
| ## This file documents changes in the package specification. It is NOT a package specification file. | ||
| ## Newer entries go at the bottom. | ||
| ## | ||
| - version: 2.0.0-next |
There was a problem hiding this comment.
Is there an option to keep it simple and forget about branches? This is a spec repository, we don't expect too many bugfixes :)
| @@ -1,4 +1,4 @@ | |||
| format_version: 1.0.4 | |||
| format_version: 2.0.0 | |||
There was a problem hiding this comment.
It depends on the approach we choose - copy all spec files or leave them as is.
Leave them as they are, update or add packages only to test new features in new versions.
I would be for this option. We definitely don't need more copied files here :)
Interestingly they are ignoring Did you find anything like support for multiple versions there?
We would also need something line "added in X version", and not sure how would this play with |
|
I guess that we can review their history :) |
After some analysis it seems that compose v2 doesn't use versioning, so they can keep a single spec file. On #384 I follow a mixed approach, also with a single spec, but with rules that can be applied depending on the |
|
Closing in favor of #384. |
What does this PR do?
Initialize a new format version v2 as a copy of current v1 code. Semantic rules are instantiated from a new set of builders, one per major.
If/when this PR is merged, changes should be done in v2, and copied to v1 when non breaking.
Why is it important?
Allow to introduce breaking changes in a more controlled way.
Checklist
test/packagesthat prove my change is effective.versions/N/changelog.yml.Related issues