Yahoo! UI Library: YUI Test

YUI Test is a testing framework for browser-based JavaScript solutions. Using YUI Test, you can easily add unit testing to your JavaScript solutions. While not a direct port from any specific xUnit framework, YUI Test does derive some characteristics from nUnit and JUnit.

YSlow revisited

Auf YSlow hatte ich schon hingewiesen, einigermassen enthuasiatisch, wie immer, wenn es irgendwie um Firebug geht. Trotzdem, man kann die Dinge eben so oder auch so sehen. Jeff Atwood hat sich YSlow nun einmal genauer angesehen: YSlow: Yahoo’s Problems Are Not Your Problems und man muss schnell zugeben, dass er mit seinen Feststellungen zumeist Recht hat. Nun, über Optimierungsmaßnahmen kann man sich trefflich streiten, manches ist halt derart in den Tiefen der Protokolle und Browserimplementierungen vergraben, da kann man schon mal unterschiedlicher Meinung sein. Aber trotzdem: viele Dinge, die Yahoo in YSlow vorschlägt sind doch sehr auf wirklich großen, also sehr großen Websites sinnvoll – teilweise nur dort. Da sollte man schon abwägen und nicht blind alle Punkte auf der Liste zu erfüllen suchen…

Neues vom YUI Rich Text Editor

Obwohl sich das jetzt gerade wie ein Edgar-Wallace-Titel liest, ist es doch nur ein Link auf einen – zugegebenermaßen – sehr interessanten Artikel im YUI-Blog: Some Notes on the YUI Rich Text Editor. Zusammengefasst: ich hätte keinen Bock, so ein Ding zu bauen, aber das machen ja zum Glück andere für uns.

[tags]rich text editor[/tags]

Wieder neue YUI-Version

Soeben ist YUI 2.3.0 erschienen, natürlich wieder mit einer Menge an Erweiterungen und Neuerungen. Yahoo geht ganz deutlich den Weg zu einem schwergewichtigen Javascript-Framework weiter, weg von der Utility-Sammlung hin zum »Alles-aus-einer-Hand-Tool« für die Websiteentwicklung. Das machen die neuen Komponenten deutlich:

  • YUI 2.3.0 kommt mit einem Rich-Text-Editor, der selbst zwar noch beta ist, sich aber bereits rühmt die Hürde für RTEs genommen zu haben: Cross-Browser-Support (zumindest für sog. A-Grade-Browser).
  • Das CSS System wurde nocheinmal aufpoliert und aufgestockt, in vier ineinandergreifenden Komponenten gibt es jetzt CSS zum Rücksetzen der unterschiedlichen Browserstandards, ein Basis-CSS – das oft gebräuchliche Designstandards implementiert, ein CSS ür die Typographie und eines für die (inzwischen schon berühmten) Grids.
  • Mit dem neuen (beta) YUILoaderUtility bewegt man sich fast schon in Richtung Dojo, denn es sorgt dafür, dass nur die benötigten YUI-Komponenten geladen werden (so eine Art Bootstrapping). Der Ansatz hat mir schon bei Dojo gut gefallen und kann bei großen Projekt extrem wichtig sein um die Menge des übertragenden Codes schmal zu halten oder zumindest weg vom Seitenladevorgang zu verlagern. Eine Besonderheit ist dabei, dass man Komponenten vom eingenen Server oder aus dem Yahoo-Netzwerk (nach)laden kann, dass als weltweit verteiltes Netzwerk User in allen Teilen der Erde schnell mit Code bedient.
  • Ähnliches gilt für das neue ImageLoader Utility. Ebenfalls eine gute Idee: Bilder die der Benutzer zunächst gar nicht sieht kann man auch ruhig später nachladen…
  • Eine kleinere Neuerung ist das Color Picker Control.
  • Und noch ein neues Feature zum Schluss: das YUI Test Utility. Damit wird ein Unit-Testing-Framework in YUI integriert.

Die LoadingUtilities erinnern doch sehr an Dojo. Ich traue dem YUI-Team ohne weiteres zu, das vernünftig umzusetzen, denn trotz der guten Idee, funktionierten gerade diese Funktionen bei unseren Dojo-Experimenten nur sehr unbefriedigend und noch dazu nahezu ohne Debuggingmöglichkeit. Wir haben genau wegen dieser Komponenten den Einsatz von Dojo im produktiven Umfeld gekippt, ich hoffe bei YUI funktioniert das besser.

Switch nicht durchfallen lassen

Douglas Crockford gibt im Yahoo! Interace Blog eine kleine Lehrstunde in Sachen switch-Statement. switch, geerbt aus einer langen Ahnenreihe von Programmiersprachen (Java, C++, C), kann ein mächtiges Instrument sein. Aber – mächtige Instrumente habe das oft an sich – es ist auch gefährlich: man kann es viel zu sehr zu einem goto umwandeln, was man nicht will. Auch wenn die Erinnerung an alte Brotkastentage lebt:

10	print "Dummes Zeug"
20	goto 10

LOL. Nein, nein, das wollen wir nicht.

Und switch hat noch ein anderes Problem: die sogenannten Fallthroughs. Allzuoft (das sieht man auch gerne mal in PHP-Programmen) wird es benutzt, um für eine Bedingung mehrere Tasks auszuführen, ganz einfach indem man das break am Ende eines case-Blocks weglässt. Denn dann wir bekanntermaßen fröhlich weitergeswitched. Was als prima Trick daherkommt, ist gar nicht so schlau, weil das Vergessen eines breaks eben auch ein unfreiwilliger Bug sein kann. Und wer geht nun hin und findet in ein paar tausend Zeilen Code die Blöcke, die absichtlich kein break haben und welche nicht? Eben.

Und jetzt Hosting

Ebenso macht schon wieder Yahoo! mit seinem YUI von sich reden, diesmal mit einem neuen Service: YUI Hosting (YUI Blog | YUI Hosting Seite), natürlich frei, wie in Freibier. Das kann insofern sinnvoll sein, dass man immer Zugriff auf die aktuellsten Versionen von YUI bekommt, ausgeliefert von einem Yahoo!-Server in Deiner Nähe, noch dazu auf äusserste gzipped. Yahoo! verspricht das dadurch die YUI-Files (JS, CSS und Bilder) schneller geladen werden können, als täte man sie vom eigenen Server liefern. An der Stelle bin ich mir nicht ganz sicher, ob ein gut konfigurierter eigener Server nicht doch im Vorteil ist… das müsste man mal testen, wie das YUI-Blog auch empfiehlt.

Nichtsdestotrotz, mir gefällt die Art, wie Yahoo! mit der YUI-Bibliothek umgeht: neben dem Schritt in den Open Source (vor etwa einem Jahr), der guten Dokumentation und den hervorragenden Tutorials (inklusive Videos), versteht sich Yahoo! immer mehr darauf, den pragmatischen Entwickler anzusprechen, ohne dabei zu nerven. Da liegt man IMHO deutlich vor Google. Schlussendlich lese ich solche Aussagen wirklich gerne, weil sie den Kern dessen beinhalten, was kapitalistische Unternehmen bei ein wenig gutem Willen zur Open-Source-Gemeinschaft beitragen können, anstatt immer nur zu nehmen.

We’re opening up the service of YUI from Yahoo! servers for the same reasons we open-sourced YUI in February: Yahoo! is quintessentially a web company. The progress being made by developers in richness and usability today is healthy for the web and, by extension, good for Yahoo! We want to do everything we can do to enhance that evolution — whether it’s opening up YUI, hosting YUI files, or creating best-of-breed APIs like the recently-announced Browser-Based Authentication system.

At the end of the day, this step has a small incremental cost to Yahoo! while providing a valuable ease-of-implementation advantage to many developers. Serving YUI from Yahoo! servers won’t be the right decision for all implementers; if you’re aggregating or customizing YUI source code and serving it from a highly performant host, there will be little reason to switch. However, for some implementers the provision of free, robust, edge-network hosting will have significant upside.

Ziehen wir von diesen Aussagen 50% Marketing-Sprech ab, ist das immer noch ungefähr das, was ich im Sinne habe, wenn ich mich auf der Arbeit für den Einsatz von und für Open Source Produkte entscheide.

YUI-Versionssprung

Gleich ein Riesenhüpfer in der Versionierung macht Yahoo! mit der neuen YUI-Version: von 0.12.2 geht’s zweks Verschmelzung mit der Yahoo!-internen YUI-Version direkt auf 2.2.0, was auch mehr den wirklichen Release- und Entwicklungsstand widerspiegelt (und sich vom Web2.0 Beta-Image verabschiedet).

Die Features sind dabei sicherlich spannender als die Hausnummer: als experimentelle Erweiterung ist der History-Manager hinzugekommen, ein weiterer Versuch, die Vor- und Zurückknöpfe des Webbrowsers in JS-Applikationen zu nutzen und vor allem funktionieren zu lassen. Ausserdem gibt es zwei neue Controls, nämlich ein für Datentabellen und ein für Buttons. Beide Controls sind aber noch als Beta ausgezeichnet (hmmm, doch wieder Web2.0-style 😉 ).

Via: Ajaxian.

Firebug im YUI-Theater

Yahoo macht ja nicht zu knapp Werbung für sein Javascript-Framework »Yahoo! User Interface Library« (kurz YUI), und das mit Fug und Recht sozusagen, denn YUI kann nicht nur einiges, das was es kann ist einfach hervorragend dokumentiert, es wird dazu ausgiebig gebloggt und mit dem YUI Theater wird eine Vielzahl von Lern-Videos angeboten,… also der gemeine DojoUserEntwickler kriegt da schon feuchte Augen…

Aktuell tritt im Theater gerade John Hewitt – bekannt als der Entwickler von Firebug – auf, mit Welcome to Firebug 1.0 (MP4-Download-Link). John stellt sein Wundertool vor, und gibt einige Tricks zum Besten. Vor allem die Profiler-Funktionen werden eindrucksvoll erklärt.