diff --git a/ecrire/action/editer_article.php b/ecrire/action/editer_article.php
index ed443c7108d4992b7989e9e5cf58b7ad99639829..d2b8e086fd01f9e755514869f05e39149c91ecb0 100644
--- a/ecrire/action/editer_article.php
+++ b/ecrire/action/editer_article.php
@@ -96,9 +96,9 @@ function article_modifier($id_article, $set = null) {
 	include_spip('inc/modifier');
 	include_spip('inc/filtres');
 	$c = collecter_requests(
-	// white list
+		// include list
 		objet_info('article', 'champs_editables'),
-		// black list
+		// exclude list
 		['date', 'statut', 'id_parent'],
 		// donnees eventuellement fournies
 		$set
diff --git a/ecrire/action/editer_auteur.php b/ecrire/action/editer_auteur.php
index 8516201c7fc4855b9ae28753d844ffedc98973fc..8b6983eaad510f92baa79aacf17f8c31b59d2c56 100644
--- a/ecrire/action/editer_auteur.php
+++ b/ecrire/action/editer_auteur.php
@@ -153,9 +153,9 @@ function auteur_modifier($id_auteur, $set = null, $force_update = false) {
 	include_spip('inc/modifier');
 	include_spip('inc/filtres');
 	$c = collecter_requests(
-	// white list
+		// include list
 		objet_info('auteur', 'champs_editables'),
-		// black list
+		// exclude list
 		$force_update ? [] : ['webmestre', 'pass', 'login'],
 		// donnees eventuellement fournies
 		$set
@@ -180,7 +180,7 @@ function auteur_modifier($id_auteur, $set = null, $force_update = false) {
 	if (!$force_update) {
 		// Modification de statut, changement de rubrique ?
 		$c = collecter_requests(
-		// white list
+		// include list
 			[
 				'statut',
 				'new_login',
@@ -191,7 +191,7 @@ function auteur_modifier($id_auteur, $set = null, $force_update = false) {
 				'restreintes',
 				'id_parent'
 			],
-			// black list
+			// exclude list
 			[],
 			// donnees eventuellement fournies
 			$set
diff --git a/ecrire/action/editer_objet.php b/ecrire/action/editer_objet.php
index ca976222ae745898806274ff25e0b7d4d3f9e522..67db5fc2aabaef0033fd923b3f373c271e25ed0a 100644
--- a/ecrire/action/editer_objet.php
+++ b/ecrire/action/editer_objet.php
@@ -103,18 +103,18 @@ function objet_modifier($objet, $id, $set = null) {
 		$champ_date = 'date';
 	}
 
-	$white = array_keys($desc['field']);
+	$include_list = array_keys($desc['field']);
 	// on ne traite pas la cle primaire par defaut, notamment car
 	// sur une creation, id_x vaut 'oui', et serait enregistre en id_x=0 dans la base
-	$white = array_diff($white, [$desc['key']['PRIMARY KEY']]);
+	$include_list = array_diff($include_list, [$desc['key']['PRIMARY KEY']]);
 
 	if (isset($desc['champs_editables']) and is_array($desc['champs_editables'])) {
-		$white = $desc['champs_editables'];
+		$include_list = $desc['champs_editables'];
 	}
 	$c = collecter_requests(
-	// white list
-		$white,
-		// black list
+		// include list
+		$include_list,
+		// exclude list
 		[$champ_date, 'statut', 'id_parent', 'id_secteur'],
 		// donnees eventuellement fournies
 		$set
@@ -149,7 +149,7 @@ function objet_modifier($objet, $id, $set = null) {
 
 	// Modification de statut, changement de rubrique ?
 	// FIXME: Ici lorsqu'un $set est passé, la fonction collecter_requests() retourne tout
-	//         le tableau $set hors black liste, mais du coup on a possiblement des champs en trop.
+	//         le tableau $set hors liste d’exclusion, mais du coup on a possiblement des champs en trop.
 	$c = collecter_requests([$champ_date, 'statut', 'id_parent'], [], $set);
 	$err = objet_instituer($objet, $id, $c);
 
diff --git a/ecrire/action/editer_rubrique.php b/ecrire/action/editer_rubrique.php
index 69d15aa375c3b6cf3bb342760f83e87fe61ce2d0..b80893fdb819fd61749e424be26331340903e443 100644
--- a/ecrire/action/editer_rubrique.php
+++ b/ecrire/action/editer_rubrique.php
@@ -136,9 +136,9 @@ function rubrique_modifier($id_rubrique, $set = null) {
 
 	include_spip('inc/modifier');
 	$c = collecter_requests(
-	// white list
+		// include list
 		objet_info('rubrique', 'champs_editables'),
-		// black list
+		// exclude list
 		['id_parent', 'confirme_deplace'],
 		// donnees eventuellement fournies
 		$set
diff --git a/ecrire/inc/filtres_selecteur_generique.php b/ecrire/inc/filtres_selecteur_generique.php
index 6679b9236b8a177554472d308cb4c54ed00febf1..ef5b0d321f8dda891dd44ea9d707f83a704f70bb 100644
--- a/ecrire/inc/filtres_selecteur_generique.php
+++ b/ecrire/inc/filtres_selecteur_generique.php
@@ -18,16 +18,16 @@ if (!defined('_ECRIRE_INC_VERSION')) {
  *
  * @uses find_all_in_path()
  *
- * @param array $whitelist
- *     Liste blanche décrivant les objets à lister
- * @param array $blacklist
- *     Liste noire décrivant les objets à ne pas lister
+ * @param array $includelist
+ *     Liste d’inclusion décrivant les objets à lister
+ * @param array $excludelist
+ *     Liste d’exclusion décrivant les objets à ne pas lister
  * @return array
  *     Retourne un tableau de deux entrées listant les objets à lister et les objets sélectionnables
  *     - selectionner : tableau des objets que l'on pourra sélectionner (avec un +)
  *     - afficher : tableau des objets à afficher (mais pas forcément sélectionnables)
  */
-function selecteur_lister_objets($whitelist = [], $blacklist = []) {
+function selecteur_lister_objets($includelist = [], $excludelist = []) {
 	static $liste_selecteurs, $liste_parents;
 
 	if (!$liste_selecteurs) {
@@ -39,15 +39,15 @@ function selecteur_lister_objets($whitelist = [], $blacklist = []) {
 	}
 
 	// S'il y a une whitelist on ne garde que ce qui est dedans
-	if (!empty($whitelist)) {
-		$whitelist = array_map('table_objet', $whitelist);
-		$objets_selectionner = array_intersect($objets_selectionner, $whitelist);
+	if (!empty($includelist)) {
+		$includelist = array_map('table_objet', $includelist);
+		$objets_selectionner = array_intersect($objets_selectionner, $includelist);
 	}
-	// On supprime ce qui est dans la blacklist
-	$blacklist = array_map('table_objet', $blacklist);
+	// On supprime ce qui est dans la liste d’exclusion
+	$excludelist = array_map('table_objet', $excludelist);
 	// On enlève toujours la racine
-	$blacklist[] = 'racine';
-	$objets_selectionner = array_diff($objets_selectionner, $blacklist);
+	$excludelist[] = 'racine';
+	$objets_selectionner = array_diff($objets_selectionner, $excludelist);
 
 	// Ensuite on cherche ce qu'on doit afficher : au moins ceux qu'on peut sélectionner
 	$objets_afficher = $objets_selectionner;
diff --git a/ecrire/inc/modifier.php b/ecrire/inc/modifier.php
index 6319edd96b2f5d8054c340aad7d303d772ad23c2..342c632546bfef2a14fb602e2308ba39fc4c8359 100644
--- a/ecrire/inc/modifier.php
+++ b/ecrire/inc/modifier.php
@@ -26,23 +26,23 @@ if (!defined('_ECRIRE_INC_VERSION')) {
  * Fonction générique pour la collecte des posts
  * dans action/editer_xxx
  *
- * @param array $white_list
+ * @param array $include_list
  *     Les champs à récupérer
- * @param array $black_list
+ * @param array $exclude_list
  *     Les champs à ignorer
  * @param array|null $set
  *     array : Tableau des champs postés
- *     null  : Les champs sont obtenus par des _request() sur les noms de la white liste
+ *     null  : Les champs sont obtenus par des _request() sur les noms de la liste d’inclusion
  * @param bool $tous
  *     true : Recupère tous les champs de white_list meme ceux n'ayant pas ete postés
  * @return array
  *     Tableau des champs et valeurs collectées
  */
-function collecter_requests($white_list, $black_list = [], $set = null, $tous = false) {
+function collecter_requests($include_list, $exclude_list = [], $set = null, $tous = false) {
 	$c = $set;
 	if (!$c) {
 		$c = [];
-		foreach ($white_list as $champ) {
+		foreach ($include_list as $champ) {
 			// on ne collecte que les champs reellement envoyes par defaut.
 			// le cas d'un envoi de valeur NULL peut du coup poser probleme.
 			$val = _request($champ);
@@ -56,7 +56,7 @@ function collecter_requests($white_list, $black_list = [], $set = null, $tous =
 			$c['lang'] = $l;
 		}
 	}
-	foreach ($black_list as $champ) {
+	foreach ($exclude_list as $champ) {
 		unset($c[$champ]);
 	}
 
diff --git a/ecrire/public/sandbox.php b/ecrire/public/sandbox.php
index 6f7657c0f194c3a7a11f64cd385111fc2fcb6860..b1446f2d54e628adf92b1b9fd7533d85f3e7520b 100644
--- a/ecrire/public/sandbox.php
+++ b/ecrire/public/sandbox.php
@@ -15,7 +15,7 @@
  *
  * Une surcharge de ce fichier pourrait permettre :
  *
- * - de limiter l'utilisation des filtres à l'aide d'une liste blanche ou liste noire,
+ * - de limiter l'utilisation des filtres à l'aide d'une liste d’inclusion ou d’exclusion,
  * - de rendre inactif le PHP écrit dans les squelettes
  * - de refuser l'inclusion de fichier PHP dans les squelettes
  *
diff --git a/prive/formulaires/selecteur/generique.html b/prive/formulaires/selecteur/generique.html
index d1d52f3d9d872d9f33aa212d9eaa126178c0963c..7c66fe4d723f51f658adfdfc5abf67fb8de6b8e4 100644
--- a/prive/formulaires/selecteur/generique.html
+++ b/prive/formulaires/selecteur/generique.html
@@ -1,4 +1,9 @@
-#SET{img_unpick, #CHEMIN_IMAGE{supprimer-12.png}}
+[(#REM)
+
+	@deprecated 4.1 ENV 'whitelist'. Use 'includelist' instead
+	@deprecated 4.1 ENV 'blacklist'. Use 'excludelist' instead
+
+]#SET{img_unpick, #CHEMIN_IMAGE{supprimer-12.png}}
 [(#SET{label_supprimer, <:lien_supprimer:>})]
 <script type='text/javascript'>var identifiant_selecteur = 'selecteur_#ENV{name}'; var img_unpick='#GET{img_unpick}'; var selecteur_label_supprimer='#GET{label_supprimer}';
 jQuery.getScript('[(#CHEMIN{formulaires/selecteur/jquery.picker.js}|timestamp)]');
@@ -18,7 +23,7 @@ afficher la selection dans un ul class item_picked
 ]
 
 [(#REM) On commence par chercher la liste des objets disposant d'un sélecteur ]
-[(#SET{objets, [(#ENV{whitelist,#ARRAY}|selecteur_lister_objets{#ENV{blacklist,#ARRAY}})]})]
+[(#SET{objets, [(#ENV{includelist,#ENV{whitelist,#ARRAY}}|selecteur_lister_objets{#ENV{excludelist,#ENV{blacklist,#ARRAY}}})]})]
 
 [(#REM) S'il n'y a qu'un type d'objet affiché et sélectionnable, on ajoute une classe (on fait -1 car il y a toujours la racine dans "afficher" ]
 <div id="selecteur_#ENV{name}" class="selecteur[ (#GET{objets/afficher}|count|moins{1}|=={1}|et{#GET{objets/selectionner}|count|=={1}})selecteur_type_unique]">