maandag 24 maart 2008

Flex: De volgende iteratie van het internet?


Hoera! Flex 3 is uit! Meteen downloaden en in een nieuw project gebruiken (youw8.com op het moment). Leuk leuk, betere debugging (vooral memory leaks heb ik ergens gelezen), nieuwe charts, werkt beter samen met Myeclipse 6, compileert naar kleinere swf files, i18n zonder verschillende swf's te hoeven compileren, etc etc. Jammer alleen dat we net voor 600 Euro Flex 2 charting hebben gekocht en nu weer 250 Euro (de upgrade) moeten betalen voor Flex 3 pro met charting. Booo!

Het begon natuurlijk allemaal met HTML en de verschrikkelijke FONT en CENTER tags "back in the day of Web 1.0". Toen Web 2.0 de kop opstak waren we nog steeds bezig met HTML (alleen stond er nu een X voor en hadden we CSS en een krachtigere versie van JavaScript erbij gekregen). De droom was om browseronafhankelijke webapplicaties te bouwen die de gebruiker in staat stelde om complexe taken uit te voeren in je browser (en overal contextgevoelige reclame in te verstoppen en op die manier rijk te worden). Al snel bleek dat we het wiel telkens opnieuw uitvonden en dat we wel erg veel tijd kwijt waren om-dat-ene-dingetje-ook-in-die-ene-versie-van-IE-te-laten-werken. Het aantal uren dat ik heb doorgebracht om dat ene uitlijning probleempje in FF of IE6 te fixen is denk ik niet iets waarmee ik graag wordt geconfronteerd. Dure uren voor isaac en voor de klanten. Ik schat dat in de projecten waarin ik heb gewerkt meer dan de helft van de uren op zijn gegaan aan het bouwen van de interfaces, waarvan weer minimaal een kwart is opgegaan aan het fixen CSS glitches. Enter the client side webframeworks. Wij hebben hier zelf vooral wat gespeeld met Dojo 0.4 en nu dus dojo 1.0. Hun dijit framework belooft ons een component gebaseerde interface die niet langer is gestoeld op de browser pagina ervaring (een van de beperkingen van de manier waarop het internet nu eenmaal werkt). Ik heb hier zelf maar beperkte ervaring mee, maar nadat ik Collin, een stagiare die ik toch wel tot een van de slimmer durf te rekenen, een applicaties heb laten (horen @#$%^) maken met dojo, ben ik van mening dat de HTML gebaseerde webframeworks zoals dojo en jquery toch echt HACKS blijven. HTML (ook DHTML met Javascript en CSS) is gewoon niet bedoeld voor het soort rijke ervaring die je graag zou creƫren als je bouwt aan een echte webAPPLICATIE. Uiteraard zijn ze zeer geschikt om popups te maken en leuke effecten te wrappen of zelfs om een enkele "rijke" pagina mee te bouwen, maar volledige applicaties.. NAH. Ga zelf maar eens na: hoeveel webapplicaties zijn er die je echt het gevoel geven in een stabiele omgeving te werken (behalve gmail en google calendar). Webapplicaties waarbij je niet eerst even je getikte tekst in copy-paste naar notepad voordat je op de back knop klikt om even wat anders op te zoeken alvorens je verdergaat met je stuk. Ikzelf schrijf deze tekst nu niet in de blogger interface, maar in apple's teksteditor, omdat mijn ervaring is dat je wel eens helemaal opnieuw zou moeten kunnen gaan beginnen na je eerste 1000 woorden.

Werken met Flex is op veel fronten een verademing als je veel hebt gewerkt met XHTML/CSS. . De worst die Adobe ons voorhoudt met hun Flex platform is dan ook een vette. Browser onafhankelijk (zo goed als), mooiere interface bouwen in minder tijd, programmeren in een echte IDE (de eclipse plugin werkt lekker) met een strongly typed programmeertaal erachter, component gebaseerd en (en dit is voor iemand die alleen maar webapps heeft gebouwd even wennen) geen pagina gebaseerde interfaces meer. Desktop applicaties in een browser worden weer net even iets gemakkelijker. Eigenlijk min of meer gelijk aan de ervaring van het bouwen van old school desktop applicatie in een echte IDE.

En daarom vind ik het zo jammer dat mijn eerste ervaring met Flex me toch weer zo nu en dan terugwerpt in de bekende AAARGH modus. Flex 3 (en 2 voor zover ik die heb gebruikt eigenlijk ook), is simpelweg niet stabiel. De API's doen niet altijd wat ze beloven en je bent nog steeds veel tijd kwijt met het oplossen van die kleine irritante dingen die bijvoorbeeld ineens verdwijnen als je je commentaar verplaatst in de mxml source. Begrijp me niet verkeerd: Flex doet veel dingen erg goed, maar het behoeft nog zevenduizend manjaar aan schaafwerk.

Toch is het een stap vooruit: de dingen die moeilijk zijn in XHTML/JavaScript/CSS zijn doodeenvoudig in Flex, maar als vanzelf ga je verder en loop je toch al snel weer tegen de grenzen aan van de techniek van het moment. Ik vraag me af hoe silverlight en java fx het gaan doen... Leuk voor de volgende keer wellicht.