Dienstag, November 28, 2006

Ajax und Usability

AJAX (Asynchronous JavaScript + XML) ist im Grunde nichts anderes als eine Agenten-Technologie: Sie delegieren einige Aufgaben an ihn, den Agenten (ein JavaScript-Programm) -- und dabei kommen erstaunliche Dinge heraus, wie die vielen neuen Webseiten belegen, die das ausmachen, was man heute das "Web 2.0" nennt.

Früher, in der guten alten Zeit, da war das Web noch das, wofür es einmal geplant war: ein Netz von aufeinander verweisenden Textseiten, ein sogenannter Hypertext. Diese Grundidee bestimmt in Form des HyperText Transfer Protocols (HTTP) bis heute die Architektur des World Wide Webs. Auf die Auswahl eines solchen Verweises (Klick) sendet Ihr Browser eine HTTP-Anfrage (request) an einen Server, der irgendwo in den Weiten des Webs seinen Dienst tut. Der Server beantwortet die Anfrage mit einer HTTP-Antwort (reply), die den neuen "Text" enthält.

Seit einigen Jahren sind die Browser mit einer neuen Fähigkeit ausgestattet: man kann sie Programme, genauer: JavaScript-Programme, ausführen lassen. Damit kann ein Server ein Programm an einen Browser übertragen -- einen Agenten. Der Agent übernimmt jetzt Aufgaben, die er still und leise im Hintergrund ausführt. Er kann weiterhin HTTP-Anfragen hinausschicken, auch wenn Sie nichts tun. Er kann z.B. nachfragen, ob es neue Informationen beim Server gibt, die er Ihnen anzeigen soll.

Das JavaScript-Programm hat zudem Zugriff auf die gesamte an den Browser übertragene Information, und es kann diese Information aktiv verändern. Damit sind ganz neue Effekte möglich. Z.B. erscheint plötzlich eine Nachricht vom Server in Ihrem Browserfenster, obwohl Sie selber gar nichts gemacht haben. Der Agent war fleißig und hat für Sie g'schafft.

Vor zwei Wochen war ich auf dem World Usability Day (WUD) in Stuttgart. Dort war das Web 2.0 ein ganz großes Thema und fand enormen Zulauf. Es ist eine interessante Frage, wie es um die Benutzerfreundlichkeit und Barrierefreiheit von Web 2.0-Anwendungen bestellt ist. AJAX-Technologie erlaubt es, den Anwender beim Surfen so gut zu beobachten, wie nie zuvor. Jede Mausbewegung, jeder Klick, die dazwischen verbrauchte Zeit, all das ist erfassbar und kann zu Zwecken der Usability unmittelbar ausgewertet werden. Und gegebenenfalls können Änderungen sofort vorgenommen werden. Ein Vorteil, den Desktop-Anwendungen nicht haben. AJAX befreit auch von alten und lieb gewordenen Vorstellungen, wie Menüs, Bedienungsführung etc. auszusehen haben. Ein Blick auf eine beliebige Web 2.0-Anwendung zeigt, wie freudig hier experimentiert wird. Jede Seite sieht anders aus und überrascht mit neuen Ideen und Effekten. Desktop-Anwendungen haben sich in Aussehen und Art der Bedienung weitgehend aneinander angeglichen. Man geht mit festen Erwartungen z.B. an die Menüstruktur heran. Beim Web 2.0 ist alles anders.

Aus dieser Sicht habe ich ein paar Thesen zur Usability von AJAX-basierten Webanwendungen formuliert:
  • Das Web 2.0: Das größte Usability-Experiment der Welt
  • Das Web 3.0: Die Ära einer "neuen" Usability
  • Usability bestimmt wesentlich den Erfolg zukünftiger Angebote
  • Desktop-Anwendungen werden sich neu definieren müssen
  • Der Preis: Der gläserne Anwender bzw. die gläserne Anwenderin
Aber das ist nur eine Sicht auf das Thema. Einen Satz noch interessanterer Thesen finden Sie hier.

Kommentare:

Steeefan hat gesagt…

Na da hab ich ja direkt was für meine Ausarbeitung bei Prof. Dr. Marsden, die wollte ich nämlich zum Thema AJAX machen.

Andreas hat gesagt…

AJAX ist eine wirklich interessante Sache und der Einsatz bietet neue Möglichkeiten im Bereich der Web-Entwicklung. Die beiden Anwendungsseiten (Web & Desktop) wandern immer mehr zusammen! Dennoch sollte mit AJAX nicht blind drauflos entwickelt werden und nicht wirklich alles im WEB über die AJAX-Technologie realisiert werden.
Folgende Punkte sind bei AJAX u.a. zu beachten:
- Die "Lesezeichen-Funktion" ist beispielsweise nur begrenzt bis gar nicht möglich. => Lediglich die Hauptseite kann als Lesezeichen verwendet werden!
- Die Weitergabe einer URL (beispielsweise zu einem interessanten Artikel) ist nicht mehr möglich
- Ausserdem kann die [Vor] und [Zurück] Funktion des Browsers nicht mehr eingesetzt werden.

=> Wer also bei seiner Web-Anwendung ein hohes Maß an Usability haben möchte, sollte diese Punkte nicht außer Acht lassen!
MfG Andreas Maier

Clement hat gesagt…

Zuerst mal sollte man zwischen Web2.0 und AJAX unterscheiden, das eine ist ein soziologisches Phänomen(Inhalte werden von Nutzern für Nutzer erstellt, soziale Netzwerke, starke Interaktion, usw..) und das andere eine Technologie welche unter selbigem subsumiert wird. Wikis und Blogs funktionieren aber auch ohne AJAX, und Outlook Web Access anno 98 ist längst nicht Web2.0. Desweiteren ist es meiner Meinung nach höchst zweifelhaft AJAX als Agenten-Technologie zu bezeichnen, für mich ist das immer noch ein klassischer Client. Ich will hier gar keine Definition bemühen, schon der gesunde Menschenverstand wittert hier Buzzword-Hype. Und zu ihren Thesen nur so viel: Usability ist wichtig, weil sie die Barriere einen Dienst zu nutzen, senkt. Erfolgreich ist man dann aber noch lange nicht. Man muss die Nutzer so geschickt vor seinen Karren spannen, dass sie einen Mehrwert (meist für andere Nutzer) generieren, und dabei noch Spass haben. Ich empfehle Ihnen hierzu den Vortrag von Louis van Ahn über Human Computing, auf video.google.com werden sie fündig.

Ich fürchte jedenfalls ihre geistige Hygiene hat bei diesem Vortrag stark gelitten, vielleicht sollten sie nicht jeden Bullshit den sie irgendwo aufschnappen ungefiltert weiterverbreiten.

Das war auch noch anders, damals - in den guten alten Zeiten des Web1.0.

dh hat gesagt…

Mich erstaunt, mit welcher Angriffslust Sie hier kommentieren. Es wäre nett, wenn Sie etwas freundlicher wären. Ich verwechsle weder Web 2.0 mit AJAX, noch habe ich dem Client/Server-Prinzip widersprochen, noch ist mir klar, was an dem Agentenbegriff (siehe z.B. hier unter Wikipedia) so falsch sein
soll. Außerdem ist der Begriff des "Agenten" eine hilfreiche Metapher, wenn es ein heterogenes Publikum innerhalb von 5 Minuten über AJAX-Technologie ins Bild zu setzen gilt.

Clement hat gesagt…

Erstmal Respekt für die Veröffentlichung dieser Kritik. Agenten sind nun einmal etwas anderes, und zu welchem Verständnis trägt eine spektakuläre, aber falsche Methapher schon bei? Bei Agent denkt ihr heterogenes Publikum(Studenten aus unterschiedlichen Semestern?) wohlweislich an James Bond, und vielleicht wollten sie ja einen Hauch von Abenteuer auf ihrem Blog versprühen, das passt ja zur neuen Web2.0-Welt, wo alles so aufregend ist. Aber wer als Professor elitär sein will und einen Blog führt (was ich im übrigen sehr begrüße) sollte sich schon differenziert ausdrücken, Klowände gibt es bei weitem genug im Internet.
Doch zurück zur Sache: Was ist ein Agent? Sie führen hier mutigerweise die Wikipedia-Definition an, welche nicht sehr scharf geraten ist, doch gehen wir sie mal durch. Autonom, reaktiv, proaktiv, lernfähig und sozial- nicht notwendigerweise alle, aber einige dieser Eigenschaften sollte ein Agent besitzen. Meines Erachtens trifft keine dieser Eigenschaften so richtig auf eine mit AJAX realisierte Web2.0 Anwendung zu. Desweiteren sollte man den Kontext des Artikels betrachten: Wir bewegen uns in der Domäne der Künstlichen Intelligenz. Und hier greift wieder der gesunde Menschenverstand, der mir sagt, dass Web2.0 zwar auf kollektive, keineswegs aber auf künstliche Intelligenz baut.
Sie sprechen davon dass der Agent für sie "g'schafft" hat - nun das tut mein E-Mail Programm auch, wenn es automatisiert alle 5 Minuten neue E-Mails vom Server holt.
Autonomie jedenfalls ist für mich essentiell, denn Agenten wurden konzipiert um eine Dienstleistung zu erbringen ohne eine ständige Verbindung zum Server aufrechterhalten zu müssen (in Peer-2-Peer Systemen beispielsweise), was auch dem historischen Agenten à la James Bond wieder näher kommt. Vielleicht hilft (neben dieser Sammlung an Definitionen ) diese Abgrenzung weiter. Dort heisst es im letzten Halbsatz: [...], denn Agenten sind nicht nur in der Lage selbständige, sondern auch langfristig-sinnvolle Entscheidungen zu treffen.

Katharsis? Gut. Web2.0 lässt eben auch Statusunterschiede auf Augenhöhe zusammenschmelzen, und das ist, wie man in diesem Fall sehen kann, sicher nicht das Schlechteste.

dh hat gesagt…

Achje, ich glaube wir kommen mit unseren Ansichten nicht zusammen. Ich sehe weniger Probleme mit dem Agentenbegriff als Sie und sehe viele der Punkte als erfüllt an, die einen Agenten charakterisieren. Nun denn, mögen sich andere Leser nun eine eigene Meinung bilden. Futter haben Sie ja nun reichlich gegeben ;-)

doomhammer hat gesagt…

Immerhin verwendet uA auch Michael Crichton in seinem Buch "Beute" den anstößigen Terminus "Agent" als Begriff für einen Akteur in einem Jäger-Beute System.

Mir persönlich ist der Begriff Agent in dem Kontext, in dem ihn dh verwendet hat durchaus geläufig.

http://de.wikipedia.org/wiki/Agent
verrät unter dem Subtopic "Software-Agent", dass der Begriff - zumindest nach Wissensstand der Wikipediacommunity - richtig gebraucht wurde.

Der Satz "Bei Agent denkt ihr heterogenes Publikum(Studenten aus unterschiedlichen Semestern?) wohlweislich an James Bond[..]" mag vielleicht für BWL-Studenten, die sich um Rechnungswesen mehr Gedanken machen als über die Architektur der Software, die sie benutzen eine gewissen Gültigkeit haben aber nicht für jemand, der seinen halben Tag mit Software(technologien) verbringt.

Andreas hat gesagt…

Kann mich doomhammer nur anschließen!!!!

nougad hat gesagt…

Um einmal die Diskussion um Begriffliche Kleinigkeiten zu unterbrechen will ich noch mal auf den Punkt von Andreas zurückkommen. Ich finde das Entscheidende Problem an AJAX ist nicht die usability sondern die accessibility (um auf den "Buzzword-Hype" aufzuspringen...) Ich persönlich finde AJAX super, habe mich allerdings für mein Projekt entschieden es nur als eine optionale Komponente einfließen zu lassen.

Einige bezeichnen AJAX sehr ironisch als ein remake der verbannten < blink > Eigenschaft. Auch wenn ich dies etwas übertrieben finde, so kann ich die Kritiker schon verstehen. AJAX, bzw. nicht AJAX an sich, sondern ehr das was zurzeit draus gemacht wird, ist zumindest vom Semantischen Aufbau der Seite finde ich ein Schritt zurück in die Urzeit… Wie war das noch damals als noch auf jeder Seite zu lesen war „Optimiert für Internet Explorer in der Auflösung 800x600“? Ich dachte seit dem hat sich einiges getan. Was ist aus Barrierefreiheit geworden? Wurde nicht zwischenzeitlich so viel Wert auf semantisches markup und Design ausschließlich mit CSS gelegt? Ich will nicht sagen das AJAX diese (wie ich finde) sehr wichtige Trennung gefährdet, aber der ganze Hype um AJAX zerstört dieses kurzzeitige Aufflackern von Barrierefreiheit in meinen Augen wieder. Sicher wir sind von dem Browserkampf zwischen Netscape und Internet Explorer weg, da selbst der IE7 es mittlerweile einiger maßen schafft ein CSS-Design ordentlich darzustellen. Aber was ist mit dem Rest? Handys? PDA’s? Screenreader? Suchmaschinen-Bots? Jetzt werden halt diese ausgesperrt. Auch wenn viele Leute damit argumentieren werden „Jeder anständige Browser unterstützt doch JS“ finde ich gerade diese Einstellung schlichtweg Falsch! Barrierefreies Webdesign, dass denke ich das Ziel des ganzen sein sollte, ist schließlich Webdesign für ALLE. Und ich kann nicht einfach alle Leute aussperren die kein JS aktiviert haben (oder im Fall von Bots nicht aktiveren können). Wie schon in einem der vorherigen Posts auf diesem Blog (http://denkspuren.blogspot.com/2006/08/javascript-port-scanning.html) kann ich Leute durchaus verstehen die JS Standard mäßig deaktiviert haben. Auch ich bin Manchmal Seiten Leid die damit ständig Popups o.Ä. erzeugen. Außerdem kann ich als Entwickler einem User nicht vorschreiben was er zu machen hat. Der Entwickler muss sich nach den Kundenwünschen richten und nicht umgedreht.

Wie oben schon erwähnt finde ich AJAX eine feine Sache, denke aber es muss eine optionale Komponente bleiben. Ganze Seiten mit AJAX zu gestalten nur weil es schick Aussieht halte ich für extrem bedenklich bzw. es sollte zumindest noch eine Möglichkeit geben sie auch ohne JS bedienen zu können. Aber auch ich muss hier einige Einschränkungen setzen. Für so genannte Webapplikationen wie z.B. einen Chat ist es einfach nicht möglich dies auf sinnvolle Weiße ohne AJAX zu realisieren. Für diese Dinge lasse ich auch durchaus eine Notwendigkeit von JS durchgehen. Ich habe in diesem Zusammenhang schon von den Worten „webby“ und „appy“ (ich weiß leider nicht mehr genau ob die Begriffe so geschrieben wurden) gehört. Dies ist einfach eine Unterscheidung zwischen einer Webseite, die ehr zu einer Applikation bzw. ehr zu einer „alt hergebrachten“ Webseite tendiert. Man muss einfach auf Probleme wie den zurück Button, die Druckausgabe, Lesezeichen, etc. eingehen anstatt dem User vorzuschreiben welche Funktionen seines Browsers er benutzen darf bzw. noch extremer welchen Browser überhaupt Zugriff haben.

PS: Sorry wenn ich ein paar Fehler im Text habe, ich hab zwar noch alles mal durchgelesen, aber ist schon spät. Ich wollte das nur heute noch loswerden, weil ich drüber in letzter Zeit schon einige Diskussionen hatte.