96
Argentina - Nov 12th 2010 Meta-models and Infrastructure for Smalltalk Omnipresent History Verónica Uquillas-Gómez Stéphane Ducasse Theo D’Hondt Andy Kellens, VUB Monday 29 November 2010

Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Argentina - Nov 12th 2010

Meta-models and Infrastructure for Smalltalk Omnipresent HistoryVerónica Uquillas-GómezStéphane DucasseTheo D’Hondt

Andy Kellens, VUB

Monday 29 November 2010

Page 2: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Source Code History Analysis

2

Monday 29 November 2010

Page 3: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Source Code History Analysis

✤ Linear history

2

Monday 29 November 2010

Page 4: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Source Code History Analysis

✤ Linear history

2

Pharo 0.x

Monday 29 November 2010

Page 5: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Source Code History Analysis

✤ Linear history

2

Pharo 0.xPharo 1.0

Monday 29 November 2010

Page 6: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Source Code History Analysis

✤ Linear history

2

Pharo 0.xPharo 1.0

Pharo 1.1

Monday 29 November 2010

Page 7: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Source Code History Analysis

✤ Linear history

2

Pharo 0.xPharo 1.0

Pharo 1.1Pharo 1.2

Monday 29 November 2010

Page 8: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Source Code History Analysis

✤ Linear history

✤ Cross history

2

Pharo 0.xPharo 1.0

Pharo 1.1Pharo 1.2

Monday 29 November 2010

Page 9: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Source Code History Analysis

✤ Linear history

✤ Cross history

2

Pharo 1.0

Squeak 3.7

Etoys 3.0

Etoys 4.0

Squeak 3.8

CroquetSqueak 3.9

Squeak 3.10 Cuis

Squeak 3.6

Closure

Relicensing

TextEditor

MessageTally

Closure

Unicode

Unicode fixes

Pharo 0.xPharo 1.0

Pharo 1.1Pharo 1.2

Monday 29 November 2010

Page 10: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Source Code History Analysis

✤ Linear history

✤ Cross history

2

Pharo 1.0

Squeak 3.7

Etoys 3.0

Etoys 4.0

Squeak 3.8

CroquetSqueak 3.9

Squeak 3.10 Cuis

Squeak 3.6

Closure

Relicensing

TextEditor

MessageTally

Closure

Unicode

Unicode fixes

Squeak

Pharo 0.xPharo 1.0

Pharo 1.1Pharo 1.2

Monday 29 November 2010

Page 11: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Source Code History Analysis

✤ Linear history

✤ Cross history

2

Pharo 1.0

Squeak 3.7

Etoys 3.0

Etoys 4.0

Squeak 3.8

CroquetSqueak 3.9

Squeak 3.10 Cuis

Squeak 3.6

Closure

Relicensing

TextEditor

MessageTally

Closure

Unicode

Unicode fixes

Squeak

Pharo

Pharo 0.xPharo 1.0

Pharo 1.1Pharo 1.2

Monday 29 November 2010

Page 12: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Querying the History of a System

3

Monday 29 November 2010

Page 13: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Querying the History of a System

3

Co-change analysis what are the entities that changed together with entity Number in version 3 ?

Queries as in the past

what were the senders of the method #asString in Squeak 3.9?

Queries as in the present

what are the messages sent by method #printOn: in version 2?

Bug spot was the method #printString regularly changed over the last 5 years?

Global analysis what is the whole history of method #detect:ifNone:?

Forks analysis if the version of method #isNil changed in Squeak 3.9, should it be changed in Pharo?

Comparison profiler what are the differences or similarities of running versions 4 and 5?

Monday 29 November 2010

Page 14: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Querying the History of a System

3

Co-change analysis what are the entities that changed together with entity Number in version 3 ?

Queries as in the past

what were the senders of the method #asString in Squeak 3.9?

Queries as in the present

what are the messages sent by method #printOn: in version 2?

Bug spot was the method #printString regularly changed over the last 5 years?

Global analysis what is the whole history of method #detect:ifNone:?

Forks analysis if the version of method #isNil changed in Squeak 3.9, should it be changed in Pharo?

Comparison profiler what are the differences or similarities of running versions 4 and 5?

Monday 29 November 2010

Page 15: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Querying the History of a System

3

Co-change analysis what are the entities that changed together with entity Number in version 3 ?

Queries as in the past

what were the senders of the method #asString in Squeak 3.9?

Queries as in the present

what are the messages sent by method #printOn: in version 2?

Bug spot was the method #printString regularly changed over the last 5 years?

Global analysis what is the whole history of method #detect:ifNone:?

Forks analysis if the version of method #isNil changed in Squeak 3.9, should it be changed in Pharo?

Comparison profiler what are the differences or similarities of running versions 4 and 5?

Monday 29 November 2010

Page 16: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Querying the History of a System

3

Co-change analysis what are the entities that changed together with entity Number in version 3 ?

Queries as in the past

what were the senders of the method #asString in Squeak 3.9?

Queries as in the present

what are the messages sent by method #printOn: in version 2?

Bug spot was the method #printString regularly changed over the last 5 years?

Global analysis what is the whole history of method #detect:ifNone:?

Forks analysis if the version of method #isNil changed in Squeak 3.9, should it be changed in Pharo?

Comparison profiler what are the differences or similarities of running versions 4 and 5?

Monday 29 November 2010

Page 17: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Querying the History of a System

3

Co-change analysis what are the entities that changed together with entity Number in version 3 ?

Queries as in the past

what were the senders of the method #asString in Squeak 3.9?

Queries as in the present

what are the messages sent by method #printOn: in version 2?

Bug spot was the method #printString regularly changed over the last 5 years?

Global analysis what is the whole history of method #detect:ifNone:?

Forks analysis if the version of method #isNil changed in Squeak 3.9, should it be changed in Pharo?

Comparison profiler what are the differences or similarities of running versions 4 and 5?

Monday 29 November 2010

Page 18: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Querying the History of a System

3

Co-change analysis what are the entities that changed together with entity Number in version 3 ?

Queries as in the past

what were the senders of the method #asString in Squeak 3.9?

Queries as in the present

what are the messages sent by method #printOn: in version 2?

Bug spot was the method #printString regularly changed over the last 5 years?

Global analysis what is the whole history of method #detect:ifNone:?

Forks analysis if the version of method #isNil changed in Squeak 3.9, should it be changed in Pharo?

Comparison profiler what are the differences or similarities of running versions 4 and 5?

Monday 29 November 2010

Page 19: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Querying the History of a System

3

Co-change analysis what are the entities that changed together with entity Number in version 3 ?

Queries as in the past

what were the senders of the method #asString in Squeak 3.9?

Queries as in the present

what are the messages sent by method #printOn: in version 2?

Bug spot was the method #printString regularly changed over the last 5 years?

Global analysis what is the whole history of method #detect:ifNone:?

Forks analysis if the version of method #isNil changed in Squeak 3.9, should it be changed in Pharo?

Comparison profiler what are the differences or similarities of running versions 4 and 5?

Monday 29 November 2010

Page 20: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

We need ...

4

Monday 29 November 2010

Page 21: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

We need ...

✤ History meta-model

4

Monday 29 November 2010

Page 22: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

We need ...

✤ History meta-model

✦ Linear history

4

Monday 29 November 2010

Page 23: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

We need ...

✤ History meta-model

✦ Linear history

✦ Cross history

4

Monday 29 November 2010

Page 24: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

We need ...

✤ History meta-model

✦ Linear history

✦ Cross history

✤ Infrastructure

4

Monday 29 November 2010

Page 25: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

We need ...

✤ History meta-model

✦ Linear history

✦ Cross history

✤ Infrastructure

✦ Store lot of data

4

Monday 29 November 2010

Page 26: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

We need ...

✤ History meta-model

✦ Linear history

✦ Cross history

✤ Infrastructure

✦ Store lot of data

✦ Efficient /Fast

4

Monday 29 November 2010

Page 27: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

We need ...

✤ History meta-model

✦ Linear history

✦ Cross history

✤ Infrastructure

✦ Store lot of data

✦ Efficient /Fast

✦ Accessible

4

Monday 29 November 2010

Page 28: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Multiple Meta-ModelsSmalltalk model RB source code model

MC source code model Tools source code model

5

Monday 29 November 2010

Page 29: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Multiple Meta-Models

localSelectors

Metaclass

selectorpragmas

CompiledMethod

instanceVariables

ClassDescription

Behavior

*

nameclassPoolsharedPoollocalSelectors

Class

Object

thisClass

methodDict contains

subclasses

methodClassselector category

MethodReference

methodReference

1

categoriesallMethodSelectors

ClassOrganizer

organization

1

subject1

superclass

1

*

classComment commentStamp

BasicClassOrganizer

methodClass

1

SystemDictionary

environment

1

SystemOrganizercategoryArray

Categorizercategory is managed by

namespace=

Smalltalk model RB source code model

MC source code model Tools source code model

5

Monday 29 November 2010

Page 30: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Multiple Meta-Models

localSelectors

Metaclass

selectorpragmas

CompiledMethod

instanceVariables

ClassDescription

Behavior

*

nameclassPoolsharedPoollocalSelectors

Class

Object

thisClass

methodDict contains

subclasses

methodClassselector category

MethodReference

methodReference

1

categoriesallMethodSelectors

ClassOrganizer

organization

1

subject1

superclass

1

*

classComment commentStamp

BasicClassOrganizer

methodClass

1

SystemDictionary

environment

1

SystemOrganizercategoryArray

Categorizercategory is managed by

namespace=

categorycommentclassVariableNamespoolVariableNames

RBClass

compiledMethodsourceselector

RBMethod

instanceVariableNames

RBAbstractClass

implementorssenders

RBNamespace

*newMethods

RBMetaclass

*removedMethods

1 class

*

newClasses

*

changedClasses

BrowserEnvironment1

environment

*

removedClassessuperclasses

subclasses

* *

model

1

theMetaClass

theNonMetaClass

Smalltalk model RB source code model

MC source code model Tools source code model

5

Monday 29 November 2010

Page 31: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Multiple Meta-Models

localSelectors

Metaclass

selectorpragmas

CompiledMethod

instanceVariables

ClassDescription

Behavior

*

nameclassPoolsharedPoollocalSelectors

Class

Object

thisClass

methodDict contains

subclasses

methodClassselector category

MethodReference

methodReference

1

categoriesallMethodSelectors

ClassOrganizer

organization

1

subject1

superclass

1

*

classComment commentStamp

BasicClassOrganizer

methodClass

1

SystemDictionary

environment

1

SystemOrganizercategoryArray

Categorizercategory is managed by

namespace=

categorycommentclassVariableNamespoolVariableNames

RBClass

compiledMethodsourceselector

RBMethod

instanceVariableNames

RBAbstractClass

implementorssenders

RBNamespace

*newMethods

RBMetaclass

*removedMethods

1 class

*

newClasses

*

changedClasses

BrowserEnvironment1

environment

*

removedClassessuperclasses

subclasses

* *

model

1

theMetaClass

theNonMetaClass

Smalltalk model RB source code model

MC source code modelidnamemessagedatetimeauthor

MCVersionInfo

MCDefinition

nameworkingCopy

MCPackage dependencieschangesworkingCopy

MCVersion

patchRelativeToBase:MCSnapshot

1

snapshot

definitions

info

*

snapshot

1package1

name

MCClassDefinition categories

MCOrganizationDefinition

selectorsourcecategory

MCMethodDefinition

name

MCVariableDefinition

variables

*

packageName

MCScriptDefinition

name

MCTraitDefinition

MCPostscriptDefinition

MCPreambleDefinitionMCInstaceVariable

DefinitionMCClassVariable

Definition

Tools source code model

5

Monday 29 November 2010

Page 32: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Multiple Meta-Models

localSelectors

Metaclass

selectorpragmas

CompiledMethod

instanceVariables

ClassDescription

Behavior

*

nameclassPoolsharedPoollocalSelectors

Class

Object

thisClass

methodDict contains

subclasses

methodClassselector category

MethodReference

methodReference

1

categoriesallMethodSelectors

ClassOrganizer

organization

1

subject1

superclass

1

*

classComment commentStamp

BasicClassOrganizer

methodClass

1

SystemDictionary

environment

1

SystemOrganizercategoryArray

Categorizercategory is managed by

namespace=

categorycommentclassVariableNamespoolVariableNames

RBClass

compiledMethodsourceselector

RBMethod

instanceVariableNames

RBAbstractClass

implementorssenders

RBNamespace

*newMethods

RBMetaclass

*removedMethods

1 class

*

newClasses

*

changedClasses

BrowserEnvironment1

environment

*

removedClassessuperclasses

subclasses

* *

model

1

theMetaClass

theNonMetaClass

Smalltalk model RB source code model

MC source code modelidnamemessagedatetimeauthor

MCVersionInfo

MCDefinition

nameworkingCopy

MCPackage dependencieschangesworkingCopy

MCVersion

patchRelativeToBase:MCSnapshot

1

snapshot

definitions

info

*

snapshot

1package1

name

MCClassDefinition categories

MCOrganizationDefinition

selectorsourcecategory

MCMethodDefinition

name

MCVariableDefinition

variables

*

packageName

MCScriptDefinition

name

MCTraitDefinition

MCPostscriptDefinition

MCPreambleDefinitionMCInstaceVariable

DefinitionMCClassVariable

Definition

Class

Method

Attribute

Access

Inheritance

Package

Namespace

*

parentType

*

parentType

containerparentPackage

superclass

subclass

* *

Invocationsender

candidates

*

accessor

*

variable

*

*

*

*

Reference

*source

* target

*

Tools source code model

5

Monday 29 November 2010

Page 33: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Multiple Meta-Models

localSelectors

Metaclass

selectorpragmas

CompiledMethod

instanceVariables

ClassDescription

Behavior

*

nameclassPoolsharedPoollocalSelectors

Class

Object

thisClass

methodDict contains

subclasses

methodClassselector category

MethodReference

methodReference

1

categoriesallMethodSelectors

ClassOrganizer

organization

1

subject1

superclass

1

*

classComment commentStamp

BasicClassOrganizer

methodClass

1

SystemDictionary

environment

1

SystemOrganizercategoryArray

Categorizercategory is managed by

namespace=

categorycommentclassVariableNamespoolVariableNames

RBClass

compiledMethodsourceselector

RBMethod

instanceVariableNames

RBAbstractClass

implementorssenders

RBNamespace

*newMethods

RBMetaclass

*removedMethods

1 class

*

newClasses

*

changedClasses

BrowserEnvironment1

environment

*

removedClassessuperclasses

subclasses

* *

model

1

theMetaClass

theNonMetaClass

Smalltalk model RB source code model

MC source code modelidnamemessagedatetimeauthor

MCVersionInfo

MCDefinition

nameworkingCopy

MCPackage dependencieschangesworkingCopy

MCVersion

patchRelativeToBase:MCSnapshot

1

snapshot

definitions

info

*

snapshot

1package1

name

MCClassDefinition categories

MCOrganizationDefinition

selectorsourcecategory

MCMethodDefinition

name

MCVariableDefinition

variables

*

packageName

MCScriptDefinition

name

MCTraitDefinition

MCPostscriptDefinition

MCPreambleDefinitionMCInstaceVariable

DefinitionMCClassVariable

Definition

Class

Method

Attribute

Access

Inheritance

Package

Namespace

*

parentType

*

parentType

containerparentPackage

superclass

subclass

* *

Invocationsender

candidates

*

accessor

*

variable

*

*

*

*

Reference

*source

* target

*

Tools source code model

Class

Method

Attribute

Access

Inheritance

Package

Namespace

*

parentType

*

parentType

containerparentPackage

superclass

subclass

* *

Invocationsender

candidates

*

accessor

*

variable

*

*

*

*

Reference

*source

* target

*

5

Monday 29 November 2010

Page 34: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Multiple Meta-Models

localSelectors

Metaclass

selectorpragmas

CompiledMethod

instanceVariables

ClassDescription

Behavior

*

nameclassPoolsharedPoollocalSelectors

Class

Object

thisClass

methodDict contains

subclasses

methodClassselector category

MethodReference

methodReference

1

categoriesallMethodSelectors

ClassOrganizer

organization

1

subject1

superclass

1

*

classComment commentStamp

BasicClassOrganizer

methodClass

1

SystemDictionary

environment

1

SystemOrganizercategoryArray

Categorizercategory is managed by

namespace=

categorycommentclassVariableNamespoolVariableNames

RBClass

compiledMethodsourceselector

RBMethod

instanceVariableNames

RBAbstractClass

implementorssenders

RBNamespace

*newMethods

RBMetaclass

*removedMethods

1 class

*

newClasses

*

changedClasses

BrowserEnvironment1

environment

*

removedClassessuperclasses

subclasses

* *

model

1

theMetaClass

theNonMetaClass

Smalltalk model RB source code model

MC source code modelidnamemessagedatetimeauthor

MCVersionInfo

MCDefinition

nameworkingCopy

MCPackage dependencieschangesworkingCopy

MCVersion

patchRelativeToBase:MCSnapshot

1

snapshot

definitions

info

*

snapshot

1package1

name

MCClassDefinition categories

MCOrganizationDefinition

selectorsourcecategory

MCMethodDefinition

name

MCVariableDefinition

variables

*

packageName

MCScriptDefinition

name

MCTraitDefinition

MCPostscriptDefinition

MCPreambleDefinitionMCInstaceVariable

DefinitionMCClassVariable

Definition

Class

Method

Attribute

Access

Inheritance

Package

Namespace

*

parentType

*

parentType

containerparentPackage

superclass

subclass

* *

Invocationsender

candidates

*

accessor

*

variable

*

*

*

*

Reference

*source

* target

*

Tools source code model

Class

Method

Attribute

Access

Inheritance

Package

Namespace

*

parentType

*

parentType

containerparentPackage

superclass

subclass

* *

Invocationsender

candidates

*

accessor

*

variable

*

*

*

*

Reference

*source

* target

*

Class

Method

Attribute

Access

Inheritance

Package

Namespace

*

parentType

*

parentType

containerparentPackage

superclass

subclass

* *

Invocationsender

candidates

*

accessor

*

variable

*

*

*

*

Reference

*source

* target

*

5

Monday 29 November 2010

Page 35: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Multiple Meta-Models

localSelectors

Metaclass

selectorpragmas

CompiledMethod

instanceVariables

ClassDescription

Behavior

*

nameclassPoolsharedPoollocalSelectors

Class

Object

thisClass

methodDict contains

subclasses

methodClassselector category

MethodReference

methodReference

1

categoriesallMethodSelectors

ClassOrganizer

organization

1

subject1

superclass

1

*

classComment commentStamp

BasicClassOrganizer

methodClass

1

SystemDictionary

environment

1

SystemOrganizercategoryArray

Categorizercategory is managed by

namespace=

categorycommentclassVariableNamespoolVariableNames

RBClass

compiledMethodsourceselector

RBMethod

instanceVariableNames

RBAbstractClass

implementorssenders

RBNamespace

*newMethods

RBMetaclass

*removedMethods

1 class

*

newClasses

*

changedClasses

BrowserEnvironment1

environment

*

removedClassessuperclasses

subclasses

* *

model

1

theMetaClass

theNonMetaClass

Smalltalk model RB source code model

MC source code modelidnamemessagedatetimeauthor

MCVersionInfo

MCDefinition

nameworkingCopy

MCPackage dependencieschangesworkingCopy

MCVersion

patchRelativeToBase:MCSnapshot

1

snapshot

definitions

info

*

snapshot

1package1

name

MCClassDefinition categories

MCOrganizationDefinition

selectorsourcecategory

MCMethodDefinition

name

MCVariableDefinition

variables

*

packageName

MCScriptDefinition

name

MCTraitDefinition

MCPostscriptDefinition

MCPreambleDefinitionMCInstaceVariable

DefinitionMCClassVariable

Definition

Class

Method

Attribute

Access

Inheritance

Package

Namespace

*

parentType

*

parentType

containerparentPackage

superclass

subclass

* *

Invocationsender

candidates

*

accessor

*

variable

*

*

*

*

Reference

*source

* target

*

Tools source code model

Class

Method

Attribute

Access

Inheritance

Package

Namespace

*

parentType

*

parentType

containerparentPackage

superclass

subclass

* *

Invocationsender

candidates

*

accessor

*

variable

*

*

*

*

Reference

*source

* target

*

Class

Method

Attribute

Access

Inheritance

Package

Namespace

*

parentType

*

parentType

containerparentPackage

superclass

subclass

* *

Invocationsender

candidates

*

accessor

*

variable

*

*

*

*

Reference

*source

* target

*

Class

Method

Attribute

Access

Inheritance

Package

Namespace

*

parentType

*

parentType

containerparentPackage

superclass

subclass

* *

Invocationsender

candidates

*

accessor

*

variable

*

*

*

*

Reference

*source

* target

*

5

Monday 29 November 2010

Page 36: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Multiple Meta-Models

localSelectors

Metaclass

selectorpragmas

CompiledMethod

instanceVariables

ClassDescription

Behavior

*

nameclassPoolsharedPoollocalSelectors

Class

Object

thisClass

methodDict contains

subclasses

methodClassselector category

MethodReference

methodReference

1

categoriesallMethodSelectors

ClassOrganizer

organization

1

subject1

superclass

1

*

classComment commentStamp

BasicClassOrganizer

methodClass

1

SystemDictionary

environment

1

SystemOrganizercategoryArray

Categorizercategory is managed by

namespace=

categorycommentclassVariableNamespoolVariableNames

RBClass

compiledMethodsourceselector

RBMethod

instanceVariableNames

RBAbstractClass

implementorssenders

RBNamespace

*newMethods

RBMetaclass

*removedMethods

1 class

*

newClasses

*

changedClasses

BrowserEnvironment1

environment

*

removedClassessuperclasses

subclasses

* *

model

1

theMetaClass

theNonMetaClass

Smalltalk model RB source code model

MC source code modelidnamemessagedatetimeauthor

MCVersionInfo

MCDefinition

nameworkingCopy

MCPackage dependencieschangesworkingCopy

MCVersion

patchRelativeToBase:MCSnapshot

1

snapshot

definitions

info

*

snapshot

1package1

name

MCClassDefinition categories

MCOrganizationDefinition

selectorsourcecategory

MCMethodDefinition

name

MCVariableDefinition

variables

*

packageName

MCScriptDefinition

name

MCTraitDefinition

MCPostscriptDefinition

MCPreambleDefinitionMCInstaceVariable

DefinitionMCClassVariable

Definition

Class

Method

Attribute

Access

Inheritance

Package

Namespace

*

parentType

*

parentType

containerparentPackage

superclass

subclass

* *

Invocationsender

candidates

*

accessor

*

variable

*

*

*

*

Reference

*source

* target

*

Tools source code model

Class

Method

Attribute

Access

Inheritance

Package

Namespace

*

parentType

*

parentType

containerparentPackage

superclass

subclass

* *

Invocationsender

candidates

*

accessor

*

variable

*

*

*

*

Reference

*source

* target

*

Class

Method

Attribute

Access

Inheritance

Package

Namespace

*

parentType

*

parentType

containerparentPackage

superclass

subclass

* *

Invocationsender

candidates

*

accessor

*

variable

*

*

*

*

Reference

*source

* target

*

Class

Method

Attribute

Access

Inheritance

Package

Namespace

*

parentType

*

parentType

containerparentPackage

superclass

subclass

* *

Invocationsender

candidates

*

accessor

*

variable

*

*

*

*

Reference

*source

* target

*

5

How easy is ... interacting,

maintaining, synchronizing?

Monday 29 November 2010

Page 37: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Meta-Models Plague

6

Monday 29 November 2010

Page 38: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Meta-Models Plague

✤ Multiple models API

6

Monday 29 November 2010

Page 39: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Meta-Models Plague

✤ Multiple models API

6

Monday 29 November 2010

Page 40: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Meta-Models Plague

✤ Multiple models API

✦ conversion or transformation

6

Monday 29 November 2010

Page 41: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Meta-Models Plague

✤ Multiple models API

✦ conversion or transformation

✦ duplication of data, tests

6

Monday 29 November 2010

Page 42: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Meta-Models Plague

✤ Multiple models API

✦ conversion or transformation

✦ duplication of data, tests

✦ more maintenance tasks

6

Monday 29 November 2010

Page 43: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Meta-Models Plague

✤ Multiple models API

✦ conversion or transformation

✦ duplication of data, tests

✦ more maintenance tasks

6

Mass duplic

ation of e

fforts

/tasks

Monday 29 November 2010

Page 44: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Versioning Systems vs. Source Code Meta-Model

7

Monday 29 November 2010

Page 45: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Versioning Systems vs. Source Code Meta-Model

GIT MC SVN

Versioning System

7

Monday 29 November 2010

Page 46: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Versioning Systems vs. Source Code Meta-Model

GIT MC SVN

Versioning System

Source Code Meta-Model

localSelectors

Metaclass

selectorpragmas

CompiledMethod

instanceVariables

ClassDescription

Behavior

*

nameclassPoolsharedPoollocalSelectors

Class

Object

thisClass

methodDict contains

subclasses

methodClassselector category

MethodReference

methodReference

1

categoriesallMethodSelectors

ClassOrganizer

organization

1

subject1

superclass

1

*

classComment commentStamp

BasicClassOrganizer

methodClass

1

SystemDictionary

environment

1

SystemOrganizercategoryArray

Categorizercategory is managed by

namespace=

7

Monday 29 November 2010

Page 47: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Versioning Systems vs. Source Code Meta-Model

GIT MC SVN

Versioning System

Source Code Meta-Model

localSelectors

Metaclass

selectorpragmas

CompiledMethod

instanceVariables

ClassDescription

Behavior

*

nameclassPoolsharedPoollocalSelectors

Class

Object

thisClass

methodDict contains

subclasses

methodClassselector category

MethodReference

methodReference

1

categoriesallMethodSelectors

ClassOrganizer

organization

1

subject1

superclass

1

*

classComment commentStamp

BasicClassOrganizer

methodClass

1

SystemDictionary

environment

1

SystemOrganizercategoryArray

Categorizercategory is managed by

namespace=

7

Monday 29 November 2010

Page 48: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Versioning Systems vs. Source Code Meta-Model

GIT MC SVN

Versioning System

Source Code Meta-Model

✤ algorithm✤ changes✤ versions

localSelectors

Metaclass

selectorpragmas

CompiledMethod

instanceVariables

ClassDescription

Behavior

*

nameclassPoolsharedPoollocalSelectors

Class

Object

thisClass

methodDict contains

subclasses

methodClassselector category

MethodReference

methodReference

1

categoriesallMethodSelectors

ClassOrganizer

organization

1

subject1

superclass

1

*

classComment commentStamp

BasicClassOrganizer

methodClass

1

SystemDictionary

environment

1

SystemOrganizercategoryArray

Categorizercategory is managed by

namespace=

7

Monday 29 November 2010

Page 49: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Versioning Systems vs. Source Code Meta-Model

GIT MC SVN

Versioning System

Source Code Meta-Model

✤ algorithm✤ changes✤ versions

localSelectors

Metaclass

selectorpragmas

CompiledMethod

instanceVariables

ClassDescription

Behavior

*

nameclassPoolsharedPoollocalSelectors

Class

Object

thisClass

methodDict contains

subclasses

methodClassselector category

MethodReference

methodReference

1

categoriesallMethodSelectors

ClassOrganizer

organization

1

subject1

superclass

1

*

classComment commentStamp

BasicClassOrganizer

methodClass

1

SystemDictionary

environment

1

SystemOrganizercategoryArray

Categorizercategory is managed by

namespace=

7

Monday 29 November 2010

Page 50: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Versioning Systems vs. Source Code Meta-Model

GIT MC SVN

Versioning System

Source Code Meta-Model

✤ algorithm✤ changes✤ versions

localSelectors

Metaclass

selectorpragmas

CompiledMethod

instanceVariables

ClassDescription

Behavior

*

nameclassPoolsharedPoollocalSelectors

Class

Object

thisClass

methodDict contains

subclasses

methodClassselector category

MethodReference

methodReference

1

categoriesallMethodSelectors

ClassOrganizer

organization

1

subject1

superclass

1

*

classComment commentStamp

BasicClassOrganizer

methodClass

1

SystemDictionary

environment

1

SystemOrganizercategoryArray

Categorizercategory is managed by

namespace=

7

Monday 29 November 2010

Page 51: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Requirements for Source Code and History Modeling

8

Monday 29 November 2010

Page 52: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Requirements for Source Code and History Modeling

✤ No duplication of meta-models

8

Monday 29 November 2010

Page 53: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Requirements for Source Code and History Modeling

✤ No duplication of meta-models

✤ Model update as cheap as possible

8

Monday 29 November 2010

Page 54: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Requirements for Source Code and History Modeling

✤ No duplication of meta-models

✤ Model update as cheap as possible

✤ Tool reusability relying on common APIs

8

Monday 29 November 2010

Page 55: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Unifying and Foundational Model Infrastructure

9

Monday 29 November 2010

Page 56: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Unifying and Foundational Model Infrastructure

9

Monday 29 November 2010

Page 57: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Unifying and Foundational Model Infrastructure

✤ Provide a common API (structural & runtime level)

9

Monday 29 November 2010

Page 58: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Unifying and Foundational Model Infrastructure

✤ Provide a common API (structural & runtime level)

✤ Allow tools to interact and integrate directly with the host environment

9

Monday 29 November 2010

Page 59: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Unifying and Foundational Model Infrastructure

✤ Provide a common API (structural & runtime level)

✤ Allow tools to interact and integrate directly with the host environment

✤ Become the foundational model in

9

Monday 29 November 2010

Page 60: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Unifying and Foundational Model Infrastructure

✤ Provide a common API (structural & runtime level)

✤ Allow tools to interact and integrate directly with the host environment

✤ Become the foundational model in

✤ Support history analysis

9

Monday 29 November 2010

Page 61: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Unifying and Foundational Model Infrastructure

✤ Provide a common API (structural & runtime level)

✤ Allow tools to interact and integrate directly with the host environment

✤ Become the foundational model in

✤ Support history analysis

9

Monday 29 November 2010

Page 62: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Ring Overview

10

Monday 29 November 2010

Page 63: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Ring Overview

10

Structural Model

Monday 29 November 2010

Page 64: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Ring Overview

10

Structural Model

Runtime Model

runtime API

structural API

Monday 29 November 2010

Page 65: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Ring Overview

10

Structural Model

Runtime Model

runtime API

structural API

ChangeModel

Monday 29 November 2010

Page 66: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Ring Overview

10

Structural Model

Runtime Model

runtime API

structural API

RB Source Model

ChangeModel

Monday 29 November 2010

Page 67: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Ring Overview

10

Structural Model

Runtime Model

runtime API

structural API

RB Source Model

VersioningModel

ChangeModel

Monday 29 November 2010

Page 68: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Ring Overview

10

Structural Model

Runtime Model

runtime API

structural API

RB Source Model

VersioningModel

MergingModel

ChangeModel

Monday 29 November 2010

Page 69: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Ring Overview

10

Structural Model

Runtime Model

runtime API

structural API

RB Source Model

VersioningModel

MergingModel

ChangeModel

ToolsToolsTools

Monday 29 November 2010

Page 70: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

The Onion Structure of the Ring

11

Monday 29 November 2010

Page 71: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

The Onion Structure of the Ring

11

Definition

ClassDefinition

MethodDefinition

Core Source Model

CommentDefinition

Properties

Monday 29 November 2010

Page 72: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

The Onion Structure of the Ring

11

Definition

ClassDefinition

MethodDefinition

Core Source Model

CommentDefinition

Properties

Runtime Model

Monday 29 November 2010

Page 73: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

The Onion Structure of the Ring

11

Definition

ClassDefinition

MethodDefinition

Core Source Model

CommentDefinition

Properties

Runtime Model

Basic ToolsBasic Tools

Basic Tools

Monday 29 November 2010

Page 74: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

The Onion Structure of the Ring

11

Definition

ClassDefinition

MethodDefinition

Core Source Model

CommentDefinition

Properties

Runtime Model

Basic ToolsBasic Tools

Basic Tools

PackageDefinition

RB Source ModelVariableDefinition

Monday 29 November 2010

Page 75: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

The Onion Structure of the Ring

11

Definition

ClassDefinition

MethodDefinition

Core Source Model

CommentDefinition

Properties

Runtime Model

Basic ToolsBasic Tools

Basic Tools

PackageDefinition

RB Source ModelVariableDefinition

RB Source Model

Monday 29 November 2010

Page 76: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

The Onion Structure of the Ring

11

Definition

ClassDefinition

MethodDefinition

Core Source Model

CommentDefinition

Properties

ScriptDefinition

Versioning Source ModelPoolDictionaryDefinition

Version

Runtime Model

Basic ToolsBasic Tools

Basic Tools

PackageDefinition

RB Source ModelVariableDefinition

RB Source Model

Monday 29 November 2010

Page 77: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

The Onion Structure of the Ring

11

Definition

ClassDefinition

MethodDefinition

Core Source Model

CommentDefinition

Properties

ScriptDefinition

Versioning Source ModelPoolDictionaryDefinition

Version

Runtime Model

Basic ToolsBasic Tools

Basic Tools

PackageDefinition

RB Source ModelVariableDefinition

MergingModel

RB Source Model

Monday 29 November 2010

Page 78: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Full off line analysis Source Model...

The Onion Structure of the Ring

11

Definition

ClassDefinition

MethodDefinition

Core Source Model

CommentDefinition

Properties

ScriptDefinition

Versioning Source ModelPoolDictionaryDefinition

Version

Runtime Model

Basic ToolsBasic Tools

Basic Tools

PackageDefinition

RB Source ModelVariableDefinition

MergingModel

RB Source Model

Monday 29 November 2010

Page 79: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Full off line analysis Source Model...

The Onion Structure of the Ring

11

Definition

ClassDefinition

MethodDefinition

Core Source Model

CommentDefinition

Properties

ScriptDefinition

Versioning Source ModelPoolDictionaryDefinition

Version

Runtime Model

Basic ToolsBasic Tools

Basic Tools

PackageDefinition

RB Source ModelVariableDefinition

MergingModel

ChangeModel

RB Source Model

Monday 29 November 2010

Page 80: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Full off line analysis Source Model...

The Onion Structure of the Ring

11

Definition

ClassDefinition

MethodDefinition

Core Source Model

CommentDefinition

Properties

ScriptDefinition

Versioning Source ModelPoolDictionaryDefinition

Version

Runtime Model

Basic ToolsBasic Tools

Basic Tools

PackageDefinition

RB Source ModelVariableDefinition

MergingModel

ChangeModel

RB Source Model

HistoryModel

Monday 29 November 2010

Page 81: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Open Questions

12

Monday 29 November 2010

Page 82: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Open Questions

✤ Expensive queries

12

Monday 29 November 2010

Page 83: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Open Questions

✤ Expensive queries

✤ Version ids

12

Monday 29 November 2010

Page 84: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Open Questions

✤ Expensive queries

✤ Version ids

✤ Annotations

12

Monday 29 November 2010

Page 85: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Open Questions

✤ Expensive queries

✤ Version ids

✤ Annotations

✤ Meta-model vs. Database schema

12

Monday 29 November 2010

Page 86: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Open Questions

✤ Expensive queries

✤ Version ids

✤ Annotations

✤ Meta-model vs. Database schema

✤ Core code model API

12

Monday 29 November 2010

Page 87: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Open Questions

✤ Expensive queries

✤ Version ids

✤ Annotations

✤ Meta-model vs. Database schema

✤ Core code model API

✤ Meta-models extensibility

12

Monday 29 November 2010

Page 88: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Open Questions

✤ Expensive queries

✤ Version ids

✤ Annotations

✤ Meta-model vs. Database schema

✤ Core code model API

✤ Meta-models extensibility

✤ Unifying models12

Monday 29 November 2010

Page 89: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Summary

13

Monday 29 November 2010

Page 90: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Summary✤ Goal:

✦ perform linear and cross history analysis

13

Monday 29 November 2010

Page 91: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Summary✤ Goal:

✦ perform linear and cross history analysis

✤ Problem:

✦ unsuitable infrastructure for querying the history

✦ several meta-models overlapping & non-polymorphic APIs

13

Monday 29 November 2010

Page 92: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Summary✤ Goal:

✦ perform linear and cross history analysis

✤ Problem:

✦ unsuitable infrastructure for querying the history

✦ several meta-models overlapping & non-polymorphic APIs

✤ Proposal:

✦ unifying and foundational model infrastructure, Ring

13

Monday 29 November 2010

Page 93: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Summary✤ Goal:

✦ perform linear and cross history analysis

✤ Problem:

✦ unsuitable infrastructure for querying the history

✦ several meta-models overlapping & non-polymorphic APIs

✤ Proposal:

✦ unifying and foundational model infrastructure, Ring

✤ Current work:

✦ implementation of the Ring

13

Monday 29 November 2010

Page 94: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Argentina - Nov 12th 2010

Meta-models and Infrastructure for Smalltalk Omnipresent History

Verónica Uquillas-Gómez, [email protected]

Monday 29 November 2010

Page 95: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Argentina - Nov 12th 2010

Meta-models and Infrastructure for Smalltalk Omnipresent History

Verónica Uquillas-Gómez, [email protected]

Monday 29 November 2010

Page 96: Meta-models and Infrastructure for Smalltalk Omnipresent History … · Etoys 3.0 Etoys 4.0 Squeak 3.8 Croquet Squeak 3.9 Squeak 3.10 Cuis Squeak 3.6 Closure Relicensing TextEditor

Argentina - Nov 12th 2010

Meta-models and Infrastructure for Smalltalk Omnipresent History

Verónica Uquillas-Gómez, [email protected]

Monday 29 November 2010