iTrace - About

The Problem

Software developers work with many source code files but each of these files typically is comprised of thousands of lines of code. They constantly flip through multiple files while reading and debugging code. Current state-of-the-art eye tracking software (such as Tobii Pro, iMotions suite of products and the like) work well on fixed stimuli such as images (or fixed text on the screen). Some let you cache longer pages but the problem still remains, they need to know the stimuli apriori. This does not work for software engineering studies. Here's why. Source code files are really large. Source code is also semantically and syntactically rich. Current state of the art systems require you to draw areas of interest (AOIs) (rectangles) around objects on the screen you want you eye gaze mapped to. Clearly we cannot feasibly draw areas of interest around each source code token to map gaze data to those regions. We also do not know apriori which files in a large project (consisting of 200+ files) the developers will open. This presents a big problem in designing and conducting eye tracking studies in a realistic fashion posing a huge threat to external validity. This was our pain point.

The Solution

We built iTrace to solve the above problem. iTrace is community eye tracking infrastructure meant to solve the problem of having code static and fit the screen (no realistic developer works with only 20 lines of code - this is typically what fits on a 23 inch screen). iTrace is built on a client/server plugin architecture. It lets software engineers and software engineering/computing educators get started on conducting eye tracking studies with ease. With a quick calibration and a few initial settings, one can go about tracking eye movements on source code (at the token level - automatically mapped - no need to draw areas of interest around each word) and related documents (such as Stack Overflow, Bug Reports, GitHub pages, and custom websites - you will need to extend our base solution) seamlessly by hitting Start tracking within their Integrated Development Environment. After hitting Start Tracking, the developer can go about working as usual. The gazes are collected in the background with no interruption to the user.

Integrated Development Environments Supported
Eclipse, Atom, Visual Studio.

Browsers Supported
Google Chrome via a plugin (available on web store - currently in process). Check out from source in the repository for now.

Eye Trackers Supported
Gaze Point, Tobii Pro, Smart Eye

Our Mission

Our mission is to provide an extensible eye tracking software infrastructure, iTrace, to support large-scale eye tracking empirical studies on software artifacts (such as source code, requirements, bug reports…). iTrace connects the software application such as an IDE (Eclipse or Visual Studio) and/or the Google Chrome browser to an eye tracker and maps (x,y) coordinates of eye gaze to meaningful elements even in the presence of scrolling and file switching. The data can then be proceesed towards some functional goal based on what the user would like to accomplish with the data.

We work to deliver a high quality eye tracking software application to integrate with various integrated development environments and browsers. This application and all supporting tools will assist research into software developer habits and behavior.

How It Works

Once connected to an eye tracker and after a quick calibration, the developer is free to work within their development environment while iTrace captures gazes as they are doing their task of reading and comprehending code. These gazes will be mapped to specific code elements via iTrace toolkit. We designed iTrace with extensibility in mind. It is designed to support the adding of additional eye trackers very easily via a common unified interface.

The Stakeholders

iTrace can be used by researchers, practitioners, and educators.

Conduct large scale studies on program comprehension, bug fixing for example.

Become aware of your navigation strategies or bug fixing strategies on large code bases.

Learn how students read and understand realistic code projects (not just isolated small code snippets)

This work has been funded in part by the National Science Foundation under Grant Numbers CCF 1553573 and CNS 17-30307/30181. Email for additional questions.