Irakli Gozalishvili gozala
Senior research engineer with particular interest in local-first software principles, peer to peer technologies and the end-user programming (slightly biased for functional paradigm).
Asymmetry of traditional server/client architectures creates a power disbalance. Power is exercised by trapping user's data for profit. P2P/Distributed/Decentralized technologies have a symmetric architecture (every peer is both server and client) and that leads to a different data ownership model. I devoted last years of my career at Mozilla enabling such technologies.
Identifying gaps of the web platform and filling those in Firefox to bring those technologies was project libdweb. Through collaboration with IPFS, Dat and SSB communities missing primitives were recognized, which I have implemented as an experimental Firefox extension APIs. This lead to several successes:
The goal of Lunet project was enabling symmetric systems but within the constraints of existing web platform. It (ab)used range of web capabilities (ServiceWorkers, Sandboxed iframe and Content Origin Policies) to create a sandboxed web runtime in which applications work offline, operate on user data and are unable to track / silo users.
It also opportunistically leveraged companion native application to use capabilities unavailable in web platform, proposing progressive peer-to-peer web application (PPWA) architecture. Read full story
Inspired by developments of IPFS, Dat, SSB protocols I have drafted a concept of content addressable data feeds that enable collaborative applications adherence to Zero Knowledge Architecture (ZKA). Shared this research with community and through continued collaboration with Textile team converged on design of new Threads Protocol.
Reimagining medium for the web, The True User Agent (and not a client acting on servers behalf) had been an objective of the three people browser.html team at Mozilla. Empowered by user research, we have developed several concept browsers to create a user interface for the new generation web engine Servo.
A website art-directing the experience was the future in which browser is an OS in disguise (a.k.a Firefox OS). There was no place for ugly frame around the web, so we developed minimal chrome that like chameleon would adapt and blend in with the the content. Read full story
Empowering users to (re)shape their User Agent was the vision, which is why user interface of this browser was just an HTML file hosted in the cloud. For different interface just point to a different HTML file. Read full story
Concept reimagined tab strip (a.k.a Needle in a Haystack) as neatly organized, filterable list of cards, each capturing essence of the page. Read full story
Web clips reimagined replacement for bookmarks (the long list of addresses) as cards clipping most valuable content from the web, thus building a web heat map. Read full story
Highlighter concept was an attempt to fill the need of collecting and sharing content on the web. Allowing user to capture any selection from the web page into a catalog that could be annotated and shared. Read full story
Introduction of 3D touch inspired us to explore a new dimension. We completely redesigned user interface and pushed browser chrome into a third dimension Read full story
Trails concept was an attempt to evolve problematic user interface concepts like tabs, navigation history, bookmarks into unified concept that visualized a user’s journey through the web. Implementation mapped active browsing sessions (tabs), corresponding histories (session history) and past sessions (browser history) to navigation trails by visualizing it through rows as expandable stacks of cards. Read full story
We set out to enhance existing browser workflows such that they felt familiar & more effective. Special user interface with added dimension and pressure sensitive 3D touch were applied across all interactions and views to convey rich, yet intuitive mental model. Read full story
Performant spacial user interface in 3D space using web platform was a challenge and a journey that has unfolded in parallel.
Designed to be thinnest possible layer for the web for rapid concept browser development. A web engine with a user interface that is just an HTML file in the cloud. Read the full story
To take an advantage of modern hardware and parallel servo engine we have designed a new concurrent runtime inspired by Erlang Actor Model. Actors were represented via async functions that communicated through read/write streams and were dispatched onto the thread pool. Implementation of actors could be seamlessly switched between JS or Rust allowing greater optimizations. Read full story
Running complex JS UI logic in the UI thread meant dropping a frame sooner or later. This inspired my work on Virtual DOM library, that moved that logic to the worker thread(s). It represented Virtual DOM tree and changes to it via byte code. This made possible to program UI in worker thread and transfer all updates without copying. Read full story
Running UI logic in the worker thread(s) required mechanism for event handling. Inspired by parser combinators in functional languages I came to a solution that represented event handlers (in the worker thread) via declarative event serializer. They were represented as a (part of Virtual DOM) byte code, run on events to capture & transfer required details for worker thread. Read full story
I have designed and implemented high performance JS framework with reactive data bindings to powering TomTomGo Live 1000 user interface. Hardware limitations required an aggressive and at times creative optimizations to deliver smooth experience. Read full story
Toolkit for building cross-platform desktop apps with JS, HTML, and CSS predating ElectronJS and NodeJS. Project was a port of NarwhaJS (JS Server runtime predating NodeJS) to Mozilla XULRunner that provided APIs for building cross-platform UI apps with HTML and native toolkits. Read full story
Application runtime for running Firefox OS Apps across multiple desktop platforms. It was used in an initial prototypes of browser.html project.
This project replaced TomTom Home desktop application (Primarily map marketplace) with a web application. Novel idea (at a time prior to internet connected devices) entailed putting HTTP server with REST API on the device so that web application (Cloud based marketplace) could use to install purchased content. Read full story.