[squeak-dev] Re: Community Supported Packages
Andreas Raab
andreas.raab at gmx.de
Tue May 18 05:36:00 UTC 2010
Hi Torsten -
Thanks for the thoughtful response. It'll take a little to respond to
the points individually, so apologies for the length of the response.
First of all, nothing is "decided" yet. I've made a proposal, people
appear to like it, so we can start a phase of experimentation. If the
experimentation works out, we can add this for 4.2 and if not, we'll see
what's lacking and how to fix it.
On 5/17/2010 5:14 AM, Torsten Bergmann wrote:
> I tried to follow the discussion on both lists regarding supported packages and how/where to manage them by using Metacello. I can not give complete feedback
> since I go with Göran here who said "I need to read your thoughts once more
> before giving proper feedback." and I think we all should take the time to
> think about all the implications the different approaches have.
Absolutely. One thing that took me by surprise is the response in the
Pharo world. Given that this is a proposal for Squeak I thought that the
response would at most be "see, we told you so". Instead it appears to
be ... well, I'm actually not exactly sure. Seems like a mixture of
feeling threatened and NIH.
If you look at it objectively, my proposal is extremely similar to what
Pharo uses, and I've explicitly mentioned that it was inspired by
Pharo's use of MetacelloRepository. Outside of the community packages
aspect, pretty much the only differences are:
1) Whether to use one configuration per package or not.
2) Whether configurations are preloaded in the image.
That's about it. I really fail to see what the big hiatus is about.
If you do decide to answer the above in a particular way (namely the way
I've proposed it) you also gain a few additional advantages such as
knowing that the code you have is trustworthy and such as having an
easier time building a UI. But that's about it.
> With this discussion we set up the base for the future of package maintenance
> but also for collaboration amongst the communities, how images are built, ...!
>
> I'm sure we all want to blur the line between in and out of the (whatever) image
> and share/reuse as many code/packages as possible within the broader community
> (Squeak, Pharo, Cuis, Gemstone, ...). So:
>
> Goal Nr. 1 is: if it is not in my environment then just load it.
> Goal Nr. 2 is: if it is loaded it should work in my environment since it brings
> in anything it needs to work
From my perspective that definition of the problem is a bit
superficial. There's a reason why I called this post "community
supported packages" and not just "package management" because we also
need to work out a way to support packages in the long term. I agree
that the above two goals are intrinsic part of what I'm talking about
but there are other aspects to it which are just as important.
We are a small community so we do need to set an artificial boundary on
what we support. If we support "everything" we end up supporting
nothing, which is what we see in Universes and Squeakmap. So an
inseparable part of my proposal is an explicit community contract; there
are certain requirements and benefits that we aim to gain by
coordinating on the package maintenance. I *want* to separate projects
like Omnibrowser and HelpSysstem from random garbage so commonly found
on Squeakmap and Universes. It's because the people around it care and
it's because of that that I want to have an explicit contract that
basically says "you care, we care". No it's not free to become a
community supported package, but it's *because* it's not free that it's
also valuable.
(there are several other aspects to it which I just deleted because
otherwise this post will get positively exhaustive and really all I'm
saying is that for me there's a bit more to it then the individual's
desire to install some code ;-)
> Currently the discussion and actions seem to focus on where to put the
> configurations (into the image vs. in repositories per version). I'm in favour
> of the latter since that is easier to handle and share between platforms
> while having them in the image would limit people who work on various
> platforms, it would not scale and eat more resources for maintenance.
Nothing prevents us from doing just that if we find it preferable. I
agree that updating is a little easier if you do it externally but then
again, I feel this is part of what the community contract implies. Is it
really asked too much to post an update to the inbox if you make a new
version?
On the other hand, having it in-image makes it easier to build a UI and
it also provides implicit structuring simply because we can utilize
system categories to provide a first level of structure. So under
"Configurations-Network" you would find the WebClient config next to
other network related configs. Simple and straightforward.
> My fear is also that if you have the configurations within the image then
> we all will end up with something similar to the unmaintained SqueakMap
> registrations. With external repos we can also feed CI-Tools (Hudson build
> server, ...)
The issues in both Squeakmap and Universes originated from people using
them for many different versions. The same appears to be happening in
Pharo's Metacello repository. There are some configs that work only in
Pharo 1.0 and some that work only in 1.1. That is the root cause for the
problems both Squeakmap and Universes share. And as Squeakmap has
proven, the other problem is that not all software is created equally.
At some point you need to make a decision of what you consider
"supported" (and consequently try to make work for the release) and what
you consider "third party" and none of your business.
There are of course other ways of dealing with that from what I am
proposing. Having it in-image however, makes the status very explicit.
There's no doubt about what is considered supported and when one
achieves (or loses) that status. If it's in, it's supported, if it's
out, it's not. Plus it uses our community processes for development so
if there's an update for a package you'll find out simply by virtue of
seeing the commit message.
> But thats not the main question. Even if Squeak decides to have the configurations
> "in-image" and Pharo decides for external configs one can mix them:
> An in-image ConfigurationOfMyApp just loads the ConfigurationOfMyAppExternal
> where the last one is maintained in an external repo and the internal
> config is for convenience to just load it.
Yes, that would be another fine option.
> Lets think about the implications for anything above the virtual machine:
>
[... snip ...]
>
> If Squeak jumps on the Metacello config bandwagon it may also have to think about
> jumping onto the "small core + external packages" model. At least to me
> this would be the next logical step.
Heh, where have you been over the last year? :-) If there's one thing
where there has been absolute agreement on it's just that. But it's a
matter of when to do it and how to do it - we don't just want to create
bit rot, we want to keep supporting the packages we choose to support.
And that requires some agreement on how the larger picture of
"supporting" packages looks like. And that's where we get into community
supported packages and the reason why it's not "just" a Metacello issue.
> This leads to several questions:
>
> - could this small core could be the same for all of us - especially since
> we currently fix stuff in Cuis, Squeak and Pharo mostly the same way
Interesting thought. Is that perhaps the root of feeling threatened? In
any case, it's an interesting question that deserves some thought. I'd
say there are three questions to answer:
* Does such a process requires some (or all?) participants to give up
their original identity?
* What would the development process look like?
* How would a conflict resolution process look like? (and by conflicts I
don't mean package conflicts :-)
If anyone is seriously thinking about this (I'm not) you might want to
approach it by staking out an area that's part of all the images and
that has relatively few changes, like the Graphics package. I'd be
curious what people come with about how to address the resulting questions.
Cheers,
- Andreas
More information about the Squeak-dev
mailing list
|