Jump to content

Wikipédia abstraite/Maquettes préliminaires

From Meta, a Wikimedia project coordination wiki
This page is a translated version of the page Abstract Wikipedia/Early mockups and the translation is 100% complete.
Tracked in Phabricator:
Task T258902

Voici quelques maquettes très préliminaires pour le wiki de Wikifonctions.

Fonctions

La fonction multiplier

Définition de la fonction

L’entête affiche le libellé et le type de l’objet (ici, une fonction). Une fonction inclut sa signature en tant que son type. En dessous, nous voyons la documentation.

Viennent ensuite les arguments de la fonction de multiplication, le type de valeur retournée et une liste des mises en œuvre disponibles. En dessous, nous voyons une liste de tests dans une table croisée avec les mises en œuvre et enfin un formulaire où le lecteur peut évaluer la fonction en place.

Mise en œuvre en JavaScript

Voici une des mises en œuvres possibles de la fonction de multiplication définie ci-dessus, ici en JavaScript.

Composition

Voici une autre mise en œuvre possible de la fonction de multiplication définie ci-dessus, cette fois composée à partir d’autres fonctions du wiki.

Test

Voici un exemple de test pour la fonction de multiplication.

Succession

Notez que tous les objets de « génération en langue naturelle » (NLG) encodent une approche spécifique. Ceci n’est pas destiné à prendre une décision par avance concernant la NLG spécifique, mais seulement conçu pour illustrer et visualiser les idées. L’approche NLG concrète que nous prendrons n’est pas encore décidée.

Constructeur

Voici un constructeur de succession. Ceci montre un constructeur relativement complexe pour décrire une clause déclarative.

Rendu en anglais

Voici un rendu en anglais pour le constructeur de succession. Il est fortement simplifié et seulement conçu pour montrer sommairement l’idée.

Conjonction

Notez que tous les objets de génération en langue humaine (NLG) encodent une approche spécifique. Ceci n’est pas destiné à prendre une décision par avance concernant la NLG spécifique, mais seulement conçu pour illustrer et visualiser les idées. L’approche NLG concrète que nous prendrons n’est pas encore décidée.

Voici un rendu en anglais pour le constructeur de conjonction. Il est fortement simplifié et seulement conçu pour montrer sommairement l’idée.

Ceci est fondamentalement la même chose, mais avec une option concernant le traitement de la virgule en anglais d’Oxford.

Page principale

Créer un objet

Un nouvel objet doit être créé. Nous devons d’abord sélectionner son type.

Nous choisissons le type « Test ». Automatiquement, les clés appropriées sont affichées.

Dans la première clé, « appel de fonction », nous commençons à saisir et choisissons une fonction, « multiplier ». Automatiquement, les arguments appropriés pour la multiplication sont affichés.

Nous commençons à entrer la première valeur. Ceci est alors analysé comme un littéral de type entier positif.

Maintenant dans le deuxième argument nous tapons « ajouter ». Ceci est reconnu comme une fonction. Les champs pour les arguments appropriés sont ajoutés. Nous ajoutons des valeurs littérales.

La condition de résultat est la deuxième clé de l’objet de test. Nous commençons à saisir un nom de fonction et la sélectionnons. La condition de résultat est le type de fonction prenant un objet et retournant une liste d’erreurs. Nous saisissons « égal à un entier » et cela affiche le seul argument de cette fonction.

Maintenant que nous avons entré une valeur littérale, l’objet est complet et est validé. Cela affiche le bouton « Publier ».

Visualiser un objet

Ce qui suit est une vue de l’objet Test qui vient d’être créé. Ce qui est supposé est que le nom est un rendu du test. Cela ne semble pas joli, mais cela peut être fait automatiquement. Notez que la vue de l’objet est une vue spécifique pour les Tests.

Ceci utilise la vue générique des Objets Z, en supposant qu’il n’y a pas de vue spécifique pour les objets Test.

Voici la vue obtenue après que quelqu’un a pris la peine de créer un libellé plus agréable et d’écrire un peu de documentation (pourquoi ce Test est approprié) et d’ajouter le Test à la fonction multiplier.

Modifier un objet

Voici l’interface à laquelle nous aboutissons en modifiant l’objet Test. Cela n’empêche nullement de modifier le libellé de l’objet ou la documentation. Ceci est l’interface générique pour les Objets Z. Notez que c’est pratiquement la même que l’interface de Création d’objet.

Un Objet Z peut devenir particulièrement compliqué. Il est possible de réduire les branches de l’objet Z. Ici nous avons réduit la partie effectuant l’addition dans le deuxième facteur de la multiplication.

Boîte de saisie magique

Une partie essentielle de l’interface utilisateur est la boîte de saisie magique. Pourquoi ces boîtes de saisie sont-elles magiques ? Regardons de plus près ce qu’elles peuvent faire : elles prennent quatre types d’entrées. Chaque boîte de saisie a un type attendu (dans le pire des cas, le type attendus est « Quelconque »).

  • Une référence à un Objet Z ayant le type attendu, c’est-à-dire choisi par son libellé ou alias (ou ID) et en utilisant un sélecteur déroulant (comme lors du choix d’un élément dans Wikidata).
  • Un appel de fonction peut avoir pour résultat un Objet Z du type attendu. Ceci commencer par le choix d’une référence à l’Objet Z d’une Fonction dont le type de retour a le type attendu et, dès que celle-ci est choisie, l’interface utilisateur est mise à jour pour permettre de spécifier les arguments.
  • Une valeur littérale. Si le type attendu peut être représenté en tant que littéral (par exemple pour une chaîne ou un entier), ce littéral peut simplement être saisi directement dans la boîte de saisie. Au cas où le littéral serait une référence au type correct, le menu déroulant liste les littéraux en tant que première option. (Que le type attendu puisse être représenté en tant que littéral dépend de si une fonction est spécifiée pour analyser les valeurs qui prennent une chaîne et retournent une instance du type attendu.)
  • Un utilisateur avancé peut basculer n’importe laquelle des boîtes de saisie magiques en un champ test plus large et effectuer une modification en code brut. Voyez la maquette une fois ceci effectué pour ce motif.

Puisque la magie peut parfois mal se comporter (imaginez par exemple avoir un type de fonction de (quelconque, quelconque), c’est-à-dire une fonction arbitraire, il ne sera jamais clair si vous référencez effectivement une fonction ou si vous effectuez un appel de fonction, donc nous pourrons aboutir au mauvais mode. La boîte magique vient avec un bouton 𝌹 qui permet de verrouiller un des quatre modes explicitement (le nombre de modes peut varier sensiblement selon le type attendu, c’est-à-dire si le type attendu est une fonction ou quelconque, s’il n’y a aucun mode littéral, etc.) et de même change le type attendu.

Ceci montre une syntaxe fonctionnelle pour l’édition en mode brut. Notez que ce n’est qu’une représentation dans l’interface utilisateur — la saisie reste analysée et mise en format canonique avant le stockage. Mais particulièrement pour le codage, nombre de personnes ne peuvent se passer du copier-coller, etc., et aucune interface utilisateur n’est parvenu à traiter ceci correctement sans cela, nous offrons donc cette possibilité.

Ceci est la même chose que la maquette précédente, mais au lieu d’utiliser une syntaxe fonctionnelle et un contenu muni de libellés, ceci est aussi brut que cela peut être et utilise du JSON et les ZIDs. Et bien, cela devrait même rester une possibilité.

Conceptions alternatives

Les deux maquettes suivantes montrent quelques idées de conception alternatives pour rendre plus explicite le groupement des formulaires, ici en mettant un cadre pointillé autour des sous-formulaires qui sont regroupés ensemble. Également, ceci montre clairement ce sur quoi porterait la réduction de chaque sous-formulaire.

Ici nous déplaçons l’icône pour réduire une boîte vers la gauche.

Maquettes sur mobile

Voici les maquettes pour l’interface mobile. Nous disposons de moins de place horizontalement, aussi le groupement de l’arbre par indentation pourrait être problématique.