[spip-dev] Un autre multi-linguisme

[ je croyais avoir envoyé le message ci-dessous à toute la liste,
mais Antoine me signale qu'il était le seul destinaire; le voici
donc avec mes excuses pour le retard induit ]

Bonsoir Antoine,

Tout d'abord, je suis content qu'on reparle de problèmes de fond.

De tout ce que tu écris, je relève surtout:

Il est hors de question, dans la distribution principale de SPIP,
d'inclure des bouts de code programmés
dans un autre langage (et surtout pas un langage nécessitant une
compilation séparée), car alors beaucoup d'utilisateurs se verront
exclus d'office

La facilité d'installation de SPIP est en effet une de ses qualités,
mais je pense qu'à terme un développement 100% PHP ne sera plus tenable,
et a fortiori s'il n'est meme pas capable de profiter des optimisations
que j'ai introduites. D'autre part, il serait totalement transparent pour
les utilisateurs si certaines parties de SPIP étaient des scripts cgi écrits en
d'autres langages, par exemple C qui est encore plus répandu que PHP, bien plus fiable
et bien plus prévisible (un code plus soigné débouche sur une exécution plus soignée!).

Ces parties sont notamment le compilateur de squelettes, et les fichiers
produits par ce compilateur.

Le compilateur lui-meme étant peu souvent sollicité, le travail ne serait
pas très utile (mais pas très difficile vu là où j'en suis).

Pour les productions du compilateur, ça devient plus intéressant, mais il y a un
problème technique qui suggère un développement intéressant de SPIP à mon avis.

Ces productions sont du HTML à 99%, hormis 12 cas où on synthétise des appels ultérieurs à php,
plus les cas où l'auteur du squelette a lui-meme écrit du php. Notons qu'on pourrait déjà
déterminer qu'un squelette ne contient pas ces cas, et alors balancer directement le code produit plutot que de se repayer une analyse syntaxique (donc faire readfile plutot que include dans inc-calcul): on pourrait repérer ça on mettant une extension .html ou .php dans le nom du fichier
mis en cache.

Les 12 cas où le code compilé rappelle php sont particulièrement chevelus (Christian s'était déjà interrogé à leur sujet), mais il n'y a pas de raison théorique à leur incontournabilité. Si on se donne la peine de les gérer autrement, on pourra donc dire qu'un squelette spip est formé de balises spécifiques transformées par le compilateur, tout le reste étant inchangé et donc en particulier tout métissage HTML+qqch est recevable, pas seulement PHP: du Java (JSP, WebMacro, Cocoon, Struts), du Perl (avev Mason) voire des langages spécifiques à l'auteur du squelette

Autrement dit, après le multi-linguisme humain, pourquoi ne pas introduire du multi-linguisme
informatique: ça permettrait à tout ceux qui ont écrit des choses intéressantes dans ces langages
de présenter leurs outils à travers SPIP, dont ils sont éloignés à cause du recours forcé à PHP
actuellement.

Qu'en pensez-vous ?

      Emmanuel

PS: j'ai modifié sur
http://www.uzine.net/spip_contrib/ecrire/articles_edit.php3?id_article=272
qquns de mes fichiers d'une part pour tenir compte des derniers commit du CVS,
d'autre part pour corriger des bugs précisément dans les php rappelés dans le code compilé.

      Emmanuel