Six Month Internship – A report from the trenches – Project: DefectTools



Six Month Internship – A report from the trenches – Project: DefectTools

0 0


hpieters.github.com

Personal Website

On Github HPieters / hpieters.github.com

Six Month Internship

A report from the trenches

Harrie Pieters (@harriepieters)

Outline

  • 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

Introduction

  • 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

XenAPI-jQuery

  • 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

Coffeescript

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

Javascript

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

XenAPI-jQuery - Usage

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

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

DEMO

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

XAC - SASS

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

SCSS

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

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

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

XAC - SASS

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

CSS

.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 = [
      App.Person.create({
        firstName: "Tom",
        lastName: "Dale"
      }),
      App.Person.create({
        firstName: "Yehuda",
        lastName: "Katz"
      })
    ];
    return people;
  }
});

XAC - Ember.js

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

<script type="text/x-handlebars" id="index">
 <h1>People</h1>
  <ul>
   {{#each model}}
    <li>Hello, <b>{{fullName}}</b>!</li>
   {{/each}}
  </ul>
</script>

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.

DEMO

Thesis

  • 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 (https://github.com/HPieters).