[squeak-dev] Packages, Packages, Packages

Miguel Cobá miguel.coba at gmail.com
Sat Dec 12 21:05:04 UTC 2009

On Sat, Dec 12, 2009 at 12:39 PM, Igor Stasenko <siguctua at gmail.com> wrote:
> I found my own solution to this problem. Simple as smalltalk is.
> Create an MC package in your project, named
> MyProject-loader
> and tell users to load this package if they want to install the project.
> The rest of stuff about what load , in what order and using what means
> is solved easily by putting a code into the
> MyProjectLoader class>>initialize.
> Keep it simply stupid.

I don't know towards who was this offense directed but a "real"
package management code
isn't stupid nor its intent to build makes the people stupid.

About your example, it has a lot of shortcommings that the package
manager solve.

It must be changed every time that a new package in your dependencies
change. E.g. if
your package OwnPackage dependes on PackageA version 2 and PackageB
version 3 you somehow
hardcode those versions on your initialize method.
If fow any reason, the mantainer of PackageA found a bug and fix it on
version 3, suddently your
package is using the wrong version. If you happen to be on holidays or
unreachable, the package won't
be updated to use the new correct version 3 for PackageA.
If a million people install your package before you update your
configuration, a million people will be using
the wrong versions.

What a package manager (as Metacello does) is to depende on PackageA
(no matter what version is currently,
although you can also specify a given version or a version greater or
lower than a given version).
This way no matter how many new versions the mantainer of PackageA
does, your Package doesn't need
to be updated each time and can always work.


Miguel Cobá

More information about the Squeak-dev mailing list