SlideShare a Scribd company logo
1 of 31
Download to read offline
Of Metacello, Git,
                               Scripting and Things
                                      ESUG 2012
                                     Dale Henrichs
                                       VMware




Thursday, September 20, 2012
“It is not sufficient to manage Smallatlk source files in git
                                     ...
           for Smalltalk we need to manage package structure”

                                                           Dale Henrichs
                                                         before January 2012




Thursday, September 20, 2012
“We've built a little package [FileTree] that allows us to save all
                         our source in git.
                                 ...
  In short, we save and load all the monticello packages on our
  project as smalltalk source files.We use git to merge and not
                            monticello.
                                 ...
   We are 5-6 developers on the project, committing numerous
times a day. We currently have about 1100 classes and 23500
                 methods managed in this way.”

                                                                                                 Otto Behrens
                                                                                                    January 2012
                               http://forum.world.st/Smalltalk-for-small-projects-only-tt4336237.html#a4339381

Thursday, September 20, 2012
FileTree directory structure




Thursday, September 20, 2012
What is Git?

                    • Disk-based, Distributed Version Control
                           System for source code
                    • `Clone` repository to local disk for off-line
                           work
                    • Each `clone` is a complete copy of
                           repository
                    • Merge changes to/from any other `clone`
Thursday, September 20, 2012
Why Git?
  “Git really changed the way developers think of merging and
                             branching.
                                 ...
   merging/branching has always been considered a bit scary
                                 ...
with Git, these actions are extremely cheap and simple, and they
  are considered one of the core parts of your daily workflow”

                                                    A successful Git branching model
                                                                                 “Git-Flow”
                                                                                 January 2010
                                                                         Vincent Driessen
                                       http://nvie.com/posts/a-successful-git-branching-model/




Thursday, September 20, 2012
Git-Flow




                     A successful Git branching model
                                                  “Git-Flow”
                                                  January 2010
                                          Vincent Driessen
        http://nvie.com/posts/a-successful-git-branching-model/

Thursday, September 20, 2012
Why Git?




  Git makes it possible to leverage GitHub’s most excellent
                             tools.
Thursday, September 20, 2012
“[Git-Flow is] more complicated than I think most developers
              and development teams actually require”


                                                                 GitHub Flow
                                                                    August 2011
                                                                Scott Chacon
                               http://scottchacon.com/2011/08/31/github-flow.html




Thursday, September 20, 2012
GitHub Flow
       • Use named branches off master for all
              development
       • use PULL request to review and
              merge work into master branch
       • deploy as soon as you merge into the
              master branch

                                                                  GitHub Flow
                                                                     August 2011
                                                                 Scott Chacon
                                http://scottchacon.com/2011/08/31/github-flow.html

Thursday, September 20, 2012
GitHub: Pull Request




                                                      https://github.com/github/github-services/pull/377
Thursday, September 20, 2012
GitHub: Pull Request




                                              https://github.com/github/github-services/pull/373



Thursday, September 20, 2012
GitHub: Commit Comments




                                    https://github.com/github/github-services/pull/373#issuecomment-7586837

Thursday, September 20, 2012
GitHub: Pull Request Comments




                                  GitHub: Commit Comments




                                                    https://github.com/github/github-services/pull/373




Thursday, September 20, 2012
TravisCI automatically runs build against Pull Rquests




                                            https://github.com/dalehenrich/builderCI/pull/14




Thursday, September 20, 2012
GitHub: continuous integration w/Travis CI




                                     http://travis-ci.org/#!/dalehenrich/builderCI/builds/2205547



Thursday, September 20, 2012
Sample TravisCI log




                                   http://travis-ci.org/#!/dalehenrich/builderCI/jobs/2205548




Thursday, September 20, 2012
travisCI.st for Sample project




                                  https://github.com/dalehenrich/sample/blob/master/tests/baselineTravisCI.st




Thursday, September 20, 2012
Why Git for Smalltalk?




           Git can bring sophisticated branch-based workflow
           to Smalltalk without having to build it from scratch!

Thursday, September 20, 2012
Git/GitHub Ecosystem
                    • Cypress
                          • Cross-dialect package structure
                    • FileTree
                          • Monticello integration w/Git
                    • MetacelloPreview
                          • filetree:// and github:// repo types
                          • BaselineOf and ConfigurationOf
                          • Scripting API
Thursday, September 20, 2012
Cypress

       “The goal of the Cypress project is to have a version
         controlled environment for cross-dialect projects.

         We do not aim to replace existing dialect solutions.”
                                             https://github.com/CampSmalltalk/Cypress




Thursday, September 20, 2012
Cypress spec




    https://github.com/CampSmalltalk/Cypress/blob/master/img/CypressStructure-STIC2012.png




Thursday, September 20, 2012
Cypress
                               implementations
                    • Amber (amber-cypress)
                    • Cuis (cuis-cypress)
                    • GemStone (FileTree)
                    • Pharo (FileTree)
                    • Squeak (FileTree)
                    • VW (STIG)
                                 https://github.com/CampSmalltalk/Cypress#cypress-implementations


Thursday, September 20, 2012
FileTree

      FileTree is a fully functional Monticello repository type
      where packages are stored in Cypress format instead
                            of .mcz fomat.

               FileTree is SCM neutral and can be used with git,
                              mercurial, svn, etc.


                                                   https://github.com/dalehenrich/filetree


Thursday, September 20, 2012
filetree://
     filetree:// <path>

             filetree:///opt/git/filetree/packages




Thursday, September 20, 2012
github://
     github:// <user> / <project> [ : <SHA> ] [ / <path> ]

             github://dalehenrich/filetree:master/packages
             github://dalehenrich/filetree:1.0/packages
             github://dalehenrich/filetree:a772ac2ecc/packages




Thursday, September 20, 2012
BaselineOf




                  single #baseline: method in the BaselinOf class




Thursday, September 20, 2012
ConfigurationOf




   Metacello version numbers become tags for git commits


Thursday, September 20, 2012
Scripting API
         Invented API to replace the “standard” load
         expression:



          with this expression:




Thursday, September 20, 2012
Current Status
                    • Metacello class for scripts will be
                           included in base images for Pharo2.0 and
                           Squeak4.4.
                    • MetacelloPreview 1.0-beta.32.2
                       • looking for a few git savvy users to use
                               the preview release
                    • FsGit
                     • in-image support for Git
Thursday, September 20, 2012
Resources/Questions

mailing list:                  http://groups.google.com/group/metacello
preview installation & docs:   https://github.com/dalehenrich/metacello-work/blob/master/README.md




             Metacello Dr. will be IN today and Thursday
                  All questions will be answered!


Thursday, September 20, 2012

More Related Content

Similar to Of metacello, git, scripting and things

Open up your platform with Open Source and GitHub
Open up your platform with Open Source and GitHubOpen up your platform with Open Source and GitHub
Open up your platform with Open Source and GitHubScott Graham
 
Getting started With GIT
Getting started With GITGetting started With GIT
Getting started With GITGhadiAlGhosh
 
JAZOON'13 - Thomas Hug & Bartosz Majsak - Git Workshop -Essentials
JAZOON'13 - Thomas Hug & Bartosz Majsak - Git Workshop -EssentialsJAZOON'13 - Thomas Hug & Bartosz Majsak - Git Workshop -Essentials
JAZOON'13 - Thomas Hug & Bartosz Majsak - Git Workshop -Essentialsjazoon13
 
Git for Android Developers
Git for Android DevelopersGit for Android Developers
Git for Android DevelopersTack Mobile
 
August OpenNTF Webinar - Git and GitHub Explained
August OpenNTF Webinar - Git and GitHub ExplainedAugust OpenNTF Webinar - Git and GitHub Explained
August OpenNTF Webinar - Git and GitHub ExplainedHoward Greenberg
 
Introduction to Go
Introduction to GoIntroduction to Go
Introduction to GoSimon Hewitt
 
Spring Projects Infrastructure
Spring Projects InfrastructureSpring Projects Infrastructure
Spring Projects InfrastructureGunnar Hillert
 
Spring Projects Infrastructure
Spring Projects InfrastructureSpring Projects Infrastructure
Spring Projects InfrastructureRoy Clarkson
 
Git Merge, Resets and Branches
Git Merge, Resets and BranchesGit Merge, Resets and Branches
Git Merge, Resets and BranchesVictor Pudelski
 
Kubernetes GitOps featuring GitHub, Kustomize and ArgoCD
Kubernetes GitOps featuring GitHub, Kustomize and ArgoCDKubernetes GitOps featuring GitHub, Kustomize and ArgoCD
Kubernetes GitOps featuring GitHub, Kustomize and ArgoCDSunnyvale
 
Workflows using Git GitHub | Edureka
Workflows using Git GitHub | EdurekaWorkflows using Git GitHub | Edureka
Workflows using Git GitHub | EdurekaEdureka!
 
That's (g)it! par Sébastien Dawans CETIC
That's (g)it! par Sébastien Dawans CETICThat's (g)it! par Sébastien Dawans CETIC
That's (g)it! par Sébastien Dawans CETICLa FeWeb
 
Global Azure Bootcamp Québec - Container on Azure
Global Azure Bootcamp Québec - Container on AzureGlobal Azure Bootcamp Québec - Container on Azure
Global Azure Bootcamp Québec - Container on AzureJulien Maitrehenry
 

Similar to Of metacello, git, scripting and things (20)

Open up your platform with Open Source and GitHub
Open up your platform with Open Source and GitHubOpen up your platform with Open Source and GitHub
Open up your platform with Open Source and GitHub
 
Getting started With GIT
Getting started With GITGetting started With GIT
Getting started With GIT
 
JAZOON'13 - Thomas Hug & Bartosz Majsak - Git Workshop -Essentials
JAZOON'13 - Thomas Hug & Bartosz Majsak - Git Workshop -EssentialsJAZOON'13 - Thomas Hug & Bartosz Majsak - Git Workshop -Essentials
JAZOON'13 - Thomas Hug & Bartosz Majsak - Git Workshop -Essentials
 
Mini-training: Let’s Git It!
Mini-training: Let’s Git It!Mini-training: Let’s Git It!
Mini-training: Let’s Git It!
 
Git hub visualstudiocode
Git hub visualstudiocodeGit hub visualstudiocode
Git hub visualstudiocode
 
Git for Android Developers
Git for Android DevelopersGit for Android Developers
Git for Android Developers
 
Git best practices workshop
Git best practices workshopGit best practices workshop
Git best practices workshop
 
August OpenNTF Webinar - Git and GitHub Explained
August OpenNTF Webinar - Git and GitHub ExplainedAugust OpenNTF Webinar - Git and GitHub Explained
August OpenNTF Webinar - Git and GitHub Explained
 
Untangling4
Untangling4Untangling4
Untangling4
 
Introduction to Go
Introduction to GoIntroduction to Go
Introduction to Go
 
Spring Projects Infrastructure
Spring Projects InfrastructureSpring Projects Infrastructure
Spring Projects Infrastructure
 
Spring Projects Infrastructure
Spring Projects InfrastructureSpring Projects Infrastructure
Spring Projects Infrastructure
 
Complete Dojo
Complete DojoComplete Dojo
Complete Dojo
 
Git Merge, Resets and Branches
Git Merge, Resets and BranchesGit Merge, Resets and Branches
Git Merge, Resets and Branches
 
Kubernetes GitOps featuring GitHub, Kustomize and ArgoCD
Kubernetes GitOps featuring GitHub, Kustomize and ArgoCDKubernetes GitOps featuring GitHub, Kustomize and ArgoCD
Kubernetes GitOps featuring GitHub, Kustomize and ArgoCD
 
Git and Github workshop
Git and Github workshopGit and Github workshop
Git and Github workshop
 
Workflows using Git GitHub | Edureka
Workflows using Git GitHub | EdurekaWorkflows using Git GitHub | Edureka
Workflows using Git GitHub | Edureka
 
Git training with Devaamo
Git training with DevaamoGit training with Devaamo
Git training with Devaamo
 
That's (g)it! par Sébastien Dawans CETIC
That's (g)it! par Sébastien Dawans CETICThat's (g)it! par Sébastien Dawans CETIC
That's (g)it! par Sébastien Dawans CETIC
 
Global Azure Bootcamp Québec - Container on Azure
Global Azure Bootcamp Québec - Container on AzureGlobal Azure Bootcamp Québec - Container on Azure
Global Azure Bootcamp Québec - Container on Azure
 

More from 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 programmingESUG
 
Technical documentation support in Pharo
Technical documentation support in PharoTechnical documentation support in Pharo
Technical documentation support in PharoESUG
 
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 RoadmapESUG
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoESUG
 
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 resultsESUG
 
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 6ESUG
 
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 GenerationESUG
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingESUG
 
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 ModesESUG
 
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 ReportESUG
 
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 APIsESUG
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector TuningESUG
 
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 CaseESUG
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FutureESUG
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the DebuggerESUG
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing ScoreESUG
 
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 JavaScriptESUG
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocESUG
 
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 TransformationsESUG
 

More from 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
 

Recently uploaded

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Principled Technologies
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024SynarionITSolutions
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024The Digital Insurer
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 

Recently uploaded (20)

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 

Of metacello, git, scripting and things

  • 1. Of Metacello, Git, Scripting and Things ESUG 2012 Dale Henrichs VMware Thursday, September 20, 2012
  • 2. “It is not sufficient to manage Smallatlk source files in git ... for Smalltalk we need to manage package structure” Dale Henrichs before January 2012 Thursday, September 20, 2012
  • 3. “We've built a little package [FileTree] that allows us to save all our source in git. ... In short, we save and load all the monticello packages on our project as smalltalk source files.We use git to merge and not monticello. ... We are 5-6 developers on the project, committing numerous times a day. We currently have about 1100 classes and 23500 methods managed in this way.” Otto Behrens January 2012 http://forum.world.st/Smalltalk-for-small-projects-only-tt4336237.html#a4339381 Thursday, September 20, 2012
  • 5. What is Git? • Disk-based, Distributed Version Control System for source code • `Clone` repository to local disk for off-line work • Each `clone` is a complete copy of repository • Merge changes to/from any other `clone` Thursday, September 20, 2012
  • 6. Why Git? “Git really changed the way developers think of merging and branching. ... merging/branching has always been considered a bit scary ... with Git, these actions are extremely cheap and simple, and they are considered one of the core parts of your daily workflow” A successful Git branching model “Git-Flow” January 2010 Vincent Driessen http://nvie.com/posts/a-successful-git-branching-model/ Thursday, September 20, 2012
  • 7. Git-Flow A successful Git branching model “Git-Flow” January 2010 Vincent Driessen http://nvie.com/posts/a-successful-git-branching-model/ Thursday, September 20, 2012
  • 8. Why Git? Git makes it possible to leverage GitHub’s most excellent tools. Thursday, September 20, 2012
  • 9. “[Git-Flow is] more complicated than I think most developers and development teams actually require” GitHub Flow August 2011 Scott Chacon http://scottchacon.com/2011/08/31/github-flow.html Thursday, September 20, 2012
  • 10. GitHub Flow • Use named branches off master for all development • use PULL request to review and merge work into master branch • deploy as soon as you merge into the master branch GitHub Flow August 2011 Scott Chacon http://scottchacon.com/2011/08/31/github-flow.html Thursday, September 20, 2012
  • 11. GitHub: Pull Request https://github.com/github/github-services/pull/377 Thursday, September 20, 2012
  • 12. GitHub: Pull Request https://github.com/github/github-services/pull/373 Thursday, September 20, 2012
  • 13. GitHub: Commit Comments https://github.com/github/github-services/pull/373#issuecomment-7586837 Thursday, September 20, 2012
  • 14. GitHub: Pull Request Comments GitHub: Commit Comments https://github.com/github/github-services/pull/373 Thursday, September 20, 2012
  • 15. TravisCI automatically runs build against Pull Rquests https://github.com/dalehenrich/builderCI/pull/14 Thursday, September 20, 2012
  • 16. GitHub: continuous integration w/Travis CI http://travis-ci.org/#!/dalehenrich/builderCI/builds/2205547 Thursday, September 20, 2012
  • 17. Sample TravisCI log http://travis-ci.org/#!/dalehenrich/builderCI/jobs/2205548 Thursday, September 20, 2012
  • 18. travisCI.st for Sample project https://github.com/dalehenrich/sample/blob/master/tests/baselineTravisCI.st Thursday, September 20, 2012
  • 19. Why Git for Smalltalk? Git can bring sophisticated branch-based workflow to Smalltalk without having to build it from scratch! Thursday, September 20, 2012
  • 20. Git/GitHub Ecosystem • Cypress • Cross-dialect package structure • FileTree • Monticello integration w/Git • MetacelloPreview • filetree:// and github:// repo types • BaselineOf and ConfigurationOf • Scripting API Thursday, September 20, 2012
  • 21. Cypress “The goal of the Cypress project is to have a version controlled environment for cross-dialect projects. We do not aim to replace existing dialect solutions.” https://github.com/CampSmalltalk/Cypress Thursday, September 20, 2012
  • 22. Cypress spec https://github.com/CampSmalltalk/Cypress/blob/master/img/CypressStructure-STIC2012.png Thursday, September 20, 2012
  • 23. Cypress implementations • Amber (amber-cypress) • Cuis (cuis-cypress) • GemStone (FileTree) • Pharo (FileTree) • Squeak (FileTree) • VW (STIG) https://github.com/CampSmalltalk/Cypress#cypress-implementations Thursday, September 20, 2012
  • 24. FileTree FileTree is a fully functional Monticello repository type where packages are stored in Cypress format instead of .mcz fomat. FileTree is SCM neutral and can be used with git, mercurial, svn, etc. https://github.com/dalehenrich/filetree Thursday, September 20, 2012
  • 25. filetree:// filetree:// <path> filetree:///opt/git/filetree/packages Thursday, September 20, 2012
  • 26. github:// github:// <user> / <project> [ : <SHA> ] [ / <path> ] github://dalehenrich/filetree:master/packages github://dalehenrich/filetree:1.0/packages github://dalehenrich/filetree:a772ac2ecc/packages Thursday, September 20, 2012
  • 27. BaselineOf single #baseline: method in the BaselinOf class Thursday, September 20, 2012
  • 28. ConfigurationOf Metacello version numbers become tags for git commits Thursday, September 20, 2012
  • 29. Scripting API Invented API to replace the “standard” load expression: with this expression: Thursday, September 20, 2012
  • 30. Current Status • Metacello class for scripts will be included in base images for Pharo2.0 and Squeak4.4. • MetacelloPreview 1.0-beta.32.2 • looking for a few git savvy users to use the preview release • FsGit • in-image support for Git Thursday, September 20, 2012
  • 31. Resources/Questions mailing list: http://groups.google.com/group/metacello preview installation & docs: https://github.com/dalehenrich/metacello-work/blob/master/README.md Metacello Dr. will be IN today and Thursday All questions will be answered! Thursday, September 20, 2012