On Aug 12, 2013, at 9:49 AM, Tudor Girba <tudor@tudorgirba.com> wrote:

Hi,


On Mon, Aug 12, 2013 at 9:32 AM, Stéphane Ducasse <stephane.ducasse@inria.fr> wrote:

It could be a sink, but it's actually not large. With everything included, you get around 2200 classes (if you take Mondrian out, it's about 2000). Pharo 2.0 has something like 10'000 classes.


I will discuss with the synectique guys because I think that when we deploy a tool we do not need half of Moose and after we
cry for space.

I think you are mixing arguments. The Moose image is somewhere around 50 MB right now, but that is without any cleaning. It's true that it would be cool to have it smaller. Your space problems start when you run into 1GB or so, so the initial space is not really the issue.


So we will see what we will do. Right now I do not want to manage my own Moose but if the company needs it, then I will do it
because I'm not spending my week-ends and more just for the fun of it. I have better things to do. 

This does not sound constructive. It seems to me that all the issue was generated by the loading problem. However, this has almost nothing to do with Moose, but with the support that comes with the underlying infrastructure. Every significant Pharo project is likely to have the same loading problems, and I was thinking that we are working towards a solution that will benefit everyone. And yes, we need better tool support but I think that finally we start to see the road.

My remark is not that I was raging about loading. I worked to improve Moose and this was fun (just long feedback loop - I will see if I can start to build a
configuration validator but I want to finish my open tasks). It just took me friday full day and sunday full day. 
I wonder why I got all the problems showing up in my face.

Actually, I do not understand how you got the problems, and I did not. For example, you can load the existing 4.8.1-snapshot from ConfigurationOfMoose and it loads in Pharo 2.0 (this was before your effort).

this is probably because it is a graph traversal and just getting in a dependent inside a project (vs the complete project) 
can lead to a really different traversal when the dependencies are lose. 
What is quite strange is that synectique just depends on Moose and does not do any cherry picking of potential subpackages right now.

So I was thinking that I would not find errors since you could reload it when I started but when I saw that he had so many missing dependencies it was good 
because it was not a problem in snapshotcello (beside the bug I found) and metacello. 


My remark is that if a business reason led me to think that we should not ship half of moose then
- either the current config support it
- or it does not and we can modify
- or I will do it in my corner. 
No more. 

Fair enough. Let's make sure that we end up doing option 1 or 2 :)

:)
The first step I would do is to go over the configurations and perform some extract methods (for projects dependencies).
Second I should find some times to build a validator.
May be looking at the group could be also a point.
Also the examples could be an clear group (may be there are)

"Core" not sure what it measn
With Example 
With Test
 
In particular yesterday I was happy to find the bug in the dependencies because else I was thinking that I would have to use reloader because
I do not want to have to deal with Metacello internals. 
So, let's have a dialogue. You make explicit what you need and then we see what the real issue is. But, I think you know that :).

my concern is that Moose is large and more important: there is no real experience to create working subsets nicely working together
so it means that when we will need it we will face problems (i'm not talking about mondrian, glamour, GTtoolkit here) more Moose.

Agreed. But, for that we need use cases.

Yes and this is what I want to see if synectique wants to invest there. We will see.
Now I will systematically rebuilt the shipped versions with snapshotcello.

 
But, Moose is modular. We have build jobs for every important component to ensure that each of them is loadable separately. All you have to do is pick the components you want, and assemble your own image. It's just that we release one image for simplicity of communication, not of deployment.

I am sure we can get more modular (for example, FAMIX and Finder could be modularized), but we need the use cases to figure out what is the most useful way to cut.

I'm not thinking that we should over optimise. Just exercise modularity
And right now I see a lot of cherry picking to build a smaller Moose.

Let's start with one and we go from there. I have a hard time choosing because I am too involved. 

We could go over the list and check if we want that.
- May be an easy one would be tests
- then Pharo development

 
Now you know like me that this is not in opposition with the other scenario ;)
I think that learning how to deploy is the best way to get the best of both scenario: (1) customed under control deployement (2) full Moose. 

I really see no problem with deploying, but perhaps I do not understand what you refer to.

For me the fact that I found in one try around more than 10 dependency problems made me think that we do not exercise the modular aspects
of the infrastructure. Else we would have discovered them long time ago.

Actually, the real problem is that the loading order of Metacello is not reliable in all cases. I mean, we are loading Moose using those dependencies all the time, but we did not get into your problems. I even released a temporary 4.8.1 and it still loads properly. So, our problem is that we have no bell ringer. And now I think this problem exists in most Metacello configurations.

I agree. :)
Especially if synectique config would be tricky I would understand but there are trivial.
 
My vision goes like this:
- Moose is a platform that works for multiple technologies. Perhaps we can distinguish between what makes sense for Java or for a language like C#, but the differences would be small and would not warrant different distributions.
- Moose is a platform for Pharo as well, although not many are seeing it like that. This means that the tools we have with Moose should be used for analyzing Pharo.
- We could distinguish between a Pharo only distribution and the distribution for all other languages. Actually, this is what we have with the GToolkit project: a Pharo specific toolset. However, we still want to have the Pharo-specific tools inside a Java-specific distribution given that we want people to develop their own tools fast. And to debug them. And to inspect them.

We just want clients using our tools because this is even more difficult to find the other clients. 
If we encounter clients that can accept to understand that they can script their own tools 
this will be a different story but a modular infrastructure support both. 

Let's get more concrete. What part of the current Moose Suite would you not need in your image? Or better yet, what are parts that you need in your image?

So far I do not know. I was just making sure I can reload everything and looking at the list I was a bit skeptical that we need all that. 
I will discuss with usman and guillaume when they are back from holidays because like that we can try to have a small moose to find dependency problems.

First I will redo the process with the latest moose and synectique.
To see if all the changes got absorbed.
And since I have the mails and my old image I should be able to track the changes.

Stef