SlideShare uma empresa Scribd logo
1 de 58
Baixar para ler offline
Mission Pharo Kernel
ESUG 2016, Prague
Pavel Krivanek and Christophe Demarey
New libraries
New tools
New tests
More documentation
Pharo is growing
Pharo evolution
Squeak 3.9 Pharo 1.0 Pharo 1.1 Pharo 1.2 Pharo 1.3 Pharo 1.4 Pharo 2.0 Pharo 3.0 Pharo 4.0 Pharo 5.0
Classes
Packages
LOC
Code for future use
Duplicities
Obsolete code
DO-NOT-TOUCH code
Pharo ZEN
● Easy to understand, easy to learn from, easy to change.
● Objects all the way down.
● Examples to learn from.
● Fully dynamic and malleable.
● Beauty in the code, beauty in the comments.
● Simplicity is the ultimate elegance.
● Better a set of small polymorphic classes than a large ugly one.
● Classes structure our vocabulary.
● Messages are our vocabulary.
● Polymorphism is our esperanto.
● Abstraction and composition are our friends.
● Tests are important but can be changed.
● Explicit is better than implicit.
● Magic only at the right place.
● One step at a time.
● There is no unimportant fix.
● Learning from mistakes.
● Perfection can kill movement.
● Quality is a emerging property.
● Simple processes to support progress.
● Communication is key.
● A system with robust abstractions
that a single person can understand.
Modularity
Pharo Kernel
From top
- cleaning
- shrinking
- reloading
From bottom
bootstrapping from zero -
reloading -
From top shrinking and modularization
- started before Pharo
- removing of code is easy
- clean removing is not easy
- reloading is even harder
Morphic reloaded [22.07.2006]
Kernel image evolution in shortcut
BROKEN!
works again
BROKEN!
works again
BROKEN!
works again
BROKEN!
works again
BROKEN!
works again
BROKEN!
works again
BROKEN!
works again
Broken again... [18.8.2016]
Why so hard and long?
Everyone needs to
take of care of
modularity
integrated inintegrated in
development processdevelopment process
(tests, rules, CI jobs)(tests, rules, CI jobs)
CI jobs for Pharo modularization
- since Pharo 2.0
- shrink image
- increase granularity of reloaded modules
- tests
- coverage testing
- experiments (Tanker)
https://ci.inria.fr/pharo/view/6.0-SysConf/
CI jobs for Pharo modularization
Kernel image (shrinked / bootstrapped)
+ Monticello
+ Network support
+ Remote repositories support
+ Metacello
= minimal Pharo
+ SUnit, Display support, UFFI
+ Morphic core, Morphic
+ UI, Basic tools, IDE
= Pharo
Bootstrapped & reloaded from GIT
Let's talk about
BOOTSTRAP
« The process that builds the minimal
infrastructure of a langage 
reusable to define the
langage itself »
Bootstrap
Why do we need a bootstrap ?
● Have a known initial state
● Be able to reproduce the state of a system
● Ensure we can reinitialize the system at any time
● Ease Kernel evolution
● Identify a small subset of the language allowing
the definition of the language itself
Why bootstraping is difficult?
Archaelogy
Dead code!
Strange things
cleanups
Missing code
The dependency hell
Cut dependencies
Code refactoring
How to fix bad dependencies?
Create a new package to isolate functionnalities
Move some methods as extensions to another
package
Re-design completely a functionality
e.g. startup list
...
Tools support
Dependency Analyser
Dependency dashboard
X 2
Dependency visualization
https://ci.inria.fr/pharo/job/Pharo-6.0-Dependenc
yAnalysis/ws/bootstrap-dependency-report-graph.ht
ml
The bootstrap process
1
Day
2
Day
3
Day
4
Day
5
Day
process
6
Day
7
Day
More details
cf phd Guillermo Polito:
https://hal.inria.fr/tel-01251173
Story #2
Road to a working bootstrap
Bootstrap challenge
> language side bootstrap
Language initialization generally done VM side
We want to do it language side (image side):
need to run code on top of a language under
construction
Bootstrap challenge
> language side bootstrap
Road to a working bootstrap
First bootstrapped image!
Road to a working bootstrap
Road to a working bootstrap
We run the image …
… VM crash
Road to a working bootstrap
> some debugging examples
Missing class in the boostrap
e.g. Float
Super class not set
Super class set to a wrong value
Road to a working bootstrap
Compile VM in debug mode
Run bootstrapped
image through
Xcode / LLDB
Road to a working bootstrap
> verifying the bootstrap
Rely on Pharo tests (>8 000 tests)
● Load SUnit
● Load test packages
● Run tests
Wants to know more?
Bootstrap process hosted on Pharo CI server
https://ci.inria.fr/pharo/view/Pharo%20bootstrap/
GitHub repository
https://github.com/guillep/PharoBootstrap
Conclusion
Having a modular system requires a lot of energy
• Easy to break
• Concern of everyone
We now have a working Pharo bootstrapped
image.
We are able to load packages on top to build a full
Pharo-image (UI, IDE, etc.)
Roadmap
Make the boostrap process more robust
Up-to-date package dependencies for the Pharo
image + use of Cargo package manager
Build the official Pharo image on top of the
bootstrap
Make the kernel smaller (e.g. kick out Unicode)
«  Always leave the campground
cleaner than you found it. »
-Boy Scout rule, Uncle Bob

Mais conteúdo relacionado

Mais de ESUG

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programming
ESUG
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and Roadmap
ESUG
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...
ESUG
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early results
ESUG
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
ESUG
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
ESUG
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
ESUG
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
ESUG
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience Report
ESUG
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
ESUG
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
ESUG
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
ESUG
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
ESUG
 

Mais de ESUG (20)

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programming
 
Technical documentation support in Pharo
Technical documentation support in PharoTechnical documentation support in Pharo
Technical documentation support in Pharo
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and Roadmap
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in Pharo
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early results
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience Report
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector Tuning
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the Debugger
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing Score
 
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design Mooc
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
 

Último

CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
anilsa9823
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
anilsa9823
 

Último (20)

How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 

Mission Pharo Kernel

  • 1. Mission Pharo Kernel ESUG 2016, Prague Pavel Krivanek and Christophe Demarey
  • 2. New libraries New tools New tests More documentation Pharo is growing
  • 3. Pharo evolution Squeak 3.9 Pharo 1.0 Pharo 1.1 Pharo 1.2 Pharo 1.3 Pharo 1.4 Pharo 2.0 Pharo 3.0 Pharo 4.0 Pharo 5.0 Classes Packages LOC
  • 4. Code for future use Duplicities Obsolete code DO-NOT-TOUCH code
  • 5.
  • 6. Pharo ZEN ● Easy to understand, easy to learn from, easy to change. ● Objects all the way down. ● Examples to learn from. ● Fully dynamic and malleable. ● Beauty in the code, beauty in the comments. ● Simplicity is the ultimate elegance. ● Better a set of small polymorphic classes than a large ugly one. ● Classes structure our vocabulary. ● Messages are our vocabulary. ● Polymorphism is our esperanto. ● Abstraction and composition are our friends. ● Tests are important but can be changed. ● Explicit is better than implicit. ● Magic only at the right place. ● One step at a time. ● There is no unimportant fix. ● Learning from mistakes. ● Perfection can kill movement. ● Quality is a emerging property. ● Simple processes to support progress. ● Communication is key. ● A system with robust abstractions that a single person can understand.
  • 9. From top - cleaning - shrinking - reloading From bottom bootstrapping from zero - reloading -
  • 10. From top shrinking and modularization - started before Pharo - removing of code is easy - clean removing is not easy - reloading is even harder Morphic reloaded [22.07.2006]
  • 11. Kernel image evolution in shortcut BROKEN! works again BROKEN! works again BROKEN! works again BROKEN! works again BROKEN! works again BROKEN! works again BROKEN! works again Broken again... [18.8.2016]
  • 12. Why so hard and long? Everyone needs to take of care of modularity integrated inintegrated in development processdevelopment process (tests, rules, CI jobs)(tests, rules, CI jobs)
  • 13. CI jobs for Pharo modularization - since Pharo 2.0 - shrink image - increase granularity of reloaded modules - tests - coverage testing - experiments (Tanker) https://ci.inria.fr/pharo/view/6.0-SysConf/
  • 14. CI jobs for Pharo modularization Kernel image (shrinked / bootstrapped) + Monticello + Network support + Remote repositories support + Metacello = minimal Pharo + SUnit, Display support, UFFI + Morphic core, Morphic + UI, Basic tools, IDE = Pharo
  • 17. « The process that builds the minimal infrastructure of a langage 
reusable to define the langage itself » Bootstrap
  • 18. Why do we need a bootstrap ? ● Have a known initial state ● Be able to reproduce the state of a system ● Ensure we can reinitialize the system at any time ● Ease Kernel evolution ● Identify a small subset of the language allowing the definition of the language itself
  • 19. Why bootstraping is difficult?
  • 21.
  • 29. How to fix bad dependencies? Create a new package to isolate functionnalities Move some methods as extensions to another package Re-design completely a functionality e.g. startup list ...
  • 35.
  • 36. 1 Day
  • 37.
  • 38. 2 Day
  • 39. 3 Day
  • 40. 4 Day
  • 42. 6 Day
  • 43. 7 Day
  • 44. More details cf phd Guillermo Polito: https://hal.inria.fr/tel-01251173
  • 46. Road to a working bootstrap
  • 47. Bootstrap challenge > language side bootstrap Language initialization generally done VM side We want to do it language side (image side): need to run code on top of a language under construction
  • 49. Road to a working bootstrap First bootstrapped image!
  • 50. Road to a working bootstrap
  • 51. Road to a working bootstrap We run the image … … VM crash
  • 52. Road to a working bootstrap > some debugging examples Missing class in the boostrap e.g. Float Super class not set Super class set to a wrong value
  • 53. Road to a working bootstrap Compile VM in debug mode Run bootstrapped image through Xcode / LLDB
  • 54. Road to a working bootstrap > verifying the bootstrap Rely on Pharo tests (>8 000 tests) ● Load SUnit ● Load test packages ● Run tests
  • 55. Wants to know more? Bootstrap process hosted on Pharo CI server https://ci.inria.fr/pharo/view/Pharo%20bootstrap/ GitHub repository https://github.com/guillep/PharoBootstrap
  • 56. Conclusion Having a modular system requires a lot of energy • Easy to break • Concern of everyone We now have a working Pharo bootstrapped image. We are able to load packages on top to build a full Pharo-image (UI, IDE, etc.)
  • 57. Roadmap Make the boostrap process more robust Up-to-date package dependencies for the Pharo image + use of Cargo package manager Build the official Pharo image on top of the bootstrap Make the kernel smaller (e.g. kick out Unicode)
  • 58. «  Always leave the campground cleaner than you found it. » -Boy Scout rule, Uncle Bob