Created PR https://github.com/apache/airflow/pull/36858 where I proposed a separate document - with a bit more polished version of what I wrote above, interlinked with the succinct README chapter we already have.
I also expanded there a bit "What's the purpose of patch-level release" explaining the approach we take for classifying changes as breaking/not breaking and adding comment on SemVer being "intentional" and not "technically breaking non/breaking" - something that we discussed a lot at many occasions in multiple PRs when we debated whether things are breaking/not breaking. And removed "how some people know/don't know" about it. I hope having that FAQ will help us to get to the point where we all know it - or at least can easily find it when we are looking for it. J. On Thu, Jan 18, 2024 at 8:42 AM Jarek Potiuk <ja...@potiuk.com> wrote: > I think if anything - that should be a separate page in our GitHub - > which will be a) easier to do b) maybe indeed makes sense c) this is where > we put "developer" docs. > > I think we agreed already quite some time ago that "airflow.apache.org" > is generally for the users and all the docs for contributors/maintainers > should go as .md/.rst files in our repository, but not into the airflow > website. > > Yeah - I think it might be worth it if we keep it separate from README :). > I think we had far too long README and (as mentioned above) over the last > year or so it got shorter and shorter, while it gained only the "super > important" information IMHO. So yeah having a separate FAQ taking my mail > as context might be a good idea. > > I will open PR for that and if others agree it's a good idea (and help > with reviewing it, we can merge it). > > J. > > > > > > > > On Thu, Jan 18, 2024 at 5:29 AM Amogh Desai <amoghdesai....@gmail.com> > wrote: > >> Thanks @Jarek Potiuk <ja...@potiuk.com>! >> >> I vaguely knew the process but not in such detail, thanks for putting it >> together in this email. >> I will visit the document >> https://github.com/apache/airflow?tab=readme-ov-file#what-goes-into-the-next-release >> and if I find any clarifications, I will send it across as a PR. >> >> One suggestion: what if we put it together in a document and put it on >> the airflow website under >> https://airflow.apache.org/community/ where we mention "how we release"? >> >> Might be a bit too much given the context people will have while >> visiting the airflow website.. >> >> Thanks & Regards, >> Amogh Desai >> >> On Wed, Jan 17, 2024 at 6:13 PM Jarek Potiuk <ja...@potiuk.com> wrote: >> >>> I separate it out, because it seems that despite the efforts to explain >>> and >>> document how our releases work It's not clear even for the PMC chair, so >>> likely it warrants a separate thread - also it will be easier to find it >>> in >>> the archives this way. >>> >>> I think this is an important topic that all maintainers should be aware >>> of, >>> so let me take a task to explain it in a longer email (and separate >>> thread). >>> >>> I created it in a form of FAQ, because it seems that similar questions >>> might be asked by others. >>> >>> *Do we have a process defined here?* >>> >>> Answering Bolke's question - who was apparently confused what our process >>> is: >>> >>> > I see that some improvements to Airflow.io (two weeks ago) were not >>> included and some provider updates neither. Haven't checked anything >>> else >>> yet. >>> >>> Apparently there is some confusion about the process, but yes we have a >>> well defined and well tested (pretty much 4 years now) process that we >>> follow., We follow it since I remember actually - it's been also done the >>> same in 1.10 - but with some variations, Likely we do it the same way >>> since >>> the beginning of 2.0, but it has been refined and improved over time - by >>> those who volunteered their time in the release process (a lot of ad-hoc >>> discussion have been traditionally happening in #release-management slack >>> channel) and as of few months ago we even documented it (It was in >>> November >>> 2023) - with this PR https://github.com/apache/airflow/pull/35245 >>> >>> It is currently described in a prominent place in our most important (and >>> over the last year or so the README, we made the README pretty short and >>> contains only super-important information on how Airflow is developed) >>> README.md under *"What goes into the next release?"* chapter: >>> >>> >>> https://github.com/apache/airflow?tab=readme-ov-file#what-goes-into-the-next-release >>> . >>> >>> *How does the selection process for cherry-picking work?* >>> >>> In short (and this is the most important thing that every maintainer >>> should >>> be aware of): *those maintainers who think that issue should be included >>> should mark it with the next (in this case 2.8.1) milestone*. It's up to >>> individual maintainers who want to include certain changes to take care >>> about it and mark the issues they think are bug fixes, to go into the >>> next >>> release >>> >>> This is the only thing that the maintainer has to do to get the PR >>> proposed >>> to be considered in the next patchlevel release. Sometimes - if >>> controversial - maintainers discuss the proposals in #release-management >>> channel, sometimes in #development or in the PR itself (especially if the >>> release manager decides to not include it and changes the milestone (and >>> explains why). >>> >>> *What's the release manager's role ?* >>> >>> Release manager's job is purely mechanical (as also mandated by the >>> Apache >>> Software Foundation release manager role description) to assess >>> cherry-pick >>> ability of those changes. Release manager - at the sole discretion and >>> individual decision (this is the only place in the whole ASF setup where >>> a >>> single person has such power to make individual decisions) can reject >>> some >>> of those who other maintainers think should be included. But the release >>> manager on his own does not make proposals on what should be included. >>> >>> *Is this process following the ASF rules?* >>> >>> I believe yes, The release manager's role is nicely described here: >>> https://infra.apache.org/release-publishing.html#releasemanager. And >>> there >>> is a far more complete description here that describes the whole process >>> https://www.apache.org/legal/release-policy.html#management - also >>> mentioning that it's the PMC's responsibility (and particularly PMC >>> chair's) to adhere to the process. >>> >>> *What's the role of individual maintainers?* >>> >>> The role of maintainers (collectively) to propose things for the next >>> release. In our case it happens with setting the milestone on a PR. >>> >>> *When proposed PRs are rejected?* >>> >>> There are various reasons to reject those - if too complex to cherry-pick >>> or when the release manager assesses it's a new feature, not a bugfix. >>> Essentially (according to semver) when it comes to the user-facing >>> changes, >>> the PATCHLEVEL release should contain only bugfixes. and may contain docs >>> changes if they are fixing/improving docs (not about new features) and >>> also >>> environment/build script changes (so non-user-facing changes) as they are >>> pretty much always needed to keep the things nicely building - those are >>> usually skipped from the changelog as non-user facing). >>> >>> *Why are provider changes not cherry-picked?* >>> >>> In our case - basically none of the provider changes are cherry-picked - >>> unless they are needed to make the builds work well (sometimes happen). >>> Providers are ALWAYS released from the latest main code, not from the >>> v2-8-stable branch. In fact all the tests and ci checks for providers are >>> skipped in the non-main (v2* branches). So yes - not seeing provider >>> changes cherry-picked is absolutely expected. >>> >>> *Do we skip over some changes when releasing a patchlevel release? What's >>> the purpose of patch-level releases?* >>> >>> Answering Bolke's question: >>> >>> > Is that intentional? Ie. is that the purpose of this release. Other >>> big(ger) and more recent changes have been included hence asking. >>> >>> The purpose of that release is as described in SemVer - to give the users >>> bugfix-only release that has no new features. Of course it's sometimes >>> debatable whether changes are features/bugfixes, but we usually use >>> #release-management to quickly chat about it, and eventually the release >>> manager always makes a comment in the PR when the milestone is changed >>> and >>> explains the reasoning. >>> >>> Skipping is not intentional because we never "skip" things when >>> cherry-picking, It's *reverse* - those maintainer who think that certain >>> bug fixes (or internal changes or sometimes even feature changes that we >>> classify really as "bugfix" SHOULD intentionally mark those PRs they want >>> with 2.8.1 (or basically next patch-level) to be *included. * So there is >>> no skipping, if maintainer did not deliberately mark PR as upcoming >>> milestone, it will just not be included >>> >>> *Where do some maintainers know about it **from ? * >>> >>> Because the maintainers who actively participate - either acting as >>> release >>> managers (those who raised their hand and acted as release managers >>> generally speaking) and those who wanted their changes to be part of the >>> past releases have been doing it for years. For years this has been >>> simply >>> followed and discussed in #release-management channel and #development >>> (and >>> in devlist whenever there were new releases) and generally the >>> maintainers >>> who took part in those discussions and release process are aware of that >>> - >>> also many maintainers know the process as it "soaked" in when they were >>> just watching. >>> >>> However recently we've made an attempt to document it (the PR above). So >>> you could learn it by reading it (even if it does not have the whole >>> context above). >>> >>> *Why do some people not know about it?* >>> >>> Not sure. Maybe because they were not interested and never asked? Maybe >>> because there was never a long email about it at our devlist, or the >>> documentation about it in README was too succinct? >>> >>> Or maybe we need a better way of communicating it - I am not sure. But I >>> hope this email will clarify a lot of it, and will prove valuable when >>> searching in devlist. >>> >>> Maybe even someone who manages to read it all will update the README >>> description of ours to explain it better :) and maybe create a nice FAQ >>> that we can put in our docs? >>> >>> I really hope this mail - even if long - will make people a bit more >>> aware >>> of the process, and if someone has an idea how the "collective" awareness >>> can be improved - I think it's a good idea to send PR or email (or maybe >>> even record a video :) ??) that will be a better way of communicating it. >>> >>> J. >>> >>> >>> On Wed, Jan 17, 2024 at 9:03 AM Bolke de Bruin <bdbr...@gmail.com> >>> wrote: >>> >>> > Just checking: >>> > >>> > I see that some improvements to Airflow.io (two weeks ago) were not >>> > included and some provider updates neither. Haven't checked anything >>> else >>> > yet. >>> > >>> > Is that intentional? Ie. is that the purpose of this release. Other >>> > big(ger) and more recent changes have been included hence asking. >>> > >>> > B. >>> > >>> > Sent from my iPhone >>> > >>> > > On 16 Jan 2024, at 20:18, Jarek Potiuk <ja...@potiuk.com> wrote: >>> > > >>> > > +1 (binding): Checked all my changes, I ran airflow in a few >>> > combinations >>> > > (MySQL / Postgres Local/Celery executor. It looks and works well - >>> run a >>> > > few dags and navigated through a number of screens. Checked licences, >>> > > signatures, checksums, performed a "reproducible build" check and it >>> > worked >>> > > (with a small glitch explained below). >>> > > >>> > > BTW. The new "hatchling-built" package looks good and it nicely >>> installs >>> > > airflow + extras (and it has a far better and cleaner set of extras - >>> > > finally you can reproducibly install airflow with `all` extra if you >>> > > ***REALLY*** want :). >>> > > >>> > > Reproducibility (also for other PMC members doing the check): I >>> found a >>> > > small glitch in the "reproducible" part of verifying the packages. >>> While >>> > > wheel and sdist packages are exactly the same binary-wise, the >>> > > source-tarball was binarry different for me. I decompressed it and >>> > compared >>> > > the content - they are identical - but there is one difference which >>> I >>> > > overlooked - the group permissions for files in Ephraim's tarball are >>> > > different from mine. I have totally forgotten about the fact that >>> umask >>> > > might set different group/other permissions when checking out the >>> files >>> > > from git. Fix will be coming shortly - in the meantime I recommend >>> anyone >>> > > who will be doing the comparison to uncompress both tarballs and >>> compare >>> > > the contents with `diff -r`. >>> > > >>> > > >>> > > >>> > >> On Tue, Jan 16, 2024 at 11:30 AM Ephraim Anierobi < >>> > >> ephraimanier...@apache.org> wrote: >>> > >> >>> > >> Hey fellow Airflowers, >>> > >> >>> > >> I have cut Airflow 2.8.1rc1. This email is calling a vote on the >>> > release, >>> > >> which will last at least 72 hours, from Tuesday, January 16, 2024 at >>> > 10:30 >>> > >> am UTC >>> > >> until Friday, January 19, 2024, at 10:30 am UTC >>> > >> < >>> > >> >>> > >>> https://www.timeanddate.com/worldclock/fixedtime.html?msg=8&iso=20240119T1030&p1=1440 >>> > >>> , >>> > >> and until 3 binding +1 votes have been received. >>> > >> >>> > >> Status of testing of the release is kept at >>> > >> https://github.com/apache/airflow/issues/36808 >>> > >> >>> > >> Consider this my (binding) +1. >>> > >> >>> > >> Airflow 2.8.1rc1 is available at: >>> > >> https://dist.apache.org/repos/dist/dev/airflow/2.8.1rc1/ >>> > >> >>> > >> *apache-airflow-2.8.1-source.tar.gz* is a source release that comes >>> with >>> > >> INSTALL instructions. >>> > >> *apache-airflow-2.8.1.tar.gz* is the binary Python "sdist" release. >>> > >> *apache_airflow-2.8.1-py3-none-any.whl* is the binary Python wheel >>> > "binary" >>> > >> release. >>> > >> >>> > >> Public keys are available at: >>> > >> https://dist.apache.org/repos/dist/release/airflow/KEYS >>> > >> >>> > >> Please vote accordingly: >>> > >> >>> > >> [ ] +1 approve >>> > >> [ ] +0 no opinion >>> > >> [ ] -1 disapprove with the reason >>> > >> >>> > >> Only votes from PMC members are binding, but all members of the >>> > community >>> > >> are encouraged to test the release and vote with "(non-binding)". >>> > >> >>> > >> The test procedure for PMC members is described in: >>> > >> >>> > >> >>> > >>> https://github.com/apache/airflow/blob/main/dev/README_RELEASE_AIRFLOW.md\#verify-the-release-candidate-by-pmc-members >>> > >> >>> > >> The test procedure for and Contributors who would like to test this >>> RC >>> > is >>> > >> described in: >>> > >> >>> > >> >>> > >>> https://github.com/apache/airflow/blob/main/dev/README_RELEASE_AIRFLOW.md\#verify-the-release-candidate-by-contributors >>> > >> >>> > >> >>> > >> Please note that the version number excludes the `rcX` string, so >>> it's >>> > now >>> > >> simply 2.8.1. This will allow us to rename the artifact without >>> > modifying >>> > >> the artifact checksums when we actually release. >>> > >> >>> > >> Release Notes: >>> > >> https://github.com/apache/airflow/blob/2.8.1rc1/RELEASE_NOTES.rst >>> > >> >>> > >> Changes since 2.8.0: >>> > >> >>> > >> *Significant Changes* >>> > >> >>> > >> *Target version for core dependency ``pendulum`` package set to 3 >>> > >> (#36281).* >>> > >> Support for pendulum 2.1.2 will be saved for a while, presumably >>> until >>> > the >>> > >> next feature version of Airflow. >>> > >> It is advised to upgrade user code to use pendulum 3 as soon as >>> > possible. >>> > >> >>> > >> *Airflow packaging specification follows modern Python packaging >>> > standards >>> > >> (#36537).* >>> > >> We standardized Airflow dependency configuration to follow latest >>> > >> development in Python packaging by >>> > >> using ``pyproject.toml``. Airflow is now compliant with those >>> accepted >>> > >> PEPs: >>> > >> >>> > >> * `PEP-440 Version Identification and Dependency Specification < >>> > >> https://www.python.org/dev/peps/pep-0440/>`__ >>> > >> * `PEP-517 A build-system independent format for source trees < >>> > >> https://www.python.org/dev/peps/pep-0517/>`__ >>> > >> * `PEP-518 Specifying Minimum Build System Requirements for Python >>> > Projects >>> > >> <https://www.python.org/dev/peps/pep-0518/>`__ >>> > >> * `PEP-561 Distributing and Packaging Type Information < >>> > >> https://www.python.org/dev/peps/pep-0561/>`__ >>> > >> * `PEP-621 Storing project metadata in pyproject.toml < >>> > >> https://www.python.org/dev/peps/pep-0621/>`__ >>> > >> * `PEP-660 Editable installs for pyproject.toml based builds (wheel >>> > based) >>> > >> < >>> > >> https://www.python.org/dev/peps/pep-0660/>`__ >>> > >> * `PEP-685 Comparison of extra names for optional distribution >>> > dependencies >>> > >> <https://www.python.org/dev/peps/pep-0685/>`__ >>> > >> >>> > >> Also we implement multiple license files support coming from Draft, >>> not >>> > yet >>> > >> accepted (but supported by hatchling) PEP: >>> > >> * `PEP 639 Improving License Clarity with Better Package Metadata < >>> > >> https://peps.python.org/pep-0639/>`__ >>> > >> >>> > >> This has almost no noticeable impact on users if they are using >>> modern >>> > >> Python packaging and development tools, generally >>> > >> speaking Airflow should behave as it did before when installing it >>> from >>> > >> PyPI and it should be much easier to install >>> > >> it for development purposes using ``pip install -e ".[devel]"``. >>> > >> >>> > >> The differences from the user side are: >>> > >> >>> > >> * Airflow extras now get extras normalized to ``-`` (following >>> PEP-685) >>> > >> instead of ``_`` and ``.`` >>> > >> (as it was before in some extras). When you install airflow with >>> such >>> > >> extras (for example ``dbt.core`` or >>> > >> ``all_dbs``) you should use ``-`` instead of ``_`` and ``.``. >>> > >> >>> > >> In most modern tools this will work in backwards-compatible way, >>> but in >>> > >> some old version of those tools you might need to >>> > >> replace ``_`` and ``.`` with ``-``. You can also get warnings that >>> the >>> > >> extra you are installing does not exist - but usually >>> > >> this warning is harmless and the extra is installed anyway. It is, >>> > however, >>> > >> recommended to change to use ``-`` in extras in your dependency >>> > >> specifications for all Airflow extras. >>> > >> >>> > >> * Released airflow package does not contain ``devel``, ``devel-*``, >>> > ``doc`` >>> > >> and ``doc-gen`` extras. >>> > >> Those extras are only available when you install Airflow from >>> sources >>> > in >>> > >> ``--editable`` mode. This is >>> > >> because those extras are only used for development and >>> documentation >>> > >> building purposes and are not needed >>> > >> when you install Airflow for production use. Those dependencies had >>> > >> unspecified and varying behaviour for >>> > >> released packages anyway and you were not supposed to use them in >>> > >> released packages. >>> > >> >>> > >> * The ``all`` and ``all-*`` extras were not always working correctly >>> > when >>> > >> installing Airflow using constraints >>> > >> because they were also considered as development-only dependencies. >>> > With >>> > >> this change, those dependencies are >>> > >> now properly handling constraints and they will install properly >>> with >>> > >> constraints, pulling the right set >>> > >> of providers and dependencies when constraints are used. >>> > >> >>> > >> *Graphviz dependency is now an optional one, not required one >>> (#36647).* >>> > >> The ``graphviz`` dependency has been problematic as Airflow required >>> > >> dependency - especially for >>> > >> ARM-based installations. Graphviz packages require binary graphviz >>> > >> libraries - which is already a >>> > >> limitation, but they also require to install graphviz Python >>> bindings >>> > to be >>> > >> build and installed. >>> > >> This does not work for older Linux installation but - more >>> importantly - >>> > >> when you try to install >>> > >> Graphviz libraries for Python 3.8, 3.9 for ARM M1 MacBooks, the >>> packages >>> > >> fail to install because >>> > >> Python bindings compilation for M1 can only work for Python 3.10+. >>> > >> >>> > >> This is not a breaking change technically - the CLIs to render the >>> DAGs >>> > is >>> > >> still there and IF you >>> > >> already have graphviz installed, it will continue working as it did >>> > before. >>> > >> The only problem when it >>> > >> does not work is where you do not have graphviz installed it will >>> raise >>> > an >>> > >> error and inform that you need it. >>> > >> >>> > >> Graphviz will remain to be installed for most users: >>> > >> >>> > >> * the Airflow Image will still contain graphviz library, because >>> > >> it is added there as extra >>> > >> * when previous version of Airflow has been installed already, then >>> > >> graphviz library is already installed there and Airflow will >>> > >> continue working as it did >>> > >> >>> > >> The only change will be a new installation of new version of Airflow >>> > from >>> > >> the scratch, where graphviz will >>> > >> need to be specified as extra or installed separately in order to >>> enable >>> > >> DAG rendering option. >>> > >> >>> > >> *Bug Fixes* >>> > >> - Fix airflow-scheduler exiting with code 0 on exceptions (#36800) >>> > >> - Fix Callback exception when a removed task is the last one in the >>> > >> ``taskinstance`` list (#36693) >>> > >> - Allow anonymous user edit/show resource when set >>> > >> ``AUTH_ROLE_PUBLIC=admin`` (#36750) >>> > >> - Better error message when sqlite URL uses relative path (#36774) >>> > >> - Explicit string cast required to force integer-type run_ids to be >>> > passed >>> > >> as strings instead of integers (#36756) >>> > >> - Add log lookup exception for empty ``op`` subtypes (#35536) >>> > >> - Remove unused index on task instance (#36737) >>> > >> - Fix check on subclass for ``typing.Union`` in >>> > ``_infer_multiple_outputs`` >>> > >> for Python 3.10+ (#36728) >>> > >> - Make sure ``multiple_outputs`` is inferred correctly even when >>> using >>> > >> ``TypedDict`` (#36652) >>> > >> - Add back FAB constant in legacy security manager (#36719) >>> > >> - Fix AttributeError when using ``Dagrun.update_state`` (#36712) >>> > >> - Do not let ``EventsTimetable`` schedule past events if >>> > ``catchup=False`` >>> > >> (#36134) >>> > >> - Support encryption for triggers parameters (#36492) >>> > >> - Fix the type hint for ``tis_query`` in >>> ``_process_executor_events`` >>> > >> (#36655) >>> > >> - Redirect to index when user does not have permission to access a >>> page >>> > >> (#36623) >>> > >> - Avoid using dict as default value in ``call_regular_interval`` >>> > (#36608) >>> > >> - Remove option to set a task instance to running state in UI >>> (#36518) >>> > >> - Fix details tab not showing when using dynamic task mapping >>> (#36522) >>> > >> - Raise error when ``DagRun`` fails while running ``dag test`` >>> (#36517) >>> > >> - Refactor ``_manage_executor_state`` by refreshing TIs in batch >>> > (#36502) >>> > >> - Add flask config: ``MAX_CONTENT_LENGTH`` (#36401) >>> > >> - Fix get_leaves calculation for teardown in nested group (#36456) >>> > >> - Stop serializing timezone-naive datetime to timezone-aware >>> datetime >>> > with >>> > >> UTC tz (#36379) >>> > >> - Make ``kubernetes`` decorator type annotation consistent with >>> operator >>> > >> (#36405) >>> > >> - Fix Webserver returning 500 for POST requests to >>> ``api/dag/*/dagrun`` >>> > >> from anonymous user (#36275) >>> > >> - Fix the required access for get_variable endpoint (#36396) >>> > >> - Fix datetime reference in ``DAG.is_fixed_time_schedule`` (#36370) >>> > >> - Fix AirflowSkipException message raised by BashOperator (#36354) >>> > >> - Allow PythonVirtualenvOperator.skip_on_exit_code to be zero >>> (#36361) >>> > >> - Increase width of execution_date input in trigger.html (#36278) >>> > >> - Fix logging for pausing DAG (#36182) >>> > >> - Stop deserializing pickle when enable_xcom_pickling is False >>> (#36255) >>> > >> - Check DAG read permission before accessing DAG code (#36257) >>> > >> - Enable mark task as failed/success always (#36254) >>> > >> - Create latest log dir symlink as relative link (#36019) >>> > >> - Fix Python-based decorators templating (#36103) >>> > >> >>> > >> *Miscellaneous* >>> > >> - Rename concurrency label to max active tasks (#36691) >>> > >> - Restore function scoped ``httpx`` import in file_task_handler for >>> > >> performance (#36753) >>> > >> - Add support of Pendulum 3 (#36281) >>> > >> - Standardize airflow build process and switch to Hatchling build >>> > backend >>> > >> (#36537) >>> > >> - Get rid of ``pyarrow-hotfix`` for ``CVE-2023-47248`` (#36697) >>> > >> - Make ``graphviz`` dependency optional (#36647) >>> > >> - Announce MSSQL support end in Airflow 2.9.0, add migration script >>> > hints >>> > >> (#36509) >>> > >> - Set min ``pandas`` dependency to 1.2.5 for all providers and >>> airflow >>> > >> (#36698) >>> > >> - Bump follow-redirects from 1.15.3 to 1.15.4 in ``/airflow/www`` >>> > (#36700) >>> > >> - Provide the logger_name param to base hook in order to override >>> the >>> > >> logger name (#36674) >>> > >> - Fix run type icon alignment with run type text (#36616) >>> > >> - Follow BaseHook connection fields method signature in FSHook >>> (#36444) >>> > >> - Remove redundant ``docker`` decorator type annotations (#36406) >>> > >> - Straighten typing in workday timetable (#36296) >>> > >> - Use ``batch_is_authorized_dag`` to check if user has permission to >>> > read >>> > >> DAGs (#36279) >>> > >> - Replace deprecated get_accessible_dag_ids and use >>> get_readable_dags in >>> > >> get_dag_warnings (#36256) >>> > >> >>> > >> *Doc Only Changes* >>> > >> - Metrics tagging documentation (#36627) >>> > >> - In docs use logical_date instead of deprecated execution_date >>> (#36654) >>> > >> - Add section about live-upgrading Airflow (#36637) >>> > >> - Replace ``numpy`` example with practical exercise demonstrating >>> > top-level >>> > >> code (#35097) >>> > >> - Improve and add more complete description in the architecture >>> diagrams >>> > >> (#36513) >>> > >> - Improve the error message displayed when there is a webserver >>> error >>> > >> (#36570) >>> > >> - Update ``dags.rst`` with information on DAG pausing (#36540) >>> > >> - Update installation prerequisites after upgrading to Debian >>> Bookworm >>> > >> (#36521) >>> > >> - Add description on the ways how users should approach DB >>> monitoring >>> > >> (#36483) >>> > >> - Add branching based on mapped task group example to >>> > >> dynamic-task-mapping.rst (#36480) >>> > >> - Add further details to replacement documentation (#36485) >>> > >> - Use cards when describing priority weighting methods (#36411) >>> > >> - Update ``metrics.rst`` for param ``dagrun.schedule_delay`` >>> (#36404) >>> > >> - Update admonitions in Python operator doc to reflect sentiment >>> > (#36340) >>> > >> - Improve audit_logs.rst (#36213) >>> > >> - Remove Redshift mention from the list of managed Postgres backends >>> > >> (#36217) >>> > >> >>> > >> Cheers, >>> > >> Ephraim >>> > >> >>> > >>> > --------------------------------------------------------------------- >>> > To unsubscribe, e-mail: dev-unsubscr...@airflow.apache.org >>> > For additional commands, e-mail: dev-h...@airflow.apache.org >>> > >>> > >>> >>