Salut,
je me permet d'intervenir, car je pense que le probleme est profond alors que vous parlez de points de détails en surface...
Committo,Ergo:sum a écrit :
SPIP était au départ un CMS, avec comme beaucoup d'autres un système de "templates", comme on dit,
mais qui avait l'originalité d'être moins une extension de PHP que de HTML.
Avec le temps, et en particulier (quoique pas exclusivement) de par ton travail,
ce système est devenu un langage de programmation.
Comme beaucoup de CMS, SPIP n'est maîtrisable que si on apprend
- un langage de balisage (HTML)
- un langage de mise en page (CSS)
- un langage de programmation côté client (Javascript, plus une de ses bibliothèques, JQuery)
- un langage de programamtion côté serveur (PHP)
- un langage de requêtes sur bases de données (SQL)
mais en plus il faut apprendre un deuxième langage côté serveur, à la syntaxe farfelue et la sémantique indéfinie.
Si je peux me permettre, justement pas !
SPIP permet à des non informaticiens, n'ayant aucune notion de programmation, d'adapter à leur besoin un "produit" (spip seul ou avec squelette "clé en main").
Il n'y a qu'à suivre la liste user pour voir que tres souvent, la demande est juste "comment n'afficher que ceci, afficher cela ou ne pas afficher ce bidule".
pour 90% des utilisateurs, la connaissance necessaire se resume à comprendre comment modifier les 3 boucles qui les interessent.
Le deuxieme niveau consiste à monter en compétence sur CSS et HTML (encore que tout est fait pour que CSS suffise)
Optionnellement, ils peuvent vouloir ajouter un peu de jquery (encore qu'ici aussi, certains plugins peuvent suffire)
Quand on commence à devoir faire du PHP ou du SQL, c'est qu'on est déjà en train de faire autre chose ou un peu plus qu'un site internet.
J'exprime ça dans un vocabulaire de chercheur, mais ce problème est perçu plus ou moins consciemment par tout le monde:
pour une entreprise, ce langage veut dire plusieurs jours de formation (sur le tas ou, pire, payantes) pendant lesquels
ses ingénieurs seront improductifs; pour une assoc', c'est plusieurs jours où l'action militante sera mise en veille.
Tu m'accorderas donc que cette évolution (je n'ai pas dit que j'étais contre hein) mérite qu'on se pose la question du pourquoi et du comment.
Je suis d'accord avec ton constat "en entreprise" et plus particulièrement "en SSII".
Oui, pas mal d'ingénieurs diplomés font la gueule quand il faut faire du SPIP.
Pire : ils n'y comprennent rien et ralent que c'est compliqué.
Mais si tu creuses un peu, tu te rends vite compte qu'en fait, leur probleme, c'est qu'ils sont formatés pour la programmation objet à tel point qu'ils ne savent meme plus pourquoi ils en font, mais qu'ils ne savent pas faire autre chose !
J'ai en memoire une réunion assez amusante ou un chef de projet essayait d'expliquer tout le mal qu'il pensait de SPIP, je pense qu'il m'en veut encore beaucoup... car il n'a pas réussit à trouver un argument tenant la route et que j'ai démoli point par point sa belle conception objet : c'etait beau, conceptuellement tres propre, mais c'etait clairement plus couteux en programmation et ca n'avait aucun interet (ni perf, ni maintenance, ni fonctionnel).
Je suis venu à SPIP car justement, c'est un projet qui se pose les bonnes questions et apporte des reponses opérationnelles.
Le pourquoi n'est pas trivial, ni sur le plan théorique ni sur le plan pratique. Je pense d'ailleurs que c'est la raison profonde, au-delà des goûts et des couleurs, du clivage entre Arnaud et toi sur l'espace privé: Arnaud voit toujours SPIP comme un CMS intégrant un outil de développement, toi tu le vois comme un outil de développement fourni avec une application type. Rien que la persistance de votre incompréhension mutuelle me pousserait déjà à dire que sur le plan pratique de la bonne entente de l'équipe, il vaut mieux que le noyau continue à se présenter comme un CMS, et que tu développes ce qui tire SPIP vers autre chose seulement sur la Zone.
Je crois plutot que chacun voit midi à sa porte...
Et le plus important pour chacun, amha, c'est la compatibilité ascendante.
Arnaud est plus sensible aux pratiques en place (process de rédaction), Cedric plus au développement (formulaires, plugins...) mais au final, c'est juste qu'ils ne veulent pas avoir perdu leur temps et etre obligés de recommencer qqchose qui a été fait (que ca soit du developpement ou de la formation).
Sur un plan plus théorique, faire de SPIP un langage ne peut convaincre que s'il vient en remplacement de PHP, pas en plus pour la raisons susdite, et qu'il soit meilleur. Ce remplacement veut dire qu'il n'y aurait plus aucun nécessité d'écrire du PHP dans les squelettes, mais aussi qu'il n'y aurait plus besoin d'écrire des filtres et des balises perso en PHP. Par en dessous ça peut rester ou non du PHP, c'est secondaire pour l'utilisateur; evidemment il vaudrait mieux que ce soit un module Apache en C, mais c'est un boulot énorme. Mais je ne crois pas à la viabilité d'un langage aussi dépendant d'un autre, a fortiori quand celui-ci est lui-même mal fichu.
alors la, super pas d'accord !!!
justement, il y a une "courbe d'apprentissage" dans SPIP qui permet aux bidouilleurs de trouver leur bonheur, quel que soit leur niveau.
Pas besoin d'un BAC+5 pour faire une petite fonction PHP qui fera la petite bidouille souhaitée sur un champ.
Grace à SPIP, non seulement le bidouilleur arrive à faire ce qu'il veut très vite, mais en plus, il le fait bien (utilisation du cache).
C'est la je pense ou tu es le plus en décalage :
D'après toi, qui sont les utilisateurs de SPIP ?
Qu'attendent-ils d'une nouvelle version de l'outil qu'ils ont choisi pour leur site et sur lequel ils ont passé des heures ?
Qu'il soit un langage de programmation indépendant ?
Qu'il soit compatible avec Oracle ?
je ne pense pas...
Ils veulent pouvoir faire des sites et autres extranet simplement, rapidement, avec du code solide et maintenable.
Et quand je parle de maintenable, je parle de leur code à eux (squelettes, filtres, plugins pour les plus geek...), pas de celui de SPIP.
On en vient au "comment", et de nouveau il y a un aspect théorique et un aspect pratique. L'aspect pratique, c'est qu'en tant que chercheur en langage de programmation je me retrouverais dans une position très particulière dans l'équipe, qui ne serait pas très facile à vivre pour tout le monde parce que je pousserais vers certaines exigences qui sont considérées comme indispensables, à tort ou à raison, dans la communauté scientifique à laquelle j'appartiens. Quant au plan théorique, il faut savoir qu'on définit la sémantique d'un langage par un nombre d'instructions *minimal*, c'est-à-dire qu'aucune des instructions de ce noyau ne peut être définie par une composition des autres, ce qui garantit une rapidité d'apprentissage pour les utilisateurs, et des possibilités de développement par macro-génération pour les développeurs.
Tu le sais, je suis à priori, et pour mes besoins, tout à fait d'accord avec cette approche.
Mais malheureusement, c'est loin d'etre compatible avec le besoin de la majorité des utilisateurs !
En l'occurrence, le noyau du langage de squelettes devrait se limiter aux boucles sur tables SQL (pour accéder aux infos en base), aux filtres (pour les traiter), et à un *unique* mécanisme d'inclusion. Les balises SPIP, en particulier, n'ont rien à faire dans le noyau, et elles y sont d'autant plus mal venues que leur interface de programmation n'est pas fondée sur une macro-génération, ce qui rend leur programmation compliquée.
Si tu arrives à faire ca sans casser la compatibilité ascendante, je pense que tout le monde sautera de joie... malheureusement, ca n'est pas possible, en tous cas, pas proprement.
Ca pourrait etre l'objecctif d'un SPIP 3.0...
Pour dire les choses autrement, l'allègement du noyau que tu as entamé depuis avant même la sortie de la 2.0 concerne l'aspect CMS de SPIP, pas son aspect langage qui s'est au contraire développé.
heu, depuis la 1.9.2, il y a quand meme du chemin de fait au niveau de la mise en place d'une API (ou tout du moins au niveau du modele de programmation)
Je ne dis pas que ce travail est inutile, bien au contraire, mais pour moi il est intervenu trop tôt: il faut d'abord définir le noyau sémantique pour savoir comment écrire au mieux les couches qu'on au-dessus.
La aussi, je pense qu'il y a une difference de points de vue fondamentale entre les differentes visions de SPIP.
Quand je présente SPIP, je dis :
1- SPIP est avant tout un présentateur de contenu : son langage de boucles/balises/filtres permet d'afficher n'importe quel contenu situé en base de données avec une grande souplesse et en exploitant un systeme de cache intégré
2- SPIP est livré nativement avec un backoffice gérant un ensemble d'objets => ce que tu appelles l'aspect CMS
3- SPIP dispose d'une large communauté et de nombreux plugins => pour des besoins classiques, on trouve presque toujours son bonheur
4- SPIP permet de gérer n'importe quel contenu en base moyennant un petit developpement : les balises dynamiques (1.9.2) ou formulaires CVT (2.0)
5- SPIP est surchargeable et bien foutu (autorisations, cron, mots clés, syndication...)
=> SPIP est un framework : il simplifie et structure la programmation.
Le progrès principal de SPIP 2.0, c'est de ne pas devoir faire d'un coté une balise dynamique et des squelettes, et de l'autre la programmation d'un backoffice.
C'etait le plus gros defaut de la 1.9.
A aucun moment je ne dis que SPIP est un langage, je dis que c'est un framework PHP.
La compatibilité avec d'autres base ? on ne me l'a jamais demandé, quand SPIP arrive sur un projet, c'est que PHP/MySQL est la plateforme retenue.
Pour moi, aujourd'hui, la limite fonctionnelle la plus bloquante dans SPIP, c'est de ne pas pouvoir faire des boucles sur autre chose que des tables.
C'est le seul truc sur lequel je continue à dire "ah non, désolé, c'est pas possible" et c'est une chose qui m'est demandée presque systematiquement pour les résultats de recherche.
Alors oui, les bonnes questions aujourd'hui, c'est :
- Est-ce qu'une balise est un champ SQL ou est-ce juste le comportement par defaut en l'absence de balise programmée (statique ou dynamique) ?
- Est-ce qu'une boucle est un générateur de SQL/PHP ou un itérateur ?
- Est ce que SPIP est un langage ou un framework PHP ?
Une chose est sure : les utilisateurs se positionnent d'un point de vue fonctionnel, la "qualité" du core, tant que ca n'impacte pas les perfs ni la sécurité, sans dire qu'ils s'en tamponnent, je dirais que c'est tres tres secondaire et qu'ils ne sont sans doute pas pour lui sacrifier la moindre fonctionnalité acquise...
Le constat aujourd'hui, c'est des centaines de sites en 1.9.2 qui ne migreront sans doute jamais en 2.0, de quoi se faire du souci pour l'avenir de ce qui a été programmé pour la 2.0, des plugins faisant l'impasse sur la 2.0, ... bref, de quoi dégouter bien plus d'utilisateurs que n'en attirera la compatibilité Oracle ou la beauté de la conception du core.
Voila, tout ca pour dire que, oui, sur le principe, ce que tu decris est tres bien, mais tu ne peux pas le faire si les utilisateurs sont perdants...
Mes 2 sous.
Stephane