I have been using package universes for a few days, and have discovered some of its limitations. I have also been wondering how best to integrate its use with SqueakMap.
We already have SqueakMap as the master repository and Lex, the creator of package universes does not seem to think that simply tagging items in SqueakMap according to what works with what and what doesnt would work very well, all things considered. To a certain extent I now agree with him.
I initially thought that having Universes separate from SqueakMap was a bad idea. However, after using universes I have now changed my mind and think that is a good idea. I imagine SqueakMap to be the Model, and Universes to be the View, with the community acting as the controller so to speak.
One of the limitations of Universes is that it does not have much in the way of integration with Squeakmap or Monticello, and so it looks to be attempting to make SqueakMap obsolete, but it is somewhat of a poor replacement. At present it is totally agnostic to the package provider, it simply loads a package from a url based upon the file's extension.
One of the positive things about SqueakMap is that it caches the packages, it also has more information on it than the universe. I think that it too would benefit from some feedback features, and more openness, and some indication of dependencies, but perhaps it makes sense not to have these as hard and fast rules. For example, Seaside specifies Kom, but some users may prefer Swazoo. This flexibility seems difficult to support prescriptively on the macro level, but could be supported in local mini/sub-universes, such as a "Swazoo users seaside universe".
Perhaps SqueakMap could allow anyone to upload a new version, but reserve "blessing" of releases to the owner/maintainers, since this is how a public squeaksource repository works by "social" default.
One Universe limitation is that when using a Universe package, unlike an installer script which integrates with the native monticello tools, the package is loaded, but the Monticello browser is not informed of the repository details.
This means that you have to manually inform the Monticello Browser of the required repository before a monticello package with dependencies referred to in a package universe will work. For example when Chris posted 'Magma Server' he would have had the Monticello Browser properly configured on posting the package to the Universe and it will work for him but it will not work for users out of the box who do not have the Monticello repositories configured.
So thinking about it this it would not be a problem at all if Package Universes replaced:
http://www.squeaksource.com/Magma/MagmaServerLoader-cmm.25.mcz
with:
Installer squeaksource project: 'MagmaTester'; install: 'MagmaServerLoader-cmm.25'.
So why not have Package Universes call installer for SqueakMap items too.
Installer squeakmap install: 'MyPackage(1.0)'.
(I will fix installer to fall back onto using the http interface #websqueakmap if SMSPackageLoader is not present)
By doing this we can uphold the use of SqueakMap as the place to publish released packages, with Universes being the place to define dependencies within a locally defined context/scope/use scenarios.
If the "publish to squeakmap" button could be fixed on squeaksource the picture would be complete.
This approach also allows mantis fixes and change sets to be included in the Universes without any extra work.
thoughts feedback?
best regards
Keith
I think that having universes, together with sub-universes and personal-local universes