Applications in Pharo

E
ESUGESUG
Pablo Tesone - Pharo Consortium
ESUG 2023
Applications in
Pharo
Come to the Desktop Side
2
Pablo Tesone
Pharo Consortium
Engineer
• 24 years trying to code
• 13 years of experience in industrial applications
• 9 Years working on Pharo
• PhD in Dynamic Software Update
• Interested in improving development tools and the daily
development process.
• Enthusiast of the object oriented programming and their tools.
It’s a me, Pablo!
@tesonep
3
Desktop Applications
Our Objective Today
Desktop Applications
Our Objective Today
• We want:
• Multiplatform Applications
• Seamless Operating System Integration
• Packaging and Installation
• Automatic Process / CI integration
4
We want to develop in Pharo
• Cool Tools
• Iterative Process
• Fun & Addictive
5
We want Pharo Everywhere
Because Pharo has a Rich Ecosystem
• Tools
• Frameworks
• Language Support
6
Because Pharo has a Rich Ecosystem
• Tools
• Frameworks
• Language Support
7
We want to take
advantage of
them!!!
A broad spectrum of Applications
And Pharo is
fi
t for it
8
Native
Applications
Custom UI
Apps
A broad spectrum of Applications
And Pharo is
fi
t for it
9
Native
Applications
Custom UI
Apps
Spec + GTK Bloc + Toplo
Spec
Cairo / Alexandrie
A broad spectrum of Applications
And Pharo is
fi
t for it
10
Native
Applications
Custom UI
Apps
Spec + GTK Bloc + Toplo
Spec
Cairo / Alexandrie
Let’s Automate
the Packaging
and Installer
An Example Application
• Let’s take a nice
game using Bloc +
Toplo
• Takuzu (puzzle
game similar to
Sudoku)
11
An Example Application
• Let’s take a nice
game using Bloc +
Toplo
• Takuzu (puzzle
game similar to
Sudoku)
12
Thanks Enzo
Demeulenaere
An Example Application
• Let’s make it look
like a Nice App
• Let’s package it
and have a nice
installer for it
• We are going to do
it for Windows and
MacOS
13
What we want (1/3)
Custom Icon and Branding
14
Executable Metadata
What we want (2/3)
OS Integration
15
Installers
What we want (3/3)
Custom Error Handling
16
Cheap and automatic!!!
The Plan
1. Load our application code
2. Add OS Integration (e.g., menus, noti
fi
cations,
etc)
3. Load Pharo Embedded Support Project
4. Generate Scripts to automatically build and
create installers.
5. Run them in our CI and distribute them
17
1. Load our application code
2. Add OS Integration (e.g., menus, noti
fi
cations,
etc)
3. Load Pharo Embedded Support Project
4. Generate Scripts to automatically build and
create installers.
5. Run them in our CI and distribute them
The Plan
18
1. Load our application code
1. Load our application code
2. Add OS Integration (e.g., menus, noti
fi
cations,
etc)
3. Load Pharo Embedded Support Project
4. Generate Scripts to automatically build and
create installers.
5. Run them in our CI and distribute them
The Plan
19
1. Load our application code
Easy, we just use
Metacello
The Plan
20
1. Load our application code
2. Add OS Integration (e.g., menus, noti
fi
cations,
etc)
3. Load Pharo Embedded Support Project
4. Generate Scripts to automatically build and
create installers.
5. Run them in our CI and distribute them
Add OS Integration
The Plan
21
Great Existing Libraries
OSX
Objective C Bridge
Windows
Pharo-OS-Windows
Pharo COM Support
Thanks!!!
Add OS Integration
The Plan
22
Great Existing Libraries
OSX
Objective C Bridge
Windows
Pharo-OS-Windows
Pharo COM Support
Esteban Torsten
Add OS Integration
OSX Examples in Action
23
Menus
Noti
fi
cations
1. Load our application code
2. Add OS Integration (e.g., menus, noti
fi
cations,
etc)
3. Load Pharo Embedded Support Project
4. Generate Scripts to automatically build and
create installers.
5. Run them in our CI and distribute them
The Plan
24
Load Pharo Embedded Support Project
• A library that provides:
• Custom error handling
• Command Line Handlers
• Generators for automatise the packaging
25
1. Load our application code
2. Add OS Integration (e.g., menus, noti
fi
cations,
etc)
3. Load Pharo Embedded Support Project
4. Generate Scripts to automatically build and
create installers.
5. Run them in our CI and distribute them
The Plan
26
Generate Scripts
Automatically build and create packages & installers
27
OSX
Generate Scripts
Automatically build and create packages & installers
28
OSX Bash Script
Generate Scripts
Automatically build and create packages & installers
29
OSX Bash Script
Installable
DMG
App
Package
Generate Scripts
Automatically build and create packages & installers
30
Windows
PowerShell
Script
Installable
MSI
Executable
CMake
Script
Generate Scripts
Automatically build and create packages & installers
31
Windows
PowerShell
Script
Installable
MSI
Executable
CMake
Script
Thanks!!!
Christophe Guille
1. Load our application code
2. Add OS Integration (e.g., menus, noti
fi
cations,
etc)
3. Load Pharo Embedded Support Project
4. Generate Scripts to automatically build and
create installers.
5. Run them in our CI and distribute them
The Plan
32
Run them in our CI and distribute them
Let’s run in the CI
33
Run in Github Action:
• Get a Pharo Image and load our code
• Generate the Scripts and execute them
• Upload Artifacts
• Available for OSX and Windows
Run them in our CI and distribute them
Let’s run in the CI
34
Run in Github Action:
• Get a Pharo Image and load our code
• Generate the Scripts and execute them
• Upload Artifacts
• Available for OSX and Windows
Run them in our CI and distribute them
Let’s run in the CI
35
Run in Github Action:
• Get a Pharo Image and load our code
• Generate the Scripts and execute them
• Upload Artifacts
• Available for OSX and Windows
Thanks!!!
Christophe Cyril Stef
Our Complete Example
Available on Github
36
tesonep/Takuzu
• Windows and OSX Example
• Github Actions
• OSX Integration
• Embedded Windows App
• Bloc Application
• Windows and OSX Example
• Github Actions
• OSX Integration
• Embedded Windows App
• Bloc Application
Our Complete Example
Available on Github
37
tesonep/Takuzu
Open to Improve
and to copy
Future Plans
Everything is Open
38
tesonep/pharo-vm-embedded-example
• Adding UI to generate script
• Support for Minimal Images
• Moving generators outside the image
• Adding support for signing / notarisation
• Documentation / More Examples
Applications in Pharo
Thanks so much!!!
39
tesonep/pharo-vm-embedded-example
tesonep/Takuzu
Custom Icon and Branding
Metadata
OS Integration
Error Handling
Installers
Automatizable
1 de 39

Recomendados

PharoJS: Hijack the JavaScript EcosystemPharoJS: Hijack the JavaScript Ecosystem
PharoJS: Hijack the JavaScript EcosystemESUG
480 visualizações48 slides
Pharo Virtual Machine: News from the FrontPharo Virtual Machine: News from the Front
Pharo Virtual Machine: News from the FrontESUG
172 visualizações110 slides
Application Development with PharoApplication Development with Pharo
Application Development with PharoESUG
119 visualizações56 slides
Pharo 11: A stabilization releasePharo 11: A stabilization release
Pharo 11: A stabilization releaseESUG
112 visualizações90 slides

Mais conteúdo relacionado

Mais procurados

Marathon Testing ToolMarathon Testing Tool
Marathon Testing Toolnarayan dudhe
616 visualizações6 slides
re:mobidyc the overviewre:mobidyc the overview
re:mobidyc the overviewESUG
112 visualizações33 slides
GentooGentoo
GentooFreedom DayMS
940 visualizações41 slides

Mais procurados(20)

Advantages and disadvantages of a monorepoAdvantages and disadvantages of a monorepo
Advantages and disadvantages of a monorepo
IanDavidson561K visualizações
Marathon Testing ToolMarathon Testing Tool
Marathon Testing Tool
narayan dudhe616 visualizações
re:mobidyc the overviewre:mobidyc the overview
re:mobidyc the overview
ESUG112 visualizações
GentooGentoo
Gentoo
Freedom DayMS940 visualizações
Go入門Go入門
Go入門
Takuya Ueda34.2K visualizações
Mocking in PythonMocking in Python
Mocking in Python
Excella3.1K visualizações
icecream / icecc:分散式編譯系統簡介icecream / icecc:分散式編譯系統簡介
icecream / icecc:分散式編譯系統簡介
Kito Cheng4.2K visualizações
04.  xss and encoding04.  xss and encoding
04. xss and encoding
Eoin Keary2K visualizações
PHPの今とこれから2021PHPの今とこれから2021
PHPの今とこれから2021
Rui Hirokawa1.2K visualizações
An introduction to Apache ThriftAn introduction to Apache Thrift
An introduction to Apache Thrift
Mike Frampton3.8K visualizações
ここがスゴい(変だ)よ!Git lab!ここがスゴい(変だ)よ!Git lab!
ここがスゴい(変だ)よ!Git lab!
Naoharu Sasaki461 visualizações

Similar a Applications in Pharo(20)

DESKTOP GUI APP DEVELOPMENT USING PYTHON!DESKTOP GUI APP DEVELOPMENT USING PYTHON!
DESKTOP GUI APP DEVELOPMENT USING PYTHON!
Umar Yusuf1.6K visualizações
DESKTOP GUI APP DEVELOPMENT USING PYTHON!DESKTOP GUI APP DEVELOPMENT USING PYTHON!
DESKTOP GUI APP DEVELOPMENT USING PYTHON!
Umar Yusuf984 visualizações
Create a PHP Library the right wayCreate a PHP Library the right way
Create a PHP Library the right way
Christian Varela1.3K visualizações
Introduction to Python ProgrammingIntroduction to Python Programming
Introduction to Python Programming
Akhil Kaushik321 visualizações
Seminar report on python 3 courseSeminar report on python 3 course
Seminar report on python 3 course
HimanshuPanwar381.1K visualizações
NLLUG 2012 - XPages Extensibility API - going deep!NLLUG 2012 - XPages Extensibility API - going deep!
NLLUG 2012 - XPages Extensibility API - going deep!
René Winkelmeyer871 visualizações
OSX/Pirrit: The blue balls of OS X adwareOSX/Pirrit: The blue balls of OS X adware
OSX/Pirrit: The blue balls of OS X adware
Amit Serper671 visualizações
Python ProgrammingPython Programming
Python Programming
WahidKamarullah19 visualizações
Hello, PythonHello, Python
Hello, Python
hardwyrd190 visualizações
Run Python on windowsRun Python on windows
Run Python on windows
Sitthykun LY308 visualizações
Python Lecture 0Python Lecture 0
Python Lecture 0
Inzamam Baig64 visualizações
iOSDevUK Conference- DevOps for iOS AppsiOSDevUK Conference- DevOps for iOS Apps
iOSDevUK Conference- DevOps for iOS Apps
Shashikant Jagtap501 visualizações
2013 lecture-01-introduction2013 lecture-01-introduction
2013 lecture-01-introduction
Pharo702 visualizações
Python 1Python 1
Python 1
Jainul Musani254 visualizações
Seminar report On PythonSeminar report On Python
Seminar report On Python
Shivam Gupta37.2K visualizações
(WPF + WinForms) * .NET Core = Modern Desktop(WPF + WinForms) * .NET Core = Modern Desktop
(WPF + WinForms) * .NET Core = Modern Desktop
Oren Novotny2.1K visualizações
Microsoft loves PHP. Seriously.Microsoft loves PHP. Seriously.
Microsoft loves PHP. Seriously.
Jenna Hoffman2.8K visualizações
#OSSPARIS19 - Do not be afraid to be forked ! - YOAV KUTNER, Oro Inc.#OSSPARIS19 - Do not be afraid to be forked ! - YOAV KUTNER, Oro Inc.
#OSSPARIS19 - Do not be afraid to be forked ! - YOAV KUTNER, Oro Inc.
Paris Open Source Summit 113 visualizações

Mais de ESUG(20)

Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in Pharo
ESUG85 visualizações
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector Tuning
ESUG20 visualizações
thisContext in the DebuggerthisContext in the Debugger
thisContext in the Debugger
ESUG36 visualizações
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing Score
ESUG18 visualizações
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design Mooc
ESUG85 visualizações

Último(20)

What Can Employee Monitoring Software Do?​What Can Employee Monitoring Software Do?​
What Can Employee Monitoring Software Do?​
wAnywhere16 visualizações
Software testing company in India.pptxSoftware testing company in India.pptx
Software testing company in India.pptx
SakshiPatel825 visualizações
El Arte de lo PossibleEl Arte de lo Possible
El Arte de lo Possible
Neo4j7 visualizações
Citi TechTalk Session 2: Kafka Deep DiveCiti TechTalk Session 2: Kafka Deep Dive
Citi TechTalk Session 2: Kafka Deep Dive
confluent16 visualizações
Topic 1 What is Evolutionary Prototyping.pptxTopic 1 What is Evolutionary Prototyping.pptx
Topic 1 What is Evolutionary Prototyping.pptx
AHMADAIMAN777 visualizações
Embedded RustEmbedded Rust
Embedded Rust
Jens Siebert519 visualizações
SUGCON ANZ Presentation V2.1 Final.pptxSUGCON ANZ Presentation V2.1 Final.pptx
SUGCON ANZ Presentation V2.1 Final.pptx
Jack Spektor19 visualizações
Create Roku ChannelsCreate Roku Channels
Create Roku Channels
Roshan Dwivedi5 visualizações
Neo4j y GenAI Neo4j y GenAI
Neo4j y GenAI
Neo4j10 visualizações
ict act 1.pptxict act 1.pptx
ict act 1.pptx
sanjaniarun089 visualizações
Unleash The MonkeysUnleash The Monkeys
Unleash The Monkeys
Jacob Duijzer7 visualizações
Roadmap y Novedades de productoRoadmap y Novedades de producto
Roadmap y Novedades de producto
Neo4j5 visualizações

Applications in Pharo

  • 1. Pablo Tesone - Pharo Consortium ESUG 2023 Applications in Pharo Come to the Desktop Side
  • 2. 2 Pablo Tesone Pharo Consortium Engineer • 24 years trying to code • 13 years of experience in industrial applications • 9 Years working on Pharo • PhD in Dynamic Software Update • Interested in improving development tools and the daily development process. • Enthusiast of the object oriented programming and their tools. It’s a me, Pablo! @tesonep
  • 4. Desktop Applications Our Objective Today • We want: • Multiplatform Applications • Seamless Operating System Integration • Packaging and Installation • Automatic Process / CI integration 4
  • 5. We want to develop in Pharo • Cool Tools • Iterative Process • Fun & Addictive 5 We want Pharo Everywhere
  • 6. Because Pharo has a Rich Ecosystem • Tools • Frameworks • Language Support 6
  • 7. Because Pharo has a Rich Ecosystem • Tools • Frameworks • Language Support 7 We want to take advantage of them!!!
  • 8. A broad spectrum of Applications And Pharo is fi t for it 8 Native Applications Custom UI Apps
  • 9. A broad spectrum of Applications And Pharo is fi t for it 9 Native Applications Custom UI Apps Spec + GTK Bloc + Toplo Spec Cairo / Alexandrie
  • 10. A broad spectrum of Applications And Pharo is fi t for it 10 Native Applications Custom UI Apps Spec + GTK Bloc + Toplo Spec Cairo / Alexandrie Let’s Automate the Packaging and Installer
  • 11. An Example Application • Let’s take a nice game using Bloc + Toplo • Takuzu (puzzle game similar to Sudoku) 11
  • 12. An Example Application • Let’s take a nice game using Bloc + Toplo • Takuzu (puzzle game similar to Sudoku) 12 Thanks Enzo Demeulenaere
  • 13. An Example Application • Let’s make it look like a Nice App • Let’s package it and have a nice installer for it • We are going to do it for Windows and MacOS 13
  • 14. What we want (1/3) Custom Icon and Branding 14 Executable Metadata
  • 15. What we want (2/3) OS Integration 15 Installers
  • 16. What we want (3/3) Custom Error Handling 16 Cheap and automatic!!!
  • 17. The Plan 1. Load our application code 2. Add OS Integration (e.g., menus, noti fi cations, etc) 3. Load Pharo Embedded Support Project 4. Generate Scripts to automatically build and create installers. 5. Run them in our CI and distribute them 17
  • 18. 1. Load our application code 2. Add OS Integration (e.g., menus, noti fi cations, etc) 3. Load Pharo Embedded Support Project 4. Generate Scripts to automatically build and create installers. 5. Run them in our CI and distribute them The Plan 18 1. Load our application code
  • 19. 1. Load our application code 2. Add OS Integration (e.g., menus, noti fi cations, etc) 3. Load Pharo Embedded Support Project 4. Generate Scripts to automatically build and create installers. 5. Run them in our CI and distribute them The Plan 19 1. Load our application code Easy, we just use Metacello
  • 20. The Plan 20 1. Load our application code 2. Add OS Integration (e.g., menus, noti fi cations, etc) 3. Load Pharo Embedded Support Project 4. Generate Scripts to automatically build and create installers. 5. Run them in our CI and distribute them
  • 21. Add OS Integration The Plan 21 Great Existing Libraries OSX Objective C Bridge Windows Pharo-OS-Windows Pharo COM Support
  • 22. Thanks!!! Add OS Integration The Plan 22 Great Existing Libraries OSX Objective C Bridge Windows Pharo-OS-Windows Pharo COM Support Esteban Torsten
  • 23. Add OS Integration OSX Examples in Action 23 Menus Noti fi cations
  • 24. 1. Load our application code 2. Add OS Integration (e.g., menus, noti fi cations, etc) 3. Load Pharo Embedded Support Project 4. Generate Scripts to automatically build and create installers. 5. Run them in our CI and distribute them The Plan 24
  • 25. Load Pharo Embedded Support Project • A library that provides: • Custom error handling • Command Line Handlers • Generators for automatise the packaging 25
  • 26. 1. Load our application code 2. Add OS Integration (e.g., menus, noti fi cations, etc) 3. Load Pharo Embedded Support Project 4. Generate Scripts to automatically build and create installers. 5. Run them in our CI and distribute them The Plan 26
  • 27. Generate Scripts Automatically build and create packages & installers 27 OSX
  • 28. Generate Scripts Automatically build and create packages & installers 28 OSX Bash Script
  • 29. Generate Scripts Automatically build and create packages & installers 29 OSX Bash Script Installable DMG App Package
  • 30. Generate Scripts Automatically build and create packages & installers 30 Windows PowerShell Script Installable MSI Executable CMake Script
  • 31. Generate Scripts Automatically build and create packages & installers 31 Windows PowerShell Script Installable MSI Executable CMake Script Thanks!!! Christophe Guille
  • 32. 1. Load our application code 2. Add OS Integration (e.g., menus, noti fi cations, etc) 3. Load Pharo Embedded Support Project 4. Generate Scripts to automatically build and create installers. 5. Run them in our CI and distribute them The Plan 32
  • 33. Run them in our CI and distribute them Let’s run in the CI 33 Run in Github Action: • Get a Pharo Image and load our code • Generate the Scripts and execute them • Upload Artifacts • Available for OSX and Windows
  • 34. Run them in our CI and distribute them Let’s run in the CI 34 Run in Github Action: • Get a Pharo Image and load our code • Generate the Scripts and execute them • Upload Artifacts • Available for OSX and Windows
  • 35. Run them in our CI and distribute them Let’s run in the CI 35 Run in Github Action: • Get a Pharo Image and load our code • Generate the Scripts and execute them • Upload Artifacts • Available for OSX and Windows Thanks!!! Christophe Cyril Stef
  • 36. Our Complete Example Available on Github 36 tesonep/Takuzu • Windows and OSX Example • Github Actions • OSX Integration • Embedded Windows App • Bloc Application
  • 37. • Windows and OSX Example • Github Actions • OSX Integration • Embedded Windows App • Bloc Application Our Complete Example Available on Github 37 tesonep/Takuzu Open to Improve and to copy
  • 38. Future Plans Everything is Open 38 tesonep/pharo-vm-embedded-example • Adding UI to generate script • Support for Minimal Images • Moving generators outside the image • Adding support for signing / notarisation • Documentation / More Examples
  • 39. Applications in Pharo Thanks so much!!! 39 tesonep/pharo-vm-embedded-example tesonep/Takuzu Custom Icon and Branding Metadata OS Integration Error Handling Installers Automatizable