SlideShare a Scribd company logo
Migration from VSE to VW with Pollock
Christian Haider
ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 2 of 29
Overview
• Motivation
• Migration Process
• The Baseline
• Migration details
• Conclusions
ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 3 of 29
Why this talk?
• Smalltalk market
• VSE is dead
• Pollock comes
• As a checklist for VSE projects
• Tell you that it is easy and worth it
• My experience
• 2 private projects
• 1 consulting project
ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 4 of 29
Why migrate?
• Why migrate
• Worry about support for new Windows versions
• “System gets cracks”
• New features
• More Platforms
• Increase Productivity
• Why not to migrate
• Cost of VisualWorks
• Cost of migration
• GUI migration is now easier with Pollock
• Cost of change
• Migrate to where?
• VW, VA, Java, C#
ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 5 of 29
How to migrate
• Only migrate – don’t improve!
• The Project is migrating, not just the Code
• Get a Consultant
• Customer will do everything!
• Consultant will explain, guide and help where appropriate
(and keep the fingers off the keyboard :-)
• Setting
• One Table with one Keyboard and Mouse
• Display with a Beamer
• Start with visual.im
• Enhance the VisualWorks environment as needed
• Consultant provides help and explanations when useful
ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 6 of 29
Situation
Visual Smalltalk
App
Superclass
-Instvars
-classvars Globals
External
Classes
Classes
Classes
Database Comm.
VisualWorks
App
Superclass
-Instvars
-classvars Globals
External
Classes
Classes
Classes
Database Comm.
ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 7 of 29
Porting Steps - Overview
1. Create a Baseline (same source)
2. Translate Code (runnable code)
3. Test (same behavior)
4. Build Runtime (same product)
5. Make it Nice (new possibilities)
ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 8 of 29
Baseline
• Defined state
• Equivalent Source
• Same module structure and versions
• All sources and texts are integrated and
published in Store
• Loads without serious warnings
• All work can be done in VisualWorks
ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 9 of 29
Towards the Baseline
Get all Sources into VisualWorks
• Module Structure…
• Namespace Name
• External Interfaces…
• FileIn Modules…
• Publish Baseline
• Load in fresh image
ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 10 of 29
Store Bundle Structure
• The Store structure should reflect the development process
• If a Team/V repository exists, the same structure should be used
• Suggestion:
Application Development
(VSE Porting)
Application Runtime
Common
Module 1
…
Module n
Tools
Tests
• Define a version format (1.0.0.0 <major.minor.revision.build>)
• An Access DB can be used nicely as light weight Store
ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 11 of 29
External Interfaces
• DLL calls
• <api: name args return>
• Sockets
• Use VW
• Database
• Use VW
• COM?
• SmallCOM/X?
• Other?
ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 12 of 29
Environment
• Tool to fileOut XML VW sources
• VSE Porting package
• VSE namespace
• VSE.Class
• VSE.DynamicLinkLibrary with api parser
• Tools package
• Browser list icons
ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 13 of 29
FileIn
1. Open GHChangeList
• Precondition: Undeclareds are empty
• Set default namespace and encoding
2. Load all sources for one package
3. Replay all
• Missing superclasses -> define as VSE.Class
• External interfaces -> define as VSE.DynamicLinkLibrary
4. Resolve Undeclared…
5. Add text file comments to Pundles, Classes and Globals
6. Publish to Store
ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 14 of 29
Resolving Undeclareds
• Referenced class
• Subclass VSE.Class
• Global, pool constant
• Add Shared Variable in VSE (move to porting package)
• Instvar, class instvar, class var
• add in VSE.Class subclass
• Global in system extension
• Shared variable in referring Class (move to porting package)
• Instvar in system overwrite
• Add as temp var and add a comment/marker
ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 15 of 29
The Migrant
• Missing references are resolved (empty porting package)
• Message send but not implemented issues are resolved
• The code loads without warnings
• Clean-up
• The code critic reports no bugs or possible bugs.
• There are no unnecessary system extensions or overrides
• There is no unused code
• The system and the applications run basically correct.
• Problem areas are identified, recorded and patched
• The behavior of the VSE system is basically preserved
ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 16 of 29
Towards the Migrant
• Eliminate the porting package
• Resolve former Undeclareds
• Resolve ‘Methods send but not implemented’
• Options
• Rewrite Tool (!)
• Regex
• Reimplement
• Remove
• Publish and load in fresh image often
ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 17 of 29
Topics
• Translation by topics
• Files
• Registry
• TCP/IP
• Processes
• Exceptions
• Finalization
• C calls
• Dependency mechanism
• GUI…
ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 18 of 29
Differences in the Base
• (Smalltalk at: #...)
=> (‘namespace.global’ asQualifiedReference value)
• TimeStamp => Timestamp
• Colors: Color, RGBColor, logical colors => ColorValue
• Pool constants (Clr*, Cr, Lf) => ColorValue, Character, …
• File access: File, Directory, Disk => Filename
• ObjectFiler => BOSS
• Application startup: SessionModel, SmalltalkLibrary,
SmalltalkLibraryBinder => ObjectMemory, Parcel
ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 19 of 29
GUI Migration
• Emulate or replace?
• Port one existing GUI
• Get the topics with the debugger
• Change them generally with the rewrite tool
ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 20 of 29
Differences in the GUI
• CursorManager, MessageBox , Prompter
=> Dialog
• PrinterDialog [Windows Goodies],
FontDialog
• Display, Bitmap, Images, Icons
• Text, Fonts
• Window opening
• Windows messages: wm*
ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 21 of 29
GUI differences
AbstractPaneVisualPartSubPane
ControllerControllerWindows events
Window #opened(model)#needsContents
FormSubCanvasNesting: own pane
UserInterfaceApplicationModelViewManager
PollockWrapperDigitalk
ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 22 of 29
Pollock Model
Pane
Agent
Artist
Frame
ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 23 of 29
Widgets
--ImageList
--StatusWindow
--StatusField
PageTabControlPage
TreeViewTreeView
DropDownListComboBox
TextEditRichEdit
TextEditTextPane
InputFieldEntryField
DisplayTextStaticText
ToolItemSeparatorToolbarSeparator
ButtonButton
ToolbarButtonToolbarToggleButton
ToolbarButtonToolbarButton
ToolbarToolbar
TabControlTabControl
ListBoxListBox
RadioButtonRadioButton
CheckBoxCheckBox
GroupBoxGroupBox
ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 24 of 29
Adding a Widget
• VSE • Pollock
listBox := ListBox new.
listBox font: self defaultFont.
listBox printSelector: #printItem.
listBox when: #changed:
send: #setSelection: to: self.
listBox when: #needsContents
send: #setList: to: self.
frame := LayoutFrame
topLeftRatio: 0 @ 0
bottomRightRatio: 1 @ 1.
listBox layoutFrame: frame.
view addPane: listBox.
listBox := ListBox new.
listBox textStyle: self artist listStyle.
listBox displaySelector: #printString.
listBox when: #selectionChanged
send: #setSelection: to: self.
frame := FractionalFrame
fractionLeft: 0 top: 0
right: 1 bottom: 1.
listBox frame: frame.
window addComponent: listBox.
ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 25 of 29
Tests
Resolve the remaining differences
• Module tests
• SUnit test
•First in VSE
•Then migrate to VW
• Application tests
ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 26 of 29
Runtime and Performance
• Build Runtime
• RTP bug: exit on last window close
• Test Runtime
• Test Performance (WTS)
ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 27 of 29
Make it Nice
• Separate development from runtime
• Structure namespaces
• Define protocols (if not Team/V)
• Comment Pundles, Classes, Globals (if not Team/V)
• Write your formatter
• Make use of VW Features
• MultiProc-UI
• Opentalk, CORBA
• Net and Web Support
• .net and CE Support (in Beta)
• Pollock
ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 28 of 29
Conclusion
• It is easy and can be done in a few weeks
• All code is rewritten and looked at
• Duplications
• Nil disease
• Coding Style
• Forgotten code
• Direct variable access
• Branches
• Long methods
ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 29 of 29
Recommended Tools
• StoreForAccess (lightweight on disk)
• GHChangeList (adds Namespace and package support)
• Coding
• Refactoring Browser
• Rewrite Tool
• Regex Tool
• Code Critic
• SUnit (standard for module tests)
• Environment
• RBCodeHighlighter (highlights while typing)
• RBTabs (avoids too many browsers)
• AutoComplete
• RBSUnitExtensions (adds SUnit buttons to the browser)
• RBStoreExtensions (shows versions graphically)
• ExtraIcons (nice list icons, essential for testing)
• WinIcons (icons for VW tools)

More Related Content

What's hot

Mavenized RCP
Mavenized RCPMavenized RCP
Mavenized RCP
Marc Jimenez
 
Containers: Anti Pattern
Containers:  Anti PatternContainers:  Anti Pattern
Containers: Anti Pattern
Jeeva Chelladhurai
 
KLF_chromium02
KLF_chromium02KLF_chromium02
KLF_chromium02
Adenilson Cavalcanti
 
Pipeline based deployments on Jenkins
Pipeline based deployments  on JenkinsPipeline based deployments  on Jenkins
Pipeline based deployments on Jenkins
Knoldus Inc.
 
Selena Deckelmann - Sane Schema Management with Alembic and SQLAlchemy @ Pos...
Selena Deckelmann - Sane Schema Management with  Alembic and SQLAlchemy @ Pos...Selena Deckelmann - Sane Schema Management with  Alembic and SQLAlchemy @ Pos...
Selena Deckelmann - Sane Schema Management with Alembic and SQLAlchemy @ Pos...
PostgresOpen
 
Jenkins Declarative Pipelines 101
Jenkins Declarative Pipelines 101Jenkins Declarative Pipelines 101
Jenkins Declarative Pipelines 101
Malcolm Groves
 
Jenkins Pipeline Tutorial | Continuous Delivery Pipeline Using Jenkins | DevO...
Jenkins Pipeline Tutorial | Continuous Delivery Pipeline Using Jenkins | DevO...Jenkins Pipeline Tutorial | Continuous Delivery Pipeline Using Jenkins | DevO...
Jenkins Pipeline Tutorial | Continuous Delivery Pipeline Using Jenkins | DevO...
Edureka!
 
How to use source control with apex?
How to use source control with apex?How to use source control with apex?
How to use source control with apex?
Oliver Lemm
 
Why Kotlin?
Why Kotlin?Why Kotlin?
Why Kotlin?
Yongqiang Li
 
Docker and Jenkins Pipeline
Docker and Jenkins PipelineDocker and Jenkins Pipeline
Docker and Jenkins Pipeline
Mark Waite
 
Codifying the Build and Release Process with a Jenkins Pipeline Shared Library
Codifying the Build and Release Process with a Jenkins Pipeline Shared LibraryCodifying the Build and Release Process with a Jenkins Pipeline Shared Library
Codifying the Build and Release Process with a Jenkins Pipeline Shared Library
Alvin Huang
 
You Were Lied To About Optimization
You Were Lied To About OptimizationYou Were Lied To About Optimization
You Were Lied To About Optimization
Chris Tankersley
 
Apache Maven
Apache MavenApache Maven
Apache Maven
eurosigdoc acm
 
Evolution ofversioncontrolinopensource
Evolution ofversioncontrolinopensourceEvolution ofversioncontrolinopensource
Evolution ofversioncontrolinopensource
fOSSa 2010 Main Presentations
 
Symfony Under Control by Maxim Romanovsky
Symfony Under Control by Maxim RomanovskySymfony Under Control by Maxim Romanovsky
Symfony Under Control by Maxim Romanovsky
php-user-group-minsk
 
Architecting the Future: Abstractions and Metadata - All Things Open
Architecting the Future: Abstractions and Metadata - All Things OpenArchitecting the Future: Abstractions and Metadata - All Things Open
Architecting the Future: Abstractions and Metadata - All Things Open
Daniel Barker
 

What's hot (16)

Mavenized RCP
Mavenized RCPMavenized RCP
Mavenized RCP
 
Containers: Anti Pattern
Containers:  Anti PatternContainers:  Anti Pattern
Containers: Anti Pattern
 
KLF_chromium02
KLF_chromium02KLF_chromium02
KLF_chromium02
 
Pipeline based deployments on Jenkins
Pipeline based deployments  on JenkinsPipeline based deployments  on Jenkins
Pipeline based deployments on Jenkins
 
Selena Deckelmann - Sane Schema Management with Alembic and SQLAlchemy @ Pos...
Selena Deckelmann - Sane Schema Management with  Alembic and SQLAlchemy @ Pos...Selena Deckelmann - Sane Schema Management with  Alembic and SQLAlchemy @ Pos...
Selena Deckelmann - Sane Schema Management with Alembic and SQLAlchemy @ Pos...
 
Jenkins Declarative Pipelines 101
Jenkins Declarative Pipelines 101Jenkins Declarative Pipelines 101
Jenkins Declarative Pipelines 101
 
Jenkins Pipeline Tutorial | Continuous Delivery Pipeline Using Jenkins | DevO...
Jenkins Pipeline Tutorial | Continuous Delivery Pipeline Using Jenkins | DevO...Jenkins Pipeline Tutorial | Continuous Delivery Pipeline Using Jenkins | DevO...
Jenkins Pipeline Tutorial | Continuous Delivery Pipeline Using Jenkins | DevO...
 
How to use source control with apex?
How to use source control with apex?How to use source control with apex?
How to use source control with apex?
 
Why Kotlin?
Why Kotlin?Why Kotlin?
Why Kotlin?
 
Docker and Jenkins Pipeline
Docker and Jenkins PipelineDocker and Jenkins Pipeline
Docker and Jenkins Pipeline
 
Codifying the Build and Release Process with a Jenkins Pipeline Shared Library
Codifying the Build and Release Process with a Jenkins Pipeline Shared LibraryCodifying the Build and Release Process with a Jenkins Pipeline Shared Library
Codifying the Build and Release Process with a Jenkins Pipeline Shared Library
 
You Were Lied To About Optimization
You Were Lied To About OptimizationYou Were Lied To About Optimization
You Were Lied To About Optimization
 
Apache Maven
Apache MavenApache Maven
Apache Maven
 
Evolution ofversioncontrolinopensource
Evolution ofversioncontrolinopensourceEvolution ofversioncontrolinopensource
Evolution ofversioncontrolinopensource
 
Symfony Under Control by Maxim Romanovsky
Symfony Under Control by Maxim RomanovskySymfony Under Control by Maxim Romanovsky
Symfony Under Control by Maxim Romanovsky
 
Architecting the Future: Abstractions and Metadata - All Things Open
Architecting the Future: Abstractions and Metadata - All Things OpenArchitecting the Future: Abstractions and Metadata - All Things Open
Architecting the Future: Abstractions and Metadata - All Things Open
 

Viewers also liked

Forward Chaining in HALO
Forward Chaining in HALOForward Chaining in HALO
Forward Chaining in HALO
ESUG
 
Promoting Smalltalk
Promoting SmalltalkPromoting Smalltalk
Promoting Smalltalk
ESUG
 
AIDA/Scribo
AIDA/ScriboAIDA/Scribo
AIDA/Scribo
ESUG
 
Gemstone Notifications
Gemstone NotificationsGemstone Notifications
Gemstone Notifications
ESUG
 
Helvetia
HelvetiaHelvetia
Helvetia
ESUG
 
Google Summer of Code & Summertalk
Google Summer of Code & SummertalkGoogle Summer of Code & Summertalk
Google Summer of Code & Summertalk
ESUG
 
Vg 2007 catalog 11 20
Vg 2007 catalog 11 20Vg 2007 catalog 11 20
Vg 2007 catalog 11 20
wldbil
 
Vg 2007 catalog 90 99
Vg 2007 catalog 90 99Vg 2007 catalog 90 99
Vg 2007 catalog 90 99
Christopher Freeman
 

Viewers also liked (8)

Forward Chaining in HALO
Forward Chaining in HALOForward Chaining in HALO
Forward Chaining in HALO
 
Promoting Smalltalk
Promoting SmalltalkPromoting Smalltalk
Promoting Smalltalk
 
AIDA/Scribo
AIDA/ScriboAIDA/Scribo
AIDA/Scribo
 
Gemstone Notifications
Gemstone NotificationsGemstone Notifications
Gemstone Notifications
 
Helvetia
HelvetiaHelvetia
Helvetia
 
Google Summer of Code & Summertalk
Google Summer of Code & SummertalkGoogle Summer of Code & Summertalk
Google Summer of Code & Summertalk
 
Vg 2007 catalog 11 20
Vg 2007 catalog 11 20Vg 2007 catalog 11 20
Vg 2007 catalog 11 20
 
Vg 2007 catalog 90 99
Vg 2007 catalog 90 99Vg 2007 catalog 90 99
Vg 2007 catalog 90 99
 

Similar to Migration from VSE to VW with Pollock

Использование AzureDevOps при разработке микросервисных приложений
Использование AzureDevOps при разработке микросервисных приложенийИспользование AzureDevOps при разработке микросервисных приложений
Использование AzureDevOps при разработке микросервисных приложений
Vitebsk Miniq
 
Bdsys icsm v3.5
Bdsys icsm v3.5Bdsys icsm v3.5
Bdsys icsm v3.5
SAIL_QU
 
An Empirical Study of Build System Migrations in Practice (ICSM 2012)
An Empirical Study of Build System Migrations in Practice (ICSM 2012)An Empirical Study of Build System Migrations in Practice (ICSM 2012)
An Empirical Study of Build System Migrations in Practice (ICSM 2012)
Bram Adams
 
OUG Ireland Meet-up 12th January
OUG Ireland Meet-up 12th JanuaryOUG Ireland Meet-up 12th January
OUG Ireland Meet-up 12th January
Brendan Tierney
 
Sitecore development approach evolution – destination helix
Sitecore development approach evolution – destination helixSitecore development approach evolution – destination helix
Sitecore development approach evolution – destination helix
Peter Nazarov
 
Apereo OAE development and release process
Apereo OAE development and release processApereo OAE development and release process
Apereo OAE development and release process
Bert Pareyn
 
Continuous Integration with Cloud Foundry Concourse and Docker on OpenPOWER
Continuous Integration with Cloud Foundry Concourse and Docker on OpenPOWERContinuous Integration with Cloud Foundry Concourse and Docker on OpenPOWER
Continuous Integration with Cloud Foundry Concourse and Docker on OpenPOWER
Indrajit Poddar
 
egacy-to-Windows Conversion: Your Migration Jump Start
egacy-to-Windows Conversion: Your Migration Jump Startegacy-to-Windows Conversion: Your Migration Jump Start
egacy-to-Windows Conversion: Your Migration Jump Start
UiPathCommunity
 
From XPages Hero to OSGi Guru: Taking the Scary out of Building Extension Lib...
From XPages Hero to OSGi Guru: Taking the Scary out of Building Extension Lib...From XPages Hero to OSGi Guru: Taking the Scary out of Building Extension Lib...
From XPages Hero to OSGi Guru: Taking the Scary out of Building Extension Lib...
Paul Withers
 
Plug-ins & Third-Party SDKs in UE4
Plug-ins & Third-Party SDKs in UE4Plug-ins & Third-Party SDKs in UE4
Plug-ins & Third-Party SDKs in UE4
Gerke Max Preussner
 
WordPress Under Control (Boston WP Meetup)
WordPress Under Control (Boston WP Meetup)WordPress Under Control (Boston WP Meetup)
WordPress Under Control (Boston WP Meetup)
Matt Bernhardt
 
Continuous Deployment To The Cloud @DevoxxPL 2017
Continuous Deployment To The Cloud @DevoxxPL 2017 Continuous Deployment To The Cloud @DevoxxPL 2017
Continuous Deployment To The Cloud @DevoxxPL 2017
Marcin Grzejszczak
 
Quickly and Effectively Testing Legacy c++ Code with Approval Tests mu cpp
Quickly and Effectively Testing Legacy c++ Code with Approval Tests   mu cppQuickly and Effectively Testing Legacy c++ Code with Approval Tests   mu cpp
Quickly and Effectively Testing Legacy c++ Code with Approval Tests mu cpp
Clare Macrae
 
OpenCms Days 2015 Arkema, a leading chemicals company
OpenCms Days 2015 Arkema, a leading chemicals companyOpenCms Days 2015 Arkema, a leading chemicals company
OpenCms Days 2015 Arkema, a leading chemicals company
Alkacon Software GmbH & Co. KG
 
321 codeincontainer brewbox
321 codeincontainer brewbox321 codeincontainer brewbox
321 codeincontainer brewbox
Lino Telera
 
Pharo 10 and beyond
 Pharo 10 and beyond Pharo 10 and beyond
Pharo 10 and beyond
ESUG
 
Bringing DevOps to the Database
Bringing DevOps to the DatabaseBringing DevOps to the Database
Bringing DevOps to the Database
Michaela Murray
 
Releasing High Quality Packages - Longhorn PHP 2021
Releasing High Quality Packages - Longhorn PHP 2021Releasing High Quality Packages - Longhorn PHP 2021
Releasing High Quality Packages - Longhorn PHP 2021
Colin O'Dell
 
Setting Up CircleCI Workflows for Your Salesforce Apps
Setting Up CircleCI Workflows for Your Salesforce AppsSetting Up CircleCI Workflows for Your Salesforce Apps
Setting Up CircleCI Workflows for Your Salesforce Apps
Daniel Stange
 
CA Harvest "Private Solutions - State of New Hampshire
CA Harvest "Private Solutions - State of New HampshireCA Harvest "Private Solutions - State of New Hampshire
CA Harvest "Private Solutions - State of New Hampshire
Bill Mannion (LION)
 

Similar to Migration from VSE to VW with Pollock (20)

Использование AzureDevOps при разработке микросервисных приложений
Использование AzureDevOps при разработке микросервисных приложенийИспользование AzureDevOps при разработке микросервисных приложений
Использование AzureDevOps при разработке микросервисных приложений
 
Bdsys icsm v3.5
Bdsys icsm v3.5Bdsys icsm v3.5
Bdsys icsm v3.5
 
An Empirical Study of Build System Migrations in Practice (ICSM 2012)
An Empirical Study of Build System Migrations in Practice (ICSM 2012)An Empirical Study of Build System Migrations in Practice (ICSM 2012)
An Empirical Study of Build System Migrations in Practice (ICSM 2012)
 
OUG Ireland Meet-up 12th January
OUG Ireland Meet-up 12th JanuaryOUG Ireland Meet-up 12th January
OUG Ireland Meet-up 12th January
 
Sitecore development approach evolution – destination helix
Sitecore development approach evolution – destination helixSitecore development approach evolution – destination helix
Sitecore development approach evolution – destination helix
 
Apereo OAE development and release process
Apereo OAE development and release processApereo OAE development and release process
Apereo OAE development and release process
 
Continuous Integration with Cloud Foundry Concourse and Docker on OpenPOWER
Continuous Integration with Cloud Foundry Concourse and Docker on OpenPOWERContinuous Integration with Cloud Foundry Concourse and Docker on OpenPOWER
Continuous Integration with Cloud Foundry Concourse and Docker on OpenPOWER
 
egacy-to-Windows Conversion: Your Migration Jump Start
egacy-to-Windows Conversion: Your Migration Jump Startegacy-to-Windows Conversion: Your Migration Jump Start
egacy-to-Windows Conversion: Your Migration Jump Start
 
From XPages Hero to OSGi Guru: Taking the Scary out of Building Extension Lib...
From XPages Hero to OSGi Guru: Taking the Scary out of Building Extension Lib...From XPages Hero to OSGi Guru: Taking the Scary out of Building Extension Lib...
From XPages Hero to OSGi Guru: Taking the Scary out of Building Extension Lib...
 
Plug-ins & Third-Party SDKs in UE4
Plug-ins & Third-Party SDKs in UE4Plug-ins & Third-Party SDKs in UE4
Plug-ins & Third-Party SDKs in UE4
 
WordPress Under Control (Boston WP Meetup)
WordPress Under Control (Boston WP Meetup)WordPress Under Control (Boston WP Meetup)
WordPress Under Control (Boston WP Meetup)
 
Continuous Deployment To The Cloud @DevoxxPL 2017
Continuous Deployment To The Cloud @DevoxxPL 2017 Continuous Deployment To The Cloud @DevoxxPL 2017
Continuous Deployment To The Cloud @DevoxxPL 2017
 
Quickly and Effectively Testing Legacy c++ Code with Approval Tests mu cpp
Quickly and Effectively Testing Legacy c++ Code with Approval Tests   mu cppQuickly and Effectively Testing Legacy c++ Code with Approval Tests   mu cpp
Quickly and Effectively Testing Legacy c++ Code with Approval Tests mu cpp
 
OpenCms Days 2015 Arkema, a leading chemicals company
OpenCms Days 2015 Arkema, a leading chemicals companyOpenCms Days 2015 Arkema, a leading chemicals company
OpenCms Days 2015 Arkema, a leading chemicals company
 
321 codeincontainer brewbox
321 codeincontainer brewbox321 codeincontainer brewbox
321 codeincontainer brewbox
 
Pharo 10 and beyond
 Pharo 10 and beyond Pharo 10 and beyond
Pharo 10 and beyond
 
Bringing DevOps to the Database
Bringing DevOps to the DatabaseBringing DevOps to the Database
Bringing DevOps to the Database
 
Releasing High Quality Packages - Longhorn PHP 2021
Releasing High Quality Packages - Longhorn PHP 2021Releasing High Quality Packages - Longhorn PHP 2021
Releasing High Quality Packages - Longhorn PHP 2021
 
Setting Up CircleCI Workflows for Your Salesforce Apps
Setting Up CircleCI Workflows for Your Salesforce AppsSetting Up CircleCI Workflows for Your Salesforce Apps
Setting Up CircleCI Workflows for Your Salesforce Apps
 
CA Harvest "Private Solutions - State of New Hampshire
CA Harvest "Private Solutions - State of New HampshireCA Harvest "Private Solutions - State of New Hampshire
CA Harvest "Private Solutions - State of New Hampshire
 

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 programming
ESUG
 
Technical documentation support in Pharo
Technical documentation support in PharoTechnical documentation support in Pharo
Technical documentation support in Pharo
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
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in Pharo
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
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector Tuning
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
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the Debugger
ESUG
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing Score
ESUG
 
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
ESUG
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design Mooc
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
 

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

UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
Matthew Sinclair
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 
20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website
Pixlogix Infotech
 
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
Zilliz
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
DianaGray10
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
Edge AI and Vision Alliance
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
James Anderson
 

Recently uploaded (20)

UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 
20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website
 
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
 

Migration from VSE to VW with Pollock

  • 1. Migration from VSE to VW with Pollock Christian Haider
  • 2. ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 2 of 29 Overview • Motivation • Migration Process • The Baseline • Migration details • Conclusions
  • 3. ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 3 of 29 Why this talk? • Smalltalk market • VSE is dead • Pollock comes • As a checklist for VSE projects • Tell you that it is easy and worth it • My experience • 2 private projects • 1 consulting project
  • 4. ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 4 of 29 Why migrate? • Why migrate • Worry about support for new Windows versions • “System gets cracks” • New features • More Platforms • Increase Productivity • Why not to migrate • Cost of VisualWorks • Cost of migration • GUI migration is now easier with Pollock • Cost of change • Migrate to where? • VW, VA, Java, C#
  • 5. ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 5 of 29 How to migrate • Only migrate – don’t improve! • The Project is migrating, not just the Code • Get a Consultant • Customer will do everything! • Consultant will explain, guide and help where appropriate (and keep the fingers off the keyboard :-) • Setting • One Table with one Keyboard and Mouse • Display with a Beamer • Start with visual.im • Enhance the VisualWorks environment as needed • Consultant provides help and explanations when useful
  • 6. ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 6 of 29 Situation Visual Smalltalk App Superclass -Instvars -classvars Globals External Classes Classes Classes Database Comm. VisualWorks App Superclass -Instvars -classvars Globals External Classes Classes Classes Database Comm.
  • 7. ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 7 of 29 Porting Steps - Overview 1. Create a Baseline (same source) 2. Translate Code (runnable code) 3. Test (same behavior) 4. Build Runtime (same product) 5. Make it Nice (new possibilities)
  • 8. ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 8 of 29 Baseline • Defined state • Equivalent Source • Same module structure and versions • All sources and texts are integrated and published in Store • Loads without serious warnings • All work can be done in VisualWorks
  • 9. ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 9 of 29 Towards the Baseline Get all Sources into VisualWorks • Module Structure… • Namespace Name • External Interfaces… • FileIn Modules… • Publish Baseline • Load in fresh image
  • 10. ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 10 of 29 Store Bundle Structure • The Store structure should reflect the development process • If a Team/V repository exists, the same structure should be used • Suggestion: Application Development (VSE Porting) Application Runtime Common Module 1 … Module n Tools Tests • Define a version format (1.0.0.0 <major.minor.revision.build>) • An Access DB can be used nicely as light weight Store
  • 11. ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 11 of 29 External Interfaces • DLL calls • <api: name args return> • Sockets • Use VW • Database • Use VW • COM? • SmallCOM/X? • Other?
  • 12. ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 12 of 29 Environment • Tool to fileOut XML VW sources • VSE Porting package • VSE namespace • VSE.Class • VSE.DynamicLinkLibrary with api parser • Tools package • Browser list icons
  • 13. ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 13 of 29 FileIn 1. Open GHChangeList • Precondition: Undeclareds are empty • Set default namespace and encoding 2. Load all sources for one package 3. Replay all • Missing superclasses -> define as VSE.Class • External interfaces -> define as VSE.DynamicLinkLibrary 4. Resolve Undeclared… 5. Add text file comments to Pundles, Classes and Globals 6. Publish to Store
  • 14. ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 14 of 29 Resolving Undeclareds • Referenced class • Subclass VSE.Class • Global, pool constant • Add Shared Variable in VSE (move to porting package) • Instvar, class instvar, class var • add in VSE.Class subclass • Global in system extension • Shared variable in referring Class (move to porting package) • Instvar in system overwrite • Add as temp var and add a comment/marker
  • 15. ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 15 of 29 The Migrant • Missing references are resolved (empty porting package) • Message send but not implemented issues are resolved • The code loads without warnings • Clean-up • The code critic reports no bugs or possible bugs. • There are no unnecessary system extensions or overrides • There is no unused code • The system and the applications run basically correct. • Problem areas are identified, recorded and patched • The behavior of the VSE system is basically preserved
  • 16. ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 16 of 29 Towards the Migrant • Eliminate the porting package • Resolve former Undeclareds • Resolve ‘Methods send but not implemented’ • Options • Rewrite Tool (!) • Regex • Reimplement • Remove • Publish and load in fresh image often
  • 17. ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 17 of 29 Topics • Translation by topics • Files • Registry • TCP/IP • Processes • Exceptions • Finalization • C calls • Dependency mechanism • GUI…
  • 18. ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 18 of 29 Differences in the Base • (Smalltalk at: #...) => (‘namespace.global’ asQualifiedReference value) • TimeStamp => Timestamp • Colors: Color, RGBColor, logical colors => ColorValue • Pool constants (Clr*, Cr, Lf) => ColorValue, Character, … • File access: File, Directory, Disk => Filename • ObjectFiler => BOSS • Application startup: SessionModel, SmalltalkLibrary, SmalltalkLibraryBinder => ObjectMemory, Parcel
  • 19. ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 19 of 29 GUI Migration • Emulate or replace? • Port one existing GUI • Get the topics with the debugger • Change them generally with the rewrite tool
  • 20. ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 20 of 29 Differences in the GUI • CursorManager, MessageBox , Prompter => Dialog • PrinterDialog [Windows Goodies], FontDialog • Display, Bitmap, Images, Icons • Text, Fonts • Window opening • Windows messages: wm*
  • 21. ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 21 of 29 GUI differences AbstractPaneVisualPartSubPane ControllerControllerWindows events Window #opened(model)#needsContents FormSubCanvasNesting: own pane UserInterfaceApplicationModelViewManager PollockWrapperDigitalk
  • 22. ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 22 of 29 Pollock Model Pane Agent Artist Frame
  • 23. ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 23 of 29 Widgets --ImageList --StatusWindow --StatusField PageTabControlPage TreeViewTreeView DropDownListComboBox TextEditRichEdit TextEditTextPane InputFieldEntryField DisplayTextStaticText ToolItemSeparatorToolbarSeparator ButtonButton ToolbarButtonToolbarToggleButton ToolbarButtonToolbarButton ToolbarToolbar TabControlTabControl ListBoxListBox RadioButtonRadioButton CheckBoxCheckBox GroupBoxGroupBox
  • 24. ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 24 of 29 Adding a Widget • VSE • Pollock listBox := ListBox new. listBox font: self defaultFont. listBox printSelector: #printItem. listBox when: #changed: send: #setSelection: to: self. listBox when: #needsContents send: #setList: to: self. frame := LayoutFrame topLeftRatio: 0 @ 0 bottomRightRatio: 1 @ 1. listBox layoutFrame: frame. view addPane: listBox. listBox := ListBox new. listBox textStyle: self artist listStyle. listBox displaySelector: #printString. listBox when: #selectionChanged send: #setSelection: to: self. frame := FractionalFrame fractionLeft: 0 top: 0 right: 1 bottom: 1. listBox frame: frame. window addComponent: listBox.
  • 25. ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 25 of 29 Tests Resolve the remaining differences • Module tests • SUnit test •First in VSE •Then migrate to VW • Application tests
  • 26. ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 26 of 29 Runtime and Performance • Build Runtime • RTP bug: exit on last window close • Test Runtime • Test Performance (WTS)
  • 27. ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 27 of 29 Make it Nice • Separate development from runtime • Structure namespaces • Define protocols (if not Team/V) • Comment Pundles, Classes, Globals (if not Team/V) • Write your formatter • Make use of VW Features • MultiProc-UI • Opentalk, CORBA • Net and Web Support • .net and CE Support (in Beta) • Pollock
  • 28. ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 28 of 29 Conclusion • It is easy and can be done in a few weeks • All code is rewritten and looked at • Duplications • Nil disease • Coding Style • Forgotten code • Direct variable access • Branches • Long methods
  • 29. ESUG 2004 Christian Haider: Migration from VSE to VW with Pollock 29 of 29 Recommended Tools • StoreForAccess (lightweight on disk) • GHChangeList (adds Namespace and package support) • Coding • Refactoring Browser • Rewrite Tool • Regex Tool • Code Critic • SUnit (standard for module tests) • Environment • RBCodeHighlighter (highlights while typing) • RBTabs (avoids too many browsers) • AutoComplete • RBSUnitExtensions (adds SUnit buttons to the browser) • RBStoreExtensions (shows versions graphically) • ExtraIcons (nice list icons, essential for testing) • WinIcons (icons for VW tools)