SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and...

171
How worth is an end-user? http://stephane.ducasse.free.fr Platforms and Research: The case of Pharo and Moose

Transcript of SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and...

Page 1: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

How worth is an end-user?

http://stephane.ducasse.free.fr

Platforms and Research: The case of Pharo and Moose

����

Page 2: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Me in a Nutshell• Inria Directeur de recherche • Head of RMOD team (7 permanents, 20 people) • 4 years scientific advisors of Inria Lille (300 people) • 10 years Prof. in Software composition Group • Wrote several open-source books • Wrote many articles (h-index 47 - ~ 10000 citations) • Leading the Pharo community http://www.pharo.org • Co-funder of http://www.synectique.eu

Page 3: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose
Page 4: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

A kind of strange roadmap

• A thought about (bio) diversity

• Some questions about value

• Two Platforms

• Some Research @ RMOD

Page 5: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose
Page 6: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

In biology diversity is a measure of ecosystem wealth

Page 7: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Endemic adjective, Also, endemical 1. natural to or characteristic of a specific people or place; native; indigenous

Page 8: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

An endemic species is one whose habitat is restricted to a particular area.

An endemic species is one whose habitat is restricted to a particular area.

Page 9: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

In biology diversity is a measure of

ecosystem quality (wealth)Socrota Island

Page 10: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

As of 1990, Socrota counted 700 endemic species

Page 11: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

As of 1999, England counted 47 floral endemic

species

Page 12: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Which one would you keep and preserve?

Page 13: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Even without a french perspective … we would

preserve Socrota :)

Page 14: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Why we do not value diversity in CS research?

Page 15: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Why should we all follow the trend to be relevant?

Page 16: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

In 2002 I taught JavaScript !

but I was not cool

Page 17: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

In 2014 I do not teach JavaScript

but I’m still not cool ;)

Page 18: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Back in 1998, Java was such a dogma that we (W.De Meuter, T. D’Hondt and

Ole Madsen) created of the “OO Language engineering in Post

Java-Area” Int. Workshop

Page 19: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose
Page 20: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

How did we succeed to escape from Cobol?

Page 21: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

How can we influence that the next language will exhibit

different properties if we do not explore different approaches?

Page 22: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

“your approach is interesting but it does not apply to Java” !

Page 23: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

“your approach is interesting but it does not apply to Java” !

luckily

Page 24: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

“your approach is interesting but it does not apply to Java” !

luckily but often wrong statement,of course :)

Page 25: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose
Page 26: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

When we evaluate other researchers…

Page 27: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

We count…

Page 28: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Papers

Page 29: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose
Page 30: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Papers

Page 31: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose
Page 32: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Papers

Page 33: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose
Page 34: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

ah yes also !

PC participation and keynotes :)

Page 35: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

also **boring** no impact editorial board and admin tasks

Page 36: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

This is cannot be the only measures

Page 37: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose
Page 38: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

How many papers is worth one user?

Page 39: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

(Not one of our students! Just a real end user)

Page 40: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

How many papers is worth one real user?

Page 41: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

How many papers is worth a book for normal

people?

Page 42: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Normal people do not refer to your work (they

use it) - no citation carrot

Page 43: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

(Designing this keynote I had a thought about

DrScheme/Racket guys! I value your work, guys!)

Page 44: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

How many papers is worth a startup?

Page 45: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

I just have the questions you have the answer

:)

Page 46: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Stop ranting! Now the fun

Page 47: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

����

Page 48: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Non-permanent staff

• 1-2 Engineers

• 5-7 PhDs

• 1-2 PostDocs

• 3-5 interns

Created in 2009Permanent staff

• S. Ducasse, DR2 INRIA• D. Pollet, MCF Lille• N. Anquetil, MCF Lille• M. Denker, CR1 INRIA• D. Cassou, MCF Lille• A. Etien, MCF Lille

48

We are hiring!

Page 49: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Objectives

• Objective 1: Reengineering

How to maintain/evolve large software systems?

• Objective 2: Supporting evolution and isolation

Revisiting fundamental aspects of OO languages

• Objective 3: Ecosystem around Pharo

Platform used to create wealth and innovation

49

Page 50: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Synergy

Languages & IDEReengineering

50

Page 51: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Synergy

Languages & IDEReengineering

51

• 500 KLoC• 5000 classes

• 230 KLoC• 2400 classes

Page 52: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Synergy

Languages & IDEReengineering

52

Pharo 4.0 released last April• 1700 issues closed• replacement of 3 core tools• 1st-class instance variables (slots)• new GUI framework (Glamour)• …

Moose 5.1

Page 53: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Languages & IDEReengineering

53

Synergy

Page 54: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Synergy

27universities

15researchgroups

50 companies

Languages & IDEReengineering

54

Page 55: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Synergy

27universities

15researchgroups

50 companies

Languages & IDEReengineering

55

Page 56: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Synergy

27universities

15researchgroups

50 companies

Languages & IDE

56

• 77 contributors to Pharo 4.0• 215 license agreements• 70 association members• 13 industrial consortium members

Page 57: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Synergy

23universities

13researchgroups

50 companies

Languages & IDEReengineering

57

Page 58: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Synergy

23universities

13researchgroups

50 companies

Languages & IDEReengineering

58

Page 59: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Synergy

23universities

13researchgroups

50 companies

Languages & IDEReengineering

59

Page 60: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Synergy

23universities

13researchgroups

50 companies

Languages & IDEReengineering

60

Page 61: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Pharo?

Page 62: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Pharo!http://www.pharo.org System: Pure object language + full IDE Inspired by Smalltalk - fork in 2008 of Squeak Powerful, elegant and fun to program Great community Living system under your fingers

Page 63: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Elegant!

• Full syntax on a postcard

• Simple but powerful object model

Page 64: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Complete Syntax on a Postcard

Page 65: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Object Model• Dynamically typed

• **Everything** is an instance of a class

• All methods are public and virtual

• Attributes are protected

• Single Inheritance

Page 66: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Immersive?

Page 67: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Immersive!

• Deep contact with objects

• Highly interactive programming sessions

• Reflective, inspectable

Page 68: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

http://youtu.be/CuimMwuZiGA

Page 69: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Any object can be lively updated 3D Network connection Dynamic web applications GPU Code

Page 70: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Learning from the system…

Page 71: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Click on it :) Cmd+shift+option

• Cmd-Shift+option

Page 72: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

*give* examples and get the methods that works!

Page 73: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

A system to learn advanced oo design

Page 74: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

How to implement not?

• false not -> true

• true not -> false

Page 75: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Let the receiver decide!

Page 76: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Not implementation!

False>>not ^true

!

True>>not ^false

Page 77: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Check in the system

Page 78: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Message sends act as case statements

Page 79: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

OOP: the Art of Dispatching

Operation1Operation2

AttributeAttribute

Fat ClassClass

OperationA

OperationB'

OperationC'

OperationAttribute

BOperation

C

Vs.

Page 80: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Pharo’s vision

Page 81: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

A powerful engine to invent (y)our future

Page 82: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

An ecosystem where innovation/business bloom

Page 83: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

• Uni. of Buenos Aires • Uni. of Bern • Uni. of Maroua • Uni. of Brussels • Ecole des Mines de Douai • Uni. de Savoie • Ivan Franko Nat. Uni. of Lviv • Czech Technical Uni. • CULS Prague• Uni. of Quilmes • Uni. of La Plata • Northern Michigan Uni. • Uni. Technologica Nacional (UTN) • Uni. Catholic of Argentina • Uni. of Santiago • Uni. Policnica de Catalunya • Uni. de Bretagne Occidentale • Uni. of Tomsk • Uni. of Fernhagen • IT University of Copenhagen • Uni. Cat del Sacro Cuore of Brescia • Uni. Lyon • Uni. Yaounde

Pharo's Teachers

Page 84: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Lafhis (AR)Software Composition Group (CH)CAR (FR)RMOD (FR) Ummisco (IRD) Reveal (CH) Lysic (FR)CEA-List (FR)

Research GroupsUqbar (AR) OC (FR) CCMI-FIT (CZ) ASERG (BR) Pleiad (CL)

Page 85: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

www.2denker.de www.airflowing.com

www.beta9.be www.bombardier.com

www.cmsbox.com www.finworks.biz

seaside.gemstone.com www.inceptive.be www.majcon.de

www.mindclue.ch www.miriamtech.com

www.netstyle.ch www.panasoft.com www.pinesoft.co.uk

www.promedmedical.net

www.sharedlogic.ca www.smallworks.com.ar

www.trantaria.com www.yesplan.be

www.synectique.eu www.sorabito.com

www.objectprofile.com www.pharocloud.com debrispublishing.com

spesenfuchs.de norizzk.com

!

Some Companies

Page 86: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Pharo Web Stack is Gorgeous

• Seaside (component, Javascript, REST)

• Zinc (HTTP, HTTPS, REST)

• Magritte Metamodelling (no form)

• Protocols/Encoding: Oauth, JSON, STON,…

• Database: noSql, mongoDB, riak, relational databases

Page 87: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Some Success Stories

Page 88: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

iBizLog - http://www.ibizlog.com

A product by SmallworksTuesday, May 15, 12

Full meta shop developed in 5

months one person

Page 89: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Developed by one developer in three months (Java team estimated

2 yearsSold to another bank

Page 90: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Works on linux, mac, windows, android, OLPC

Page 91: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Pharo is our vehicule

Page 92: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

**every** single day we improve it

Page 93: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Pharo is YOURS you can learn and

help

Page 94: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

we feel responsible

Page 95: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Industrial Consortium

http://consortium.pharo.org

• Promote Pharo

• Sustain Pharo development

• Provide trustable visibility

• Provide support

Page 96: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose
Page 97: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Pharo is an Enabler

“One of the things that drew me to do the Delay refactoring, is simply that I could. That is, I was amazed that I could dig so deep so easily, see a path to improvement and effect change at a fundamental level. … That sense of mastery is seductive.” Ben Coman

Page 98: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Enabler: Turtles all the way

A. Bryant developed Seaside in Pharo’s ancestor (he knew ruby, python, scheme, C, objective-C,…).

Because he could manipulate the stack behind the back of developers. Seaside (http://www.seaside.st) is based on on-demand stack reification.

Page 99: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Fun, simple Excellent for teaching Pure & elegant Highly productive Empowering Tools Full access

!

http://pharo.org

Page 100: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Moose

SCGGlamorous Team

Roassal ObjectProfile

A community work

����

Moose is a platform for software and data analysis. It helps programmers craft custom analyses cheaply.

http://moosetechnology.org

Page 101: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Software is

Complex

Page 102: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Software is a living entity...• Early decisions were certainly good at that

time

• But the context changes

• Customers change

• Technology changes

• People change

Page 103: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

We only maintain useful successful software

Page 104: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Maintenance is continuous Development

Between 50% and 90% of global effort is spent on “maintenance” !

18% Corrective (fixing reported errors)

18% Adaptive (new platforms or OS)

60% Perfective (new functionality)

4% Other

“Maintenance”

Page 105: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

50% of development time is lost trying to understand code !

We lose a lot of time with inappropriate and ineffective practices

Between 50% and 80% of the overall cost is spent in the

evolution

Page 106: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

RMODRMoD: code analysis, metamodeling, software metrics, program understanding, program visualization, evolution analysis, refactorings, legacy code, quality, ... !Current focus

Remodularization analyses Quality models (PSA-Airfrance) Towards semantic merge Old and odd language analyses Rule and bug assessment

Collaborations Soft-VUB (Belgium), Pleiad (Chile) UFMG (Brazil), SCG (Swiss), LIRMM

Representation Transformations

Reverse

Engineering

Analyses

Evolution

106

Page 107: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

S.Ducasse LSE����

107

Representation Transformations

Reverse

Engineering

Analyses

Evolution

Language Independent Meta Model (FAMIX) An Extensible Reengineering Environment

Reengineering PatternsVersion Analyses Support Evolution Rules assessmentDependencies between/inside branches HISMO metamodel!

Understanding Large SystemsStatic/Dynamic Information Feature AnalysisClass Understanding Package BlueprintsDistribution Maps!!

Software Metrics Quality ModelsDuplicated Code IdentificationTest GenerationCycle and Layer IdentificationMerging technicsRules assessment!

Language Independent Refactorings

Page 108: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

}

{

}

{

}

{}

{

}

{

McCabe = 21LOC = 75

3,000

classes select: #isGod ...

Page 109: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

}

{

}

{

}

{}

{

}

{

McCabe = 21LOC = 75

3,000

classes select: #isGod ...

Page 110: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose
Page 111: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

A picture tells a thousand words

Page 112: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose
Page 113: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Not all pictures tell a

thousand words

Page 114: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

System Complexity shows class hierarchies

Lanza, Ducasse 2003

Page 115: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Class Blueprint shows class internals

Ducasse, Lanza 2005

Page 116: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Data!

Model

Develop Analysis

Take decision

Dedicated Tools

!

Analysis

Analysis should lead to a decision

Page 117: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Example : Who is behind package X ?

(1) Extraction

(2) Modèle

(4) Visualisation

(3) Analyses

Page 118: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

!

Step 1 - Model Creation/Import

(1) Extraction

(2) Modèle

(4) Visualisation

(3) Analyses

Definition of a model to represent entities Data Extraction (CVS...)

Page 119: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

!

Step 2 - Analyses

(1) Extraction

(2) Modèle

(4) Visualisation

(3) Analyses

Who wrote how many lines of code?

Page 120: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Step : 3 - Creating the Map

Page 121: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

JBoss at a glance !

Interactive tool Data in perspective !

(1) Extraction

(2) Modèle

(4) Visualisation

(3) Analyses

Page 122: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

}

{

}

{

}

{}

{

}

{

McCabe = 21LOC = 75

3,000

classes select: #isGod ...

Page 123: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Moose is a tool ecosystem

MooseChef

FAMIX & other

FAME

Page 124: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Meyer etal 2006

Mondrian/Roassal scripts graph visualizations

Page 125: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Thanks ObjectProfile and A. Bergel

for Roassal

Page 126: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose
Page 127: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose
Page 128: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

The kind of gift you can get from a community :)

Page 129: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose
Page 130: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose
Page 131: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

A glimpse at RMOD research

!

!

(pharo is not our research)

Page 132: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Supporting changes

Supporting merge (PhD of V. Uquillas-Gomez)

Untangling changes (Ph.D. of M. Dias)

Helping evolving your system (Ph.D. of A. Hora)

132

Page 133: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

How to support merging branches?

Git

Forks

Dependencies between changes

Manual tasks are needed

Integrator is not the author of the changes

No guarantee that the system will work

133V. Uquillas-Gomez

Page 134: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Torch: Which changes? Where? Who? What?

134

5 packages,9 classes,

A set of changes, involving:

~40 methods

Page 135: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Streams of Changes: On what other changes does this change depend?

109.cmm109.cmm

106.cmm

105.cmm110.cmm

109.cmm

108.ul

107.cmm

106.cmm

105.cmm

111.cmm

source branch

210.sd

209.sd

208.sd

207.md

206.md

target branch

135

Page 136: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

t

Feature #6

Fix Bug

Feature #6

CH!1 add method

CH!2 modify method

CH!3 modify method

CH!4 add class

CH!5 modify method

Untangling changes

Repocommit

136 M. Dias

Page 137: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Why is that bad?•review & integration•reversion•historical analysist

CH!1 add method

CH!2 modify method

CH!3 modify method

CH!4 add class

CH!5 modify method

Tangled

Repocommit

137

best practice: create untangled commits

change ⟷ activity ?

Page 138: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Repo

commit

commitCH!1

CH!4

CH!5

CH!2

CH!3

untangler tool

Fix Bug

Feature

We want a tool to untangle fine-grained

changes

138

CH!1 add method

CH!2 modify method

CH!3 modify method

CH!4 add class

CH!5 modify method

Tangled

Page 139: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

CH!1

CH!4

CH!5

CH!2

CH!3

We want a tool to untangle fine-grained

changes

Fix Bug

CH!4

CH!5

CH!1

CH!3

CH!1

CH!2

… ……… …

binary classifierfine-grained

features

Feature

[SANER’15] 139

untangler tool

CH!1 add method

CH!2 modify method

CH!3 modify method

CH!4 add class

CH!5 modify method

Tangled

Page 140: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Supporting evolution

• Due to their cost, are system-specific rules worthwhile?

• Are rules good bug identification?

140A. Hora

Page 141: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Automatically inferring migration rules

• Using developer activity

• Extract relevant API changes and deprecation rules

141A. Hora

Page 142: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Reflective features

Page 143: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Pharo simple programmer expects…

• Incremental recompilation and changes

• Dynamic class shape changing

• Instance updates / migration

• Debugger support

• On demand stack reification

Page 144: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

On the fly compilationWhen a method is not found,

ask for the creation of a method on the fly

the system compiles on the spot a special method, then reexecutes the method

it raises a shouldBeImplemented exception

then you can edit the method in the debugger

then proceed and the program continues to run

Page 145: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Execution Stack as an Object

• Debugger support!

• Advanced debugging

• Continuation

Page 146: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

thisContext

returns an object that represents the method activation

can walk and modify the stack

Page 147: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose
Page 148: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Powerful breakpoints?“Stop method bar only if it is invoked from method testBar”

bar()

...

this.haltIf(#testBar)

...

Page 149: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

foo() this.bar() !

Executing foo does not stop while executing testBar should stop

Page 150: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

haltIf: aSelector!! | cntxt |! ! cntxt := thisContext.! ! [ cntxt sender isNil ] !

! ! whileFalse: [! ! ! ! cntxt := cntxt sender.! ! ! ! (cntxt selector = aSelector) !

ifTrue: [ Halt signal ] ]

Page 151: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

pointer swapping

anObject become: anotherObject

!

All the pointers pointing to anObject points now to anotherObject and the inverse atomically

Page 152: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

| pt1 pt2 pt3 | pt1 := 0@0. pt2 := pt1. pt3 := 100@100. pt1 become: pt3. self assert: pt2 = (100@100). self assert: pt3 = (0@0). self assert: pt1 = (100@100).

Page 153: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Some challengesBootstrap reflective kernels Update core libs at runtime Virtualization (debugging our brain) Isolate parts Layered reflective representations Multiple language runtimes side by side JIT optimizations ready at startup

Page 154: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

• How can we bootstrap kernels?

• How can we tailor and build specialized runtimes?

• How can we update core libs at runtime?

• Presentation @ Onward!

G. Polito

Page 155: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

155

Language Runtime Bootstrapping

A process whose input is the definition of a language runtime written in the same language, and whose output is this language’s runtime.

Bootstrap paper guile

Bootstrap Definition

Language runtime BootstrapBootstrapLanguage

RuntimeDefinition

runtime

Programming Language

input

written inSyntax

+Semantics

+Pragmatics

output

Page 156: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Bootstrapping Process

156

Language Runtime Bootstrapping

nilObject := UndefinedObject basicNew.!trueObject := True basicNew.!falseObject := False basicNew.!!globalTable := GlobalTable basicNew.!!nil subclass: !Object subclass: !Object >> isNil!^ false!!UndefinedObject >> isNil! ^ true! !Float initialize.!Processor initialize.

1.Create well-known objects

2.Create basic language structures

3.Create classes

4.Create methods

5.Initialize

How�do�we�execute�this�bootstrap?

Page 157: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Minimal specialised runtimes

By default any runtime is too fat :)

How can we tailor and build specialized runtimes?

Page 158: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

How can we update the update while running the update?

Examples:

• Dictionary hashes

• Delay refactoring

• Collection changes

Page 159: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Espell Virtualization Infrastructure

159

Language Runtime Bootstrapping

Bootstrapped Language Runtime

Bootstrap Process

BootstrappingInterpreter

input

initializesObject Space

nil

ProtoObject

Object

hypervisor

Virtualized�Application

LanguageRuntime

Definition

Page 160: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Espell again: Run-Fail-Grow

160

Application Tailoring

ReferenceApplication

NurturedApplication

1. run

3. copy missing 2. fail 4. resume

Code Units

Page 161: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Results

161

Application Tailoring

Experiment Size (KB) %Saved

Addition 11 99.99%

Reflective App 32 99.83%

Factorial 100 + I/O 89 99.39%

Seaside Counter 573 96.73%

Experiments with empty seeds

Page 162: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Object Space

nil

ProtoObject

Object

162

Espell: our virtualization model

Object Space

• First-class virtualized runtime • It’s a meta-object! => MOP

Language Manipulation!e.g., create class

VirtualizedApplication

Object Manipulation!e.g., set slot, get slot

Execution manipulation!e.g., create process, get stack frames

hypervisor

Page 163: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Lowering JIT warm up time

Page 164: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Saving hot VM state

• Saving JIT compiler optimisations across start-ups

• Saving compiled methods encoded with an extended bytecode set (no n-code)

• Time to reach peak performance avoided

• PhD of C. Béra co-supervized with Cadence Design Systems (US)

C.Béra

Page 165: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

How to test dynamic deoptimisation?

Can we build regression tests for dynamic deoptimisation?

Page 166: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Using symbolic execution

• Byte-code

• Constrained to scope optimisation (do not execute not inlined calls)

Page 167: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Reflective architecture

How modular reflective architectures can be? Can we package language extensions?

How to reconcile reflection with object encapsulation (and object capabilities)?

C. Teruel

Page 168: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Stratification• Conflation of high-level concerns (language) and low-

level concerns (the VM):

• Language extensions are not modular

• Examples:

• Reflection reveals implementation details of language extension

• Generated code should not be visible via an introspective API

Page 169: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Encapsulation vs. Reflection

Reflection breaks object encapsulation. This makes reflection and object capabilities incompatible.

What kind of access control can prevent abuses while maximising the power of reflection?

Ownership-based access control

Page 170: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

Happily building platforms &

communities

Page 171: SLE/GPCE Keynote: What's the value of an end user? Platforms and Research: The case of Pharo and Moose

THANKS!