rfc:third-party-code

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
rfc:third-party-code [2024/09/29 05:49] – Add a third catgory for marketing material crellrfc:third-party-code [2024/11/23 19:23] (current) – Close the vote 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's date here)+  * Date: 2024-10-02
   * Author: Larry Garfield (larry@garfieldtech.com)   * Author: Larry Garfield (larry@garfieldtech.com)
-  * Status: Draft+  * Status: Approved
   * First Published at: http://wiki.php.net/rfc/third-party-code   * First Published at: http://wiki.php.net/rfc/third-party-code
  
Line 15: Line 15:
 ===== Proposal ===== ===== Proposal =====
  
-==== Definitions ==== 
  
 +The specific policy to adopt is documented precisely in this Pull Request: https://github.com/php/policies/pull/10
  
-**PHP tooling** refers to the code behind the PHP.net website, the documentation generator project PhD, the PHP wiki, and other similar systems.  In general, "PHP code run by PHP.net." +In the interest of avoiding confusion by having multiple versions of it, this RFC will not repeat what is listed there.
- +
-**Documentation** refers to objective information about PHP, the PHP language, the PHP standard library, and PHP ecosystem hosted on PHP.net.  This may include reference material, tutorials, FAQs, and similar. +
- +
-**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 may also refer to non-profit PHP ecosystem organizations, such as the PHP Foundation or PHP-FIG. +
- +
-==== PHP tooling ==== +
- +
-PHP tooling MAY make use third party libraries, provided that the library meets all of the "Inclusion" criteria, and does not meet any of the "Exclusion" criteria. +
- +
-Inclusion criteria: +
- +
-  - The library must have a stable >= 1.0 release, and have had one for at least a year.  (This is to ensure it has longevity.) +
-  - 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 available under an MIT, BSD, LGPL, or GPL license. +
- +
-Exclusion criteria: +
- +
-  - The library is a "full" framework or application +
-  - The library is available under an AGPL license. +
-  - The library is not available under a Free Software license. +
-  - 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 documentation ==== +
- +
-Documentation MAY reference and link to third party libraries, provided that the library meets all of the "Inclusion" criteria, and does not meet any of the "Exclusion" criteria.  Additionally, the language used to refer to the library must also follow the criteria below. +
- +
-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 numerous types of projects, and a reasonable estimate would make it relevant to at least 40% of the PHP ecosystem. +
-  - The library is a recognized de facto standardor one of a small number of de facto standards, in its problem space.  If there are a small number of de facto standard libraries, then all should be listed and given equal weight. +
-  - The library is available under an Free Software license (as defined by the Free Software Foundation). +
-  - 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 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 a "full" application or framework. +
-  - The library is not available under a Free Software 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 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, and does not meet any of the "Exclusion" criteria.  Additionally, the language used to refer to the library must also follow the criteria below. +
- +
-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 numerous types of projects, and a reasonable estimate would make it relevant to at least 25% of 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.  If there are a small number of de facto standard libraries, then all should be listed and given equal weight. +
-  - The library MAY be a full application or framework, provided its mention clearly does not specifically endorse the library.  If many options exist in a space that bears mention, at least the three most common should be given equal exposure. +
-  - The library is available under an Free Software license (as defined by the Free Software Foundation). +
-  - 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 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 a Free Software 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 ==== +
- +
-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.  If the library is rejected, it may be revisited after six months, like any other RFC. +
- +
-==== Initially approved libraries ==== +
- +
-The following packages are explicitly approved for use by this RFC, as they meet all of the criteria above. +
- +
-  * Composer +
-  * PHPUnit +
-  * Xdebug +
-  * PHPStan +
-  * Psalm +
-  * Any library or PSR published by the PHP-FIG +
- +
-Additionally, for historical reasons, Docuwiki is explicitly approved for use despite it being a "full" application. +
  
 ===== Discussion ===== ===== Discussion =====
Line 123: Line 34:
  
   - It likely would not come up, but are we OK with using AGPL code in PHP tooling?  It's not like any of our code is inaccessible.   - It likely would not come up, but are we OK with using AGPL code in PHP tooling?  It's not like any of our code is inaccessible.
-  -  
  
 ===== Proposed Voting Choices ===== ===== Proposed Voting Choices =====
Line 129: Line 39:
 Simple 2/3 majority vote. Simple 2/3 majority vote.
  
 +<doodle title="Accept this policy proposal?" auth="crell" voteType="single" closed="true">
 +   * Yes
 +   * No
 +</doodle>
  
 ===== References ===== ===== References =====
  
-Links to external references, discussions or RFCs+ * [[https://news-web.php.net/php.internals/125732|Discussion on internals@]]
  
 ===== Rejected Features ===== ===== Rejected Features =====
  
  
rfc/third-party-code.1727588970.txt.gz · Last modified: 2024/09/29 05:49 by crell