Six Month Internship

A report from the trenches

Harrie Pieters (@harriepieters)


  • Some of the things I learned
  • The projects I worked on
  • Technologies used during the work on these projects

CA - 46110

Some of the things I learned

  • Linux
  • XCP
  • Terminal
  • Tmux
  • IRC
  • OCaml
  • ...

Project: DefectTools


  • Used to get a snapshot of Jira Filters
  • Build on the existing work in ring 3
  • Build using Python and Cronjob

Dave's Defect Dashboard

Malcolm's (Clearwater) Dashboard

Daily SCTX Report

Project: XAC

XAC - Xen API Console

  • A browser based, client side only, single page, application that allows you to control anything that has XenAPI running (e.g. XenServer).
  • Based on the previous works of John Ludlam
  • Using the previous work to construct the first component


  • A Xen API XMLRPC jQuery Client Library
  • Please select your API call out of 1400+ possibilities
  • Written in Coffeescript

Coffeescript - Introduction

  • CoffeeScript is an attempt to expose the good parts of JavaScript in a simple way.
  • CoffeeScript "compiles" into javascript
  • CoffeeScript is not a superset of JavaScript
  • Inspired by the Ruby and Python language

Coffeescript - Example


							eat food for food in foods when food isnt 'chocolate'


for (_k = 0, _len2 = foods.length; _k < _len2; _k++) {
	food = foods[_k];
	if (food !== 'chocolate') {

XenAPI-jQuery - Usage

var client = new XenAPI(username,password,hostUrl);

client.init(function(error, result) {
    if(error) {
    } else {
    	// Run any api call you want
        client.VM.get_all(function(error,result) {
            var all_vm = result;


Github - Pages

  • Get a fresh git clone copy of your repository
  • Create a branch called "gh-pages"
  • Remove all existing files
  • Insert page

Back to XAC

XAC - Tools

  • Yeoman - Workflow
  • SASS - Preprocessing Stylesheets
  • Ember.js - Framework

XAC - Yeoman

A collection of tools and best practices working in harmony to make developing for the web even better

  • Yo - Scaffolds out a new application
  • Grunt - Is used to build, preview and test your project (Automation)
  • Bower - Is used for dependency management


Sass is an extension of CSS3. Adding nested rules, variables, mixins, selector inheritance, and more


$blue: #3bbfce;
$margin: 16px;

.content-navigation {
  border-color: $blue;
    darken($blue, 9%);

.border {
  padding: $margin / 2;
  margin: $margin / 2;
  border-color: $blue;


Sass is an extension of CSS3. Adding nested rules, variables, mixins, selector inheritance, and more


.content-navigation {
  border-color: #3bbfce;
  color: #2b9eab;

.border {
  padding: 8px;
  margin: 8px;
  border-color: #3bbfce;

XAC - Ember.js

A Framework for creating ambitious webapplications.

XAC - Ember.js

Ember leverages the MVC pattern.

XAC - Ember.js

Ember.js does a lot of "magic"...

App.IndexRoute = Ember.Route.extend({
  model: function() {
    var people = [
        firstName: "Tom",
        lastName: "Dale"
        firstName: "Yehuda",
        lastName: "Katz"
    return people;

XAC - Ember.js

Ember.js does a lot of "magic"...


XAC - Architecture

XAC - Components

Shaving a Yak?

yak shaving

  • Any apparently useless activity which, by allowing you to overcome intermediate difficulties, allows you to solve a larger problem.
  • The actually useless activity you do that appears important when you are consciously or unconsciously procrastinating about a larger problem.



  • Information Engineering
  • Bridge between Business and Engineering
  • Applying this approach on the open sourcing

Transition from proprietary to open source - a case study at Citrix

  • Case Study
  • Descriptive research
  • Gathering data

Thesis - Goal

The objective is to provide a framework or model that will allow insights into the transition process from proprietary to open source.

How would a model for the transition from proprietary to open source be defined based on the Citrix XenServer case study?

Thesis - Steps

  • What are the aspects of existing open source projects
  • Get all the information on XenServer as possible
  • Try to find match and mismatch between both data sources

Thesis - High Level Model

Thesis - Business Model

  • User Organizations
  • Open Source Support Organizations
  • Professional Open Source Organizations

Thesis - Process

  • Software development Practices
  • Tooling and/or Infrastructure
  • Communication

Thesis - Product

  • Licensing
  • Testing
  • Releasing
  • Maintenance
  • Architecture

Thesis - Social

  • Community and Teams
  • Membership
  • Cooperation, Coordination and Control
  • Governance
  • Trust and Social Accountability

Thesis - Some things I learned

  • Open Sourcing is mostly about people
  • Open source does not mean the same to everyone
  • License is the key to everything
  • Writing a thesis is harder than it looks

Thesis - What's next

Thank you!

All files are available on my github account (