SlideShare una empresa de Scribd logo
1 de 24
Descargar para leer sin conexión
Software Evolution from the Field:
An Experience Report
from the Squeak Maintainers


    Marcus Denker
    SCG University of Berne
    Switzerland


    Stéphane Ducasse
    LISTIC
    Université de Savoie
    France




 © Marcus Denker
Roadmap




> A little bit about Squeak
> Evolution problems
> Towards a solution
     — Software Engineering
     — Process
     — Programming Language




© Marcus Denker
Squeak: Open Source Smalltalk




>     Based on original Smalltalk
     — parts of the codebase are 30 years old


>    Squeak is no toy! (even if it looks like one...)
     — 1600 Classes, 32.000 Methods

>    We have been responsible for 3.7 and 3.9



© Marcus Denker
Squeak: Features



>    Two graphical user interface frameworks
     — MVC, Morphic
>    Complete IDE with all tools
     — Incremental compiler, debugger, code browser...
> Language core and libraries
> eToy: programming for kids
> Multimedia support: pictures / movies / sound
> Various libraries: compression, encryption, networking



© Marcus Denker
Communities and Projects




>    Seaside: web framework
>    Croquet: multiuser 3D
>    Tweak / Sophie: media authoring
>    SmallLand: Squeak for Kids
>    SqueakLand: spanish schools (>40.000 PCs)
>    Research (e.g. SCG Bern)




© Marcus Denker
Squeak Development Process



> Up to 3.4: Alan Kayʼs group
> Since 2001: real open source project
     — Squeak Foundation Board: Elected 2006
>    For each release: maintainers
     — 3.9: Stephane Ducasse, Marcus Denker
>    Release team (maintainers):
     — Integration (core)
     — Coordination (packages)




© Marcus Denker
Measurable facts


                  year #classes #method   LOC     #changes
     3.5          2003 1811    41408      322k    10
     3.6          2003 1338    33277      246k    240

     3.7          2004 1544    35526      261k    560

     3.8          2005 1659    37953      281k    600

     3.9a         2006 >2000   >44000     >300k   n/a



© Marcus Denker
Common Problems



>    Tangled code

>    Dead code (ca. 30 years old!)

>    Prototype code / old experiments

>    Evolution dilemma:
     — How to provide a stable base and move forward?



© Marcus Denker
Egocentric Syndrome




>    Change means:
     — some bugs are fixed, new bugs are introduced
     — client code may need to be adapted

>    Programmer solution: be egoistic

>    “Get my bugfix in NOW, but change nothing else!”



© Marcus Denker
Towards a Solution




>    Software Engineering

>    Process

>    Language Design




© Marcus Denker
Software Engineering




>    Deprecation
>    Modularizing
>    Registration Mechanisms / Abstractions
>    Refactoring
>    Tests




© Marcus Denker
Deprecation mechanism


> Retain old methods for compatibility
> But flag them as deprecated
     — Raise warning at runtime


      Month>>eachWeekDo: aBlock
        self deprecated: ’Use #weeksDo:’.
        self weeksDo: aBlock
> retained for one release
> Problems:
     — for methods only, change happens too often


© Marcus Denker
Modularization



>    3.9: composed of 49 packages
     — average of 40 classes per package

>    Has been done ad-hoc: need to be analysed!

>    positive effects:
     — Packages maintained by third parties
     — Lots of hints where to clean up




© Marcus Denker
New Abstractions




>    Registration vs. editing code
     — Tools (e.g., refactoring) , menus

>    ToolBuilder: abstract the UI Framework

>    System change notification




© Marcus Denker
Refactoring and Tests



>    refactoring
     — Remove prototype code
     — started to untangle packages

>    tests
     — Programmer tests enable change
     — started to collect tests in 3.7
     — ~2000 in 3.9a




© Marcus Denker
Process




>    Better versioning tools

>    Bug tracking

>    Future: automatic build tools




© Marcus Denker
Versioning Tools



>    Old Smalltalk model: send patch files around
     — This does not scale!

>    Monticello: versioning system for Squeak
     —    contributed by the commercial sub-community
     —    introduces simple package mechanism
     —    very powerful merge tool
     —    improves workflow




© Marcus Denker
Bug Tracking




>    No real bug tracking for a long time
     — Amazing! (but true for many projects)

>    Introduced slowly around 3.7

>    real tool based bug tracking since 3.8




© Marcus Denker
Automated Building and Testing



>    Tests need to be executed to be useful
     — Squeak ships with many broken tests!

>    Solution: automatic test server
     — We are working on that now


>    Second step: automated build server
     — Build external packages
     — Run tests



© Marcus Denker
Language Design




>    Better support for Modularity

>    History as a First Class Entity

>    Beyond Deprecation




© Marcus Denker
First class History



> Squeak is reflective: has a first class model of its own
  static structure (classes, methods)
> Extend the meta model to include data important for
  evolution
> History as a first class entity
     —    Why did this change?
     —    What else was change when this method changed?
     —    When did this test break for the first time?
     —    Which change affected the performance of the system?


© Marcus Denker
Beyond Deprecation




>    Deprecation: allow clients to migrate incrementally

>    Can we do better?

>    Complete history available
     — We can run different version per client
     — Slowly propagate changes through the system




© Marcus Denker
Conclusion




>    Evolution is a real problem for Squeak

>    We need to improve on all levels
     — Better code base
     — Better tools + processes


>    How can the language support evolution?



© Marcus Denker
Questions?




>    Evolution is a real problem for Squeak

>    We need to improve on all levels
     — Better code base
     — Better tools + processes


>    How can the language support evolution?



© Marcus Denker

Más contenido relacionado

Similar a Software Evolution from the Field: an Experience Report

Presentation about my Research
Presentation about my ResearchPresentation about my Research
Presentation about my ResearchMarcus Denker
 
Software operability and run book collaboration - DevOps Summit, Amsterdam
Software operability and run book collaboration - DevOps Summit, AmsterdamSoftware operability and run book collaboration - DevOps Summit, Amsterdam
Software operability and run book collaboration - DevOps Summit, AmsterdamMatthew Skelton
 
Beyond Text - Methods as Objects
Beyond Text - Methods as ObjectsBeyond Text - Methods as Objects
Beyond Text - Methods as ObjectsMarcus Denker
 
Unanticipated Partial Behavioral Reflection
Unanticipated Partial Behavioral ReflectionUnanticipated Partial Behavioral Reflection
Unanticipated Partial Behavioral ReflectionESUG
 
Sub-Method Reflection
Sub-Method ReflectionSub-Method Reflection
Sub-Method ReflectionMarcus Denker
 
Talk: Practical, Pluggable Types
Talk: Practical, Pluggable TypesTalk: Practical, Pluggable Types
Talk: Practical, Pluggable TypesMarcus Denker
 
Agileand saas davepatterson_armandofox_050813webinar
Agileand saas davepatterson_armandofox_050813webinarAgileand saas davepatterson_armandofox_050813webinar
Agileand saas davepatterson_armandofox_050813webinarRoberto Jr. Figueroa
 
Performance and Scale: Billions of request per day (DDD2019)
Performance and Scale: Billions of request per day (DDD2019)Performance and Scale: Billions of request per day (DDD2019)
Performance and Scale: Billions of request per day (DDD2019)Marcel Dempers
 
openUC & sipXecs Architecture
openUC & sipXecs ArchitectureopenUC & sipXecs Architecture
openUC & sipXecs ArchitectureChristina Inge
 
Implementing a Continuous Integration System for Software Design
Implementing a Continuous Integration System for Software DesignImplementing a Continuous Integration System for Software Design
Implementing a Continuous Integration System for Software DesignVincentBorchardt
 
The world of Docker and Kubernetes
The world of Docker and Kubernetes The world of Docker and Kubernetes
The world of Docker and Kubernetes vty
 
What's new in Squeak 3.9
What's new in Squeak 3.9What's new in Squeak 3.9
What's new in Squeak 3.9Marcus Denker
 
A Summary about Hykes' Keynote on Dockercon 2015
A Summary about Hykes' Keynote on Dockercon 2015A Summary about Hykes' Keynote on Dockercon 2015
A Summary about Hykes' Keynote on Dockercon 2015Henry Huang
 
Docker Meetup at Docker HQ: Docker Cloud
Docker Meetup at Docker HQ: Docker CloudDocker Meetup at Docker HQ: Docker Cloud
Docker Meetup at Docker HQ: Docker CloudDocker, Inc.
 

Similar a Software Evolution from the Field: an Experience Report (20)

Unstuck
UnstuckUnstuck
Unstuck
 
Reflection
ReflectionReflection
Reflection
 
Presentation about my Research
Presentation about my ResearchPresentation about my Research
Presentation about my Research
 
Lecture: Reflection
Lecture: ReflectionLecture: Reflection
Lecture: Reflection
 
Software operability and run book collaboration - DevOps Summit, Amsterdam
Software operability and run book collaboration - DevOps Summit, AmsterdamSoftware operability and run book collaboration - DevOps Summit, Amsterdam
Software operability and run book collaboration - DevOps Summit, Amsterdam
 
Lecture: Reflection
Lecture: ReflectionLecture: Reflection
Lecture: Reflection
 
Beyond Text - Methods as Objects
Beyond Text - Methods as ObjectsBeyond Text - Methods as Objects
Beyond Text - Methods as Objects
 
Unanticipated Partial Behavioral Reflection
Unanticipated Partial Behavioral ReflectionUnanticipated Partial Behavioral Reflection
Unanticipated Partial Behavioral Reflection
 
Sub-Method Reflection
Sub-Method ReflectionSub-Method Reflection
Sub-Method Reflection
 
Talk: Practical, Pluggable Types
Talk: Practical, Pluggable TypesTalk: Practical, Pluggable Types
Talk: Practical, Pluggable Types
 
Agileand saas davepatterson_armandofox_050813webinar
Agileand saas davepatterson_armandofox_050813webinarAgileand saas davepatterson_armandofox_050813webinar
Agileand saas davepatterson_armandofox_050813webinar
 
Performance and Scale: Billions of request per day (DDD2019)
Performance and Scale: Billions of request per day (DDD2019)Performance and Scale: Billions of request per day (DDD2019)
Performance and Scale: Billions of request per day (DDD2019)
 
Reflectivity Demo
Reflectivity DemoReflectivity Demo
Reflectivity Demo
 
openUC & sipXecs Architecture
openUC & sipXecs ArchitectureopenUC & sipXecs Architecture
openUC & sipXecs Architecture
 
Implementing a Continuous Integration System for Software Design
Implementing a Continuous Integration System for Software DesignImplementing a Continuous Integration System for Software Design
Implementing a Continuous Integration System for Software Design
 
The world of Docker and Kubernetes
The world of Docker and Kubernetes The world of Docker and Kubernetes
The world of Docker and Kubernetes
 
Srs
SrsSrs
Srs
 
What's new in Squeak 3.9
What's new in Squeak 3.9What's new in Squeak 3.9
What's new in Squeak 3.9
 
A Summary about Hykes' Keynote on Dockercon 2015
A Summary about Hykes' Keynote on Dockercon 2015A Summary about Hykes' Keynote on Dockercon 2015
A Summary about Hykes' Keynote on Dockercon 2015
 
Docker Meetup at Docker HQ: Docker Cloud
Docker Meetup at Docker HQ: Docker CloudDocker Meetup at Docker HQ: Docker Cloud
Docker Meetup at Docker HQ: Docker Cloud
 

Más de Marcus Denker

ConstantBlocks in Pharo11
ConstantBlocks in Pharo11ConstantBlocks in Pharo11
ConstantBlocks in Pharo11Marcus Denker
 
First Class Variables as AST Annotations
First Class Variables as AST AnnotationsFirst Class Variables as AST Annotations
First Class Variables as AST AnnotationsMarcus Denker
 
Supporting Pharo / Getting Pharo Support
Supporting Pharo / Getting Pharo SupportSupporting Pharo / Getting Pharo Support
Supporting Pharo / Getting Pharo SupportMarcus Denker
 
Lecture: "Advanced Reflection: MetaLinks"
Lecture: "Advanced Reflection: MetaLinks"Lecture: "Advanced Reflection: MetaLinks"
Lecture: "Advanced Reflection: MetaLinks"Marcus Denker
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the DebuggerMarcus Denker
 
Lecture. Advanced Reflection: MetaLinks
Lecture. Advanced Reflection: MetaLinksLecture. Advanced Reflection: MetaLinks
Lecture. Advanced Reflection: MetaLinksMarcus Denker
 
Improving code completion for Pharo
Improving code completion for PharoImproving code completion for Pharo
Improving code completion for PharoMarcus Denker
 
VUB Brussels Lecture 2019: Advanced Reflection: MetaLinks
VUB Brussels Lecture 2019: Advanced Reflection: MetaLinksVUB Brussels Lecture 2019: Advanced Reflection: MetaLinks
VUB Brussels Lecture 2019: Advanced Reflection: MetaLinksMarcus Denker
 
Lecture: Advanced Reflection. MetaLinks
Lecture: Advanced Reflection. MetaLinksLecture: Advanced Reflection. MetaLinks
Lecture: Advanced Reflection. MetaLinksMarcus Denker
 
Open-Source: An Infinite Game
Open-Source: An Infinite GameOpen-Source: An Infinite Game
Open-Source: An Infinite GameMarcus Denker
 
PharoTechTalk: Contributing to Pharo
PharoTechTalk: Contributing to PharoPharoTechTalk: Contributing to Pharo
PharoTechTalk: Contributing to PharoMarcus Denker
 
Feedback Loops in Practice
Feedback Loops in PracticeFeedback Loops in Practice
Feedback Loops in PracticeMarcus Denker
 

Más de Marcus Denker (20)

Soil And Pharo
Soil And PharoSoil And Pharo
Soil And Pharo
 
ConstantBlocks in Pharo11
ConstantBlocks in Pharo11ConstantBlocks in Pharo11
ConstantBlocks in Pharo11
 
Demo: Improved DoIt
Demo: Improved DoItDemo: Improved DoIt
Demo: Improved DoIt
 
First Class Variables as AST Annotations
First Class Variables as AST AnnotationsFirst Class Variables as AST Annotations
First Class Variables as AST Annotations
 
Supporting Pharo / Getting Pharo Support
Supporting Pharo / Getting Pharo SupportSupporting Pharo / Getting Pharo Support
Supporting Pharo / Getting Pharo Support
 
Lecture: "Advanced Reflection: MetaLinks"
Lecture: "Advanced Reflection: MetaLinks"Lecture: "Advanced Reflection: MetaLinks"
Lecture: "Advanced Reflection: MetaLinks"
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the Debugger
 
Variables in Pharo
Variables in PharoVariables in Pharo
Variables in Pharo
 
Lecture. Advanced Reflection: MetaLinks
Lecture. Advanced Reflection: MetaLinksLecture. Advanced Reflection: MetaLinks
Lecture. Advanced Reflection: MetaLinks
 
Improving code completion for Pharo
Improving code completion for PharoImproving code completion for Pharo
Improving code completion for Pharo
 
VUB Brussels Lecture 2019: Advanced Reflection: MetaLinks
VUB Brussels Lecture 2019: Advanced Reflection: MetaLinksVUB Brussels Lecture 2019: Advanced Reflection: MetaLinks
VUB Brussels Lecture 2019: Advanced Reflection: MetaLinks
 
Slot Composition
Slot CompositionSlot Composition
Slot Composition
 
Lecture: Advanced Reflection. MetaLinks
Lecture: Advanced Reflection. MetaLinksLecture: Advanced Reflection. MetaLinks
Lecture: Advanced Reflection. MetaLinks
 
PHARO IOT
PHARO IOTPHARO IOT
PHARO IOT
 
Open-Source: An Infinite Game
Open-Source: An Infinite GameOpen-Source: An Infinite Game
Open-Source: An Infinite Game
 
Lecture: MetaLinks
Lecture: MetaLinksLecture: MetaLinks
Lecture: MetaLinks
 
PharoTechTalk: Contributing to Pharo
PharoTechTalk: Contributing to PharoPharoTechTalk: Contributing to Pharo
PharoTechTalk: Contributing to Pharo
 
Feedback Loops in Practice
Feedback Loops in PracticeFeedback Loops in Practice
Feedback Loops in Practice
 
Pharo6 - ESUG17
Pharo6 - ESUG17Pharo6 - ESUG17
Pharo6 - ESUG17
 
Pharo6
Pharo6Pharo6
Pharo6
 

Último

Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro 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
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
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
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
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
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 

Último (20)

Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
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
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
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...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
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?
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 

Software Evolution from the Field: an Experience Report

  • 1. Software Evolution from the Field: An Experience Report from the Squeak Maintainers Marcus Denker SCG University of Berne Switzerland Stéphane Ducasse LISTIC Université de Savoie France © Marcus Denker
  • 2. Roadmap > A little bit about Squeak > Evolution problems > Towards a solution — Software Engineering — Process — Programming Language © Marcus Denker
  • 3. Squeak: Open Source Smalltalk > Based on original Smalltalk — parts of the codebase are 30 years old > Squeak is no toy! (even if it looks like one...) — 1600 Classes, 32.000 Methods > We have been responsible for 3.7 and 3.9 © Marcus Denker
  • 4. Squeak: Features > Two graphical user interface frameworks — MVC, Morphic > Complete IDE with all tools — Incremental compiler, debugger, code browser... > Language core and libraries > eToy: programming for kids > Multimedia support: pictures / movies / sound > Various libraries: compression, encryption, networking © Marcus Denker
  • 5. Communities and Projects > Seaside: web framework > Croquet: multiuser 3D > Tweak / Sophie: media authoring > SmallLand: Squeak for Kids > SqueakLand: spanish schools (>40.000 PCs) > Research (e.g. SCG Bern) © Marcus Denker
  • 6. Squeak Development Process > Up to 3.4: Alan Kayʼs group > Since 2001: real open source project — Squeak Foundation Board: Elected 2006 > For each release: maintainers — 3.9: Stephane Ducasse, Marcus Denker > Release team (maintainers): — Integration (core) — Coordination (packages) © Marcus Denker
  • 7. Measurable facts year #classes #method LOC #changes 3.5 2003 1811 41408 322k 10 3.6 2003 1338 33277 246k 240 3.7 2004 1544 35526 261k 560 3.8 2005 1659 37953 281k 600 3.9a 2006 >2000 >44000 >300k n/a © Marcus Denker
  • 8. Common Problems > Tangled code > Dead code (ca. 30 years old!) > Prototype code / old experiments > Evolution dilemma: — How to provide a stable base and move forward? © Marcus Denker
  • 9. Egocentric Syndrome > Change means: — some bugs are fixed, new bugs are introduced — client code may need to be adapted > Programmer solution: be egoistic > “Get my bugfix in NOW, but change nothing else!” © Marcus Denker
  • 10. Towards a Solution > Software Engineering > Process > Language Design © Marcus Denker
  • 11. Software Engineering > Deprecation > Modularizing > Registration Mechanisms / Abstractions > Refactoring > Tests © Marcus Denker
  • 12. Deprecation mechanism > Retain old methods for compatibility > But flag them as deprecated — Raise warning at runtime Month>>eachWeekDo: aBlock self deprecated: ’Use #weeksDo:’. self weeksDo: aBlock > retained for one release > Problems: — for methods only, change happens too often © Marcus Denker
  • 13. Modularization > 3.9: composed of 49 packages — average of 40 classes per package > Has been done ad-hoc: need to be analysed! > positive effects: — Packages maintained by third parties — Lots of hints where to clean up © Marcus Denker
  • 14. New Abstractions > Registration vs. editing code — Tools (e.g., refactoring) , menus > ToolBuilder: abstract the UI Framework > System change notification © Marcus Denker
  • 15. Refactoring and Tests > refactoring — Remove prototype code — started to untangle packages > tests — Programmer tests enable change — started to collect tests in 3.7 — ~2000 in 3.9a © Marcus Denker
  • 16. Process > Better versioning tools > Bug tracking > Future: automatic build tools © Marcus Denker
  • 17. Versioning Tools > Old Smalltalk model: send patch files around — This does not scale! > Monticello: versioning system for Squeak — contributed by the commercial sub-community — introduces simple package mechanism — very powerful merge tool — improves workflow © Marcus Denker
  • 18. Bug Tracking > No real bug tracking for a long time — Amazing! (but true for many projects) > Introduced slowly around 3.7 > real tool based bug tracking since 3.8 © Marcus Denker
  • 19. Automated Building and Testing > Tests need to be executed to be useful — Squeak ships with many broken tests! > Solution: automatic test server — We are working on that now > Second step: automated build server — Build external packages — Run tests © Marcus Denker
  • 20. Language Design > Better support for Modularity > History as a First Class Entity > Beyond Deprecation © Marcus Denker
  • 21. First class History > Squeak is reflective: has a first class model of its own static structure (classes, methods) > Extend the meta model to include data important for evolution > History as a first class entity — Why did this change? — What else was change when this method changed? — When did this test break for the first time? — Which change affected the performance of the system? © Marcus Denker
  • 22. Beyond Deprecation > Deprecation: allow clients to migrate incrementally > Can we do better? > Complete history available — We can run different version per client — Slowly propagate changes through the system © Marcus Denker
  • 23. Conclusion > Evolution is a real problem for Squeak > We need to improve on all levels — Better code base — Better tools + processes > How can the language support evolution? © Marcus Denker
  • 24. Questions? > Evolution is a real problem for Squeak > We need to improve on all levels — Better code base — Better tools + processes > How can the language support evolution? © Marcus Denker