[squeak-dev] Cross fork compatibility of packages: A proposal

Juan Vuletich juan at jvuletich.org
Mon Jan 25 06:07:33 UTC 2010


Hi Folks,

Package developers want their work to run on various Squeak versions and 
variants, without needing rewrite. Same for app developers.

Base image builders want to be free of the need to provide backwards 
compatibility.

This is what I suggest: A package assumes it can use a set of apis of 
the Squeak (/Pharo/Cuis/Etoys/Tweak/Cobalt/etc) environment. Those 
assumptions should be made explicit, in the form of tests. So, for 
example, for collections, some package developer might require the 
"Common Collection API tests" to pass. Then, if his package fails to 
run, let's say in Cuis, he would run the tests for the apis he needs. If 
some test fails, he could say "Cuis developers, you're not supporting 
api XXX", end expect them to fix the issue. But if no test fails, he 
needs to either modify his code so it doesn't use not-standarized apis, 
or he could negotiate with (all) base image developers the addition of a 
new api or use case to the test suite and the base images.

Building these suites is quite some work, mostly to be done by package 
developers. But it can easily point out responsibilities and duties. It 
frees package developers of needing to have a deep knowledge of various 
base images. And it frees base image developers from needing to know 
details about an unbounded set of external packages. Besides, it puts 
popular packages that everybody wants to support on equal footing with 
less-known packages. It also lets base image developers say "we support 
Common APIs xxx, yyy, zzz, etc.".

All what I say about base images could also apply to packages that offer 
services to other packages: There could also be test suites to specify 
their services, and allow users to switch versions of the packages they 
use knowing what to expect.

What do you think?

Cheers,
Juan Vuletich



More information about the Squeak-dev mailing list