This is an automated email from the ASF dual-hosted git repository.

fokko pushed a commit to branch production
in repository https://gitbox.apache.org/repos/asf/parquet-site.git


The following commit(s) were added to refs/heads/production by this push:
     new ee98419  GH-85: Add section on semantic versioning (#86)
ee98419 is described below

commit ee98419b8698b35a5c29d863b359909cf1eea0fe
Author: Fokko Driesprong <[email protected]>
AuthorDate: Wed Nov 13 13:30:30 2024 +0100

    GH-85: Add section on semantic versioning (#86)
    
    * GH-85: Add section on semantic versioning
    
    * Change wording
---
 .../docs/Contribution Guidelines/contributing.md   | 24 ++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/content/en/docs/Contribution Guidelines/contributing.md 
b/content/en/docs/Contribution Guidelines/contributing.md
index 6516de0..9d4b850 100644
--- a/content/en/docs/Contribution Guidelines/contributing.md   
+++ b/content/en/docs/Contribution Guidelines/contributing.md   
@@ -31,6 +31,30 @@ A pull request can be merged through the GitHub UI. By 
default, only [squash and
 
 When the PR solves an existing issue, ensure that it references the issue in 
the Pull-Request template `Closes #1234`. This way the issue is linked to the 
PR, and GitHub will automatically close the relevant issue when the PR is being 
merged.
 
+### Semantic versioning
+
+Parquet-Java leverages [semantic 
versioning](https://semver.org/#semantic-versioning-200) to ensure 
compatibility for developers and users of the libraries as APIs and 
implementations evolve. The Maven plugin 
[`japicmp`](https://github.com/siom79/japicmp) enforces this, and will fail 
when an API is being changed without going through the correct deprecation 
cycle. This includes for all the modules, excluding: `parquet-benchmarks`, 
`parquet-cli`, `parquet-tools`, `parquet-format-structure [...]
+
+All interfaces, classes, and methods targeted for deprecation must include the 
following:
+
+- `@Deprecated` annotation on the appropriate element
+- `@depreceted` javadoc comment including: the version for removal, the 
appropriate alternative for usage
+- Replacement of existing code paths that use the deprecated behavior
+
+```java
+/**
+ * @param c the current class
+ * @return the corresponding logger
+ * @deprecated will be removed in 2.0.0; use org.slf4j.LoggerFactory instead.
+ */
+@Deprecated
+public static Log getLog(Class<?> c) {
+    return new Log(c);
+}
+```
+
+Checking for API violations can be done by running `mvn verify 
-Dmaven.test.skip=true japicmp:cmp`.
+
 ### Tracking issues using Milestones
 
 When a PR is raised that fixes a bug, or a feature that you want to target a 
certain version, make sure to attach a 
[milestone](https://github.com/apache/parquet-java/milestones). This way other 
committers can track certain versions, and see what is still pending. For 
information on the actual release, please check [the release 
page](releasing.md).

Reply via email to