rfc:third-party-code
Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
rfc:third-party-code [2024/09/28 05:23] – created crell | rfc:third-party-code [2024/10/06 12:58] (current) – Improve wording again crell | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== PHP RFC: Policy on 3rd party code ====== | ====== PHP RFC: Policy on 3rd party code ====== | ||
* Version: 0.9 | * Version: 0.9 | ||
- | * Date: 2013-02-24 (use today' | + | * Date: 2024-10-02 |
* Author: Larry Garfield (larry@garfieldtech.com) | * Author: Larry Garfield (larry@garfieldtech.com) | ||
- | * Status: | + | * Status: Discussion |
* First Published at: http:// | * First Published at: http:// | ||
Line 14: | Line 14: | ||
===== Proposal ===== | ===== Proposal ===== | ||
+ | |||
+ | ==== Definitions ==== | ||
+ | |||
+ | |||
+ | **PHP tooling** refers to the code behind the PHP.net website, the documentation generator project PhD, the PHP wiki, and other similar systems. | ||
+ | |||
+ | **Documentation** refers to objective information about PHP, the PHP language, the PHP standard library, and PHP ecosystem hosted on PHP.net. | ||
+ | |||
+ | **Marketing material** refers to content on PHP.net or similar sites intended to promote or evangelize PHP the language or ecosystem. | ||
+ | |||
+ | **Libraries** refers to existing third party code packages or tools, either C extensions or PHP code, maintained by someone other than the PHP Internals team. It also includes command line utilities used primarily by a developer. | ||
+ | |||
+ | **Web Application** refers to a " | ||
+ | |||
+ | **Approved license** refers to a license [[https:// | ||
==== PHP tooling ==== | ==== PHP tooling ==== | ||
- | PHP tooling | + | PHP tooling MAY make use third party libraries, provided that the library meets all of the " |
Inclusion criteria: | Inclusion criteria: | ||
Line 24: | Line 39: | ||
- The library provides targeted, necessary functionality. | - The library provides targeted, necessary functionality. | ||
- The library is a recognized de facto standard, or one of a small number of de facto standards, in its problem space. | - The library is a recognized de facto standard, or one of a small number of de facto standards, in its problem space. | ||
- | - The library is available under an MIT, BSD, LGPL, or GPL license. | + | - The library is available under an Approved License. |
Exclusion criteria: | Exclusion criteria: | ||
- | - The library is a " | + | - The library is a Web Application |
- | - The library is available under an AGPL license. | + | - The library is not available under an Approved License. |
- | - The library is not available under an Open Source license. | + | |
- The library has shown no meaningful activity for one year prior to its first inclusion. | - The library has shown no meaningful activity for one year prior to its first inclusion. | ||
- | |||
PHP tooling maintainers MAY use their judgement to determine if a library meets the above criteria, but SHOULD be conservative in their interpretation of whether or not a library satisfies the necessary criteria. | PHP tooling maintainers MAY use their judgement to determine if a library meets the above criteria, but SHOULD be conservative in their interpretation of whether or not a library satisfies the necessary criteria. | ||
Line 39: | Line 51: | ||
==== PHP documentation ==== | ==== PHP documentation ==== | ||
- | Documentation | + | Documentation MAY reference and link to third party libraries, provided that the library meets all of the " |
Inclusion criteria: | Inclusion criteria: | ||
- The library must have a stable >= 1.0 release, and have had one for at least a year. | - The library must have a stable >= 1.0 release, and have had one for at least a year. | ||
- | - The library provides a use that is commonly needed by numerous | + | - The library provides a use that is commonly needed by many types of projects, |
- The library is a recognized de facto standard, or one of a small number of de facto standards, in its problem space. | - The library is a recognized de facto standard, or one of a small number of de facto standards, in its problem space. | ||
- | - The library is available under an Free Software license (as defined by the Free Software Foundation). | + | - The library is available under an Approved License. |
- The language used to describe the library does not imply that the PHP Project is involved in or specifically recommends the library over some other. | - The language used to describe the library does not imply that the PHP Project is involved in or specifically recommends the library over some other. | ||
- | |||
Exclusion criteria: | Exclusion criteria: | ||
- The library is one of many (more than ~4) viable options in its problem space, even if it is the most common of those many options. | - The library is one of many (more than ~4) viable options in its problem space, even if it is the most common of those many options. | ||
- | - The library is not available under an Open Source license. | + | |
+ | | ||
- The library has shown no meaningful activity for one year prior to its first mention. | - The library has shown no meaningful activity for one year prior to its first mention. | ||
- The library is not of broad interest to the PHP ecosystem. | - The library is not of broad interest to the PHP ecosystem. | ||
PHP documentation maintainers MAY use their judgement to determine if a library meets the above criteria, but SHOULD be conservative in their interpretation of whether or not a library satisfies the necessary criteria. | PHP documentation maintainers MAY use their judgement to determine if a library meets the above criteria, but SHOULD be conservative in their interpretation of whether or not a library satisfies the necessary criteria. | ||
+ | |||
+ | ==== Marketing material ==== | ||
+ | |||
+ | Marketing material MAY reference and link to third party libraries, provided that the library meets all of the " | ||
+ | |||
+ | Inclusion criteria: | ||
+ | |||
+ | - The library must have a stable >= 1.0 release, and have had one for at least a year. | ||
+ | - The library provides a use that is commonly needed by many types of projects, making it of **significant interest** to the PHP ecosystem. | ||
+ | - The library is a recognized de facto standard, or one of a small number of de facto standards, in its problem space. | ||
+ | - The library MAY be a Web Application, | ||
+ | - The library is available under an Approved License. | ||
+ | - The language used to describe the library does not imply that the PHP Project is involved in or specifically recommends the library over some other. | ||
+ | |||
+ | Exclusion criteria: | ||
+ | |||
+ | - The library is not available under an Approved License. | ||
+ | - The library has shown no meaningful activity for one year prior to its first mention. | ||
+ | - The library is not of broad interest to the PHP ecosystem. | ||
+ | |||
+ | PHP marketing material maintainers MAY use their judgement to determine if a library meets the above criteria, but SHOULD be conservative in their interpretation of whether or not a library satisfies the necessary criteria. | ||
==== Conflict resolution ==== | ==== Conflict resolution ==== | ||
- | Should there be a reasonable dispute as to whether a given library satisfies the criteria above, an RFC may be posted to explicitly approve the library for either use or reference. The RFC MUST have a 2/3 vote threshold to approve the library. | + | Should there be a reasonable dispute as to whether a given library satisfies the criteria above, an RFC may be posted to explicitly approve the library for one or more of the above cases. The RFC MUST have a 2/3 vote threshold to approve the library. |
==== Initially approved libraries ==== | ==== Initially approved libraries ==== | ||
- | The following packages are explicitly approved for use by this RFC, as they meet all of the criteria above. | + | The following packages are explicitly approved for use by this RFC for all three use cases, as they meet all of the criteria above. |
* Composer | * Composer | ||
Line 73: | Line 106: | ||
* Psalm | * Psalm | ||
* Any library or PSR published by the PHP-FIG | * Any library or PSR published by the PHP-FIG | ||
+ | |||
+ | Additionally, | ||
Line 79: | Line 114: | ||
This section is non-normative. | This section is non-normative. | ||
- | * Composer - It's 2024. Composer is the sole project in its market, and is used by the overwhelming majority of the PHP ecosystem. | + | * Composer - It's 2024. Composer is the sole project in its market, and is used by the overwhelming majority of the PHP ecosystem. |
- | * Symfony/ | + | * Symfony/ |
- | * Ramsey/uuid - This has long been a staple of UUID handling in PHP. It would be fine for tooling to use. More recently, Symfony/ | + | * Ramsey/uuid - This has long been a staple of UUID handling in PHP. It would be fine for tooling to use. More recently, Symfony/ |
- | * Symfony, Laravel, Slim, Yii, etc. - While Laravel and Symfony are the market leaders in PHP frameworks, it is a highly dynamic market, with literally dozens of players that have reasonable use. That makes listing them in the documentation without " | + | * Symfony, Laravel, Slim, Yii,WordPress, Drupal, TYPO3, etc. - While Laravel and Symfony are the market leaders in PHP frameworks, and WordPress dominates the CMS-oid market, it is a highly dynamic market, with literally dozens of players that have reasonable use. That makes listing them in the documentation without " |
- | * WordPress, Drupal, TYPO3, Concrete5, etc. - As with frameworks, this market is far too dynamic for us to document without tipping the scales. | + | * Serializers - This is another market with many viable players of various sizes, so we should not " |
- | * Serializers - This is another market with many viable players of various sizes, so we should not " | + | * PHPStan, Psalm - These are, to my knowledge, the only serious players in the static analysis space that meet the above criteria. |
- | * PHPStan, Psalm - These are, to my knowledge, the only serious players in the static analysis space that meet the above criteria. | + | |
+ | ===== Open Questions ===== | ||
+ | |||
+ | - It likely would not come up, but are we OK with using AGPL code in PHP tooling? | ||
+ | - | ||
===== Proposed Voting Choices ===== | ===== Proposed Voting Choices ===== | ||
Line 94: | Line 133: | ||
===== References ===== | ===== References ===== | ||
- | Links to external references, discussions or RFCs | + | * [[https:// |
===== Rejected Features ===== | ===== Rejected Features ===== | ||
rfc/third-party-code.1727501000.txt.gz · Last modified: 2024/09/28 05:23 by crell