středa, srpna 27, 2008

Na(t)ivka

Je to takhle: Přijít s něčím na trh jako první je príma, ale má to svoje nevýhody. Především musíte kvůli nestabilitě a nevyzrálosti technologie leckde leccos obětovat, taky musíte na vlastní náklady vychovat zákazníky, a nejspíš to napoprvé stejně netrefíte, takže si (nechtěně a v dobré vůli) naděláte do bot velkým množstvím dědičných hříchů, za které se pak budou budoucí generace smažit v pekle ještě dlouho po té, co se rozhodnete věnovat výhradně charitě.

Naproti tomu, pokud trochu počkáte, můžete místo babrání se s technologickou nedostatečností vzít všeobecně dostupné součástky a soustředit se na to, jak je poskládat dohromady tak, aby jste vypálili rybník všem pochybovačům, kteří tvrdí, že se na tak usazený trh jako je ten, na který míříte, nikdy nedostane.

Třeba tyhle webové aplikace. Existují úkony prováděné na počítači, které dávají smysl jen pokud máte k dispozici Internet. Třeba sledování RSS, nebo IM, nebo e-mail. A pokud provádíte tyhle úkony na různých místech, říkáte si: jaká je to škoda, že zrovna ta data která potřebuji se válí v počítači na druhém konci světa. Kdybych je tak mohl mít po ruce! A někoho hned napadne: ohó, tuhle máte, milý pane, aplikaci která běží v prohlížeči. A ten máte všude k dispozici. A ta data, ta budeme uchovávat u nás na serveru, co vy na to? A vy na to koukáte, a říkáte si: Hmmm, to je ale zajímavý nápad. Škoda jen, že to provedení stojí za hovno.

A to je největší problém aplikací provozovaných v prohlížeči: prostě stojí za hovno. Proč v prohlížeči nevidíme nic moc zajímavějšího než tisíc variací na přesouvání krátkých kousků textu z místa na místo? Protože s prohlížečem se nic lepšího dělat nedá. Prostředky které máte k dispozici v prohlížeči vracejí váš nablýskaný počítač na úroveň ZX Spectra. Máte velký disk? Je vám k ničemu. Máte 3D akceleraci v grafické kartě? K ničemu. Vícejaderný procesor? K ničemu. Periferie? K ničemu.

Myslím, že nejsem osamocen s názorem, že uživatelské rozhraní by se mělo přizpůsobovat aplikaci, ne aplikace uživatelskému rozhraní. Ale jak chcete v prohlížeči udělat zajímavé uživatelské rozhraní? Jediné co máte k dispozici jsou tyhle Flashe a AIRy a Sliverlighty, ale ty jsou kvůli nutnosti fungovat na nejmenším společném jmenovateli všech podporovaných platforem pořád ohromě omezené co se týče využití dostupného hardware. Třeba: Jak z Flashové aplikace vypálíte DVD?

A teď si říkáte: Cože? Jak to spolu souvisí?

Chci říct: pokud chcete dělat s libovolným druhem počítače (i kdyby byl převlečený za mobilní telefon) cokoliv smysluplného, potřebujete nativní aplikace. Nicméně pokud chcete dělat něco smysluplného, co využije všech výhod Internetu, nemůžou to být jen tak ledajaké aplikace. Musí to být takové aplikace které a) umí pracovat s daty, která jsou uložena někde na serveru, případně se k nim dá přes takový server přistupovat, b) přístup k nim máte všude.

K bodu a): Je to přeci zřejmé: když aplikace v prohlížeči stojí za hovno, ale služby které jsou přes ně poskytovány jsou docela príma, není nic snazšího než napsat nativní aplikaci, která takové služby bude využívat. Jistě, je tu ten problém se synchronizací, což je právě jedna z těch technologických nevyzrálostí, které se vyřeší samy, ať už skrze Microsoft Mesh, nebo Apple MobileMe, nebo nějaký OSS klon který vznikne, nebo už vznikl, jen o něm ještě nikdo neví, protože velké korporace se do těchhle technologií ještě pořádně neopřely. Kromě toho, že nativní aplikace jsou lepší k použití, umožňují řešit i takové ty obvyklé neduhy jako je zálohování nebo šifrování. (Proč by vaše soubory s čísly kreditních karet měly ležet na serveru v otevřené podobě? Aby si je Google mohl zaindexovat?) Čili až někdo bude říkat, že si Ozzie Meshem řeší nějaký svůj synchronizační komplex z dětství, tak jistě bude mít pravdu, ale pamatujte, že jednou se taková možnost synchronizovat soubory bude hodit, jakkoliv je nudná.

K bodu b): Víte co je nejzajímavější na iPhone? Že ho mohl udělat úplně každý. Všechna potřebná technologie je tu kolik -- deset let? Problém je v tom, že všichni zúčastnění byli příliš zabráni do toho řešit nějaké svoje problémy se zpětnou kompatibilitou, nebo hlídáním, aby náhodou periferie jiných výrobců nebyly zaměnitelné s jejich vlastními, nebo aby nějaká firma s obratem tisíc kusů ročně nepřišla zkrátka, protože by si mohla vybrat konkurenční platformu, že úplně zapomněli na to, že by měli taky občas inovovat. A pak Apple oznámil iPhone a my chytráci jsme chytračili, jak nikdy nedosáhnou té penetrace které chtějí protože bla, bla, bla. A vida: O dvě verze iPhone později jsou všichni podělaní strachy, a narychlo kopírují jak se dá, ale stejně budou vždycky o krok pozadu, protože Apple to má promyšlené dopředu, a i ty věci, které teď kopírovačům nedávají smysl ho jistě budou dávat za dva tři roky.

Poučný je ovšem iPhone ovšem i jinak: ukázalo se, že vývojáři jsou ochotni pustit se vývoje pro novou platformu. Proč? Jednak na takové platformě není žádná fragmentace. Dívali jste se někdy co námahy to stojí vyvíjet pro mobilní Javu? (Vůbec nemluvme o Symbianu, to je úplně jiná kategorie.) A co Windows Mobile? Tam se to mírně zlepšilo s příchodem .NET Compact Frameworku, ale pokud chcete dělat něco lepšího než generický demoware, stejně musíte používat tuny volání do platformy, čímž jaksi .NET ztrácí kouzlo. A každé z mobilních zařízení, ať už je to jakákoliv platforma, je dneska rozdělené na stovky podskupin s různou výbavou, různými rozlišeními displeje a tak dále. Nemluvě o tom, že nevíte jaké bude mít zařízení možnosti připojení k Internetu. iPhone je jen jeden (tedy dva, a časem se to bude zhoršovat, ale určitě to nebude takový maras jako jinde). U iPhone víte, že máte Internet, protože bez něj se neprodává. iPhone má moderní systém s moderním API, kde nemusíte řešit pitomé clean-up stacky ani se snižovat k C. A především iPhone má AppStore.

Proč to tu všechno říkám: protože za ty roky co máme PC se nějak vžila představa, že nativní aplikace znamená nechutnou bednu s monitorem, nebo laptop co nic nevydrží. Jenže doba dozrává k tomu, že celý počítač budeme mít v kapse, nejlépe sloučený s telefonem, data na něm, nicméně s možností je libovolně přenášet a distribuovat mobilním Internetem.

Jasně, tohle už tu bylo. Proč se to zatím nechytlo? Protože výrobcům zatím chyběla infrastruktura. Ale tu Apple má: stále rostoucí základna Maců, které Apple drží v ruce stejně jako iPhone, dává možnosti, které ti před Apple neměli.

Příklad: Co byste řekli tomu, kdybyste si na iPhone nainstalovali třeba textový editor. Když máte iPhone v ruce, máte k editoru UI vhodné pro iPhone. Pak ale iPhone zadokujete, připojíte k Macu, ten spustí virtuální stroj který emuluje ten procesor co má iPhone v sobě, sesynchronizuje soubory a vám naskočí krásné UI zcela konzistentní s tím, jak vypadají všechny ostatní aplikace ve vašem Macíkovi (a samozřejmě využívající všech těch 3D serepetiček co v sobě dneska mají grafické karty). A nejste limitovaní jen na váš Mac. Může to být Mac kohokoliv jiného. Úložiště je iPhone (nebo nějaký server se kterým se synchronizuje), aplikace běží ve virtuálním stroji, čili je to zcela bezpečné, a po vás na hostujícím počítači nezůstanou jiné stopy než poprskaný displej a umaštěná klávesnice.

Jsem si skoro jistý, že na něčem takovém už Apple pracuje (stejně jako Microsoft, kde jsou tisíce lidí řádově chytřejších než já, takže je něco takového už určitě napadlo). Aplikace, které na takovém systému poběží, budou tak nativní jak jen to bude možné, přitom budou stále on-line, stále k dispozici, ať už máte po ruce velký desktop nebo ne.

I když: možná jsem naivní, a lidé budou dalších tisíc let používat programy běžící v internetových prohlížečích, které se za tu dobu třeba naučí pořádně spolupracovat s clipboardem...