Community Supported Packages

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Community Supported Packages

Torsten Bergmann
Hi,

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.

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

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.

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 only benefit from the "maintining configs in-image" would be that
it would be easy to build a UI similar to SqueakMap/Universe Browser.
This is something that has to be solved - especially for Pharo since loading/browsing
it is not very "user friendly" today, but AFAIK work already started with the
"Loader" project. Agree with Andreas that Metacello needs more work and
a good browser of available configs would be a plus.

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.

However - I have to reread all the arguments and think about all this.

<warning>
But with a better acceptance of Metacello there will be more to come and
to discuss!
</warning>

Lets think about the implications for anything above the virtual machine:

Squeak is currently maintained as a "full image" using the trunk process
while Pharo already switched to a "small core + external packages" model.

The "pharo core" image (which is not Pharo!) is getting stable and hopefully
smaller and one can already create a Pharo image right from the "ConfigurationOfPharo". That is there and working.

I'm not saying that Squeak is not getting stable (I'm still a Squeak AND Pharo guy)
but it is a different approach to build the end result that we later announce on
our websites.

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.

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

  - could this small core be reduced to a minimum set of objects and a loader
    that is able just suck in the things defined in package configurations
    of packages that work together
 
  - would any specific assembled/deployed image not just be a special distro
    of the "small kernel" + selected packages (similar to the linux world)

So "Squeak" may later be the distro with media/fun/experimental packages
or etoys and "Pharo" may later be the distro with packages oriented
towards commercial development.

However then the lines are blurred then and if you have the common core on
your disk you can even create your own distro with Seaside and Etoys ...

Pharo will follow the path "kernel" + selected packages" and external
config path anyway since this is already discusssed and prepared.

From what I understand so far a repo for Pharo 1.1. will appear soon
with freezed/working configs and a build structure will be set up.
So lets see how this works out and if successfull if Squeak will
adapt it too.

Just my 2 cents. Expect additionally cents after getting more time to
think about all this ...

Bye
T.
       

--
GRATIS für alle GMX-Mitglieder: Die maxdome Movie-FLAT!
Jetzt freischalten unter http://portal.gmx.net/de/go/maxdome01

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: [squeak-dev] Community Supported Packages

Mariano Martinez Peck


On Mon, May 17, 2010 at 2:14 PM, Torsten Bergmann <[hidden email]> wrote:
Hi,

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.

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

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.

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, ...)


I agree with all this.

 
The only benefit from the "maintining configs in-image" would be that
it would be easy to build a UI similar to SqueakMap/Universe Browser.
This is something that has to be solved - especially for Pharo since loading/browsing
it is not very "user friendly" today, but AFAIK work already started with the
"Loader" project. Agree with Andreas that Metacello needs more work and
a good browser of available configs would be a plus.


I don't agree here. You DON'T necessary need to have the packages inside the image to have a UI. If you are using this tool, is because you have internet connection, otherwise you won't be able to install anything. So, if you have internet connection, no need to have configurations in the image. They will be difficult to update and to manage. Even more, having an external repo pero version, give us a "UI" as you want but reusing the tools we already have. Ok, it is not perfect, but it works:

As I say, when you distribute Pharo1.0 you include the Pharo10MetacelloRepository already added. Then, you open Monticello Browser, browse the repo Pharo10MetacelloRepository, choose the one you want, you load it with Monticello, and then just evaluate: ConfigurationOfXXX load. You can even put a class side initialize for that if you want.

Cheers

Mariano

 

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.

However - I have to reread all the arguments and think about all this.

<warning>
But with a better acceptance of Metacello there will be more to come and
to discuss!
</warning>

Lets think about the implications for anything above the virtual machine:

Squeak is currently maintained as a "full image" using the trunk process
while Pharo already switched to a "small core + external packages" model.

The "pharo core" image (which is not Pharo!) is getting stable and hopefully
smaller and one can already create a Pharo image right from the "ConfigurationOfPharo". That is there and working.

I'm not saying that Squeak is not getting stable (I'm still a Squeak AND Pharo guy)
but it is a different approach to build the end result that we later announce on
our websites.

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.

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

 - could this small core be reduced to a minimum set of objects and a loader
   that is able just suck in the things defined in package configurations
   of packages that work together

 - would any specific assembled/deployed image not just be a special distro
   of the "small kernel" + selected packages (similar to the linux world)

So "Squeak" may later be the distro with media/fun/experimental packages
or etoys and "Pharo" may later be the distro with packages oriented
towards commercial development.

However then the lines are blurred then and if you have the common core on
your disk you can even create your own distro with Seaside and Etoys ...

Pharo will follow the path "kernel" + selected packages" and external
config path anyway since this is already discusssed and prepared.

>From what I understand so far a repo for Pharo 1.1. will appear soon
with freezed/working configs and a build structure will be set up.
So lets see how this works out and if successfull if Squeak will
adapt it too.

Just my 2 cents. Expect additionally cents after getting more time to
think about all this ...

Bye
T.


--
GRATIS für alle GMX-Mitglieder: Die maxdome Movie-FLAT!
Jetzt freischalten unter http://portal.gmx.net/de/go/maxdome01



_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Community Supported Packages

Andreas.Raab
In reply to this post by Torsten Bergmann
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

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Community Supported Packages

Stéphane Ducasse
Hi andreas


>> Absolutely. One thing that took me by surprise is the response in the Pharo world.

I did not see it so can you indicate me where you see a response?

>> Given that this is a proposal for Squeak I thought that the response would at most be "see, we told you so".

who are we to give lesson to squeakers? People can bash metacello in the past and change their mind.
This is since we managed Squeak3.9 with packages (and in fact even before - our ENVY experience back in 99) that we know that
package without a map are not working well.

>> Instead it appears to be ... well, I'm actually not exactly sure. Seems like a mixture of feeling threatened and NIH.

From my point of view I do not really care. If squeak use metacello good for you. We know what we want to try and we will try it.
We worked and discussed with dale since ESUG last year about that and now that 1.1 is getting out this is the right time
to pass in production mode.


> 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.


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project