What's the release policy for TDP ? #69
-
TDP Release PolicyThe goal of this discussion is to determine the release policy for the TDP Project Discussions includes:
The conventions I will mention in this post are based upon Apache Software Foundation release policy as well as resources from the Semantic Versioning scheme (SemVer) This discussion does not address the issue of distributing the releases (Maven repositories, Hadoop Components as I will try my best to be as neutral as possible and wish that this post opens up the discussion to anyone wanting to contribute. Regarding 'Release Candidates', beta, alpha or GAAs a basis for the rest of the discussion concerning releases, here is a reminder of what are "Releases Candidates" based on Wikipedia. Other sources can have different definitions. Feel free to discuss this as well.
Beta version are also available :
Once Release Candidate are validated (how ?) they can be released as GA (General Availability). Regarding what are 0.X.Z compared to a 1.0.0 release, consider reading the FAQ of Semver Content of TDPAs of today, TDP is:
For convenience 'tdp-lib', 'tdp-server' and 'tdp-ui' are called 'tdp-manager' in the rest of this post. Some satellites projects are also available:
I did not place 'tdp-collection' as 'manager' nor 'stack' on purpose and is dicussed below. Currently all TDP projects are considered 0.1.0 (-SNAPSHOT for Java Projects i.e. Hadoop software) Contributors wants to publish a public release in the coming weeks. I think the main questions that needs to be addressed is: "What do we want to publish in a 1.0 ?" and "Is it relevant to publish all of TDP as a single unit ?" Moreover I think it raises the question about what components depends on each other and if some components share a common lifecycle. The state of TDP-StackTDP-Stack is the forks of Apache Hadoop project on selected branch, with added build instructions as well as some backports from more recent branches. Currently Hadoop software forked in TDP have a version number like:
Few questions regarding this version notation:
Please consider Semantic Versioning scheme for such questions (or why you think it should not apply) Build numberBuild number is a suffix that can be added to the version of each component. Similarily to what HDP used to do, I think build number is a convenient way to track commits added to a specific version of a Hadoop component. Example:
Questions :
Pros:
Cons:
Summary:
The state of TDP-collectionTDP-collection is a set a Ansible Roles which are capable of installing TDP-stack. TDP-collection also provides playbooks to work on its own and expose through a topology its capability to install TDP-stack on a set of machines. By exposing a deployment DAG, TDP-lib is able to work with TDP-collection. TDP-collection has two sides:
These questions are relevant to consider TDP-collection part of TDP-stack, TDP-manager, a project on its own or should be split into one collection and one implementation of the tdp-lib DAG for this collection. The state of TDP-managerI call TDP Manager the projects 'tdp-lib', 'tdp-server' and 'tdp-ui' for convenience.
TDP-Collections implements tdp-lib's interface (trough the DAG declaration). Can this interface be considered 1.0 ?
The state of TDP as a whole(Kinda personal thoughts here) Questioning the dependency between TDP project have me raised concerns about the relevance of releasing TDP as a whole. If we would compare ourselves to HDP, Hortonworks never released both HDP and Ambari as a single unit. Instead they released HDP using its lifecycle and provided a support matrix indicating which Ambari version were able to deploy each HDP version. Compatibility matrixCompatibility matrix can be seen as followed:
Update scenarioI think the best way to think of the different possibility offered by a release policy is to mentally try some scenarios. In each scenario, explain why the workflow is the alleviate the issue and how to deploy to a running environment.
Feel free to add any scenario that you think are worth discussing |
Beta Was this translation helpful? Give feedback.
Replies: 7 comments 7 replies
-
I would think about the following scenarii: |
Beta Was this translation helpful? Give feedback.
-
About the release policy for TDP, should we define frequencies for a minor release (for example for every 3 months or 6 months) and for a major release (for example for every 5 years)? |
Beta Was this translation helpful? Give feedback.
-
I'll try to answer questions that relate to the UI/Manager.
The UI depends on the server which depends on the lib. Hence, there is a long delay to bring changes from the lib to the UI and, we may want to improve the UI without changing the lib or the server. Identifying breaking changes is tricky for the UI:
A matrix could show which versions are compatible with each other. Even better, we should have a website that gives the correct server and UI versions to use based on a given lib version.
Changes will always come from the server (or even the lib). We could investigate a "Method not implemented" errors as you said while some features are not implemented yet, or even not supporting the ui (or server) for versions of the server (or lib) that are too recent.
No. I can't answer for the lib but the UI and server are definitely not ready for a v1. The server lacks stability and some features are still being integrated for the UI. IMO, we should release the ui and the server (and maybe the lib) along with the stack/collection but in 0.1. It will allow us to continue the development and to practice the release system. |
Beta Was this translation helpful? Give feedback.
-
Regarding the categorization of various components, I concur that TDP should organize them into distinct groups, as suggested by PA. It would be beneficial for us to determine what is the appropriate way to categorize and release these components, define their composition, and outline their respective lifecycles and roadmaps. The categorization that @PACordonnier proposes in his explanation consists of:
With non-categorized components being:
I propose to discuss this or other suggested categorizations further below. Edit: This particular discussion should focus on the categorization of these components, rather than determining their specific names, which will be addressed in a subsequent step. |
Beta Was this translation helpful? Give feedback.
-
Hi, Please found here my humble position on versioning in TDP projects: A: TDP (TDP-stack) Versionning We can find here explanations of HDP: To resume, version is a.b.c.d_x with: a. Major version, mapped on Hadoop Considerations TOSIT won't be accountable to deliver security patch. Build number is a deduplication mecanism which should not be used for versioning. Proposition I : Mapped on HDP a.d.c.d_x with: a. Major version, contains component upgrade with known side-effect (change of Major version): Hadoop, Spark Pros:
Cons:
Note: Proposition II. Simplification a.b.c_x with: a. Major Version, contains ANY Major/minor component upgrade Pros:
Cons:
B: TDP Collection TDP should probably follow TDP versioning about Major/minor In case of P1: C: TDP-lib / TDP-server / TDP-ui (etc...) Versioning TDP-lib, tdp-server, tdp-ui, etc... Should follow simple a.b: With following rules:
Note:
|
Beta Was this translation helpful? Give feedback.
-
To answer conversation around TDP versioning and corresponding package versioning: Solution 1: Package contains TDP-versioning This is the solution shoosed by HDP. TDP 3-digits: hbase-1.2.0-TDP-1.0.0 Pros:
Cons: Example: hive-2.1.0-TDP-1.0.0 --- hive-2.1.0-TDP-1.1.0 Solution 2: Packages does not contains TDP-version In that case, it should at least contains:
Example (chronological steps):
Advantages
Cons:
Possible path hierarchy in case of patch delivery on HBase following prod outage: tdp-select (not existing), on host, could be use for simple, immediate rollback. This utility would only update /opt/tdp/current/* symlinks. |
Beta Was this translation helpful? Give feedback.
-
Discussions has been merged into a versioning manifest found here VERSIONING.md. Thank you all for your inputs ! |
Beta Was this translation helpful? Give feedback.
Discussions has been merged into a versioning manifest found here VERSIONING.md.
Thank you all for your inputs !