@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 {2019:icwe:liquid,
	title = {Multi-device Adaptation with Liquid Media Queries},
	booktitle = {19th International Conference on Web Engineering (ICWE 2019)},
	year = {2019},
	month = {June},
	pages = {474-489},
	publisher = {Springer},
	organization = {Springer},
	address = {Daejeon, Korea},
	abstract = {The design of responsive Web applications is traditionally based on the assumption that they run on a single client at a time. Thanks to CSS3 media queries, developers can declaratively specify how the Web application UI adapts to the capabilities of specific devices. As users own more and more devices and they attempt to use them to run Web applications in parallel, we propose to extend CSS media queries so that they can be used to adapt the UI of liquid Web applications while they are dynamically deployed across multiple devices. In this paper we present our extension of CSS media queries with liquid-related types and features, allowing to detect the number of devices connected, the number of users running the application, or the role played by each device. The liquid media query types and features defined in this paper are designed and suitable for liquid component-based Web architectures, and they enable developers to control the deployment of individual Web components across multiple browsers. Furthermore we show the design of liquid media queries in the Liquid.js for Polymer framework and propose different adaptation algorithms. Finally we showcase the expressiveness of the liquid media queries to support real-world examples and evaluate the algorithmic complexity of our approach.},
	keywords = {complementary view adaptation, liquid software, liquid web application, liquid.js, media queries, multi-device adaptation, responsive user interface},
	doi = {10.1007/978-3-030-19274-7_33},
	author = {Andrea Gallidabino and Cesare Pautasso}
}
@conference {liquidjs:2016:wicsa,
	title = {On the Architecture of Liquid Software: Technology Alternatives and Design Space},
	booktitle = {13th Working IEEE/IFIP Conference on Software Architecture (WICSA 2016)},
	year = {2016},
	month = {April},
	address = {Venice, Italy},
	abstract = {The liquid metaphor refers to software that operates seamlessly across multiple devices owned by one or multiple users. Liquid software architectures can dynamically deploy and redeploy stateful software components and transparently adapt them to the capabilities of heterogeneous target devices. The key design goal in liquid software development is to minimize the efforts that are related to multiple device ownership (e.g., installation, synchronization and general maintenance of personal computers, smartphones, tablets, home displays, cars and wearable devices), while keeping the users in full control of their devices, applications and data. In this paper we present a design space for liquid software, categorizing and discussing the most important architectural issues and alternatives. These alternatives represent relevant capabilities offered by emerging technologies and deployment platforms that are then positioned and compared within the design space presented in the paper.},
	keywords = {design space, liquid software, liquid.js},
	author = {Andrea Gallidabino and Cesare Pautasso and Ville Ilvonen and Tommi Mikkonen and Kari Systa and Jari-Pekka Voutilainen and Antero Taivalsaari}
}
@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}
}
@demo {2016:icwe:liquidjs:demo,
	title = {Migrating and Pairing Recursive Stateful Components Between Multiple Devices with Liquid.js for Polymer},
	year = {2016},
	pages = {555{\textendash}558},
	publisher = {Springer},
	address = {Lugano, Switzerland},
	abstract = {With the continuous development of new Web-enabled devices, we are heading toward an era in which users connect to the Web with multiple devices at the same time. Users expect Web applications to be able to flow between all the devices they own, however the majority of the current Web applications was not designed considering this use case scenario. As the number of devices owned by a user increases, we have to find new ways to give Web developers the tools to easily implement the expected liquid behaviour into their software. We present a new contribution provided by the Liquid.js for Polymer framework, allowing the migration of recursive component-based Web applications from a device to another. In this demo paper we will show how to create recursive components, how to migrate them among devices, and how their state can be paired among the various components.},
	keywords = {liquid software, liquid.js, web components},
	isbn = {978-3-319-38791-8},
	doi = {10.1007/978-3-319-38791-8_47},
	url = {http://dx.doi.org/10.1007/978-3-319-38791-8_47},
	author = {Gallidabino, Andrea}
}
