ⓘ Due to COVID-19, CANOSP will operate virtually for the Fall 2020 semester, including an online Code Sprint.
Code Sprint - Winter 2020

Code Sprint - Winter 2020

This semester, we have 4 exciting projects from Mozilla, Beanbag, and IBM:



Automating Firefox Support Forum Tagging (Mozilla)

Firefox desktop users file anywhere from 30 support tickets per day during quiet times up to 50 or more support tickets per day just after new releases at support.mozilla.org (SUMO). In the event of a Firefox incident, we can receive almost 300 tickets in one day. While this is too much for staff and volunteers to tag manually, annotations provide immense value when triaging and responding to support questions. The aim of this project is to develop and evaluate a prototype system for enriching support request submissions by automated annotation and language analysis.

Participating Students

  • Zichun Lin (University of Alberta)
  • Will Fenton (University of Alberta)
  • Anastasia Borissova (University of Alberta)
  • Yuan Wang (University of Alberta)

Project Mentors

  • Roland Tanglao
  • David Zeber
  • Martin Lopatka

Code Sprint Presentation



OMR Tree Interpreter (IBM)

The Eclipse OMR project is an open-source and reusable toolkit implemented in C/C++ for building runtimes. It includes code for important language-agnostic runtime components, such as a JIT compiler and garbage collector as well as diagnostic tooling and platform abstraction technologies. There have been successful proof-of-concept projects leveraging OMR to enable JIT compilation for languages such as Lua, WebAssembly, and Python and it is also used to build the Eclipse OpenJ9 JVM. The Eclipse OMR compiler has an internal language-independent intermediate representation (IR) called OMR trees. Source programs are translated into OMR trees before being processed by the rest of the OMR compiler. OMR trees are a really useful tool, but we currently do not have an interpreter to evaluate OMR trees without first translating them to binary machine instructions. The goal of this project is to build an interpreter for OMR trees to sever two goals: 1) create an abstract interpreter which generates constraint information for program values (this is used to drive program optimizations and 2) create an interactive terminal to let people write OMR trees and understand how they work.

Participating Students

  • Daniel Cones (University of Alberta)
  • Alex Li (University of Alberta)

Project Mentors

  • Andrew Craik
  • Daryl Maier

Code Sprint Presentation



OpenJ9 JITServer Log Management (IBM)

The Eclipse OpenJ9 project is an open source runtime for running Java applications. One of the newest innovations in the Eclipse OpenJ9 codebase is a project called JIT-as-a-Service. Traditionally, a JIT compiler runs inside the JVM compiling Java bytecode to binary machine instructions to improve performance. The downside of this process is that it takes CPU and memory resources away from the application which is running - these resources are used to run the compiler. The JIT-as-a-Service project decouples the JIT compiler from the rest of the JVM so that it can be run as a service in the cloud! This new compilation model is more challenging to debug, but opens a number of exciting new possibilities. The end goal of this project is to implement efficient log management for the JIT-as-a-Service solution to facilitate debugging and analysis of the compiler when not run in the JVM.

Participating Students

  • Chase Buhler (University of Alberta)
  • Xuechun Hou (University of Alberta)

Project Mentors

  • Marius Pirvu
  • Daryl Maier

Code Sprint Presentation



Review Board (Beanbag)

Review Board is a powerful web-based code review tool that helps developers do peer review as they write code. Code review is a standard industry practice used to find bugs, improve quality, and mentor junior engineers. Review Board is used by thousands of software companies including Twitter, Yahoo, and VMware, as well as many open-source projects like Apache and KDE. Students working on Review Board will have the opportunity to learn about back-end web development using Python and Django, as well as front-end development using HTML, CSS, Javascript, jQuery, and Backbone.js. Source control is managed via Git on GitHub. All patches are reviewed using Review Board, and students will be participating in the code review process.

Participating Students

  • Monica Bui (University of Alberta)
  • Xiaole Zeng (University of Alberta)
  • Katherine Mae Patenio (University of Alberta)
  • Xiaohui Liu (University of Alberta)

Project Mentors

  • Mike Conley
  • Anselina Chia
  • David Trowbridge
  • Christian Hammond

Code Sprint Presentation