Switcher byl aplikace napsaná Andy Hertzfeldem, která umožňovala přepínání programů. Bylo to jakýsi první nástřel pseudo multitaskingu. Aplikace byly umisťovány do samostatných paměťových oddílů a pomocí malého tlačítka v liště si mohl uživatel vybrat do které aplikace si přeje přepnout. Právě v tento den Andy přišel na myšlenku, jak tuto funkci implementovat do aplikace. Teprve mnohem později se Switcher stal součástí nejdříve MultiFinderu a později Finderu. Není bez zajímavosti, že některé nápady Switcheru se dnes používají ve Spaces u Mac OS X. Na stránkách folklore.org Andy Hertzfeld vypráví, jak byla tato aplikace vyvíjena.
Andy Hertzfeld pracoval na levném skeneru s vysokým rozlišením pro Macintosh s názvem Thunderscan, který Apple vyráběl ve spolupráci s malou firmou Thunderware. Začal na něm pracovat v červnu 1984 a v říjnu již byl téměř hotov. Tom Petrie (jeden ze zástupců Thunderware) jel s Andym do redakce časopisu Byte aby tam prezentoval Thunderscan.
John Markoff redaktor, který pro Byte připravoval recenzi byl jedním z nejlepších novinářů San Francisco Chronicle zabývajících se osobními počítači. Tom Petrie popisoval Thunderscan, zatímco Andy připravoval demonstraci a začal skenovat. John se ptal na pár otázek a psal si poznámky do svého IBM PC, které mělo spuštěný textový editor. Když odpovídal na jednu z jeho otázek, zazvonil telefon.
"Omluvte mne, " řekl nám, když mačkal kombinaci kláves na klávesnici, jeho monitor se okamžitě změnit na jiný program. Mluvil po telefonu několik minut, příležitostně psal a před koncem rozhovoru zmáčkl kombinaci kláves a přepnul se zpět ke svým poznámkám k Thunderscanu.
"Co jsi to udělal?", ptal se Andy Johna, zvědavý na software, který zrovna běžel. "Jak si se mohl přepnout do jiné aplikace tak rychle?"
"Á to? Mám spuštěný Memory Shift. Ty jsi to ještě neviděl?", odpovídal John. "Je to DOS program, který udržuje více aplikací v paměti a dovoluje rychlé přepínání mezi nimi. V poslední době to hodně používám." John rychle napsal několik příkazů, aby demonstroval, jak rychle to funguje.
"Víš, myslím že to můžu udělat pro Macintosh", Andy si zamumlal pod vousy ještě před tím, než o tom začal vědomě uvažovat.
Macintosh 512K se čtyřikrát větší pamětí než původní Macintosh se právě začal prodávat. Andy přemýšlel nad možností spustit najednou více aplikací na 512K Macovi, ale nemohl vyřešit problémy s malou kapacitou paměti a další potencionální problémy. Ale nyní, po sledování Memory Shift programu na Johnově počítač si uvědomil jednoduchou cestu jak to udělat.
"To by bylo super," souhlasil John. A pokračovali v demonstraci Thuderscanu. Andy se však nemohl soustředit, protože neustále myslel na přepínání mezi aplikacemi. Bylo zde jen pár problémů, které bylo třeba vyřešit, ale ty vypadaly, jako snadno řešitelné a výsledek by měl být velmi užitečný.
Tom Petri si všiml, jak byl Andy nadšený novou myšlenkou při jízdě zpět domů a připomínal mu jeho primární cíl. Donutil ho slíbit, že nejdříve dokončí alfa verzi Thunderscanu, jak je to jen možné, než přijde s něčím zcela novým. Souhlasil se seznamem několika úloh, které by se měly dokončit během dvou týdnů. Když bude hotová alfa verze, mohl si Andy vzít pauzu na práci pro přepínání aplikací, než se opět ponoří do práce na Thunderscanu 1.0, který měl být hotový koncem listopadu.
Během následujících dvou týdnů se Andy zaměřil na vylepšování Thunderscanu, aby jej dostal do alfa verze, ale také trávil drobné momenty přemýšlením nad designem přepínání aplikací. Základní otázkou bylo, zda nahrát všechny aplikace do jednoho heapu, což by umožňovalo optimální využití paměti s minimální fragmentací nebo je umístit do zvláštních zón. Rozhodl se pro zvláštní zóny, aby lépe izoloval aplikaci, ale nebyl si jistý zda to bude správně.
Bylo zde mnoho drobných problémů, které bylo nutné vyřešit. Nejzávažnějším bylo, že systémový software udržoval mnoho globálních proměnných specifických pro aplikaci v dolní části paměti, ty musely být přehozeny během přepínání kontextu tak, aby každá aplikace pracovala s vlastní sadou. Těžkou částí úlohy bylo zjistit, které konkrétní proměnné se musí být přehozeny. Mnohé byly zřejmé, ale některé již tak jasné nebyly, protože záleželo na tom, jak je aplikace používala. Andy věděl, že první pokus nebude dokonalý, ale byl si jistý že bude schopen odstranit případné problémy, když uvidí jak aplikace padají.
O pár dní později začal pracovat na dokončení Thunderscanu. Během té doby dostal zajímavý hovor od Jeffa Harberse, manažera Microsoft Macintosh application týmu. Jeff mu řekl, že Microsoft má strategický projekt, který potřebují pro Macintosh a že se domnívá, že je ideální osoba pro jeho implementaci. Nechtěl mluvit po telefonu, ale nabídl mu let do Seattlu, aby si pohovořili osobně. I když byl právě uprostřed práce na dokončení Thunderscanu, byl dostatečně zaujat, aby přijal nabídku odletět do Seattlu a navštívit jej.
Jeff ho vyzvedl na letišti a vezl jej do hlavní budovy Microsoftu, kde se připojil k Neilu Konzenovi, talentovanému tehdy 23 letému systémovému programátorovi. Andy znal Neila od jeho dnů, kdy se zajímal o Apple II, kdy přidával nové funkce v asembléru. Tehdy mu bylo 16 let.
Jeff se Andyho ptal, co dělá a on mu povídal o Thuderscanu, což jej zajímalo. Pak se Andy zmínil o tom, že začal experimentovat s přepínám aplikací, poklesla mu čelist a vypadal, jako by tomu nechtěl věřit.
"To je ale to, o čem jsem s tebou chtěl mluvit!", vysvětloval. "Je skvělé, že na tom již pracuješ." Jeff vysvětlit, že Microsoft udělal hromadu práce, aby aplikace začaly fungovat dobře v 128K Macovi což měla být jejich klíčová výhoda. Ale příchod 512K Maca podlomil jejich snahy, protože umožňoval mnohem větší aplikace. Navíc Lotus nedávno oznámil integrovaný aplikační balík pro 512K Maca s názvem Jazz, který umožňoval rychlé přepínání mezi různými funkčními oblastmi.
Pokud by však Macintosh umožňoval spouštět více aplikací najednou, díky svým menším požadavkům na paměť by si aplikace Microsoftu zachovaly svou konkurenční výhodu a uživatelé by si mohli spustit upravený kancelářský balík podle svého. (O rok později se ukázalo, že se Microsoft obával zbytečně) Důvodem pro návštěvu bylo přesvědčit Andyho, aby napsal pro Microsoft přepínač aplikací.
Neil Konzen představil svůj návrh. Rozhodl se v něm použít jedinou heap paměť, což je myšlenka kterou Andy zavrhl, společně s některými zajímavými vylepšeními pro minimalizaci fragmentace paměti. Andy se mu svěřil s alternativním přístupem oddělených heap zón a slíbil mu, že si jeho návrh ještě promyslí.
To odpoledne v Microsoftu nakonec vyvrcholilo soukromou schůzkou s CEO Microsoftu, Billem Gatesem. Jeff jej dovedl k Billově kanceláře, shrnul mu celou schůzku a omluvil se, že je nechá dojednat vývojářskou smlouvu. Bill a Andy se několikrát setkali při vývoji Macintoshe a ačkoliv respektoval jeho porozumění pro techniku, obával se jeho reputace jako obchodníka.
Po vyměně zdvořilostí a zdůraznění, jak je Macintosh důležitý pro Microsoft se na něj Bill podíval a řekl, "Jsi docela dobrý programátor, že? Myslím, že musíš být skutečně dobrý programátor."
"Asi ano," odpověděl Andy, nechápal proč mu tak lichotí.
"Myslím, že jsi. Jak dlouho si myslíš, že ti bude trvat dokončení tohoto projektu? Měsíc? Dva? Myslím že skutečně dobrý programátor by to byl schopen provést za méně než dva měsíce."
"Skutečně nemám ponětí," odpověděl. "V tuto chvíli nejsem ani tak daleko, abych mohl říci, že to bude možné."
"Tak to zjistěme," řekl Bill s lehce zrychleným tónem. "Nemyslím si, že to bude více než 10 000 řádků kódu a skutečně dobrý programátor jako ty by měl být schopen napsat tisíc řádků kódu za měsíc, takže si myslím, že nebude trvat déle než 10 týdnů, pokud jsi tak dobrý, jak si myslím."
Andy nevěděl co na to říci, takže mlčel a nechal Billa mluvit.
"A jak si myslíš, že by měl být dobrý programátor placen? Tady platíme nejlepším programátorům okolo dvou tisíc dolarů týdně. Myslíš, že bychom ti měli zaplatit víc?"
"Nevím," řekl Andy. Konečně začínal chápat, odkud vítr vane. Bill se jej snažil přesvědčit, aby kód napsal co možná nejrychleji, aby mu nemusel platit tolik.
"Nemyslím si, že bych měl očekávat více než čtyři tisíce dolarů týdně, maximálně. Vlastně si myslím, že to je příliš mnoho, ale začněme s tímto. Pokud to bude trvat deset týdnů, a vy mi zaplatíte čtyři tisíce dolarů týdně, já dostanu 40 000 za napsání tohoto programu."
40 000 dolarů pro Andyho vypadala jako solidní suma, zejména pokud to měl být strategický software pro Microsoft, jak to vypadalo. Andy se domníval, že Bill očekává proti-nabídku, ale Andy nebyl příliš nadšený myšlenkou prodávat něco Microsoftu i přes kompenzaci, byl by raději pokud by se aplikace stala součástí operačního systému.
"Podívejte, opravdu to chci napsat, nezávisle na vás, takže mi nemusíte platit nic abych to udělal. A zcela jistě nechci dojednávat smlouvu, dokud neuvidím jak se to vyvine, jestli zde nebude nějaký "show stopper" a já nebudu schopen práci dokončit. A pokud se to povede, byl bych raději, kdyby se aplikace bundlovala s každým 512K Macem."
Bill tedy změnil taktiku. "Dobře. Je mi jedno, jestli to vlastní Microsoft, pokud je to dostupné našim uživatelům. Chtěl bych tě ale přesvědčit, aby si věnoval maximální úsilí tomu, aby si zajistil že s našimi aplikacemi bude pracovat dobře a zavolal Jeffovi pokud budeš mít nějaké problémy. Pak si můžeme promluvit znovu o tom, jak budeme pokračovat. Souhlasíš?"
Andy mu řekl, že to vypadá dobře a slíbil mu, že se vynasnaží, aby aplikace fungovala s aplikacemi Microsoftu skvěle. Což zamýšlel udělat stejně, protože aplikace Microsoftu byly pro většinu uživatelů důležité. Potřásli si rukou a rozešli se v pozitivním duchu.
Když se pak vrátil domů do Palo Alto, hořel nedočkavostí, aby se mohl podívat, zda může něco rychle udělat. I když měl jen pár dní na práci pro dokončení alfa verze Thunderscanu, rozhodl se, že napíše proof of concept prototyp aplikačního přepínače.
Časem by mohl napsat uživatelské rozhraní pro výběr aplikací, ale pro proof of concept se tomu nemusel věnovat. Připojil MacPaint, MacWrite, MacDraw a Finder. Pracoval 20 hodin na jádru programu, který pracoval na úpravách trapů pro rozšíření několika základních systémových volání, jako GetNextEvent, Launch a ExtiToShell. Nejtěžší částí bylo procházet všechny alokace paměti na nízké úrovni a určovat, co bude přehazováno. Bylo neuvěřitelně uspokojující vidět to začít fungovat, když to poprvé spadlo, ale postupně se to stabilizovalo, jak Andy postupně problémy řešil.
Když to fungovalo přes hodinu, viděl Andy, jak se Bud Tribble vrací domů. Nakonec dokončil jeho M.D/Ph.D program v univerzitě ve Washingtonu, včetně roční interny, ale rozhodl se, že práce u Macintoshe bude větší legrace, než být doktorem. Vrátil se tedy do Apple ke své staré práci jako softwarový manažer o pár měsíců později, v červnu 1984. Bud žil v domě Burella Smithe, který bydlel vedle Andyho.
Andy přivedl Buda domů a ukázal mu, jak se rychle přepíná MacPaint, MacWrite a MacDraw. Byl nadšen a k Andyho překvapení si stěžoval na rychlost přepínání, která byla téměř okamžitá, že byla příliš rychlá: "Myslím, že je trochu matoucí, přepínat jednu aplikaci do druhé bez jakékoliv zpětné vazby. Co kdyby někdo přepínal náhodně? Možná bychom mohli použít animaci, abychom měli plynulejší přechod mezi aplikacemi."
To vypadalo jako skvělá myšlenka. Andy s Budem se rozhodli, že aplikace se přesune horizontálně , zatímco druhá připlave z druhé strany. To umožní vytvoření konkrétního mentálního modelu, který jako by přesouval vybranou aplikací kolem neviditelné oblasti. Andy napsal některé rychlé přesunovací rutiny a byl nadšen, jak skvěle vypadalo přesouvání aplikací přes obrazovku.
Ukázal demonstraci přátelům u Apple, stejně jako pár uživatelským skupinám a návrh byl přijat velmi pozitivně. Naneštěstí, pořád musel dokončit Thunderscan, který se tak tak podařilo dokončit koncem listopadu, jak Andy slíbil. Po té si vzal krátkou dovolenou a začátkem prosince začal pracovat na tom, čemu začal říkat "Switcher". Okolo vánoc měl většinu implementovanou, včetně jednoduchého UI pro vybírání aplikací a "Switcher Documents" pro zapamatování sady závislých aplikací.
Začátkem ledna 1985 dostal Andy telefon od Guye Kawasakiho, jednoho z externě pracujících evangelistů Apple, který mu oznámil, že Apple by měl zájem koupit Switcher a byl mu přidělen, aby se to uskutečnilo. Prvním krokem byla demonstrace pro Steva Jobse.
Andy přišel do Stevovy kanceláře velmi nervózní, protože věděl, že Switcher má pro Apple cenu nejméně čtvrt miliónu dolarů, ale byl si jistý, že Steve by mu nikdy tolik nedal. Byl však také na Switcher hrdý a tak byl zvědavý, co na to Steve bude říkat.
Nastartoval standardní demonstraci MacWritu, MacPaintu, MacDraw a Finderu. Nastartoval také program generující bludiště od Steva Cappse. Nastavil Switcher tak, aby byla vypnutá animace a aby to více vyniklo později. Představil vyjímání a vkládání mezi MacWritem, MacPaintem a MacDraw ve vteřinách místo v minutách a pak zapnul animace a začal přepínat mezi aplikacemi v obou směrech.
"Dobře, viděl jsem dost," přerušil Steve Andyho. "Je to skvělé, Apple to bude bundlovat s Macem. Blahopřeji." Pak se odmlčel a spražil Andyho neuvěřitelně intenzivním pohledem, jako by si ho přeměřoval nebo ho chtěl vystrašit. "Ale nechci aby si měl z této situace výhody. Nedovolím, aby jsi vydíral Apple."
"Co tím myslíš?" ptal se Andy, upřímně zmatený. "Není možné, aby jsi mohl dokončit tento program bez tajných informací, které jsi získal při práci u Apple. Nemáš právo žádat cokoliv, co by jsi chtěl."
Andy se rozčílil. "Program je jen napůl hotový a pokud si nebudu myslet, že mne platíš spravedlivě, nebudu motivován jej dokončit."
Steve na Andyho hodil další intenzivní pohled a odmlčel se na několik minut. Pak jen řekl jedno číslo bez vysvětlení: "Jedno sto tisíc dolarů"
"Nevím," řekl mu Andy. "Myslím, že stojí za více než to."
"Nehádej se se mnou. 100 000 dolarů je férová nabídka a víš to."
Andy vypadal, že nemá jinou alternativu, než kapitulovat a vzít Stevovu nabídku, protože se s ním obtížně vyjednává a Andy chtěl, aby se Switcher na Maca dostal. Nakonec si vyjednal s Guyem Kawasaki, kromě 100 000 dolarů také 10 % podíl na zisku, pokud by Apple prodával Switcher zvlášť, což Steve přísahal, že nikdy nebude. Nakonec Andymu pak tento podíl na zisku vynesl dalších 50 000 dolarů.
Připravit Switcher nebylo těžké, ale byl to velmi náročný program na dokončení, protože často převrátil některé předpoklady, které aplikace dělaly, ale nakonec je Switcher přinutil pracovat. Mnoho práce v pozdních fázích zahrnovalo testování s každou aplikací se kterou se Andy mohl setkat a debugování pádů. Většinou byl Andy schopen nalézt nějaký způsob jak obejít problém bez způsobení horších problémů někde jinde.
Podle předpokladů, nejtěžší částí u Switcheru bylo to, aby fungoval s Microsoft aplikacemi. To bylo způsobeno částečně tím, že Microsoft byla velmi mladá softwarová společnost a prováděla kroky, které se ostatní vývojáři neodvážili dělat, ale většinou proto, že jejich instrukce v aplikacích byly kódované do pseudo-kódu pro úsporu místa podle tradice byte-code interpretů z Xeroxu, což hájil Charles Simonyi.
Naneštěstí, pseudo-kód zabraňoval dešifrování programu, který padal což jej činilo obtížným pro debugování. Nakonec Andy přišel s debugovací technikou jednoduchým vstupem do jejich interpretru, šest instrukcí najednou, aby byl schopen získat instrukci, která prováděla kód, ale bylo to velmi bolestivé. Byl ale rozhodnut tímto projít, kvůli slibu který dal, když byl v Microsoftu.
Jedním z posledních problémů, které řešil s první verzí Switcheru v březnu 1985 bylo zaseknutí aplikace. Jestliže jste měli více běžících aplikací, nechtěli jste, aby jedna aplikace sebou vzala všechny ostatní. Přidal tedy funkci, která dovolila uživateli zabít aktuální aplikaci, pokud byl zaseknutá tím, že se monitorovala specifická klávesová kombinace.
Andy věděl, že musí vybrat velmi neobvyklou klávesovou kombinaci, protože nechtěl, aby uživatelé sestřelili svou aplikaci náhodou. Rozhodl se pro kombinaci shift-jablíčko-alt-tečka, čtyři klávesy najednou, o čemž se domníval že je velmi těžké náhodně zmáčknout. Byl proto velmi překvapen, když mu volal Jeff Harbers z Microsoftu.
"Ahoj, moc se mí líbí ta ukončovací funkce, kterou jsi zrovna přidal, ale budeš muset změnit tu klávesovou kombinaci, protože ji používáme v MS Wordu.", říkal Jeff. Microsoft Word byl velmi komplexní a měl enormní rozsah klávesových zkratek, až příliš, pokud Andy o to zajímal.
"Dobře, navrhněte mi jinou kombinaci a já to zvážím," říkal Andy Jeffovi.
Jeffa nic konkrétního nenapadlo, takže Andymu řekl, že mu ještě brzy zavolá. Andy se musel smát, když mu volal druhý den a řekl mu, že by chtěl odvolat svůj požadavek a že by měl ponechat svou kombinaci kláves.
"Dobře, s tím nemám problém," říkal mu Andy. "Ale proč ta změna? Nebude to mít stále problémy s Wordem?"
"No, v další verzi Wordu tuto kombinaci nebudeme používat. Problém je, že jsme nemohli nalézt bezpečnou kombinaci - myslím, že již používáme všechny klávesové kombinace!"
Finální verze Switcheru se dostala na trh v dubnu 1985 a Andy ji několik verzí udržoval. Nakonec předal tuto práci Philovi Goldmanovi, úžasnému mladému programátorovi z Princetonu, který byl nově přijat do Apple a který šel psát MultiFinder (s Erichem Ringewaldem), nástupcem Switcheru v roce 1987.
Prameny:
Odkazy z novinek:
Odkazy z událostí: