#1109633 ITP: php-psr-container -- Common container interface (PSR-11) for PHP

Package:
wnpp
Source:
wnpp
Submitter:
Ahmed Gamal
Date:
2025-08-10 18:20:02 UTC
Severity:
normal
Tags:
#1109633#5
Date:
2025-07-21 07:11:43 UTC
From:
To:
* Package name    : php-psr-container
  Version         : 1.1.2
  Upstream Author : PHP-FIG <http://www.php-fig.org/>
* URL             : https://github.com/php-fig/container
* License         : MIT
  Programming Lang: PHP
  Section         : php

Description:
 Common container interface (PSR-11) for PHP

 This package provides the standard PSR-11 container interface for PHP. It
defines
 a common interface for dependency injection containers, allowing libraries
and
 frameworks to interoperate with any container implementation that follows
the
 PSR-11 specification.

 The package contains the standard interfaces for retrieving objects and
parameters
 from a container, ensuring interoperability and flexibility in PHP
applications.

Rationale:
 This package is required as a dependency for FOSSology, an open source
license
 compliance system. FOSSology uses PHP-based tools for source code analysis
and
 license detection, which rely on the PSR-11 container interface for
managing
 dependencies and service objects in a consistent and maintainable way.

 The php-psr-container package is essential for:
 - Providing a standardized container interface for FOSSology components
 - Ensuring interoperability with PSR-11 compliant libraries and frameworks
 - Supporting dependency injection and service management in FOSSology
 - Promoting modular and maintainable code architecture
 - Enabling consistent dependency retrieval across different implementations

Technical Details:
 - Requires PHP >= 5.3.0
 - Implements PSR-11 container interface specification
 - Uses PSR-4 autoloading
 - Provides interfaces for container interoperability
 - MIT licensed for maximum compatibility
 - Part of the PHP-FIG standards recommendations

Dependencies:
 - php (>= 5.3.0)
 - Build dependencies: phpunit, php-codesniffer

The package will be maintained by Ahmed Gamal <ahmed.gamal9541@gmail.com>
as part
of the FOSSology packaging effort.

#1109633#12
Date:
2025-08-10 13:45:06 UTC
From:
To:
Please do some research before opening ITP/RFP bugs.
This package already exists in Debian.

#1109633#17
Date:
2025-08-10 22:06:26 UTC
From:
To:
Dear William,

I understand your concern about duplicate packages, but there's a critical
version compatibility issue that requires clarification.

SPECIFIC VERSION REQUIREMENT:
FOSSology requires php-psr-container version 1.1.2, while the current
Debian package provides version 2.0.x. This is not a minor version
difference - PSR-Container 2.0 introduced breaking changes that make it
incompatible with applications built for 1.x.

EVIDENCE FROM OUR INTEGRATION TESTING:
During FOSSology packaging, we encountered this exact dependency conflict:
"php-symfony-dependency-injection depends on php-psr-container (<< 2~~);
however: Version of php-psr-container on system is 2.0.2-1"

This error demonstrates that FOSSology's Symfony 3.4.x components cannot
work with PSR-Container 2.0.x.

BREAKING CHANGES IN PSR-11 v2.0:
- Interface method signatures changed
- Exception handling behavior modified
- Backward compatibility with 1.x applications broken
- Requires application code updates to migrate

TECHNICAL CONTEXT:
FOSSology was built against PSR-Container 1.1.2 APIs. The PSR-Container 2.0
upgrade path requires significant code changes in the application, which
FOSSology hasn't implemented yet.

PROPOSED SOLUTION:
Package as php-psr-container-1.1 to provide the legacy version alongside
the current 2.0 package, similar to how Debian handles:
- Multiple Python versions (python3.9, python3.10, python3.11)
- Different PostgreSQL versions (postgresql-13, postgresql-14,
postgresql-15)
- Various PHP versions (php7.4, php8.1, php8.2)

JUSTIFICATION:
This is standard practice in Debian when major version upgrades break
backward compatibility. Many applications still require PSR-Container 1.x
compatibility.

REQUEST:
Could we reopen this ITP to discuss version-specific packaging? FOSSology
is a significant license compliance tool that would benefit the Debian
ecosystem.

Best regards,
Ahmed Gamal
FOSSology Debian Packaging Team

Technical reference: https://www.php-fig.org/psr/psr-11/meta/

#1109633#22
Date:
2025-08-10 22:07:56 UTC
From:
To:
Dear William,

I understand your concern about duplicate packages, but there's a critical
version compatibility issue that requires clarification.

SPECIFIC VERSION REQUIREMENT:
FOSSology requires php-psr-container version 1.1.2, while the current
Debian package provides version 2.0.x. This is not a minor version
difference - PSR-Container 2.0 introduced breaking changes that make it
incompatible with applications built for 1.x.

EVIDENCE FROM OUR INTEGRATION TESTING:
During FOSSology packaging, we encountered this exact dependency conflict:
"php-symfony-dependency-injection depends on php-psr-container (<< 2~~);
however: Version of php-psr-container on system is 2.0.2-1"

This error demonstrates that FOSSology's Symfony 3.4.x components cannot
work with PSR-Container 2.0.x.

BREAKING CHANGES IN PSR-11 v2.0:
- Interface method signatures changed
- Exception handling behavior modified
- Backward compatibility with 1.x applications broken
- Requires application code updates to migrate

TECHNICAL CONTEXT:
FOSSology was built against PSR-Container 1.1.2 APIs. The PSR-Container 2.0
upgrade path requires significant code changes in the application, which
FOSSology hasn't implemented yet.

PROPOSED SOLUTION:
Package as php-psr-container-1.1 to provide the legacy version alongside
the current 2.0 package, similar to how Debian handles:
- Multiple Python versions (python3.9, python3.10, python3.11)
- Different PostgreSQL versions (postgresql-13, postgresql-14,
postgresql-15)
- Various PHP versions (php7.4, php8.1, php8.2)

JUSTIFICATION:
This is standard practice in Debian when major version upgrades break
backward compatibility. Many applications still require PSR-Container 1.x
compatibility.

REQUEST:
Could we reopen this ITP to discuss version-specific packaging? FOSSology
is a significant license compliance tool that would benefit the Debian
ecosystem.

Best regards,
Ahmed Gamal
FOSSology Debian Packaging Team

Technical reference: https://www.php-fig.org/psr/psr-11/meta/

#1109633#27
Date:
2025-08-10 22:16:35 UTC
From:
To:
Dear William,

I need to reopen this ITP due to breaking changes in PSR-Container 2.0 that
prevent FOSSology from functioning.

BREAKING COMPATIBILITY ISSUE:
FOSSology requires PSR-Container 1.1.2, but Debian provides 2.0.x.
PSR-Container 2.0 introduced breaking changes that make it incompatible
with FOSSology's Symfony 3.4.x components.

CONCRETE EVIDENCE:
During integration testing: "php-symfony-dependency-injection depends on
php-psr-container (<< 2~~); however: Version of php-psr-container on system
is 2.0.2-1"

This dependency conflict proves PSR-Container 2.0 cannot work with
FOSSology's existing components.

OFFICIAL BREAKING CHANGES PSR-11 v1 → v2:
- Interface method signatures changed
- Exception handling behavior modified
- Backward compatibility officially broken
- Applications must be updated to migrate (per PSR-11 documentation)

TECHNICAL REQUIREMENT:
FOSSology was built against PSR-Container 1.x APIs. The 2.0 upgrade
requires significant code changes throughout FOSSology's dependency
injection system - beyond packaging scope.

PROPOSED SOLUTION:
Package as php-psr-container-1.1 alongside current 2.0 package, following
Debian's standard practice for major version incompatibilities.

PRECEDENT:
Like python3.9/python3.10/python3.11, postgresql-13/14/15 when major
versions break compatibility.

REQUEST:
Please reopen to discuss version-specific packaging for this legitimate
compatibility requirement.

Best regards,
Ahmed Gamal
FOSSology Debian Packaging Team