Thanks, Sumit, for bringing this up. - Regarding *versioning for Python client*: I favour the 1st way as well. The only minor comment I have is: instead of "*mention the release version of the main software*", possibly what users would expect is a "*range of compatible versions of main software*". If we follow semver for Airflow itself relatively strictly, this should not be hard.
- Regarding *the release of different client libraries*: I agree with you. They should be versioned & released separately. Regards, XD On Wed, Mar 31, 2021 at 9:21 AM Sumit Maheshwari <sumeet.ma...@gmail.com> wrote: > Thanks QP for your feedback. I think the latest release of K8s client > (v17.x.y) is moving in another direction. > > On Wed, Mar 31, 2021 at 12:13 AM QP Hou <q...@scribd.com.invalid> wrote: > >> Thanks Sumit for kicking off this discussion! >> >> I am in favor of approach #1 as well. Airflow software version can >> change due to none API related changes, but the client should only >> care about the public API contract. I believe this is also the same >> approach that the k8s python client took as well? For example, the k8s >> python client version 12.0.1 targets k8s api version 1.16.15. >> >> I am also with you that clients for different languages should have >> their own release cycles. Other than testing burdens, every client >> could introduce their own bug fixes and breaking changes without >> having to trigger releases for all other clients. It would be a waste >> of work for us to bump the python client version just for a bug fix in >> the go client. >> >> Thanks, >> QP >> >> On Tue, Mar 30, 2021 at 1:56 AM Sumit Maheshwari <msu...@apache.org> >> wrote: >> > >> > Hello Airflow dev community >> > >> > I'm writing this mail in regards to seek feedback on the first release >> of Apache Airflow's Python client. This is an icebreaker email only and we >> will follow the Apache process of releasing the version later on. As of >> now, I've raised a small PR to add the missing files in the repo, which are >> required to do the release of the client lib. >> > >> > The main question I've in mind about the versioning. I see that there >> are mainly two theories related to maintain the release versions of clients: >> > >> > The first is about following the semantic release of the clients on its >> own. The release version of the client doesn't include the version of the >> software itself. Something like we are doing with Airflow's provider >> packages. However, in each release, we mention the release version of the >> main software (Airflow in this case). This is the simple most way of >> maintaining releases and followed majorly. >> > The second way is to include the software's version as well in its >> client's versioning, something like it's been done in the K8s Python >> client. In this approach, the client version provides more implicit >> knowledge about the compatible software, however it creates an extra burden >> of releasing the client with every minor release of the software, otherwise >> the versioning would fall apart. Also, there is a good chance that most of >> these minor or even a major release has no changes in the APIs, but the >> client would be needed to re-released nevertheless, just to keep the >> versioning in check. >> > >> > Personally, I'm in favour of the 1st way, as it's simple to manage and >> doesn't tightly couple client with its software. >> > >> > Another unrelated question I have is about the release of different >> client libraries. As of now, Airflow has Python and Go clients, so should >> we try to release them together or they should follow their own paths? In >> general, I'm against batching them together, cause the person who is >> releasing them may not be able to test all the different clients in the >> future. >> > >> > Let me know your thoughts on these 2 points. >> > >> > Thanks, >> > Sumit Maheshwari >> > PMC Apache Airflow >> >