of user interfaces and parallelism

by spyked

Încă de pe vremea când mașinile de scris erau la mare modă (prin secolul al XIX-lea se pare că ar fi fost înregistrat primul patent bine documentat pentru un asemenea instrument), iar mai apoi odată cu apariția computerelor, în mintea umană a început să se înrădăcineze adânc conceptul de instrument de scris bazat pe claviatură. Și în ciuda tuturor sculelor fancy care s-au tot perindat – cu mai mult sau mai puțin succes – pe piață în ultimii douăzeci de ani (de la mouse și trackball până la touchscreen), fără tastatură nu se poate face mare lucru în ziua de astăzi.

Însă dacă dăm ceasul cu câteva secole în urmă observăm că, în fapt, nu toate instrumentele merg pe același model de gândire. Mergând pe ideea că orice individ poate ajunge (cu suficientă voință și doar până la un anumit nivel) ambidextru, se poate observa că nu-i foarte complicat să scrii cu două creioane simultan. Fără să mai punem la socoteală faptul că o mare parte din instrumentele muzicale (pianul, tobele) cer oricum atenție distributivă. Sigur, exagerez la modul nesimțit, iar ideea ce îmi umblă ca nebuna prin metafizic e departe de a avea aplicații practice (sau cine știe), dar mi-a venit în timpul cursului de APD (Algoritmi Paraleli și Distribuiți, pentru non-ACSiști), deci e de înțeles. Și fiindcă tot sunt la modă soluțiile de virtualizare, sistemele multicore și alte paradigme de forma “more-in-one”, hai totuși să încercăm să gândim oleacă out of the box, cum îi place americanului să spună.

Cum ar fi să poți lega două tastaturi – controllere care să lucreze independent, cam ca și joystick-urile – la un singur calculator? În hardware nu ar fi foarte greu de realizat; nici la nivel de kernel/drivere, cât timp hardware-ul suportă. Buba mare stă la nivelul interfeței cu utilizatorul. Nici X11 și nici shell-ul grafic din Windows nu sunt gândite să suporte așa ceva. Mai mult, design-ul arhitecturii UI în sine nu prea permite o drăcie de genul ăsta. O singură fereastră poate fi focusată la un moment dat, iar dacă în lumea Unix există măcar conceptul de terminal (oarecum inutil în ceea ce privește un UI comun pentru două sau n tastaturi), în Windows nici vorbă de așa ceva. În practică, la ora actuală doar gândul de a proiecta un shell/UI/server grafic/etc. care să respecte condiția de mai sus se dovedește a fi un coșmar.

Așadar, cum ar arăta un UI pe care să poată lucra doi sau mai mulți utilizatori în paralel? Cum ar trebui să adaptăm software-ul – și vice-versa, cum ar trebui să ne adaptăm gândirea, pentru a putea realiza o astfel de interfață? Ar avea vreo utilitate practică? De-aici încolo, pe mine mă depășește problema.