Pourquoi le web a-t-il gagné l'espace des applications distantes et X pas?

19

Le système X Window a 25 ans, il a fêté son anniversaire hier (le 15).

Comme vous le savez probablement, l'une de ses caractéristiques les plus importantes est la séparation du côté serveur et du côté client d'une manière que ni les systèmes de fenêtrage de Microsoft, Apples ou Wayland n'ont.

À l'époque (désolé pour le libellé ambigu), beaucoup pensaient que X dominerait les autres façons de créer des fenêtres en raison de cette séparation du serveur et du client, permettant à l'application d'être exécutée sur un serveur ailleurs pendant que l'utilisateur clique et tape sur elle propre ordinateur à la maison.

Cette utilisation existe évidemment toujours, mais est au mieux marginalisée. Lorsque nous écrivons et utilisons des programmes qui s'exécutent sur un serveur, nous utilisons presque toujours le Web avec son html / css / js.

Pourquoi le Web a-t-il gagné et X non? Les technologies utilisées pour le web (dites html / css / js) sont un gâchis. Combiné avec tous les frameworks back-end (Rails, Django et tout), c'est vraiment une jungle pour naviguer à travers. Pourtant, le Web prospère avec créativité et progrès, contrairement aux applications X distantes.

Martin Josefsson
la source
6
Les deux ne sont même pas comparables à distance. Les connexions au serveur X me permettent d'exécuter une application distante et d'afficher son interface graphique localement, ce qui est un cas d'utilisation complètement différent de celui qui me permet de charger des ressources distantes dans un client local.
Martijn Pieters
3
Je ne suis pas d'accord pour dire qu'il y a une différence. Lorsque je connecte mon client Web (navigateur) à un serveur (local ou distant), je peux afficher l'interface graphique de mon application (Web). Tout comme je peux afficher l'interface graphique de mon application avec une session X.
Martin Josefsson
4
Essayez d'écrire un programme X11 et de le comparer avec une page HTML - comparez également la bande passante nécessaire. De plus, WWW n'a pas remplacé X11, il a remplacé Gopher.
2
Pieters: Bien sûr, la page est rendue sur le client et JS s'exécute sur le client, mais ce ne sont que des détails techniques. Le plus souvent, le code s'exécute côté serveur (php, java, .net, python, ruby, peu importe). En pratique, ce sont à la fois des interfaces permettant aux applications de s'exécuter sur un serveur et d'être affichées sur un client. X et le Web le font de différentes manières, mais c'est l'essentiel.
Martin Josefsson
14
Parce que la technologie n'a pas été validée par l'industrie du divertissement pour adultes, une étape nécessaire dans l'adoption générale d'une technologie (c'est une façon élégante de dire que les photos de femmes nues ne sont pas devenues disponibles sur les systèmes X assez rapidement).
dasblinkenlight

Réponses:

22

Cela semble tout à fait évident et fondamental maintenant, mais l'innovation la plus meurtrière du World Wide Web était l'hyperlien. Même si X n'était pas complètement inutilisable sur une liaison modem, son incapacité à lancer un processus complètement nouveau sur un serveur complètement nouveau via un seul clic entraverait son adoption pour ce type de cas d'utilisation.

Karl Bielefeldt
la source
1
Cela peut très bien être la bonne réponse. De plus, les clients Web fonctionnaient également sur Apple et Microsoft OS.
Martin Josefsson
L'hyperlien n'était pas une innovation du World Wide Web. Il a été implémenté plusieurs fois auparavant, comme dans Hypercard d'Apple, un programme populaire dans les années 80 et 90 avec de nombreuses similitudes étranges avec un navigateur Web. Le concept d'hypertexte et d'hyperliens remonte aux années 60, avec le projet Xanadu, et il a été mis en œuvre plusieurs fois dans de nombreux formats avant que Tim Berners-Lee ne crée enfin sa propre implémentation d'hypertexte en réseau au CERN au début des années 90.
Charles Salvia
3
@CharlesSalvia: La percée des hyperliens HTML était due à l'URL. En particulier son aspect universel: mondial, avec juste assez d'autorité centrale pour fonctionner, et non lié à un type ou une technologie de média spécifique. Vos technologies précédentes étaient de loin, beaucoup moins universelles.
MSalters
17

Parce que X vous oblige à avoir un diplôme CS pour écrire une application. Alors que le Web exige que vous ayez la possibilité de taper (pas même cela).

Surtout au début, lorsque le Web n'était que du HTML. Vous pouvez ouvrir un terminal et créer un affichage fonctionnel en 10 minutes, puis l'améliorer de manière interactive avec un retour instantané. Cette barre d'entrée basse a stimulé l'adoption massive des utilisateurs. La construction d'une application X-Server, d'autre part, n'est pas une tâche triviale, même pour les programmeurs expérimentés.

Il a fallu 10 ans pour que le Web soit un concurrent direct de l'applicatif X en termes de fonctionnalités et fournisse les mêmes capacités de type GUI. Cette fonctionnalité a été ajoutée à la pile des langues au fil du temps, permettant aux développeurs de maîtriser un ensemble de fonctionnalités avant l'ajout du suivant; cette expansion progressive de la complexité technologique a donc maintenu la barre basse (pour les personnes qui sont déjà sur le terrain et il y en a beaucoup). Sauter sur le terrain est maintenant beaucoup plus difficile qu'il y a 10 ans, mais c'est toujours possible et le retour instantané du Web rend l'apprentissage plus gratifiant (les humains ont besoin d'une gratification rapide pour renforcer leurs lecteurs).

Le coût est un autre facteur. Le coût réel de l'apprentissage de suffisamment de compétences en programmation pour développer un X-Server est important. De plus, la disponibilité des serveurs sur lesquels exécuter votre application a fait grimper les coûts. Apprendre à écrire du HTML n'était pratiquement rien pour faire fonctionner la page "Hello World" et les fournisseurs de services Internet ont fourni un hébergement gratuit pour vous inciter à obtenir une connexion Web. Vous pouvez donc vous entraîner gratuitement. Lorsque vous avez finalement eu besoin d'une entreprise d'hébergement, la disponibilité des sociétés d'hébergement a augmenté et le coût a toujours été relativement bon marché.

Martin York
la source
1
Vous supposez que pour écrire une application utilisée sur X, vous devez comprendre l'API X. Mais tout comme vous n'avez pas besoin de comprendre HTTP pour écrire une application Web, vous n'avez pas besoin de comprendre X pour écrire une application qui s'exécute sous X. Vous pouvez l'écrire dans une langue, celle que vous préférez, et juste avoir une bibliothèque GTK sur le dessus. Bien plus facile que d'apprendre le html et le css et le js et un langage côté serveur. L'essentiel: tout comme vous n'avez pas besoin d'écrire un serveur http pour publier un site Web, vous n'avez pas besoin d'écrire un serveur X pour servir une application X.
Martin Josefsson
Je ne suis pas d'accord avec votre analyse. Bien que vous ayez raison de dire que l'écriture d'une application Web moderne est maintenant presque aussi complexe que l'écriture d'une application X il y a 10 ans. Écrire une X-Application n'est toujours pas un processus trivial. C'est comme écrire une application Windows. Bien au-delà de la capacité de quiconque n'a pas fait une expérience de programmation significative. En revanche, la mise en place d'une page HTML est triviale et peut se faire en 10 minutes (même par un débutant). Cela conduit donc à une ré-application rapide et à la possibilité d'expérimenter rapidement. Cela rend la barre d'entrée beaucoup plus basse.
Martin York
GTK n'était disponible que bien après la création du Web.
user16764
@ user16764: Ce n'est pas vrai. J'utilisais GTK en 1997 (je ne sais pas quand ils ont commencé mais avant cela). Le web (comme en HTML / HTTP) était peut-être en place à l'époque, mais pas tellement bien établi. Je veux dire que le navigateur Web venait tout juste d'être introduit dans le flux principal en 92 (la première fois que j'en ai vu un). X a cependant plusieurs autres gestionnaires de fenêtres qui étaient utilisables auparavant. Je me souviens avoir utilisé twm (le gestionnaire de fenêtres de Tom je crois) et un autre niveau légèrement supérieur (que j'oublie) mais il y avait beaucoup de choix (trop) en 90 (et ils étaient disponibles avant cela (je pense)).
Martin York
@LokiAstari: Vous confondez les gestionnaires de fenêtres et les bibliothèques GUI. Bien qu'il y ait un chevauchement certain (GNOME / Gtk, KDE / Qt), ils ne sont certainement pas identiques. Même avec les gestionnaires de fenêtres, vous aviez toujours un monde de douleur.
MSalters
11

La réponse est que «de nombreuses technologies sont adoptées pour des raisons historiques ou sociopolitiques arbitraires plutôt que pour des raisons techniques». La meilleure solution pour un problème donné ne devient pas toujours la technologie dominante. (En fait, c'est rarement le cas.)

En 2012, où les serveurs HTTP sont utilisés pour créer des applications interactives au même niveau que les applications de bureau, la comparaison entre HTTP et X est intéressante. Avec le recul, X est probablement une meilleure technologie pour développer des applications riches et interactives déployées en réseau. Les applications de type bureau interactif ne correspondent pas bien à une technologie sans état et orientée vers les documents comme HTTP, et cette incompatibilité a historiquement entraîné toutes sortes de solutions (hacks) pour créer un état, comme les cookies, les sessions, etc.

Mais l'objectif initial de HTTP n'était pas de développer des applications de type bureau avec état. Il s'agissait de récupérer des documents et d' afficher des informations - des informations pouvant être liées à d'autres documents pouvant également être affichées instantanément. L'idée d'une collection de documents liés remonte aux années 1960 avec le " Projet Xanadu " de Theodore Nelson . Le Web était censé être une implémentation du concept d' hypertexte de Nelson , qui était une tentative d'informatiser la page imprimée - comme l'encyclopédie ou le journal - permettant à l'utilisateur de "sauter" instantanément d'un article à un autre en un seul clic.

De nombreuses itérations de cette idée sont venues et ont disparu, comme Hypercard d'Apple , qui a mis en œuvre le concept d'hypertexte / hyperliens, mais n'a jamais été déployé sur les réseaux. Le World Wide Web était la mise en œuvre en réseau du CERN du concept d'hypertexte, et il a probablement décollé parce que Tim Berners-Lee a publié sa bibliothèque de codes de navigateur gratuitement, permettant à d'autres de l'expérimenter. Cela a finalement conduit au navigateur Mosaic de Marc Andreesen, le prédécesseur de Netscape. Et le reste est de l'histoire.


Mais ... comme avec tant de technologies, de nouvelles possibilités ont commencé à émerger auxquelles les concepteurs originaux de HTTP ou d'hypertexte n'ont pas vraiment pensé trop. Le Web a été commercialisé et les gens ont commencé à développer des sites Web qui présentaient une interactivité dynamique, comme des paniers d'achat et des connexions. Il est devenu de plus en plus évident que la nature sans état et orientée document de HTTP n'était pas très bien adaptée aux applications de type bureau. Mais à ce moment-là, c'était trop tard. Tout le monde utilisait déjà HTTP. Donc, nous sommes ici aujourd'hui, avec diverses applications piratées AJAX faisant de leur mieux pour prétendre qu'elles sont des applications de bureau.

Charles Salvia
la source
3

Les technologies pourraient essayer de résoudre des problèmes similaires maintenant, mais elles ne l'ont certainement pas fait dans le passé.

La pile HTML actuelle a évolué au fil du temps, passant d'un transfert de documents texte très simple, à des documents "visuels" avec peu de scripts, en une plate-forme d'application complète.

Au moment où HTML a commencé, personne ne pouvait rêver de se connecter à un ordinateur distant et d'y exécuter des applications graphiques. Ce n'est qu'après qu'Internet a obtenu une meilleure latence et un meilleur débit, cela est devenu possible. Pourtant, à cette époque, le HTML était déjà omniprésent. Tout le monde savait que c'était un moyen de donner aux clients et aux utilisateurs l'accès à une application graphique, qui s'exécutait sur la machine distante.

Et comme avec tout système "gratuit", il est devenu impossible de "réinitialiser" le tout et de recommencer pour le faire mieux cette fois. C'est pourquoi nous devons fermer et utiliser HTML / CSS / JS et souhaiter seulement que les personnes qui le soutiennent se réveillent enfin et l'enterrent avec son héritage de plusieurs années.

Cela répond à la question "Pourquoi le Web a-t-il gagné?". Il n'y avait pas de compétition, le web a gagné avant même que tout ne commence.

Euphorique
la source
1
Au moment où HTML commençait, il y avait déjà de l'informatique côté serveur, avec le serveur HTTP NSCA et son SGI. La plupart des applications ont fourni du texte, mais je me souviens d'une qui était capable de rendre des cartes personnalisées en noir et blanc, un ancêtre des cartes Google.
mouviciel
Les cartes d'images remontent en effet aux premières années de la dernière décennie du siècle précédent.
MSalters
1

Je suis d'accord que, en principe, les deux sont similaires. Si vous posez la question "comment pouvons-nous exécuter du code sur un serveur mais fournir une visualisation sur un client distant?", Il est raisonnable de penser que des équipes indépendantes pourraient proposer l'une ou l'autre solution.

Je soupçonne que la raison pour laquelle l'un est plus populaire que l'autre à certains égards est que les deux abordent le même problème sous des angles complètement différents. X est une solution technique à un problème technique, mais le Web a évolué en tant que besoin de résoudre un problème social - comment puis-je prendre des ressources d'un serveur distant et les afficher sur ma machine locale, et le faire d'une manière simple et pratique?

Le Web a "gagné" car il a résolu un problème rencontré par plus de personnes. Pensez à une analogie automobile: les berlines de luxe et les camions résolvent ostensiblement le même problème: comment transporter quelque chose d'un endroit à un autre.

Le camion a résolu le problème technique de littéralement comment transporter quelque chose d'un point A à un point B, et pour cela cela fonctionne assez bien. La voiture de tourisme a évolué comme un besoin pour que les gens soient à l'aise lors de leurs déplacements et transportent plus de personnes et moins de fumier. C'est devenu une nécessité qui nécessitait des commodités. Ainsi, au fil du temps, le nombre de voitures particulières a largement dépassé le nombre de camionnettes sur la route (je suppose, d'après l'observation du trafic de Chicago, c'est peut-être différent au Texas? :-)

Ainsi, comme l'analogie voiture / camion, le Web et le X11 résolvent tous deux le même problème technique, mais ils servent des objectifs complètement distincts.

Bryan Oakley
la source
1

Vous comparez des pommes et des poires. Les fenêtres X consistent à séparer le rendu du contenu de l'écran en un client local, qui pourrait être connecté par un mince fil à la source du contenu. C'est vraiment une extension du modèle de calcul de l'ère "glass tty" au domaine des graphismes de haute qualité. X est né à l'époque où les PC étaient encore assez faibles, et la plupart des calculs réels étaient effectués sur des boîtes Unix ou Mainframe. L'idée était d'exploiter la puissance de «terminaux X» relativement bon marché et de réseaux relativement lents pour rendre graphiquement disponibles ces sérieuses ressources de calcul.

La raison pour laquelle cela n'a pas gagné sur Mac et PC est que leur développement a toujours été motivé par le désir de prendre en charge les graphiques haut de gamme dans les applications locales , y compris les jeux, les éditeurs et les graphiques d'entreprise. La prise en charge des applications résidentes du réseau est une réflexion récente.

ddyer
la source