2018-01171 - Software Engineer (M/F) - A Test Platform for Interacting with Advanced Histories of Commands

Contract type : Public service fixed-term contract

Renewable contract : Oui

Level of qualifications required : Graduate degree or equivalent

Fonction : Temporary scientific engineer

Level of experience : From 3 to 5 years

About the research centre or Inria department

The Inria Lille - Nord Europe Research Centre was founded in 2008 and employs a staff of 360, including 300 scientists working in sixteen research teams. Recognised for its outstanding contribution to the socio-economic development of the Nord - Pas-de-Calais Region, the Inria Lille - Nord Europe Research Centre undertakes research in the field of computer science in collaboration with a range of academic, institutional and industrial partners.

The strategy of the Centre is to develop an internationally renowned centre of excellence with a significant impact on the City of Lille and its surrounding area. It works to achieve this by pursuing a range of ambitious research projects in such fields of computer science as the intelligence of data and adaptive software systems. Building on the synergies between research and industry, Inria is a major contributor to skills and technology transfer in the field of computer science.


The position is a part of the ANR project "Causality" carried by Mathieu Nancel.

The project will be conducted within the Loki research team at the Inria Lille – Nord Europe center.


The recruited engineer will implement an online drawing application with advanced command history functionalities from previous work [1], as a test platform for research in Human-Computer Interaction (HCI). S/He will be involved in the design and implementation of the underlying structure of command history, as well as of the front-end's baseline (drawing) and advanced (history control) features.


Histories of commands have been an ubiquitous aspect of most editing software for the last 30 years, but the features they provide have barely evolved beyond Undo and Redo, i.e. going one or more steps backwards or forward. HCI research has explored various improvements over these features, such as undoing commands that happened in a specified region of the document, undoing commands that are not the most recent, or creating branches in the command history to explore various alternatives. But these ideas typically remain “point designs” that are seldom implemented in real applications. We hypothesize that this is in part because no attempt was made to make them all work together: the corresponding research papers all implement data structures for storing the command data that are designed solely for the purpose of the presented technique, which often prevents other techniques—and sometimes even the basic and usual undo-redo features—to work.

In 2014, we proposed “Causality” [1], a conceptual model of command history that allows every history management and manipulation techniques to coexist, and more. The resulting data structure keeps track of all the information involved in the computation of a command's results (user input, application context, target data, outcome, and timings), as well as the connections between them. We also proposed new features that could be made available with such a structure built at the root of an editing application, such as altering the input of a previous command (e.g. the path of a brush stroke) or its parameters (e.g. the foreground color that was active for a certain time period), and solve the possible paradoxes that can arise (e.g. the command that created an object is canceled in the past, what happens to later commands that affected it?).


This project consists in designing and implementing a working drawing application as a test platform, with such a history structure as its basis, to explore:

  1. the technical feasibility of the underlying model, including questions of complexity and time/memory performance;
  2. the best visualizations to communicate the extent of the enriched command history to users of various skills and expertise;
  3. the best techniques to interact with this history of commands and its various functionalities.

The painting application will have to be as reactive as possible and feature a realistic subset of painting functionalities: pixels selection, layers, varying brush shapes and sizes, opacity, blending modes, etc.
The history structure should allow every command to be replayed, and come with an API that allows to access, navigate, select, filter, and replay any command or command parameter, so researchers can explore new history features as well as the best way to use them and present them to users. The recruited engineer is expected to propose and explore solutions to optimize the time-memory tradeoff.

In order to facilitate experimentation with real users, and for cross-platform compatibility, the system should be usable online. We envision WebGL for the front-end, to allow advanced graphics manipulation without introducing too much latency, but the final technological choices will be decided with the engineer. One of the core requirement is that the resulting back-end structure and drawing front-end be easily extensible later on by researchers and students.

The recruited engineer will participate in the design of the data structure—turning a conceptual model to a workable application framework—and will be instrumental in its implementation and integration to a real set of drawing and image manipulation commands. If time allows, s/he will be invited to also participate in the design of interaction techniques to navigate and manipulate the history of commands.

The engineer will work with the researchers involved in the project, Mathieu Nancel and Stéphane Huot, and possibly with a PhD student later on.


[1] Mathieu Nancel, Andy Cockburn (2014). Causality – A Conceptual Model of Interaction History. ACM CHI.

Main activities

Main activities:

  • Requirements analysis
  • Solutions design
  • Implementation and tests
  • Deployment
  • Software maintenance and evolution

Benefits package

  • Subsidised catering service
  • Partially-reimbursed public transport
  • Sports facilities