Skip to content

DOCSP-41992 Upgrade versions #152

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

Merged
merged 13 commits into from
Sep 27, 2024
Merged
Show file tree
Hide file tree
Changes from 9 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions snooty.toml
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,9 @@ toc_landing_pages = [
"/databases-collections",
"/write",
"/indexes",
"/security"
"/data-formats"
"/security",
"/data-formats",
"/upgrade"
]

sharedinclude_root = "https://raw.githubusercontent.com/10gen/docs-shared/main/"
Expand Down
1 change: 1 addition & 0 deletions source/index.txt
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ MongoDB PHP Library
/data-formats
/compatibility
/whats-new
/upgrade
FAQ </faq>
/reference

Expand Down
123 changes: 123 additions & 0 deletions source/upgrade.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
.. _php-upgrade:

=======================
Upgrade Driver Versions
=======================

.. contents:: On this page
:local:
:backlinks: none
:depth: 1
:class: singlecol

.. facet::
:name: genre
:values: reference

.. meta::
:keywords: compatibility, backwards compatibility

Overview
--------

On this page, you can learn how to upgrade your driver to a new version. This
page also includes the changes you must make to your application when you
upgrade to a new version of the {+php-library+}.

How to Upgrade
--------------

Before you upgrade, perform the following actions:

- Ensure the new {+driver-short+} version is compatible with the {+mdb-server+} versions
your application connects to and the PHP version your
application compiles with. For version compatibility information, see the
:ref:`{+php-library+} Compatibility <php-compatibility>`
page.
- Address any breaking changes between the driver version
your application is using and your planned upgrade version in the
:ref:`Breaking Changes <php-breaking-changes>` section.

.. tip::

To ensure compatibility across {+mdb-server+} versions when
upgrading driver versions, use the :ref:`{+stable-api+} <php-stable-api>`.

To upgrade your driver version, replace ``<version-number>`` with the version number
you want to upgrade to and run the following command in your application's
directory:

.. code-block:: bash

composer require mongodb/mongodb:<version-number>

Installation instructions for the ``mongodb`` extension may be found in the
:php:`PHP.net documentation <manual/en/mongodb.installation.php>`.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should actually list the instructions on how to install the extension as well. This can be done by running the following:

pecl upgrade mongodb-<version-number>

The note about the PHP documentation can be amended to read "Detailed installation instructions [...]"

We should highlight that while the major and minor version numbers of the extension and library are in sync, the patch version is not.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added explanation about upgrading for different versions. Let me know what you think. thanks!


.. _php-breaking-changes:

Breaking Changes
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A couple of notes here:

  • We don't consider dropping support for a server version a breaking change, otherwise it would only be done in a major version. When we drop support for a server version, it has been out of official support for several years.
  • Deprecations are not considered breaking changes - rather is it a way to announce an upcoming breaking change that will be made in a future major version.
  • Upgrading the extension requirement or PHP requirements are also not breaking changes, as composer's dependency resolution will refuse to install a version of the library that isn't compatible with the installed extension version or the installed PHP version.

To summarise, this section should mention that we will make breaking changes only in a new major version, and we're also providing an upgrade file to go along with that version, along with deprecating any functionality to be removed. For example, we're currently working on version 2.0 of the extension, and the corresponding upgrade file lists everything that is removed. Note that this is a work in progress and should not yet be added to the docs.

We can list dropping support for MongoDB 3.6 in version 1.20 as a breaking change, but the other changes listed are not breaking changes in a traditional sense and should be removed.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I concur with reserving the term "breaking changes" for the driver API and thus new major versions; however, we should make sure all driver docs are on the same page here.

Removing support for EOL server and PHP versions is something communicated in release notes, and DBX also has a policy of announcing server compatibility changes in advance.

Copy link
Collaborator Author

@lindseymoore lindseymoore Sep 26, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I will remove all the deprecation notes other than the dropped support for MongoDB Server 3.6 for Version 1.20.

Once version 2.0 is released, we can add a note about upgrade files, as there are no other upgrade files for current versions out (the last one I see was for upgrading to 1.5 which is now the oldest relevant version according to compatibility table).

Let me know if this looks good, thanks!

----------------

A breaking change is a change of a convention or a behavior starting in a specific
version of the driver. This type of change may prevent your application from working
properly if not addressed before upgrading the driver.

The breaking changes in this section are categorized by the driver version that introduced
them. When upgrading driver versions, address all the breaking changes between the current
and upgrade versions.

For more information on release changes, see the release notes and associated
JIRA tickets for each release on `GitHub <https://github.com/mongodb/mongo-php-library/releases>`__.

Version 1.20 Breaking Changes
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

This driver version introduces the following breaking changes:

- Drops support for {+mdb-server+} 3.6.

- Deprecates iterators for database, collection, and index enumeration.

Version 1.18 Breaking Changes
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

This driver version introduces the following breaking changes:

- Deprecates setting ``disableMD5`` to ``false`` when instantiating a Bucket due to
deprecated MD5 encoding. The default value for the setting is now ``true``.

Version 1.17 Breaking Changes
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

This driver version introduces the following breaking changes:

- Upgrades the ``mongodb`` extension requirement to 1.17.0.

- Requires PHP 7.4 or newer.

- Removes aggregate compatibility logic, like the ``useCursor`` option, for
{+mdb-server+} versions less than 3.6.

Version 1.16 Breaking Changes
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

This driver version introduces the following breaking changes:

- Upgrades the ``mongodb`` extension requirement to 1.16.0.

- Deprecates ``IndexInfo::isGeoHaystack()``. ``geoHaystack`` was removed in
{+mdb-server+} 5.0 and later.

- Drops support for Composer 1.x.

- Removes ``$server`` argument in ``Explainable::getCommandDocument``.

- Removes ``getNonce`` command usage for {+mdb-server+} 6.2 and later.

Version 1.15 Breaking Changes
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

This driver version introduces the following breaking changes:

- Upgrades the ``mongodb`` extension requirement to 1.15.0.
Loading