Почему Интернет выиграл пространство удаленных приложений, а X нет?

19

Системе X Window исполнилось 25 лет, у нее вчера был день рождения (15-го).

Как вы, наверное, знаете, одна из его наиболее важных функций - это разделение серверной и клиентской частей таким образом, которого нет ни у оконных систем Microsoft, ни у Apple, ни у Wayland.

В прежние времена (извините за неоднозначную формулировку) многие полагали, что X будет доминировать над другими способами создания окон из-за такого разделения сервера и клиента, позволяя запускать приложение на сервере где-то еще, пока пользователь нажимает и печатает на ней собственный компьютер дома.

Это использование, очевидно, все еще существует, но в лучшем случае маргинализировано. Когда мы пишем и используем программы, которые работают на сервере, мы почти всегда используем Интернет с его html / css / js.

Почему веб выиграл, а Х нет? Технологии, используемые для Интернета (например, html / css / js), являются беспорядком. В сочетании со всеми back-end-фреймворками (Rails, Django и все) это действительно джунгли для навигации. Тем не менее, Интернет процветает благодаря креативности и прогрессу, в то время как удаленные приложения X - нет.

Мартин Йозефссон
источник
6
Два даже отдаленно не сопоставимы. Подключения к X-серверу позволяют мне запускать удаленное приложение и локально просматривать его GUI, что совершенно не похоже на то, что позволяет загружать удаленные ресурсы в локальный клиент.
Мартейн Питерс
3
Я не согласен, что есть разница. Когда я подключаю свой веб-клиент (браузер) к серверу (локальному или удаленному), я могу просматривать графический интерфейс моего (веб-) приложения. Точно так же, как я могу просматривать графический интерфейс моего приложения с помощью сеанса X.
Мартин Йозефссон
4
Попробуйте написать программу для X11 и сравнить ее со страницей HTML, а также сравнить необходимую пропускную способность. Кроме того, WWW не заменил X11, он заменил Gopher.
2
Питерс: Конечно, страница отображается на клиенте, а JS работает на клиенте, но это всего лишь технические аспекты. Чаще всего код выполняется на стороне сервера (php, java, .net, python, ruby ​​и т. Д.). На практике они оба являются интерфейсами для приложений, которые запускаются на сервере и отображаются на клиенте. X и сеть делают это по-разному, но в этом суть.
Мартин Йозефссон
14
Поскольку технология не прошла валидацию в индустрии развлечений для взрослых, это необходимый шаг в массовом внедрении технологии (это причудливый способ сказать, что изображения обнаженных женщин не стали доступны в системах X достаточно быстро).
dasblinkenlight

Ответы:

22

Сейчас это кажется совершенно очевидным и фундаментальным, но убийственной инновацией всемирной паутины была гиперссылка. Даже если X не был полностью непригодным для использования через модемное соединение, его неспособность запустить совершенно новый процесс на совершенно новом сервере с помощью одного клика помешала бы его принятию для такого варианта использования.

Карл Билефельдт
источник
1
Это вполне может быть правильным ответом. Кроме того, веб-клиенты работали на Apple и Microsoft OS.
Мартин Йозефссон
Гиперссылка не была инновацией Всемирной паутины. Он был реализован много раз прежде, например, в Apple Hypercard, популярной программе в 80-х и 90-х годах, со многими странными сходствами с веб-браузером. Концепция гипертекста и гиперссылок восходит к 60-м годам, с Project Xanadu, и она была реализована много раз во многих форматах, прежде чем Тим Бернерс-Ли наконец создал свою собственную сетевую реализацию гипертекста в CERN в начале 90-х.
Чарльз Сальвия
3
@CharlesSalvia: прорыв гиперссылок HTML был связан с URL. В частности, его Универсальный аспект: глобальный, с достаточным количеством центральных полномочий для работы, и не привязанный к одному конкретному типу носителя или технологии. Ваши предыдущие технологии были гораздо менее универсальными.
MSalters
17

Потому что X требует, чтобы у вас была степень CS, чтобы написать заявление. Хотя Интернет требует, чтобы у вас была возможность печатать (даже не это).

Особенно в первые дни, когда веб был просто HTML. Вы можете открыть терминал и построить рабочий дисплей за 10 минут, а затем в интерактивном режиме улучшить его с мгновенной обратной связью. Эта низкая планка входа стимулировала массовое поглощение пользователей. С другой стороны, создание приложения X-Server является нетривиальной задачей даже для опытных программистов.

Вебу потребовалось 10 лет, чтобы стать прямым конкурентом X-приложения с точки зрения функциональности и обеспечения того же графического интерфейса, что и возможности. Эта функциональность была добавлена ​​в языковой стек с течением времени, что позволяет разработчикам освоить один набор функций до того, как был добавлен следующий; так что это постепенное расширение технологической сложности поддерживало низкую планку (для людей, которые уже находятся в поле, и их много). Вскочить в поле сейчас гораздо сложнее, чем 10 лет назад, но это все же возможно, и мгновенная обратная связь в Интернете делает обучение более приятным (людям нужно быстрое удовлетворение, чтобы укрепить свои стремления).

Стоимость другого водителя. Фактическая стоимость обучения достаточным навыкам программирования для разработки X-сервера значительна. Кроме того, доступность серверов для запуска вашего приложения привела к увеличению затрат. Научиться писать HTML было практически ничем, чтобы запустить страницу «Hello World», и интернет-провайдеры предоставили бесплатный хостинг, чтобы вдохновить вас на подключение к Интернету. Так что вы можете практиковаться бесплатно. Когда вам в конце концов понадобился бизнес-хостинг, доступность хостинговых компаний выросла, а стоимость всегда была относительно дешевой.

Мартин Йорк
источник
1
Вы предполагаете, что для написания приложения, которое используется поверх X, вам необходимо понять X api. Но так же, как вам не нужно понимать HTTP для написания веб-приложения, вам не нужно понимать X, чтобы написать приложение, которое работает под X. Вы можете написать его на одном языке, который вы предпочитаете, и просто есть библиотека GTK на вершине. Гораздо проще, чем изучать html, css, js и серверный язык. Суть этого: точно так же, как вам не нужно писать http-сервер для публикации веб-сайта, вам не нужно писать X-сервер для обслуживания X-приложения.
Мартин Йозефссон
Я не согласен с вашим анализом там. Хотя у вас есть смысл в том, что написание современного веб-приложения сейчас почти так же сложно, как написание X-приложения 10 лет назад. Написать X-приложение все еще не тривиальные процессы. Это так же, как написание приложения для Windows. Значительно выше возможностей тех, кто не имеет значительного опыта программирования. С другой стороны, создание HTML-страницы тривиально и может быть выполнено за 10 минут (даже новичком). Это приводит к быстрому повторному применению и способности быстро экспериментировать. Это делает его намного более низкой планкой для входа.
Мартин Йорк,
GTK не был доступен до того, как была создана сеть.
user16764
@ user16764: Это не правда. Я использовал GTK в 1997 году (не уверен, когда они только начали, но до этого). Интернет (как в HTML / HTTP), возможно, был тогда, но не очень хорошо развит. Я имею в виду, что веб-браузер только что попал в основной поток в 92 году (впервые я его увидел). У X есть еще несколько оконных менеджеров, которые можно было использовать до этого. Я помню, как использовал twm (оконный менеджер Тома) и еще один немного более высокий уровень (который я забыл), но в 90-х было из чего выбирать (слишком много) (и они были доступны до этого (я думаю)).
Мартин Йорк,
@LokiAstari: Вы путаете оконных менеджеров и библиотек GUI. Хотя есть определенное совпадение (GNOME / Gtk, KDE / Qt), они, конечно, не идентичны. Даже с оконными менеджерами у вас все еще были боли.
MSalters
11

Ответ заключается в том, что «многие технологии приняты по произвольным историческим или социально-политическим причинам, а не по техническим причинам». Лучшее решение для данной проблемы не всегда становится доминирующей технологией. (На самом деле, это редко бывает.)

В 2012 году, когда HTTP-серверы использовались для создания интерактивных приложений наравне с настольными приложениями, сравнение между HTTP и X интересно. Оглядываясь назад, X, вероятно, является лучшей технологией для разработки многофункциональных интерактивных сетевых приложений. Приложения, подобные интерактивным рабочим столам, плохо сопоставляются с технологией без учета состояния, ориентированной на документы, такой как HTTP, и это несоответствие исторически приводило к всевозможным обходным путям (хаки) для создания состояния, таким как файлы cookie, сессии и т. Д.

Но первоначальная цель HTTP не заключалась в разработке приложений с поддержкой состояния рабочего стола. Это было для извлечения документов и отображения информации - информации, которая может ссылаться на другие документы, которые также могут быть отображены мгновенно. Идея связанного сборника документов восходит к 1960-м годам с « Проектом Ксанаду » Теодора Нельсона . Предполагалось, что Интернет представляет собой реализацию гипертекстовой концепции Нельсона , которая была попыткой компьютеризировать печатную страницу - например, энциклопедию или газету - позволяя пользователю мгновенно «перепрыгивать» из одной статьи в другую одним щелчком мыши.

Многие итерации этой идеи приходили и уходили, такие как Apple Hypercard , которая реализовала концепцию гипертекста / гиперссылок, но никогда не использовалась в сетях. Всемирная паутина была сетевой реализацией концепции гипертекста в CERN, и она, вероятно, взорвалась, потому что Тим Бернерс-Ли бесплатно выпустил свою библиотеку кодов браузера, позволяя другим экспериментировать с ней. В конечном итоге это привело к появлению браузера Mosaic от Marc Andreesen, предшественника Netscape. И остальное уже история.


Но ... как и во многих технологиях, стали появляться новые возможности, о которых разработчики HTTP или гипертекста не особо задумывались. Сеть стала коммерциализированной, и люди начали разрабатывать веб-сайты, которые демонстрировали бы интерактивную интерактивность, такую ​​как корзины для покупок и логины. Становилось все более и более очевидным, что HTTP-структура без сохранения состояния и документа не очень хорошо подходила для настольных приложений. Но в тот момент было слишком поздно. Все уже использовали HTTP. Итак, сегодня мы с различными хакерскими AJAX-приложениями, которые стараются изо всех сил притвориться, что они являются настольными приложениями.

Чарльз Сальвиа
источник
3

Технологии могут попытаться решить подобные проблемы сейчас, но они уверены, что не в прошлом.

Текущий стек HTML со временем превратился из действительно простой передачи текстовых документов, через «визуальные» документы с небольшими сценариями, в полнофункциональную платформу приложений.

В то время, когда начинался HTML, никто не мог и мечтать о подключении к удаленному компьютеру и запуске там графических приложений. Только после того, как интернет стал лучше, задержка и пропускная способность стали возможными. Тем не менее, в то время HTML уже присутствовал всегда. Все знали, что это был способ предоставить клиентам и пользователям доступ к графическому приложению, работающему на удаленной машине.

И как и в случае с любой «свободной» системой, стало невозможно «сбросить» все это и начать заново, чтобы сделать это лучше на этот раз. Вот почему нам нужно заткнуться и использовать HTML / CSS / JS и только пожелать, чтобы люди, поддерживающие его, наконец-то узнали и похоронили его вместе с его многолетним наследием.

Это отвечает на вопрос «Почему веб выиграл?». Конкуренции не было, веб выиграл еще до того, как все началось.

Euphoric
источник
1
В то время, когда HTML начинался, уже были вычисления на стороне сервера, с сервером NSCA HTTP и его SGI. Большинство приложений доставляли текст, но я помню одно, которое смогло отображать ч / б пользовательские карты, прародителя карт Google.
Мувисиэль
Графические карты действительно относятся к ранним годам последнего десятилетия прошлого века.
MSalters
1

Я согласен, что, в принципе, оба похожи. Если вы зададите вопрос «как мы можем запустить код на сервере, но обеспечить визуализацию на удаленном клиенте?», То будет разумно подумать, что независимые группы могут предложить любое решение.

Я подозреваю, что причина того, что один из них более популярен, чем другой в определенных аспектах, заключается в том, что оба подхода к одной и той же проблеме подходят с совершенно разных точек зрения. X - это техническое решение технической проблемы, но сеть развилась как необходимость решения социальной проблемы - как я могу взять ресурсы с удаленного сервера и отобразить их на своем локальном компьютере, и сделать это легко и просто а удобно?

Сеть «победила», потому что она решила проблему, с которой сталкивается все больше людей. Подумайте об автомобильной аналогии: роскошные седаны и грузовики якобы решают одну и ту же проблему: как перевозить что-то из одного места в другое.

Грузовик решил техническую проблему буквально, как перевезти что-то из пункта А в пункт Б, и для этого он работает довольно хорошо. Легковой автомобиль стал необходимостью для того, чтобы люди чувствовали себя комфортно во время путешествий и перевозили больше людей и меньше навоза. Это стало необходимостью, которая требовала удобства. Таким образом, со временем количество легковых автомобилей намного превысило количество пикапов на дороге (полагаю, основываясь на наблюдении за движением в Чикаго, может быть, в Техасе все по-другому?) :-)

Таким образом, как и аналогия между легковыми и грузовыми автомобилями, сеть и X11, возможно, решают одну и ту же техническую проблему, но служат совершенно разным целям.

Брайан Оукли
источник
1

Вы сравниваете яблоки с грушами. X windows - это разделение визуализации содержимого экрана на локального клиента, который может быть подключен тонким проводом к источнику содержимого. Это действительно расширение вычислительной модели эпохи «стеклянных тел» в область высококачественной графики. X возник в эпоху, когда ПК все еще были довольно слабыми, и большая часть реальных вычислений производилась на Unix или мэйнфреймах. Идея состояла в том, чтобы использовать возможности относительно дешевых «X-терминалов» и относительно медленных сетей, чтобы графически сделать эти серьезные вычислительные ресурсы доступными.

Причина, по которой это не победило на Mac и ПК, заключается в том, что их разработка всегда была обусловлена ​​желанием поддерживать высококачественную графику в локальных приложениях, включая игры, редакторы и бизнес-графику. Поддержка резидентных сетевых приложений - это запоздалая мысль.

ddyer
источник