Le fil est l’endroit où une publication Korat est la plus visible, et l’essentiel de Korat — groupes, pages professionnelles, stories, partage — repose sur une seule ligne de publication plutôt que sur quatre systèmes parallèles. Une publication de groupe est une publication ordinaire portant un identifiant de groupe ; une publication de page en porte un d’entreprise. C’est pour cela que réactions, commentaires, mentions et notifications se comportent partout de la même façon.
Quatre façons d’écrire
Une publication peut être du texte simple ; du texte sur fond coloré, pour la phrase courte qui se perdrait en gris ; ou jusqu’à quatre images dans une grille qui s’adapte au nombre. Vous publiez en votre nom ou en tant que page professionnelle, sur le fil principal ou dans un groupe.
Chaque publication porte sa propre visibilité — public ou amis — et ce réglage reste modifiable après coup, il n’est pas figé au moment où vous avez appuyé sur envoyer. Les gens se trompent d’audience en permanence : ce qui était écrit pour des amis mérite finalement d’être montré à tout le monde, ou l’inverse devient évident une heure plus tard. La seule exception est la publication d’une page professionnelle, toujours publique : un message de commerce que seuls certains clients voient est un ticket de support en préparation.
Toute publication, tout commentaire et toute story peuvent être signalés, en choisissant le motif dans une liste fixe. Le signalement passe par une fonction exécutée avec *vos* droits et non ceux du serveur : une publication que vous ne pouvez pas voir et une publication qui n’existe pas répondent donc à l’identique — le bouton de signalement ne devient jamais un moyen de savoir si un contenu qu’on n’a pas le droit de voir existe. La limite de fréquence est appliquée dans la base de données, pas dans l’app. Vous pouvez modifier votre propre publication après coup, et la supprimer. Les commentaires acceptent des mentions qui pointent vers de vraies personnes : une mention est un lien vers quelqu’un, pas une chaîne de caractères qui commence par une arobase, et la personne mentionnée reçoit une notification.
Six réactions, une par personne
Il y a six réactions — 👍 ❤️ 😄 😮 😢 😡 — et une seule par personne sur une publication donnée. Réappuyer sur la même la retire ; en choisir une autre déplace la vôtre. Aucun compteur ne se gonfle en tapotant, et il n’y a pas de comptabilité séparée entre « j’aime » et réactions à réconcilier.
Six plutôt qu’une, parce qu’un simple « j’aime » est ambigu sur une mauvaise nouvelle. Pas trente, parce qu’une longue traîne de réactions rarement utilisées rend les compteurs illisibles. Six suffisent à distinguer l’accord de la compassion et de la colère, et c’est la distinction dont les gens ont réellement besoin.
Le fil est classé, et le classement est écrit noir sur blanc
Le fil principal n’est pas strictement antichronologique. Il est ordonné par une fonction de classement qui tient dans un fichier du code de l’app, data/Ranking.kt, et dont chaque poids est documenté dans le document d’algorithme du projet, aux côtés de ceux des suggestions d’amis, des rencontres et de la recherche. Quand un poids change, ce document change avec lui.
Nous le disons parce que « l’algorithme » est d’ordinaire la partie d’un produit social que personne n’accepte de décrire. Un classement, c’est une série de nombres que quelqu’un a choisis ; les écrire au même endroit fait la différence entre un classement qu’on peut discuter et une boîte noire. Les publications de groupe sont exclues du fil principal en un point unique de ce pipeline : elles appartiennent à leur groupe, et elles y restent.
Albums, et où finissent vos photos
Les photos sont rangées dans des albums qui portent leur propre visibilité — public, amis ou privé — indépendamment des publications qui les utilisent. Chaque album a une couverture, se renomme et se supprime, et trois albums existent dès le départ : photos de profil, couvertures et images de publications. Envoyer une photo dans une publication ne crée donc pas en silence une seconde copie de votre photothèque quelque part où vous ne la voyez pas.
Un album privé est privé au sens où l’interface de Korat ne le montrera à personne d’autre. Il ne l’est pas au sens cryptographique du terme — ce qui nous amène à la partie franche.
Les médias déposés sont lisibles publiquement par URL. Korat n’utilise ni URL signées ni bucket privé. Toute personne détenant l’adresse directe d’une image peut l’ouvrir, quelle que soit la visibilité de la publication ou de l’album : la visibilité décide de qui la voit *dans l’app*, pas de qui peut récupérer le fichier.
Rien dans Korat n’est chiffré de bout en bout, et il n’y a pas de chiffrement applicatif au repos. Traitez une photo envoyée comme quelque chose qu’une personne détenant son adresse peut atteindre, et n’envoyez rien dont ce résultat serait grave. La page sécurité liste cette limite avec toutes les autres.
Le partage, et le lien qui ne dit rien
Tout ce qui se partage peut aller dans une conversation sous forme de carte, sur votre propre fil, dans une story, ou vers n’importe quelle autre app du téléphone par le partage Android habituel. Cela peut aussi devenir un lien de partage sur koratland.com — une URL de la forme koratland.com/s/<token>, où le jeton compte 14 caractères aléatoires. Publications, profils, commerces et stories se partagent tous de cette façon.
Le jeton est opaque à dessein. À l’ouverture, le serveur le résout par une fonction qui ne renvoie que deux choses : le type d’objet, et lequel. Jamais qui a créé le partage, jamais le nombre de clics. Le comptage fonctionne dans l’autre sens — une fonction séparée enregistre un clic, et personne, absolument personne, ne dispose d’un droit d’insertion sur la table sous-jacente : un visiteur peut incrémenter un compteur sans pouvoir y écrire quoi que ce soit d’autre. Un lien collé dans une conversation de groupe ne dit donc rien aux destinataires de votre historique de partage.
Des stories qui expirent, une liste de vues qui reste
Une story est une photo ou du texte sur couleur, avec une police intégrée au choix, un placement libre du texte n’importe où sur la toile, et une couleur de texte que vous choisissez. Sa visibilité est publique ou amis — les deux mêmes options qu’une publication — et elle expire d’elle-même. Vous pouvez supprimer la vôtre avant.
Son propriétaire obtient une liste de spectateurs : les personnes qui l’ont réellement ouverte, pas un nombre. Un compteur vous dit qu’une story a été regardée ; une liste vous dit par qui, ce qui est la chose que vous vouliez savoir et qui rend évident pour tout le monde que regarder n’est pas anonyme. Une activité du module santé se partage aussi en story, avec une légende sur un fond choisi — c’est le même objet story, rempli d’un autre contenu.