Nous devons créer un site Web à partir de zéro

image




L'évolution du Web au cours de la dernière décennie reflète le développement de l'économie américaine. Tous les indicateurs clés se déplacent vers le haut et vers la droite sur les graphiques, un flux constant de percées fondamentales donne un sentiment de «progrès», mais en réalité, la convivialité et l'impact de la technologie sur les gens stagne ou même régresse.



Cette crise affecte les plateformes, les créateurs et les consommateurs.



J'essaierai d'analyser et diagnostiquer un peu cette situation. Si vous voulez simplement lire mon discours banal et non professionnel sur la nécessité de redémarrer le Web, vous pouvez ignorer cette partie. L'idée est que nous pouvons choisir un nouveau format de balisage léger (markdown) pour remplacer HTML et CSS, diviser le Web en documents et applications Web, retrouver la vitesse, l'accessibilité et l'intérêt du Web.



Cet article utilise une définition pédante du «web». J'ai déjà évoqué à plusieurs reprises les tentatives de réinventer «Internet». Des projets tels que dat, IPFS et arweave ont été conçus pour réinventer Internet ou ses couches de transport et de transport de données. Le Web est ce qui se trouve au-dessus de ces couches: HTML, CSS, URL, JavaScript, navigateurs.



Crash de plateformes



La semaine dernière, il y a eu un changement important de plate-forme: Mozilla a licencié 250 employés et a déclaré que cela affecterait le développement de Firefox. Firefox n'était pas le deuxième navigateur le plus populaire - c'est Safari, principalement en raison du public «bondage» des propriétaires d'iPhone et d'iPad. Cependant, c'était le navigateur le plus populaire choisi par les gens .





Graphique de statcounter



Le vrai gagnant n'était pas Chrome lui-même, mais le moteur Chrome. Une base de code KHTML divisée en WebKit (Safari) et Blink (Chrome, Microsoft Edge, Opera, etc.)



En pratique, voici à quoi ressemble la définition classique de la «monoculture». D'une part, c'est une victoire en termes de collaboration, car personne n'a besoin de «perdre du temps» sur des implémentations concurrentes, et les développeurs web font face aux mêmes fonctionnalités et bogues dans tous les navigateurs. Mais dans un sens plus profond, cela menace les principes de base de l'évolution du Web.



Spécialisations et implémentations





Le web a évolué en combinant spécifications et implémentations . Des organisations telles que le WHATWG , le W3C et l' IETF ont permis aux développeurs indépendants, aux entreprises et aux universitaires de collaborer pour discuter du potentiel des nouvelles capacités Web. Les navigateurs ont testé leurs idées sur de nombreuses implémentations différentes.



C'était une partie intéressante de la structure: un tel système garantissait que nous puissions tous nous développer ensemble, et qu'un de nos objectifs était de pouvoir contribuer au web pour de nombreux contributeurs. Ça nous a bouleversé quand on caniusedes cellules vides sont apparues, mais l'idée générale était que même si différents navigateurs peuvent être meilleurs sous différents aspects, tôt ou tard, ils se rattrapent. Chrome n'a pas été le premier navigateur à introduire de nouvelles fonctionnalités et optimisations.



Travailler en collaboration est plus lent que travailler seul, mais cela apporte des avantages que nous avons perdus aujourd'hui. Chrome a évolué extrêmement rapidement, ajoutant de nouvelles spécifications et idées à un rythme étonnant, devenant l'un des produits logiciels les plus difficiles à recréer.



Il me semble que Mike Healy a le mieux dit :



Ne pensez-vous pas que le web est pratiquement «monopolisé» en termes de complexité si les moteurs de rendu sont capables de créer seulement une ou deux organisations pour cela?


Aujourd'hui, non seulement il est presque impossible de créer un nouveau navigateur à partir de zéro - si vous le faites, la course constante à la mise en œuvre de nouvelles normes nécessitera toute une équipe de spécialistes. Vous pouvez lire à ce sujet dans l'article de Drew DeWalt Les navigateurs Web doivent s'arrêter ; Je recommande également de lire ses autres documents.



Et pour Flow?
, Flow, . , , - , vaporware.


Défi pour les créateurs



Il est devenu beaucoup plus difficile pour le Web de concevoir.



Le Web ne s'est développé que depuis 25 ans, a eu très peu d'occasions de se rétrécir, et il est aujourd'hui sous l'influence d'une culture extrêmement myope de croissance économique et de carrière sans plans à long terme. Il existe de nombreuses façons de mettre en œuvre quelque chose, et certaines des méthodes les plus populaires pour créer des applications sur le Web sont, à mon avis, généralement extrêmement, trop puissantes.



La meilleure façon de se lancer dans le développement Web en 2020 est de choisir un créneau comme Vue.js ou React et d'espérer avoir un expert CSS dans l'équipe.



Il existe un éventail ahurissant de technologies pour ceux qui veulent simplement créer une page Web plutôt que de s'efforcer d'entrer dans l'industrie, mais les plus simples et probablement les meilleures d'entre elles sont stigmatisées. Les gens sont plus susceptibles d'écrire des CV React avec GraphQL que de taper du HTML dans le Bloc-notes.



Un problème pour les consommateurs



Nous espérons que toute innovation est créée pour le bien de l'utilisateur , mais ce n'est souvent pas le cas. Il semble que les sites Web modernes soient les plus gros, les plus lents et les plus bogués de l'histoire du Web. Nos ordinateurs ne sont guère plus rapides et nos vitesses de connexion Internet stagnent ( n'essayez même pas de dire quoi que ce soit sur la 5G). La croissance de la taille des pages Web dépasse la croissance de tous les autres paramètres.



À cause de tout cela, je ne m'attends plus à ce que les pages soient rapides, même avec uBlock installé dans Firefox et un bon fournisseur de fibre local.



Mais je ne veux pas blâmer ces développeurs Web pour tout.... Je peux partager une histoire assez drôle de mon ancien lieu de travail. Nous avons collecté des données sur l'interaction des utilisateurs avec les sites pour répondre à des questions simples telles que "les utilisateurs cliquent-ils sur un bouton pour télécharger des fichiers sur le serveur ou utilisent-ils le glisser-déposer?" Par conséquent, nous avons utilisé Segment , un outil qui vous permet d'ajouter des pipelines de collecte de données à l'aide d'un simple script. Le problème, cependant, était que Segment avait une énorme page avec des centaines de fournisseurs de données et d'entreprises de technologie publicitaire. Et, bien sûr, les gars qui font des affaires dans l'entreprise ont commencé à cliquer sur tous ces boutons .



Vous voyez, le problème avec la publicité et le suivi des données est que tout cela peut être fait, mais qui le refusera? (Dans notre cas, j'ai désactivé et ajouté un CSP qui empêche les nouveaux annonceurs d'accéder au niveau de la page.)



Un retour à la simplicité



Il est impossible d'arriver à un système simple en ajoutant de la simplicité à un système complexe. - Richard O'Keeffe


Où allons-nous ensuite? Les personnes les plus intelligentes suggèrent que nous organisions une révision du Web.



Comment rendre le Web intéressant, collaboratif et efficace?



Tout d'abord, je pensais qu'il y avait deux sites Web:



Documents Web





Il existe des "documents web": blogs, actualités, Wikipédia, Twitter, Facebook. Autant que je sache, en fait, c'est le Web tel qu'il a été vu à l'origine (j'avais alors deux ans). CSS, que nous considérons maintenant comme un outil que les concepteurs peuvent utiliser pour créer l'unicité de la marque et ajouter des détails au pixel près, était à l'origine considéré comme un moyen de rendre les documents lisibles sans mise en forme, permettant aux lecteurs de ces documents de personnaliser leur apparence. En fait, cet attribut a été enregistré en tant que feuilles de style personnalisées dans Chrome pendant un certain temps et fonctionne toujours dans Firefox . Cependant, sur le Web aujourd'hui, ce sera une tâche ardue, car il a effectivement abandonné l'idée du HTML sémantique .



Des applications Web"





Et puis il y a les "applications web". Cela a commencé comme des applications côté serveur construites sur quelque chose comme Django et Ruby on Rails . Avant eux, de nombreuses technologies vivront désormais éternellement dans les entreprises, telles que les servlets Java .



Backbone.js a démontré que bon nombre de ces applications pouvaient être portées sur le navigateur, après quoi React et beaucoup de ses concurrents SPA ont créé un nouvel ordre mondial pour les applications clientes Web avec un degré élevé d'interactivité et de complexité.



Guerre entre parties du Web



Je soutiens que c'est cette double nature qui crée la magie du Web. Mais c'est aussi une force destructrice.



La magie est qu'un simple blog peut être un moyen créatif, un excellent moyen interactif de vous exprimer. Mon site n'est pas comme ça, mais je dis juste que c'est possible .



Le problème est que les «documents Web» souffrent souvent des caractéristiques des applications - c'est JavaScript, l'animation et leur complexité qui font du site Web d'actualités moyen un désastre. Lorsque les sites Web de documents adoptent des modèles d'application, ils sacrifient souvent accidentellement l'accessibilité, la vitesse et la lisibilité de la machine.



Et les "applications Web" souffrent des caractéristiques des documents - les applications interactives se donnent beaucoup de mal pour éviter la plupart des caractéristiques fondamentales du HTML et du CSS, et les utilisent uniquement comme matières premières - évitant complètement d'écrire du HTML directement, évitant d' écrire du CSS , évitant les fonctions d'animation standard , remplaçant paginer à quelque chose qui ressemble mais fonctionne complètement différemment . Les applications Web utilisent JSX plutôt que HTML et préfèrent le traiter dans le navigateur lui-même, ou utilisent Svelte plutôt que JavaScript et le préfèrent également.



Quand je lis les articles de blog de «développeurs Web traditionnels» qui sont énervés que HTML et CSS ne suffisent pas aujourd'hui et que les choses sont devenues si complexes, je pense que c'est principalement parce que dans de nombreux endroits, la pile de développement d'applications dans la construction du Web -sites a remplacé la pile de création de documents. Partout où nous aurions utilisé Jekyll ou le rendu côté site, React ou Vue.js est maintenant appliqué. Il y a des avantages à cette approche, mais pour de nombreux sites Web avec une interactivité minimale, cela signifie abandonner des décennies de connaissances en échange de certains avantages de vitesse qui peuvent même ne pas avoir d'importance.



L'attrait des médias sociaux



L'attrait des médias sociaux est en partie dû au fait qu'ils nous permettent de créer des documents sans penser à la technologie Web et offrent des garanties de vitesse, d'accessibilité et de perfection qui prendraient beaucoup de temps sans les médias sociaux. Nous n'avons pas à nous soucier du chargement rapide des publications Facebook sur les téléphones des amis ou de l'édition et de la publication d'une photo sur Instagram correctement - nous nous sommes occupés de tout cela.



Dans une certaine mesure, cela ne nécessite pas de capacités de médias sociaux: des normes telles que RSS et des services comme Instapaper démontrent qu'un formatage et une distribution de qualité peuvent être effectués au niveau de la plate-forme. et construisez sur les sites Web de vanille existants.



Mais il n'y a pas de division claire
, - : ! , , -, , , («» JavaScript -), , . , , . : , , , .


Documents Web 2.0



Bien sûr, ce serait formidable de mettre en œuvre une théorie unifiée du nouveau Web qui ait suffisamment de caractéristiques d'application et suffisamment de caractéristiques de document pour créer tous les documents interactifs hybrides avec lesquels nous travaillons aujourd'hui. Mais le chemin vers le split web est plus clair pour nous, et j'y ai d'abord pensé, alors parlons-en un peu.



  • Règle n ° 1 - ne créez pas de sous-ensembles . Si le remplacement du web ne concerne que les fonctionnalités qui étaient présentes dans Firefox 10 il y a dix ans, alors personne n'appréciera cette version.
  • №2 — . , , , - , .
  • №3 — . , : , , , , , , .


Alors, disons que nous créons un nouveau document Web.



Premièrement, nous avons besoin d'un langage de balisage minimal et standardisé pour communiquer les documents. Nous voudrons probablement commencer par un langage de balisage léger qui sera adapté à la génération HTML. Une saveur stricte de Markdown appelée Commonmark semble être un très bon choix . C'est la langue dans laquelle j'ai rédigé tous mes articles, la plus populaire de ma famille. Il existe de nombreux excellents analyseurs pour Markdown et un vaste écosystème d'outils.



Ensuite, nous avons besoin d'un navigateur. Depuis longtemps, Mozilla travaille sur un tout nouveau navigateur - Servo... L'équipe de développement a été licenciée la semaine dernière, ce qui est triste. Ce projet comprend des frameworks Rust indépendants pour le rendu des polices , ainsi qu'une implémentation Markdown haut de gamme dans Rust et un ensemble toujours croissant de frameworks d'application impressionnants . Est-il possible de créer un navigateur Markdown pur qui utilise directement ce pipeline? Peut être?



Je pense que cette combinaison nous permettra de récupérer dans une large mesure la vitesse perdue. Nous pourrions afficher une page en une fraction du temps par rapport au Web moderne. La consommation de mémoire peut être minime. Le système par défaut sera incroyablement accessible. Vous pouvez créer de superbes feuilles de style standard et partager des feuilles de style personnalisées alternatives. Grâce au volume considérablement réduit, nous pourrons porter le système sur toutes sortes d'appareils.



À quoi ressembleront les outils d'édition du site Web (ce qui est probablement le plus important)? Ils peuvent être beaucoup plus simples.



À quoi ressemblerait l'agrégation? Si les pages Web ressemblaient plus à des documents qu'à des applications, nous n'aurions pas besoin de RSS - les sites Web auraient un index pointant vers les documents et un «lecteur» pourrait agréger les pages Web eux-mêmes par défaut.



Nous pourrions connecter les deux sites Web en utilisant quelque chose comme un fichier de protocole dat bien connu , ou nous pourrions utiliser l'en- tête Accept pour créer un navigateur qui comprend le HTML mais préfère les pages légères.



Applications Web 2.0



J'ai le sentiment que quel que soit le problème Web que je mentionne, on me répondra automatiquement que WebAssembly peut le résoudre. Cela pourrait-il en être ainsi?



Je ne sais pas. WebAssembly est en fait une bonne chose, mais les applications Web doivent-elles simplement s'afficher sur un canevas et chaque application doit-elle dessiner sa propre boîte à outils graphique? Avons-nous vraiment besoin de différences dans la mise en œuvre de l'anti-aliasing dans les applications Web? Les applications conteneurisées existent, jetez un œil à Qubes , mais elles ne sont pas vraiment ce que les utilisateurs devraient viser. Quiconque a utilisé Blender ou Inkscape sur un Mac a une idée approximative de ce à quoi cela ressemblerait.



Ou WebAssembly pourrait-il devenir le nouveau "noyau" et restituer le HTML de l'interface utilisateur? Ou ... nous pouvons créer une bibliothèque liée partagée que les applications WebAssembly peuvent utiliser. Cela fonctionnerait un peu comme SwiftUI et fournirait des normes conviviales telles que des contraintes plutôt que des concepts tels que la hauteur de ligne et les flottants trouvés dans les documents.



Le problème avec l'élaboration du concept des applications Web est qu'il se développe beaucoup.



Plus le Mac App Store, le Windows App Store, l'App Store et le Play Store sont mauvais, plus ces monopoles demandent, plus il faut de frais pour être un développeur Mac ou Windows, plus ces applications migrent vers le Web. Certaines applications sont certainement meilleuressur le Web. Mais beaucoup y vont simplement parce que c'est le seul endroit où le produit peut être facilement, bon marché et librement distribué ou vendu.



Il était une fois, nous pourrions installer des applications, donner un consentement explicite pour qu'elles s'exécutent sur un ordinateur et utiliser notre matériel. Ce temps touche à sa fin et les pages Web disposent aujourd'hui de moyens assez sophistiqués pour obtenir des informations, des webcams, des fichiers, des contrôleurs de jeu, de la synthèse audio à la cryptographie et tout ce qui était autrefois le domaine des possibilités .exeet .app. Bien sûr, cela donne un nouveau pouvoir, mais la situation est plutôt inhabituelle.



Qui travaille là-dessus?





?



Il existe de nombreuses vues possibles sur ce problème et des moyens de le résoudre. Je pense que c'est en fait un problème (pour tout le monde sauf Google). L'idée d'un navigateur Web comme quelque chose que nous pouvons comprendre , les pages Web comme quelque chose que plus de gens peuvent créer , me semble incroyable.



L'approche de démarque semble très réaliste. Je pense que l'argument le plus fort contre cela est qu'il "aspire toutes les choses intéressantes du Web", et c'est en partie vrai. Cependant, le premier Web n'était pas intéressant dans notre sens habituel - là, nous ne pouvions pas créer d'art ni l'utiliser pour autre chose que l'échange de documents. Mais c'était incroyablement intéressant, car il est intéressant de partager des informations, et là, cela pourrait être fait de manière simple et universelle. Par conséquent, le plus important est de trouver les éléments qui libèrent les possibilités d'un tel plan, si, bien sûr, ils existent. Ou trouvez un autre plan qui «sera assez intéressant».



Les médias sociaux ont tendance à être plus restrictifs que les pages Web, mais aussi plus attrayants.pour de nombreuses raisons importantes, dont la plus importante est la possibilité de participation de beaucoup plus de personnes. Et si le reste du Web avait une telle simplicité et immédiateté sans être aussi centralisé? Et si on pouvait recommencer?






La publicité



Les serveurs Epic sont des serveurs virtuels pour l'hébergement de sites d'un petit blog WordPress à des projets sérieux et des portails avec un million d'audience. Une large gamme de plans tarifaires est disponible, la configuration maximale est de 128 cœurs de processeur, 512 Go de RAM, 4000 Go de NVMe!






All Articles