Skip to content

Commit f70c94e

Browse files
authored
Merge pull request #10 from Crell/third-party-code
Add a policy page on third party code usage.
2 parents 7b047ab + 2473906 commit f70c94e

File tree

2 files changed

+256
-0
lines changed

2 files changed

+256
-0
lines changed

README.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ It contains the following items:
2323
process on how and when to update the `security.txt
2424
<https://www.php.net/.well-known/security.txt>`_ file on https://www.php.net.
2525

26+
- `Third-Party code <third-party-code.rst>`_: The circumstances under which the
27+
PHP project will use PHP code written by third parties in the ecosystem.
28+
2629
************
2730
Formatting
2831
************

third-party-code.rst

Lines changed: 253 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,253 @@
1+
########################
2+
Third Party Code Usage
3+
########################
4+
5+
**************
6+
Introduction
7+
**************
8+
9+
The PHP project may leverage code written by others, of which the PHP ecosystem
10+
has an ample supply. However, it also wants to avoid giving the appearance of
11+
endorsing or recommending any particular tool over other equally-capable
12+
competitors, even if unintentionally. This document provides a heuristic and
13+
process for addressing that balance.
14+
15+
*************
16+
Definitions
17+
*************
18+
19+
**PHP tooling**
20+
Refers to the code behind the PHP.net website, the documentation generator
21+
project PhD, the PHP wiki, and other similar systems. In general, “PHP code
22+
run by PHP.net.”
23+
24+
**Documentation**
25+
Refers to objective information about PHP, the PHP language, the PHP standard
26+
library, and PHP ecosystem hosted on PHP.net. This may include reference
27+
material, tutorials, FAQs, and similar.
28+
29+
**Marketing material**
30+
Refers to content on PHP.net or similar sites intended to promote or
31+
evangelize PHP the language or ecosystem.
32+
33+
**Libraries**
34+
Refers to existing third party code packages or tools, either C extensions or
35+
PHP code, maintained by someone other than the PHP Internals team. It also
36+
includes command line utilities used primarily by a developer. It may also
37+
refer to non-profit PHP ecosystem organizations, such as the PHP Foundation
38+
or PHP-FIG.
39+
40+
**Web Application**
41+
Refers to a “full” web framework that provides end-to-end web application
42+
capabilities, or an installable complete application. It does not refer to
43+
command line utilities used primarily by developers building applications.
44+
45+
**Approved license**
46+
Refers to a license `approved by the Free Software Foundation as Free
47+
Software <https://www.gnu.org/licenses/license-list.en.html>`_, and that is
48+
inbound compatible with GPLv3.
49+
50+
*********************
51+
Approval Heuristics
52+
*********************
53+
54+
PHP Tooling
55+
===========
56+
57+
PHP tooling MAY make use of third party libraries, provided that the library
58+
meets all of the “Inclusion” criteria, and does not meet any of the “Exclusion”
59+
criteria.
60+
61+
Inclusion criteria
62+
------------------
63+
64+
#. The library must have a stable >= 1.0 release, and have had one for at least
65+
a year. (This is to ensure it has longevity.)
66+
#. The library provides targeted, necessary functionality.
67+
#. The library is a recognized de facto standard, or one of a small number of de
68+
facto standards, in its problem space.
69+
#. The library is available under an Approved License.
70+
71+
Exclusion criteria
72+
------------------
73+
74+
#. The library is a Web Application
75+
#. The library is not available under an Approved License.
76+
#. The library has shown no meaningful activity for one year prior to its first
77+
inclusion.
78+
79+
PHP tooling maintainers MAY use their judgement to determine if a library meets
80+
the above criteria, but SHOULD be conservative in their interpretation of
81+
whether or not a library satisfies the necessary criteria.
82+
83+
Explicitly approved libraries
84+
-----------------------------
85+
86+
The following libraries have been explicitly approved by RFC vote.
87+
88+
- Composer
89+
- Xdebug
90+
- phpunit/phpunit
91+
- phpstan/phpstan
92+
- vimeo/psalm
93+
- michelf/php-markdown
94+
- phpmailer/phpmailer
95+
- squizlabs/php_codesniffer
96+
- friendsofphp/php-cs-fixer
97+
- symfony/dotenv
98+
- symfony/console
99+
- fzaninotto/faker
100+
- erusev/parsedown
101+
- amenadiel/jpgraph
102+
- Any library or PSR published by the PHP-FIG
103+
104+
Explicitly rejected libraries
105+
-----------------------------
106+
107+
None
108+
109+
PHP Documentation
110+
=================
111+
112+
Documentation MAY reference and link to third party libraries, provided that the
113+
library meets all of the “Inclusion” criteria, and does not meet any of the
114+
“Exclusion” criteria. Additionally, the language used to refer to the library
115+
must also follow the criteria below.
116+
117+
Inclusion criteria
118+
------------------
119+
120+
#. The library must have a stable >= 1.0 release, and have had one for at least
121+
a year.
122+
123+
#. The library provides a use that is commonly needed by many types of projects,
124+
making it of broad interest to the PHP ecosystem.
125+
126+
#. The library is a recognized de facto standard, or one of a small number of de
127+
facto standards, in its problem space. If there are a small number of de
128+
facto standard libraries, then all should be listed and given equal weight.
129+
130+
#. The library is available under an Approved License.
131+
132+
#. The language used to describe the library does not imply that the PHP Project
133+
is involved in or specifically recommends the library over some other.
134+
135+
Exclusion criteria
136+
------------------
137+
138+
#. The library is one of many (more than ~4) viable options in its problem
139+
space, even if it is the most common of those many options.
140+
#. The library is a Web Application.
141+
#. The library is not available under an Approved License.
142+
#. The library has shown no meaningful activity for one year prior to its first
143+
mention.
144+
#. The library is not of broad interest to the PHP ecosystem.
145+
146+
PHP tooling maintainers MAY use their judgement to determine if a library meets
147+
the above criteria, but SHOULD be conservative in their interpretation of
148+
whether or not a library satisfies the necessary criteria.
149+
150+
Explicitly approved libraries
151+
-----------------------------
152+
153+
The following libraries have been explicitly approved by RFC vote.
154+
155+
- Composer
156+
- Xdebug
157+
- phpunit/phpunit
158+
- phpstan/phpstan
159+
- vimeo/psalm
160+
- squizlabs/php_codesniffer
161+
- friendsofphp/php-cs-fixer
162+
- Any library or PSR published by the PHP-FIG
163+
164+
Explicitly rejected libraries
165+
-----------------------------
166+
167+
None
168+
169+
Marketing Material
170+
==================
171+
172+
Marketing material MAY reference and link to third party libraries, provided
173+
that the library meets all of the “Inclusion” criteria, and does not meet any of
174+
the “Exclusion” criteria. Additionally, the language used to refer to the
175+
library must also follow the criteria below.
176+
177+
Inclusion criteria
178+
------------------
179+
180+
#. The library must have a stable >= 1.0 release, and have had one for at least
181+
a year.
182+
183+
#. The library provides a use that is commonly needed by many types of projects,
184+
making it of *significant interest to the PHP ecosystem*.
185+
186+
#. The library is a recognized de facto standard, or one of a small number of de
187+
facto standards, in its problem space. If there are a small number of de
188+
facto standard libraries, then all should be listed and given equal weight.
189+
190+
#. The library MAY be a Web Application, provided its mention clearly does not
191+
specifically endorse the Application. If many options exist in a space that
192+
bears mention, the most common should be given equal exposure.
193+
194+
#. The library is available under an Approved License.
195+
196+
#. The language used to describe the library does not imply that the PHP Project
197+
is involved in or specifically recommends the library over some other.
198+
199+
Exclusion criteria
200+
------------------
201+
202+
#. The library is not available under an Approved License.
203+
#. The library has shown no meaningful activity for one year prior to its first
204+
mention.
205+
#. The library is not of broad interest to the PHP ecosystem.
206+
207+
PHP marketing material maintainers MAY use their judgement to determine if a
208+
library meets the above criteria, but SHOULD be conservative in their
209+
interpretation of whether or not a library satisfies the necessary criteria.
210+
211+
Explicitly approved libraries
212+
-----------------------------
213+
214+
The following libraries have been explicitly approved by RFC vote.
215+
216+
- Composer
217+
- Xdebug
218+
- phpunit/phpunit
219+
- phpstan/phpstan
220+
- vimeo/psalm
221+
- squizlabs/php_codesniffer
222+
- friendsofphp/php-cs-fixer
223+
- Any library or PSR published by the PHP-FIG
224+
225+
Explicitly rejected libraries
226+
-----------------------------
227+
228+
None
229+
230+
*********************
231+
Conflict Resolution
232+
*********************
233+
234+
Should there be a reasonable dispute as to whether a given library satisfies the
235+
criteria above, an RFC may be posted to explicitly approve the library for one
236+
or more of the above cases. The RFC MUST have a 2/3 vote threshold to approve
237+
the library. If the library is rejected, it may be revisited after six months,
238+
like any other RFC.
239+
240+
Additionally, a library that does not satisfy the above criteria MAY be granted
241+
an exception by RFC vote. The RFC MUST acknowledge the reasons the library does
242+
not meet the above criteria and why it is necessary for the PHP project to make
243+
use of or reference it anyway. The RFC MUST have a 2/3 vote threshold to approve
244+
the library.
245+
246+
*********************
247+
Approved Exceptions
248+
*********************
249+
250+
PHP Tooling
251+
===========
252+
253+
- Dokuwiki

0 commit comments

Comments
 (0)