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 von 39

Más contenido relacionado

Was ist angesagt?(20)

GitOps with ArgoCDGitOps with ArgoCD
GitOps with ArgoCD
CloudOps20053.3K views
Openshift argo cd_v1_2Openshift argo cd_v1_2
Openshift argo cd_v1_2
RastinKenarsari103 views
Inside GitHub with Chris WanstrathInside GitHub with Chris Wanstrath
Inside GitHub with Chris Wanstrath
SV Ruby on Rails Meetup67.2K views
MicrodownMicrodown
Microdown
ESUG102 views
BitbucketBitbucket
Bitbucket
Okba Mahdjoub7.3K views
CD using ArgoCD(KnolX).pdfCD using ArgoCD(KnolX).pdf
CD using ArgoCD(KnolX).pdf
Knoldus Inc.1.1K views
CI/CD OverviewCI/CD Overview
CI/CD Overview
An Nguyen3.4K views
Gitops: the kubernetes wayGitops: the kubernetes way
Gitops: the kubernetes way
sparkfabrik2.1K views
Monorepo at PinterestMonorepo at Pinterest
Monorepo at Pinterest
Suman Karumuri819 views
PrometheusPrometheus
Prometheus
wyukawa 1.3K views
KubeCon 2022 EU Flux Security.pdfKubeCon 2022 EU Flux Security.pdf
KubeCon 2022 EU Flux Security.pdf
Weaveworks199 views
Advantages of containerizationAdvantages of containerization
Advantages of containerization
Bluepi Consulting Pvt. Ltd.219 views
TerraformTerraform
Terraform
Christophe Marchal1.1K views

Similar a Applications in Pharo(20)

Create a PHP Library the right wayCreate a PHP Library the right way
Create a PHP Library the right way
Christian Varela1.3K views
Introduction to Python ProgrammingIntroduction to Python Programming
Introduction to Python Programming
Akhil Kaushik321 views
Seminar report on python 3 courseSeminar report on python 3 course
Seminar report on python 3 course
HimanshuPanwar381.1K views
Python ProgrammingPython Programming
Python Programming
WahidKamarullah19 views
Hello, PythonHello, Python
Hello, Python
hardwyrd190 views
Run Python on windowsRun Python on windows
Run Python on windows
Sitthykun LY308 views
Python Lecture 0Python Lecture 0
Python Lecture 0
Inzamam Baig64 views
iOSDevUK Conference- DevOps for iOS AppsiOSDevUK Conference- DevOps for iOS Apps
iOSDevUK Conference- DevOps for iOS Apps
Shashikant Jagtap501 views
Python 1Python 1
Python 1
Jainul Musani254 views
Seminar report On PythonSeminar report On Python
Seminar report On Python
Shivam Gupta37.2K views
Microsoft loves PHP. Seriously.Microsoft loves PHP. Seriously.
Microsoft loves PHP. Seriously.
Jenna Hoffman2.8K views

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