No description
Find a file
Ferdinand Thiessen 23b76aa525
Merge pull request #2496 from nextcloud/feat/predis
feat: add predis as a dependency for Valkey cluster support
2026-07-13 12:38:57 +02:00
.github Merge pull request #2494 from nextcloud/dependabot/github_actions/actions/checkout-7.0.0 2026-07-02 12:33:25 +02:00
.patches feat: Disable callable serialization in sabre/xml 2026-07-07 11:42:44 +02:00
aws chore(autoloader): Dump autoloader 2026-04-10 08:28:17 +00:00
bantu/ini-get-wrapper
brick/math
composer feat: add predis as a dependency for Valkey cluster support 2026-07-09 16:12:07 +02:00
cweagans/composer-patches
deepdiver/zipstreamer
deepdiver1975/tarstreamer
doctrine chore(autoloader): Dump autoloader 2026-06-10 06:58:41 +00:00
egulias/email-validator
firebase/php-jwt chore: add firebase/php-jwt as dependency 2026-05-17 19:01:25 +02:00
fusonic/opengraph
gapple/structured-fields chore: add gapple/structured-fields as dependency 2026-05-17 19:01:27 +02:00
giggsey/libphonenumber-for-php-lite
guzzlehttp chore(autoloader): Dump autoloader 2026-07-01 15:46:27 +00:00
icewind
justinrainbow/json-schema
kornrunner/blurhash
laravel/serializable-closure
lcobucci/clock fix: remove useless polyfills and block installing them 2026-06-12 16:45:57 +02:00
marc-mabe/php-enum
masterminds/html5 chore(autoloader): Dump autoloader 2026-06-10 11:20:09 +00:00
mexitek/phpcolors
microsoft
mlocati/ip-lib
mtdowling/jmespath.php chore(autoloader): Dump autoloader 2026-07-01 15:46:27 +00:00
nextcloud/lognormalizer
paragonie/constant_time_encoding
pear
php-http
php-opencloud/openstack
phpseclib/phpseclib chore(autoloader): Dump autoloader 2026-07-01 15:46:27 +00:00
pimple/pimple
predis/predis feat: add predis as a dependency for Valkey cluster support 2026-07-09 16:12:07 +02:00
psr
punic/punic
ralouphie/getallheaders
sabre feat: Disable callable serialization in sabre/xml 2026-07-07 11:42:44 +02:00
spomky-labs
stecman/symfony-console-completion
symfony chore(autoloader): Dump autoloader 2026-07-01 15:46:27 +00:00
wapmorgan/mp3info
web-auth fix: remove useless polyfills and block installing them 2026-06-12 16:45:57 +02:00
.gitignore chore: add gapple/structured-fields as dependency 2026-05-17 19:01:27 +02:00
autoload.php
composer.json feat: add predis as a dependency for Valkey cluster support 2026-07-09 16:12:07 +02:00
composer.lock feat: add predis as a dependency for Valkey cluster support 2026-07-09 16:12:07 +02:00
composer.patches.json feat: Disable callable serialization in sabre/xml 2026-07-07 11:42:44 +02:00
LICENSE INFO
README.md

3rdparty

Some 3rd party libraries that are necessary to run Nextcloud.

Dependency Status

Updating libraries manually

  1. Make sure to use the latest version of composer: composer self-update
  2. Edit composer.json and adjust the version of the library to the one to update to. Pay attention to use the full version number (i.e. ^5.3.14).
  3. Run composer update thevendor/thelib (replace accordingly)
  4. Delete all installed dependencies with rm -rf ./*/
  5. Run composer install --no-dev
  6. Run git clean -X -d -f
  7. Run composer dump-autoload
  8. Commit all changes onto a new branch
  9. You might need the following command for pushing if used as submodule: git push git@github.com:nextcloud/3rdparty.git branchname

Updating polyfills

We make use of Symfony polyfills to allow us writing code already using methods from newer PHP version. This allows cleaner code and once our minimum PHP version is bumped we have no duplicated code for those methods anymore.

To keep the list of polyfills up to date, we need to add new polyfills once a new PHP version was released, for example with the release of PHP 8.4 we need to add its polyfills by running composer require symfony/polyfill-php84.

But we need to also remove unused polyfills to reduce any (minimal) overhead. Thus once we increase our minimal PHP version we should remove the added polyfills from the list of dependencies. Moreover also some dependencies require polyfills, to also reduce the list of added polyfills, we add the unneeded onces to the replace section of the composer.json.

So all PHP polyfills for already supported versions should be added to that section. But also polyfills for PHP modules that we require to be installed should be added, one example here is the mbstring module.

Testing your PR with server

  1. On https://github.com/nextcloud/server make a new branch 3rdparty/my-dependency
  2. Navigate into the 3rdparty directory
  3. Checkout the last commit SHA from your 3rdparty PR
  4. Return to the parent repository
  5. Stage the submodule update
  6. Commit (with sign-off and message)
  7. Push the branch and send a PR
    • Optional: use a tool like ion-bazan/composer-diff to generate a list of upgraded dependencies for the PR description
  8. Wait for CI and reviews
  9. Navigate into the 3rdparty directory
  10. Checkout the commit sha of the merge commit of your PR in the 3rdparty repository
  11. Return to the parent repository
  12. Stage the submodule update with git add 3rdparty
  13. Amend to the previous dependency bump
  14. Force-push with lease
  15. Wait for CI
  16. Merge 🎉
cd 3rdparty
git checkout 16cd747ebb8ab4d746193416aa2448c8114d5084
cd ..
git add 3rdparty
git commit -s
git push origin 3rdparty/my-dependency

# Optionally generate a list of upgraded dependencies for the PR description
# e.g. composer diff --base origin/master --target my-dependency-branch
# Wait for CI and reviews

cd 3rdparty
git checkout 54b63cc87af3ddb0ddfa331f20ecba5fcc01d495
cd ..
git add 3rdparty
git commit --amend
git push --force-with-lease origin 3rdparty/my-dependency