@phdthesis {2020:liquid:phd,
	title = {Liquid Web Applications - Design and Implementation of the Decentralized Cross-Device Web},
	year = {2020},
	month = {June},
	pages = {310},
	school = {USI},
	type = {PhD},
	address = {Lugano},
	abstract = {Web applications are traditionally designed having in mind a server-centric architecture, whereby the whole persistent data, dynamic state and logic of the application are stored and running on a Web server. The clients running in the Web browsers traditionally render only pre-computed views fetched from the server. Nowadays this centralized approach does not fit well with the kind of interactions that the users perform when they connect to a Web application. The users can access the Web and fetch applications with much faster devices than the ones we owned thirty years ago. Moreover the Web can now be accessed with devices of any shape, size, and capability: ranging from desktop computers, to laptops, tablets, and smartphones. Emerging smart and embedded devices in the Internet of Things are also able to access the Web and interact with each other thanks to new emerging Web standards, such as smart televisions, smart watches, or smart cars. The diversity in the devices increased together with the average number of Web-enabled devices owned by a single user. Today the average connected users access the Web with multiple devices at the same time and expect that their applications, which are now deployed on all the devices they own, can be seamlessly used on each one of them. In this dissertation we discuss liquid Web applications: software that can be deployed in a cross-device environment by exploiting the current HTML5 standards. In particular we design and implement decentralized liquid Web software able to flow between different platforms. Like liquid adapts its shape to its container, liquid Web applications adapt and can be deployed on all available devices. The Web platform allows devices of different manufactures to communicate, deploy, and distribute liquid applications among them, even when they do not share a common operating system. With liquid Web applications we seek to overcome the current stagnation in the traditional design of solid Web applications in favor of an affordable cross-device solution. We present the history and evolution of liquid applications and discuss why the Web is the best platform for creating them. We show how to design liquid software by discussing how to deploy the state, logic, and user interface of any Web application on multiple devices. The design we present allows developers to create liquid Web applications able to seamlessly flow between multiple devices following the attention of the users. We also present the Liquid.js for Polymer framework, whose goal is to simplify the creation of liquid Web applications by helping developers to create their own liquid user experience. Our contribution in the design of liquid software presented in this dissertation is decoupled from the framework implementation and can be re-used to create new liquid frameworks.},
	keywords = {liquid software, liquid.js},
	url = {https://doc.rero.ch/record/328744},
	author = {Andrea Gallidabino}
}
@article {2019:liquidjs:jwe,
	title = {The LiquidWebWorker API for Horizontal Offloading of Stateless Computations},
	journal = {Journal of Web Engineering},
	volume = {17},
	year = {2019},
	month = {March},
	pages = {405-448},
	abstract = {As most users access the Web from multiple devices with different characteristics, ranging from powerful desktops or laptops to tablets, mobile phones or watches and cars, liquid Web applications seamlessly flow across multiple Web-enabled devices and adapt their distributed user interface to the set of devices simultaneously accessing the application. In this paper we focus on the business logic layer of rich Web applications and explore the opportunity to reduce the execution time of CPU-intensive tasks or limit their energy consumption by offloading them among nearby devices running the same liquid Web application. We extend the standard HTML5 WebWorker API with the concept of liquid WebWorkers, so that developers can transparently offload parallel execution of stateless tasks by managing the necessary device selection and direct peer-to-peer data transfer. By introducing the liquid WebWorker API into our Liquid.js framework, we present how to create a pool of devices sharing their CPU processing capabilities according to different policies.},
	keywords = {Edge Computing, Horizontal Offloading, liquid software, liquid.js, WebWorkers},
	doi = {https://doi.org/10.13052/jwe1540-9589.17672},
	url = {https://www.riverpublishers.com/journal_read_html_article.php?j=JWE/17/7/2},
	author = {Andrea Gallidabino and Cesare Pautasso}
}
@conference {www2018:liquidjs,
	title = {The Liquid User Experience API},
	booktitle = {The Web Conference (WWW2018)},
	year = {2018},
	month = {April},
	pages = {767-774},
	publisher = {ACM},
	organization = {ACM},
	address = {Lyon, France},
	abstract = {In the past years the average number of Web-enabled devices owned by each user has significantly increased. Liquid Web applications enable users to take advantage of all their devices sequentially to migrate their running applications across them or simultaneously when running different views of the same application at the same time on each device. Developers of liquid Web application need to control how to expose the liquid behavior of their cross-device Web applications to the users. To do so, they can use the API of Liquid.js we describe in this paper. Liquid.js is a framework for building component-based rich Web applications which run across multiple Web-enabled devices. The framework is based on technologies such as Polymer, WebRTC, WebWorkers, PouchDB and Yjs. Liquid.js helps to build decentralized Web applications whose components can seamlessly flow directly between Web browsers carrying along their execution state. The Liquid.js API gives developers fine-grained control over the liquid user experience primitives, device discovery, and the lifecycle of liquid Web components. },
	keywords = {API, liquid software, web components},
	doi = {10.1145/3184558.3188738},
	author = {Andrea Gallidabino and Cesare Pautasso}
}
@demo {liquidjs:2016:www,
	title = {The Liquid.js Framework for Migrating and Cloning Stateful Web Components across Multiple Devices},
	year = {2016},
	month = {April},
	pages = {183-186},
	publisher = {ACM},
	address = {Montreal, Canada},
	abstract = {We are heading toward an era in which users own more than one single Web-enabled device. These devices range from smart phones, tablets and personal computers to smart Web-enabled devices found in houses and cars. The access mechanisms and usage patterns of Web applications are changing accordingly, as users interact more and more with Web applications through all their devices, even if the majority of Web applications are not ready to offer a good user experience taking full advantage of multiple devices. In this demonstration we introduce Liquid.js, a framework whose goal is to enable Web developers to take advantage of multiple heterogeneous devices and offer to their users a liquid user experience, whereby any device can be used sequentially or concurrently with Web applications that can effortlessly roam from one device to another. This way, as highlighted in the demonstration users do not need to stop and resume their work on their Web application as they migrate and clone them across different devices. The demo will also show how developers can easily add such liquid behavior to any Polymer Web component.},
	keywords = {demo, liquid software, liquid.js, web components},
	url = {http://www2016.net/proceedings/companion/p183.pdf},
	author = {Andrea Gallidabino and Cesare Pautasso}
}
@conference {lws:icwe:2015,
	title = {Liquid Stream Processing across Web browsers and Web servers},
	booktitle = {15th International Conference on Web Engineering (ICWE 2015)},
	year = {2015},
	month = {June},
	pages = {24-33},
	publisher = {Springer},
	organization = {Springer},
	address = {Rotterdam, NL},
	abstract = {The recently proposed API definition WebRTC introduced peer-to-peer real time communication between Web browsers, allowing streaming systems to be deployed on browsers in addition to traditional server-side execution environments. While streaming applications can be adapted to run on Web browsers, it remains difficult to deal with temporary disconnections, energy consumption on mobile devices and a potentially very large number of heterogeneous peers that join and leave the execution environment affecting the quality of the stream. In this paper we present the decentralized control approach followed by the Web Liquid Streams (WLS) framework, a novel framework for streaming applications running on Web browsers, Web servers and smart devices. Given the heterogeneity of the deployment environment and the volatility of Web browsers, we implemented a control infrastructure which is able to take operator migration decisions keeping into account the deployment constraints and the unpredictable workload.},
	keywords = {liquid software, stream processing, web liquid streams},
	doi = {10.1007/978-3-319-19890-3_3},
	author = {Masiar Babazadeh and Andrea Gallidabino and Cesare Pautasso}
}
