That if you the developers of Phar change things many have to follow and it comes to things like this: "protocol: version dependent" platformName "After Squeak version 3.6, #platformName was moved to SmalltalkImage Some versions of Pharo move this to OSPlatform and issue deprecation warnings about the other usages. The original idiom (Squeak 3.6 and earlier) is the sensible default, but here we attempt to support other implementations if the sensible default is not available." "OSProcess platformName" (Smalltalk respondsTo: #platformName) ifTrue: [^ Smalltalk platformName]. self isPharo3AndLater ifTrue: [ ^ (Smalltalk perform: #os) name ]. ^ (((Smalltalk hasClassNamed: #OSPlatform) and: [(Smalltalk at: #OSPlatform) respondsTo: #platformName]) ifTrue: [Smalltalk at: #OSPlatform] ifFalse: [((Smalltalk classNamed: 'SmalltalkImage') ifNil: [^ Smalltalk osVersion]) current]) platformName Now how many do have to follow through all this? So well yes in the end it means not thinking about compatibility costs a lot thereafter....