Pharo Status

73

Click here to load reader

description

This presentation is about Pharo status and why it is important to support our community. I presented these slides at FAST smalltalks 2014, Cordoba, Argentina.

Transcript of Pharo Status

Page 1: Pharo Status

Pharo StatusMarcus Denker, Stéphane Ducasse

http://www.pharo-project.org

presented by Jannik Laval

Page 2: Pharo Status
Page 3: Pharo Status

PharoMIT license

Pure object language

Great community of active doers

Powerful

Elegant and fun to program

Living system under your fingers

Mac, Linux, Android, iOS, Windows

Page 4: Pharo Status

Some projectsWeb frameworks - Seaside, iliad, HTTP2, Tide, Aida, Mustache, Oauth, WebSocket CSS styling Format parsers - XML, HTML, NeoJSON, NeoCSV. Application Security, Graphics frameworks - Roassal, Mondrian, EyeSee, GraphET, Tool builders - Glamour, Spec, XUL, MacNative, Databases - DBXTalk, Mongo, Riak, CouchDB, MySql, PunQLite. Object-Oriented databases - Magma, Goods. Database abstraction - Voyage, ROE MetaCompiler - Petit Parser, SmaCC - Proxy, Logging - SystemLogger, Toothpick, SimpleLogger Units: Aconcagua, Units Time - Chronos Calendars, Timezones Productivity Tools - Codecritics, Refactorings, Cherry picking merge tools: merge tool, Komitter Versionner, Mock frameworks (baby mock), PDFgeneration - Artefact, Testing frameworks - PhExample, SUnit Assembly generation: ASMJIT, Integration Tools: Hudson, Alternate window manager, Games: Tetris, Sokoban, Miner, Chess, CrossWords MetaModeling Frameworks - Magritte, Platypus, Cloud deployement - cloudfork cloudPharo, 3D: Roassal3d, NBOpenGL, JVM connection Bio informatics, ODE solvers, Interactive Geometry - DrGeo…

Page 5: Pharo Status

282 000 downloads on the Inria gforge

40-60 active commiters

> 600 mailing-list members

200 license agreements

60 association members

11 industrial consortium members

around 400 external projects or more

Pharo in numbers

Page 6: Pharo Status
Page 7: Pharo Status

We are a cool and growing community

Page 8: Pharo Status

Tweets, blogs, buzz

Pharo 3,065 tweets / 1018 followers

S. Ducasse tweets 513/ 735 followers

S. Stinckwich 8712 / 1006 followers

Moose 502 tweets/ 255 followers

Youtube Pharo smalltalk: about 1540 videos!

Page 9: Pharo Status

Blogs

http://pharo.org/blogs

http://astares.blogspot.co.uk

http://clementbera.wordpress.com

http://pharoweekly.wordpress.com

• Guille Polito, Playing with Objects • Mariano Martinez Peck, Sending messages • Igor Stasenko, Computer Adventures • Laurent Laffont, MaGaLoMa • Esteban Lorenzano, The Martian Chronicles • Tudor Girba, Humane assessment • Philippe Back, The Philippe Back Report • Yuriy Tymchuk, Uko on Code and Sleepy Coders

Page 10: Pharo Status

where business/innovation

can bloom

Page 11: Pharo Status

A powerful engine to invent (y)our future

Page 12: Pharo Status

Since may 2008

Pharo 3.0 - Apr 2014 ( around 2600 closed cases)

Pharo 2.0 - Apr 2013 (1657 closed cases)

Pharo 1.4 - Apr 2012 (988 closed cases)

Pharo 1.3 (736 closed cases)

Pharo 1.2 - mar 2011 (691 closed cases)

Pharo 1.1 - jul 2010 (918 closed cases)

Pharo 1.0 - oct 2009 (307 closed cases)

Very High Activity

Page 13: Pharo Status

• 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. of Saarland• Uni. de Bretagne Occidentale • Uni. of Tomsk

Pharo's Teachers

Page 14: Pharo Status

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

Research Groups

Page 15: Pharo Status

Design ideas

Object-centric debugging First-class slots Bootstrapping a Smalltalk Vector graphic core New modules New frameworks STON, Tide, Voyage, Babymock, Mocketry…

Page 16: Pharo Status

Example: OpenCL in Pharo

http://youtu.be/-2ida5Q1mbg

Page 17: Pharo Status

Proven Innovation!

Page 18: Pharo Status

Proven Innovation!

Page 19: Pharo Status

all MIT!GraphET, EyeSee

Tide (Amber/Pharo)

Voyage (NoSQL)

Zinc

WebSocket, Oauth, Riak, MongoDB, couchDB, mustache, PunQlite

Page 20: Pharo Status

Be with the buzz Market it

New frameworks

New books!

Activity

Page 21: Pharo Status

International books

Pharo by example

translated to french, merci!

translated to spanish, gracias!

translated to japanese, ありがとう!

Page 22: Pharo Status

Pharo for the Entreprise

Pharo web stack

Fun with Pharo

If you want to contribute...

Page 23: Pharo Status

LAMRC Back-End Wafer-Level Packaging

They understand their benefits

GemTalk Systems

HRWorks !

MadEnvironment !

Page 24: Pharo Status

Pharo Consortium

@@ Web site @@

Page 25: Pharo Status

Consortium Members

Managed by Inria for now

Who: companies, institutions, user groups

Privileged access to the core development team

Influence priorities of the next development

Engineering support time

Job posts

Training/Conferences special prices

Page 26: Pharo Status

Fees

Gold 4000

4 days of engineering time + multiple job descriptions for job dashboard + diamond sponsor.

Silver 2000

two days of engineering time + one job description + diamond sponsor.

Bronze 1000

one day of engineering time + diamond sponsor.

Page 27: Pharo Status

25 * 2K = 50 * 1K = 1 full engineer for Pharo

Page 28: Pharo Status

Pharo User Association

Managed by the Pharo Association

Individuals

Premium (99 Euros)

Normal (40 Euros)

Join and participate what we do!

Page 29: Pharo Status

Creating good energy, !software quality,!

learning and having fun!!

http://pharo.org

Join Us

Page 30: Pharo Status

where business/innovation

can bloom

Page 31: Pharo Status

Pharo StatusMarcus Denker http://www.pharo-project.org

Page 32: Pharo Status

Pharo3: Release April `14

Started March 2013

!

2390 Issue tracker entries with Pharo3 tag closed

!

854 Updates

Page 33: Pharo Status

Iceberg

A lot of Changes!

Not everything visible

Page 34: Pharo Status

Lots of Activity

Page 35: Pharo Status

A lot of Change!

Page 36: Pharo Status

Yet easy to adopt

Moose switched in two afternoons (two people)

!

Others: “I just loaded my packages"

Page 37: Pharo Status

Infrastructure: CI

https://ci.inria.fr is stable and used a lot

!

Every fix is validated automatically before human review

Every update triggers test run on 3 Architectures

over 80 projects in pharo-contribution

Page 38: Pharo Status

ci.inria.fr/pharo-contribution/

Page 39: Pharo Status

Infrastructure: Misc

http://files.pharo.org

!

http://get.pharo.org

!

SmalltalkHub: http://smalltalkhub.com

1411 users, >1200 repos

Page 40: Pharo Status

Small Stuff

Lots of Cleanups

!

Lots of tuning (perfomance, memory)

!

Lots of small improvements

Page 41: Pharo Status

Lots of larger things

Closure class now standard in Pharo3

Terminal output for stderr

Cleanup Source file related code

AST Interpreter

AST based Navigation in Browser

Komitter

Launcher

Font Speedup

….

Page 42: Pharo Status

New Inspector

Unify Inspector and Explorer

Make specialised inspectors visible

Page 43: Pharo Status

Athens: Vector Graphics

New API for Vector Graphics

Independent of Backend

For now: Cairo

Balloon3D for Debugging

Future: OpenGL

Page 44: Pharo Status

Athens: Demo

Page 45: Pharo Status

Opal Compiler

Uses RB AST

!

IRBuilder: Bytecode backend with high-level builder

Much easier to change

Basis for advanced Reflection

Page 46: Pharo Status

New ClassBuilder

Replaces the old ClassBuilder

!

Easier to understand and more flexible

!

Basis for First Class Variables (Slots)

Page 47: Pharo Status

New Debugger

Model now separate from View

!

Model is scriptable

!

Debugger is extensible with Commands

Page 48: Pharo Status

Command Linedenker$ ./pharo Pharo.image --list!Currently installed Command Line Handlers:! Fuel Loads fuel files! config Install Configurations! save Rename the image and changes file! update Load updates! printVersion Print image version! st Loads and executes .st source files! test A command line test runner! clean Run image cleanup! eval Directly evaluates one line scripts!!

Page 49: Pharo Status

A lot of change…

Page 50: Pharo Status

But just one iteration

Page 51: Pharo Status

Pharo4

Page 52: Pharo Status

Pharo4

Again: To be released Spring 2015

Already 175 updates

480 Issues closed

Very stable

Page 53: Pharo Status

For example…

Improved Refactorings

6MB Deployment Image

ifTrue: on non-Booleans

Browser and Tool cleanups

Context Cleanup (MethodContext/ContextPart merge)

Page 54: Pharo Status
Page 55: Pharo Status

In Progress…

Page 56: Pharo Status

First Class Variables

• First class Instance Variables (Slots)

!

• First class globals + class variables

Page 57: Pharo Status

For what?

• Allows programmers to define behavior

• Easy reflection on variable access

• Break on variable read, for example

Page 58: Pharo Status

Property SlotsObject subclass: #PropertyObject layout: PointerLayout slots: { #ivar. #property1 => PropertySlot. #property2 => PropertySlot. ... #propertyN => PropertySlot. }

Page 59: Pharo Status

Property SlotsObject subclass: #PropertyObject layout: PointerLayout instanceVariables: { #ivar. #property1 => PropertySlot. #property2 => PropertySlot. ... #propertyN => PropertySlot. }

Page 60: Pharo Status

Examples

• BitSlot

• BooleanSlot

• Alias

• Relationships (e.g. one-one, one-many)

• …. Your Domain level Slot! ==> Magritte

Page 61: Pharo Status

More in Paper from OOPSLA

Page 62: Pharo Status

Advanced Reflection

• Partial Behavioral Reflection

• Associate MetaObject with structural object

• Slots, Globals

• AST nodes

Page 63: Pharo Status

The Meta Link

Page 64: Pharo Status

Why?

• Change behaviour for selected AST Nodes or Variables

• “All variable reads”

• “this message send”

But without changing the program code!

Page 65: Pharo Status

Uses…

• Debugger

• BreakPoints, WatchPoints

• Profilers

• Coverage Analysis

• AOP

Page 66: Pharo Status

One File Pharo

• .sources, .changes. .image

!

• It is time to simplify that!

Page 67: Pharo Status

Epicea

• Replace .changes

• High level model:

• aggregate changes (refactoring)

• serialized to disk independent of source model

Page 68: Pharo Status
Page 69: Pharo Status

Sources

• It is 2014: Memory is cheap.

• Complexity is expensive

• Why not just put the sources in the image?

• Externalize when needed (small devices)

• Code history is in Monticello (or Git)

Page 70: Pharo Status

Bootstrap

• Create an image from a git repository

• Control what the image contains

• Easier to make changes

• Enforces Modularity

Page 71: Pharo Status

Boostrap

• Working for Pharo3 as a prototype

!

• Can we even use this for Pharo4 on the build server?

Page 72: Pharo Status

And more…

• GT Tools

• VM related news

• Spur, Sista, 64bit…

• ……….. there are lots of talks here

Page 73: Pharo Status

Pharo StatusMarcus Denker, Stéphane Ducasse

http://www.pharo-project.org

presented by Jannik Laval