-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Update README.md #1716
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
base: main
Are you sure you want to change the base?
Update README.md #1716
Conversation
Added mention of Semantic Versioning to the README.md file. Addresses https://jira.mongodb.org/browse/DRIVERS-3105.
@@ -42,6 +42,8 @@ MongoDB project, please report it according to the [instructions here](https://w | |||
|
|||
## Versioning | |||
|
|||
The MongoDB Java, Kotlin and Scala drivers follow [semantic versioning](https://semver.org/) for their releases. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- We produce more libraries than just the drivers from this repository, and there is no reason to list them all here in the "Versioning" section.
- We try to follow semantic versioning, but I don't believe we have never violated it, or guarantee that we will never violate it.
Let's rephrase to something like
The MongoDB Java, Kotlin and Scala drivers follow [semantic versioning](https://semver.org/) for their releases. | |
We generally follow [semantic versioning(https://semver.org/) when releasing. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@rishitb-mongodb @stIncMale Note that the ticket says:
This will help foster confidence that we do strictly follow semantic versioning even though it might be obvious from our past releases.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- In that case, let's use the option B suggested in the ticket, specifying 5.6.0 as the "since" version. And say that historically the driver generally followed semantic versioning, but may not always had followed it strictly. I vaguely remember us talking about some changes technically requiring a more severe version change, but deciding not to do that.
1.1. We also should remove all the text from the "Versioning" section of the readme, leaving there only the information about us following semantic versioning. Having that text will only introduce confusion, unless the text is identical to the semantic versioning specification.
1.2. Semantic versioning specification itself has versions, and since the intent is to promise that we'll follow it strictly, we should specify the semantic versioning version and link to it (https://semver.org/spec/v2.0.0.html), instead of vaguely referring to semantic versioning as an idea. DRIVERS-3105 fails to require this, but I don't think it is possible to talk about strict compliance without specifying the spec version being complied with.
1.3. I guess, we'll have to be much more careful with releases, and carefully read all the rules of the versioning scheme. - The suggestion about not listing all the libraries we produce from this codebase is still relevant.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we can safely say that we've been strictly following semantic versioning since at least the 3.0 release.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should I change this to "The MongoDB Java, Kotlin and Scala drivers follow semantic versioning since v3.0.0 of their releases."? The original ticket was focused only on Drivers (We don't need it for other libraries/ODMs etc hence they weren't added).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are we fine with the current PR wording,
The MongoDB Java, Kotlin and Scala drivers follow semantic versioning for their releases.
then? And remove the rest of the text?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
To help clarify some of the points above:
1 - As the ticket alludes to, drivers team's can choose either of the verbiages depending on their history of releases. Most drivers have mentioned the 1st statement. .NET/C# for example has been following it since v3.0.0 and hence uses the 2nd option
1.1 - I agree this is confusing and mostly re iterates what semver is.
1.2 - This is to help clarify this at a high level and hence pointing to the home page feels sufficient (This was taken from our internal policy)
1.3 I think all of this is covered by the internal policy
2 - Covered above as the focus is only on drivers.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The original ticket was focused only on Drivers (We don't need it for other libraries/ODMs etc hence they weren't added).
All the artifacts we release from the https://github.com/mongodb/mongo-java-driver are related to the driver. I am certain the "follow semantic versioning" rule should be applied to all of them, but we should not list all the artifacts, because
- there are quite a few of them, and just saying "Java, Kotlin and Scala drivers" does not cover them all;
- the list is not fixed in stone, and if we start producing more artifacts in the future, we will likely not update the list in the readme part about the versioning, i.e., if we list the artifacts, the list may become stale.
1.2 - This is to help clarify this at a high level and hence pointing to the home page feels sufficient (This was taken from our internal policy)
I am not sure what you mean. Given that there are two different versions of semantic versioning scheme, saying/implying that we strictly follow semantic versioning is meaningless, unless the scheme version itself is also specified.
If the above seems like I am getting into the unhelpful details, then we should not say/imply that we strictly follow that specific versioning scheme.
Are we fine with the current PR wording,
The MongoDB Java, Kotlin and Scala drivers follow semantic versioning for their releases.
I am proposing us not to use that wording, see above.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@stIncMale What other artefacts are you alluding to? We are focused on making this change ONLY for drivers and hence the drivers that are a part of this repo were added to the statement.
Could you clarify what the suggestion is then? If I understood correctly, it is to:
- Remove all current text under the "Versioning" section of the Readme and
- Replace it with "We generally follow semantic versioning when releasing."
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could you clarify what the suggestion is then?
- Avoid listing all the artifacts we release from the https://github.com/mongodb/mongo-java-driver repository.
- Link to https://semver.org/spec/v2.0.0.html, which actually specifies the semantic versioning scheme, instead of linking to https://semver.org, which makes it ambiguous which version of the semantic versioning scheme we follow.
- Remove the text highlighted here.
What other artefacts are you alluding to?
Following is the list of all artifacts (groupId:artifactId
) we produce (one may also see them in our BOM):
org.mongodb:bson
org.mongodb:bson-record-codec
org.mongodb:mongodb-driver-core
org.mongodb:mongodb-crypt
org.mongodb:mongodb-driver-sync
org.mongodb:mongodb-driver-reactivestreams
org.mongodb:mongodb-driver-legacy
org.mongodb.scala:mongo-scala-bson_2.11
org.mongodb.scala:mongo-scala-bson_2.12
org.mongodb.scala:mongo-scala-bson_2.13
org.mongodb.scala:mongo-scala-driver_2.11
org.mongodb.scala:mongo-scala-driver_2.12
org.mongodb.scala:mongo-scala-driver_2.13
org.mongodb:bson-kotlin
org.mongodb:bson-kotlinx
org.mongodb:mongodb-driver-kotlin-sync
org.mongodb:mongodb-driver-kotlin-coroutine
org.mongodb:mongodb-driver-kotlin-extensions
Different intersecting subsets of them represent the following products we provide:
- Java legacy driver
- Java synchronous driver
- Java reactive streams driver
- Scala driver
- Kotlin synchronous driver
- Kotlin coroutine driver
- BSON library
- One may argue that this is not considered a product because there is no documentation page dedicated to it. But "Java legacy driver" also does not have a dedicated page. Furthermore, "BSON library" is an implementation of https://bsonspec.org/spec.html, which may be considered a self-sufficient product.
- Update: Actually, I found that we list this library here among other BSON implementations, and explicitly call it a "standalone BSON library", i.e., it is a product.
Added mention of Semantic Versioning to the README.md file. Addresses DRIVERS-3015.