About Magritte Seaside

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

About Magritte Seaside

stepharo
Hi guys

How can I get Magritte seaside (and a working version not one breaking
on XML I do not what)?
I loaded the published stable version of Magritte into Pharo and there
is no seaside version.
I checked the configuration and it is so complex....

I have the impression that we need to distinguish Magritte from Magritte
seaside. So
I will do a separate configuration of magritte seaside.

Stef


Reply | Threaded
Open this post in threaded view
|

Re: About Magritte Seaside

Skip Lentz-2

> On Oct 6, 2015, at 11:11 AM, stepharo <[hidden email]> wrote:
>
> Hi guys
>
> How can I get Magritte seaside (and a working version not one breaking on XML I do not what)?
> I loaded the published stable version of Magritte into Pharo and there is no seaside version.
> I checked the configuration and it is so complex….

I think you have to load the “Seaside" group of ConfigurationOfMagritte3, but I am not sure.. A month ago I played
with Magritte and Seaside and I basically loaded a bunch of configurations until it worked.

As a new user I loaded “MagritteMagic” without knowing better. This one is broken if you load it on Pharo 4.
Later I found out that MagritteMagic was just for demonstration purposes. So maybe it should get an “example” or “demo”
tag in the Project Catalog.
Reply | Threaded
Open this post in threaded view
|

Re: About Magritte Seaside

Stephan Eggermont-3
In reply to this post by stepharo
On 06-10-15 11:11, stepharo wrote:
> I will do a separate configuration of magritte seaside.

You need to load the correct groups. Separate configurations are a bad
practice and should be eliminated, not encouraged. The configuration has
a lot of essential complexity, as many different combinations of
components are needed in different situations. We need tools that
recognize that essential complexity and support it, not tools that try
to hide it and then have no practical usability.

Stephan


Reply | Threaded
Open this post in threaded view
|

Re: About Magritte Seaside

stepharo


Le 6/10/15 11:40, Stephan Eggermont a écrit :
> On 06-10-15 11:11, stepharo wrote:
>> I will do a separate configuration of magritte seaside.
>
> You need to load the correct groups. Separate configurations are a bad
> practice and should be eliminated, not encouraged.

I totally disagree.
And groups are not supported by the configurationBrowser
> The configuration has a lot of essential complexity, as many different
> combinations of components are needed in different situations. We need
> tools that recognize that essential complexity and support it, not
> tools that try to hide it and then have no practical usability.

Well I disagree. And all the effort of christophe for the new
dependencies declarations at the package level just goes in that direction.
I will do a MagritteSeaside Configuration that I will maintain and I
will also do a MagritteTutorial one.

>
> Stephan
>
>
>


Reply | Threaded
Open this post in threaded view
|

Re: About Magritte Seaside

Stephan Eggermont-3
The many configurations of GT/Glamour have not exactly convinced me.

For a configuration that works when just loading #'stable' from the
configuration browser, I'd suggest trying with the configuration of
BootstrapMagritte. That only runs into the #subStrings: vs #substrings:.

Stephan


Reply | Threaded
Open this post in threaded view
|

Re: About Magritte Seaside

Dale Henrichs-3
In reply to this post by stepharo


On 10/6/15 5:10 AM, stepharo wrote:

>
>
> Le 6/10/15 11:40, Stephan Eggermont a écrit :
>> On 06-10-15 11:11, stepharo wrote:
>>> I will do a separate configuration of magritte seaside.
>>
>> You need to load the correct groups. Separate configurations are a
>> bad practice and should be eliminated, not encouraged.
>
> I totally disagree.
> And groups are not supported by the configurationBrowser
>> The configuration has a lot of essential complexity, as many
>> different combinations of components are needed in different
>> situations. We need tools that recognize that essential complexity
>> and support it, not tools that try to hide it and then have no
>> practical usability.
>
> Well I disagree. And all the effort of christophe for the new
> dependencies declarations at the package level just goes in that
> direction.
> I will do a MagritteSeaside Configuration that I will maintain and I
> will also do a MagritteTutorial one.
>
Stef,

I hope you and Christophe are considering cross platform considerations
when implementing "new dependencies declarations at the package level"
... MonticelloConfigurations had "package level dependencies" and the
implementation was extremely rigid to the point where it wasn't possible
to substitute an alternate (platform-speicific) package in the package
graph without creating new package versions of all packages in the graph
... Of course I am not aware of the approach that Christophe, but be
aware that "there be dragons there":)

Dale

Reply | Threaded
Open this post in threaded view
|

Re: About Magritte Seaside

stepharo

> Stef,
>
> I hope you and Christophe are considering cross platform
> considerations when implementing "new dependencies declarations at the
> package level" ... MonticelloConfigurations had "package level
> dependencies" and the implementation was extremely rigid to the point
> where it wasn't possible to substitute an alternate
> (platform-speicific) package in the package graph without creating new
> package versions of all packages in the graph ... Of course I am not
> aware of the approach that Christophe, but be aware that "there be
> dragons there":)

Hi dale.

I will let christophe answers because I do not know the details. I know
that he is working hard on it.
Ideally I would like to have a ConfigurationOf for each package because
it would reduce the bloat of the actual configurationOf and
also be closer to the package. But if I say that people will start
shouting that I'm mad :) (I'm not fool and I'm right :).
so this is why we are doing it inside the package but we will see.
First the core bootstrap based on dependencies ;)

Stef

Reply | Threaded
Open this post in threaded view
|

Re: About Magritte Seaside

Dale Henrichs-3


On 10/6/15 11:43 AM, stepharo wrote:

>
>> Stef,
>>
>> I hope you and Christophe are considering cross platform
>> considerations when implementing "new dependencies declarations at
>> the package level" ... MonticelloConfigurations had "package level
>> dependencies" and the implementation was extremely rigid to the point
>> where it wasn't possible to substitute an alternate
>> (platform-speicific) package in the package graph without creating
>> new package versions of all packages in the graph ... Of course I am
>> not aware of the approach that Christophe, but be aware that "there
>> be dragons there":)
>
> Hi dale.
>
> I will let christophe answers because I do not know the details. I
> know that he is working hard on it.
> Ideally I would like to have a ConfigurationOf for each package
> because it would reduce the bloat of the actual configurationOf and
> also be closer to the package. But if I say that people will start
> shouting that I'm mad :) (I'm not fool and I'm right :).
> so this is why we are doing it inside the package but we will see.
> First the core bootstrap based on dependencies ;)
>
> Stef
>

Stef,

Basing things on a "configuration" external to the package structure
itself will avoid the MetacelloConfiguration limitations.

 From your description, it sounds like Christophe might be
"deconstructing" the project configuration in some way --- I would be
interested in more details ...

Thanks,

Dale


Reply | Threaded
Open this post in threaded view
|

Re: About Magritte Seaside

demarey
In reply to this post by Dale Henrichs-3
Hi Dale,

Le 6 oct. 2015 à 20:23, Dale Henrichs a écrit :

>
>
> On 10/6/15 5:10 AM, stepharo wrote:
>>
>>
>> Le 6/10/15 11:40, Stephan Eggermont a écrit :
>>> On 06-10-15 11:11, stepharo wrote:
>>>> I will do a separate configuration of magritte seaside.
>>>
>>> You need to load the correct groups. Separate configurations are a bad practice and should be eliminated, not encouraged.
>>
>> I totally disagree.
>> And groups are not supported by the configurationBrowser
>>> The configuration has a lot of essential complexity, as many different combinations of components are needed in different situations. We need tools that recognize that essential complexity and support it, not tools that try to hide it and then have no practical usability.
>>
>> Well I disagree. And all the effort of christophe for the new dependencies declarations at the package level just goes in that direction.
>> I will do a MagritteSeaside Configuration that I will maintain and I will also do a MagritteTutorial one.
>>
> Stef,
>
> I hope you and Christophe are considering cross platform considerations when implementing "new dependencies declarations at the package level" ... MonticelloConfigurations had "package level dependencies" and the implementation was extremely rigid to the point where it wasn't possible to substitute an alternate (platform-speicific) package in the package graph without creating new package versions of all packages in the graph ... Of course I am not aware of the approach that Christophe, but be aware that "there be dragons there":)
Thanks for the warning. cross-platform packages are integrated into this new approach by allowing to express dependencies to virtual packages (idea from debian OS: http://www.debian.org/doc/debian-policy/ch-binary.html#s-virtual_pkg). It allows low-coupling and is very flexible.
You will find more information in the paper published at IWST'14: https://hal.inria.fr/hal-01086083/document (by the way, you should already have it, I sent it to you last year but you were very busy at this time ;) )

To summarize in a few words, we want dependencies expressed at the package level (and we want more meta-data on packages), we want to decouple a released version of a package from the working copy of the package version description (implies the creation of a package repository + a web interface on top of it to promote/search packages).
We also want to detect dependencies automatically as much as possible to avoid missing or not-used dependencies (dependency analyser tool). All together, it will allow to define architectural rules and layers in Pharo. I now experimenting all that with the Pharo bootstrap.

If you have any question or remark, do not hesitate to ask or to give feedback.

Christophe.

smime.p7s (5K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: About Magritte Seaside

Stephan Eggermont-3
On 07/10/15 08:47, Christophe Demarey wrote:
> If you have any question or remark, do not hesitate to ask or to give feedback.

How do you express the migration of functionality from one package to
another? How does that affect users of those packages?
How do you intend to deal with variants (as in the 5D model)?

Stephan



Reply | Threaded
Open this post in threaded view
|

Re: About Magritte Seaside

demarey
Hi Stephan,

Le 7 oct. 2015 à 10:22, Stephan Eggermont a écrit :

> On 07/10/15 08:47, Christophe Demarey wrote:
>> If you have any question or remark, do not hesitate to ask or to give feedback.
>
> How do you express the migration of functionality from one package to another? How does that affect users of those packages?

I don't get what you mean. Could you describe a use case?

> How do you intend to deal with variants (as in the 5D model)

You can group commonalities in package assemblies. For specifities, you could use virtual packages to decrease the number of assemblies to write. In a common assembly, you could describe a dependency to a virtual package. Then you will have concrete packages providing this virtual package, each of them having its own dependencies and working on a specific platform.

Christophe

smime.p7s (5K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: About Magritte Seaside

Dale Henrichs-3
In reply to this post by demarey
Christophe,

I still don't have a lot of time to read the paper and try to understand
what you are trying to accomplish, but I am curious how you think
"package dependencies" will play with git-based projects?

In git-based repositories I don't think you have the same type of
dependency issues that one might have with monticello repositories ---
In a monticello repository you have a whole range of possible package
versions to pick from, but in a git-based repository the range of
package versions is fixed to those that are committed together so the
packages that are meant to work together are committed together.

In the bootstrap scenario, you would only have one version per package
to choose from, so the packages that are meant to work together are
committed together ....

I guess I don't know what you mean when you say:
> we want to decouple a released version of a package from the working
> copy of the package version description (implies the creation of a
> package repository + a web interface on top of it to promote/search
> packages).
Perhaps a description of the problem being solved would help me understand.

Dale


On 10/6/15 11:47 PM, Christophe Demarey wrote:

> Hi Dale,
>
> Le 6 oct. 2015 à 20:23, Dale Henrichs a écrit :
>
>>
>> On 10/6/15 5:10 AM, stepharo wrote:
>>>
>>> Le 6/10/15 11:40, Stephan Eggermont a écrit :
>>>> On 06-10-15 11:11, stepharo wrote:
>>>>> I will do a separate configuration of magritte seaside.
>>>> You need to load the correct groups. Separate configurations are a bad practice and should be eliminated, not encouraged.
>>> I totally disagree.
>>> And groups are not supported by the configurationBrowser
>>>> The configuration has a lot of essential complexity, as many different combinations of components are needed in different situations. We need tools that recognize that essential complexity and support it, not tools that try to hide it and then have no practical usability.
>>> Well I disagree. And all the effort of christophe for the new dependencies declarations at the package level just goes in that direction.
>>> I will do a MagritteSeaside Configuration that I will maintain and I will also do a MagritteTutorial one.
>>>
>> Stef,
>>
>> I hope you and Christophe are considering cross platform considerations when implementing "new dependencies declarations at the package level" ... MonticelloConfigurations had "package level dependencies" and the implementation was extremely rigid to the point where it wasn't possible to substitute an alternate (platform-speicific) package in the package graph without creating new package versions of all packages in the graph ... Of course I am not aware of the approach that Christophe, but be aware that "there be dragons there":)
> Thanks for the warning. cross-platform packages are integrated into this new approach by allowing to express dependencies to virtual packages (idea from debian OS: http://www.debian.org/doc/debian-policy/ch-binary.html#s-virtual_pkg). It allows low-coupling and is very flexible.
> You will find more information in the paper published at IWST'14: https://hal.inria.fr/hal-01086083/document (by the way, you should already have it, I sent it to you last year but you were very busy at this time ;) )
>
> To summarize in a few words, we want dependencies expressed at the package level (and we want more meta-data on packages), we want to decouple a released version of a package from the working copy of the package version description (implies the creation of a package repository + a web interface on top of it to promote/search packages).
> We also want to detect dependencies automatically as much as possible to avoid missing or not-used dependencies (dependency analyser tool). All together, it will allow to define architectural rules and layers in Pharo. I now experimenting all that with the Pharo bootstrap.
>
> If you have any question or remark, do not hesitate to ask or to give feedback.
>
> Christophe.


Reply | Threaded
Open this post in threaded view
|

Re: About Magritte Seaside

stepharo


Le 11/10/15 00:40, Dale Henrichs a écrit :
> Christophe,
>
> I still don't have a lot of time to read the paper and try to
> understand what you are trying to accomplish,
you should read it. :)
We wrote it for that and it is not boring nor long.

> but I am curious how you think "package dependencies" will play with
> git-based projects?
>
> In git-based repositories I don't think you have the same type of
> dependency issues that one might have with monticello repositories ---
> In a monticello repository you have a whole range of possible package
> versions to pick from, but in a git-based repository the range of
> package versions is fixed to those that are committed together so the
> packages that are meant to work together are committed together.

I think that this is only true for packages committed within the same repo.
Now between porjects published in different repo you have to express them.
I do not think that we all want to publish in the same repo and clone
out everything.

>
> In the bootstrap scenario, you would only have one version per package
> to choose from, so the packages that are meant to work together are
> committed together ....
>
> I guess I don't know what you mean when you say:
>> we want to decouple a released version of a package from the working
>> copy of the package version description (implies the creation of a
>> package repository + a web interface on top of it to promote/search
>> packages).
> Perhaps a description of the problem being solved would help me
> understand.
We want to be able to have a package market place where tools can grab
dependencies without to load code
and can compute the set of packages that should be loaded.

When a package is released into the market: then it externalise its
metadata so that a crawler can automatically build
dependency graph and create specific distribution.

Stef

>>
>> Le 6 oct. 2015 à 20:23, Dale Henrichs a écrit :
>>
>>>
>>> On 10/6/15 5:10 AM, stepharo wrote:
>>>>
>>>> Le 6/10/15 11:40, Stephan Eggermont a écrit :
>>>>> On 06-10-15 11:11, stepharo wrote:
>>>>>> I will do a separate configuration of magritte seaside.
>>>>> You need to load the correct groups. Separate configurations are a
>>>>> bad practice and should be eliminated, not encouraged.
>>>> I totally disagree.
>>>> And groups are not supported by the configurationBrowser
>>>>> The configuration has a lot of essential complexity, as many
>>>>> different combinations of components are needed in different
>>>>> situations. We need tools that recognize that essential complexity
>>>>> and support it, not tools that try to hide it and then have no
>>>>> practical usability.
>>>> Well I disagree. And all the effort of christophe for the new
>>>> dependencies declarations at the package level just goes in that
>>>> direction.
>>>> I will do a MagritteSeaside Configuration that I will maintain and
>>>> I will also do a MagritteTutorial one.
>>>>
>>> Stef,
>>>
>>> I hope you and Christophe are considering cross platform
>>> considerations when implementing "new dependencies declarations at
>>> the package level" ... MonticelloConfigurations had "package level
>>> dependencies" and the implementation was extremely rigid to the
>>> point where it wasn't possible to substitute an alternate
>>> (platform-speicific) package in the package graph without creating
>>> new package versions of all packages in the graph ... Of course I am
>>> not aware of the approach that Christophe, but be aware that "there
>>> be dragons there":)
>> Thanks for the warning. cross-platform packages are integrated into
>> this new approach by allowing to express dependencies to virtual
>> packages (idea from debian OS:
>> http://www.debian.org/doc/debian-policy/ch-binary.html#s-virtual_pkg). It
>> allows low-coupling and is very flexible.
>> You will find more information in the paper published at IWST'14:
>> https://hal.inria.fr/hal-01086083/document (by the way, you should
>> already have it, I sent it to you last year but you were very busy at
>> this time ;) )
>>
>> To summarize in a few words, we want dependencies expressed at the
>> package level (and we want more meta-data on packages), we want to
>> decouple a released version of a package from the working copy of the
>> package version description (implies the creation of a package
>> repository + a web interface on top of it to promote/search packages).
>> We also want to detect dependencies automatically as much as possible
>> to avoid missing or not-used dependencies (dependency analyser tool).
>> All together, it will allow to define architectural rules and layers
>> in Pharo. I now experimenting all that with the Pharo bootstrap.
>>
>> If you have any question or remark, do not hesitate to ask or to give
>> feedback.
>>
>> Christophe.
>
>
>


Reply | Threaded
Open this post in threaded view
|

Re: About Magritte Seaside

Dale Henrichs-3


On 10/11/15 12:19 AM, stepharo wrote:
>
>
> Le 11/10/15 00:40, Dale Henrichs a écrit :
>> Christophe,
>>
>> I still don't have a lot of time to read the paper and try to
>> understand what you are trying to accomplish,
> you should read it. :)
> We wrote it for that and it is not boring nor long.
I scanned through it at the time and as I recall, I thought that the
functionality described was already covered by git and BaselineOf ...
but I did not read it in great detail and I did not (and still don't)
have the time to compose a long-winded response:)

>
>> but I am curious how you think "package dependencies" will play with
>> git-based projects?
>>
>> In git-based repositories I don't think you have the same type of
>> dependency issues that one might have with monticello repositories
>> --- In a monticello repository you have a whole range of possible
>> package versions to pick from, but in a git-based repository the
>> range of package versions is fixed to those that are committed
>> together so the packages that are meant to work together are
>> committed together.
>
> I think that this is only true for packages committed within the same
> repo.
> Now between porjects published in different repo you have to express
> them.
> I do not think that we all want to publish in the same repo and clone
> out everything.
... and inter-project dependencies is what a BaselineOf does .... which
brings me back to the conclusion that I reached when I scanned the paper:)

>>
>> In the bootstrap scenario, you would only have one version per
>> package to choose from, so the packages that are meant to work
>> together are committed together ....
>>
>> I guess I don't know what you mean when you say:
>>> we want to decouple a released version of a package from the working
>>> copy of the package version description (implies the creation of a
>>> package repository + a web interface on top of it to promote/search
>>> packages).
>> Perhaps a description of the problem being solved would help me
>> understand.
> We want to be able to have a package market place where tools can grab
> dependencies without to load code
> and can compute the set of packages that should be loaded.
>
> When a package is released into the market: then it externalise its
> metadata so that a crawler can automatically build
> dependency graph and create specific distribution.
Okay. This is a problem .... but it happens to be a problem that
Metacello "can solve/does solve" - so there must be something else (a
deeper problem?) that I don't quite understand.

With that said, if you are planning to replace Metacello, then I am
excited:) But I will repeat that I hope that you are considering cross
platform issues ...

Perhaps at this point in time, I'd like to read some code. Then I can
skip reading the paper and get a feel for how hard it will be to port to
GemStone:)

Dale

Reply | Threaded
Open this post in threaded view
|

Re: About Magritte Seaside

stepharo

>
>> I think that this is only true for packages committed within the same
>> repo.
>> Now between porjects published in different repo you have to express
>> them.
>> I do not think that we all want to publish in the same repo and clone
>> out everything.
> ... and inter-project dependencies is what a BaselineOf does ....
> which brings me back to the conclusion that I reached when I scanned
> the paper:)
Yes probably but you have to have a BaselineOf for every package.
Because we want to have the dependency expressed in every package and
not in
a gigantic "project" configuration of.

>>
>> When a package is released into the market: then it externalise its
>> metadata so that a crawler can automatically build
>> dependency graph and create specific distribution.
> Okay. This is a problem .... but it happens to be a problem that
> Metacello "can solve/does solve" - so there must be something else (a
> deeper problem?) that I don't quite understand.
But you have to load the configuration and somehow execute it so that it
computes the dependencies and we do not want.

> With that said, if you are planning to replace Metacello, then I am
> excited:) But I will repeat that I hope that you are considering cross
> platform issues ...
Yes we do. First we wanted to make it work. Then we should have kind of
virtual packages that act as platforms or project level

> Perhaps at this point in time, I'd like to read some code. Then I can
> skip reading the paper and get a feel for how hard it will be to port
> to GemStone:)
I do not know where christophe save his code but it is be public.

>
> Dale
>
>


Reply | Threaded
Open this post in threaded view
|

Re: About Magritte Seaside

Dale Henrichs-3


On 10/11/15 11:40 AM, stepharo wrote:

>
>>
>>> I think that this is only true for packages committed within the
>>> same repo.
>>> Now between porjects published in different repo you have to express
>>> them.
>>> I do not think that we all want to publish in the same repo and
>>> clone out everything.
>> ... and inter-project dependencies is what a BaselineOf does ....
>> which brings me back to the conclusion that I reached when I scanned
>> the paper:)
> Yes probably but you have to have a BaselineOf for every package.
> Because we want to have the dependency expressed in every package and
> not in
> a gigantic "project" configuration of.
If you are talking about ConfigurationOf, then I agree that they can be
gigantic, but 99% of the junk in a configuration is completely
eliminated when you use a BaselineOf ... 99% of the junk in a
configuration is dedicated to plugging the gap between monticello as an
SCM and built-in capabilities for git ...

A BaselineOf has a single baseline method and only the "pure"
dependencies amongst the packages and projects needs to be expressed ...
and these dependency specs are about "as small" as you can get ...

>
>>>
>>> When a package is released into the market: then it externalise its
>>> metadata so that a crawler can automatically build
>>> dependency graph and create specific distribution.
>> Okay. This is a problem .... but it happens to be a problem that
>> Metacello "can solve/does solve" - so there must be something else (a
>> deeper problem?) that I don't quite understand.
> But you have to load the configuration and somehow execute it so that
> it computes the dependencies and we do not want.
Do you recall that I have been reminding folks that the specifications
for ConfigurationOf and BaselineOf will someday become an XML file? ...
I have taken great pains over the years to preserve this "expectation"
... Remember the choice to use classes was made as a bootstrap
convenience to avoid having to create tools ... 6 years later and there
is still a dearth of tools:)

When you "execute" the code in a ConfigurationOf or BaselineOf, a
completely separate data structure is constructed using a well-defined
API and it is this "data structure" that does the real work ... it would
be very easy to convert a BaselineOf into an XML/JSON/STON file without
losing any information, unless you've have disregarding my warnings:)

There is nothing in Metacello "project specifications" that _depends_
upon executing code ...
>
>> With that said, if you are planning to replace Metacello, then I am
>> excited:) But I will repeat that I hope that you are considering
>> cross platform issues ...
> Yes we do. First we wanted to make it work. Then we should have kind
> of virtual packages that act as platforms or project level
When you talk about "virtual packages", I would say that a BaselineOf is
pretty much a "virtual package" already.

When it comes to cross-platform support there are several factors that
were built into Metacello from the very beginning:

   - it should be possible to USE a package on a different platform than
it was
      originally written for without modifying the package itself
   - it should be possible to SUBSTITUTE a platform-specific package with
      another platform-specific package without modifying either of the
packages
   - it should be possible to CHANGE the package dependencies based on
      platform-dependent requirements without modifying any of the packages

The key here is that if one needs to change a package to use it on a
different platform then you lose the ability to share source code.

The BaselineOf satisfies these requirements, because the "project meta
data" is separate from the package/source code and the BaselineOf itself
is cross-platform.

If you haven't thought about these issues from the very beginning, then
it may not be easy to shoe-horn support in after the fact ...

With all of that said, I really do love the idea of not having to
support Metacello anymore:) So I would like to see you succeed with your
effort!
>
>> Perhaps at this point in time, I'd like to read some code. Then I can
>> skip reading the paper and get a feel for how hard it will be to port
>> to GemStone:)
> I do not know where christophe save his code but it is be public.
I may not have time to read a paper ... but I would have time to read code:)

Dale

Reply | Threaded
Open this post in threaded view
|

Re: About Magritte Seaside

stepharo

>
> A BaselineOf has a single baseline method and only the "pure"
> dependencies amongst the packages and projects needs to be expressed
> ... and these dependency specs are about "as small" as you can get ...
>>
Yes but we want them per package.
We do not work on that since more than one year by accident.

>>>>
>>>> When a package is released into the market: then it externalise its
>>>> metadata so that a crawler can automatically build
>>>> dependency graph and create specific distribution.
>>> Okay. This is a problem .... but it happens to be a problem that
>>> Metacello "can solve/does solve" - so there must be something else
>>> (a deeper problem?) that I don't quite understand.
>> But you have to load the configuration and somehow execute it so that
>> it computes the dependencies and we do not want.
> Do you recall that I have been reminding folks that the specifications
> for ConfigurationOf and BaselineOf will someday become an XML file?
> ... I have taken great pains over the years to preserve this
> "expectation" ... Remember the choice to use classes was made as a
> bootstrap convenience to avoid having to create tools ... 6 years
> later and there is still a dearth of tools:)
>
> When you "execute" the code in a ConfigurationOf or BaselineOf, a
> completely separate data structure is constructed using a well-defined
> API and it is this "data structure" that does the real work ... it
> would be very easy to convert a BaselineOf into an XML/JSON/STON file
> without losing any information, unless you've have disregarding my
> warnings:)
>
> There is nothing in Metacello "project specifications" that _depends_
> upon executing code ...
I know what I meant was use of pragmas, chaining pragma, loading all the
configuration information (different baselines....).


>>> With that said, if you are planning to replace Metacello, then I am
>>> excited:) But I will repeat that I hope that you are considering
>>> cross platform issues ...
>> Yes we do. First we wanted to make it work. Then we should have kind
>> of virtual packages that act as platforms or project level
> When you talk about "virtual packages", I would say that a BaselineOf
> is pretty much a "virtual package" already.
>
> When it comes to cross-platform support there are several factors that
> were built into Metacello from the very beginning:
>
>   - it should be possible to USE a package on a different platform
> than it was
>      originally written for without modifying the package itself
>   - it should be possible to SUBSTITUTE a platform-specific package with
>      another platform-specific package without modifying either of the
> packages
>   - it should be possible to CHANGE the package dependencies based on
>      platform-dependent requirements without modifying any of the
> packages
>
> The key here is that if one needs to change a package to use it on a
> different platform then you lose the ability to share source code.

I see well the reason. :)
The last point is the most tricky one when we have per package
dependencies. But I will let christophe answers.
>
> The BaselineOf satisfies these requirements, because the "project meta
> data" is separate from the package/source code and the BaselineOf
> itself is cross-platform.
>
> If you haven't thought about these issues from the very beginning,
> then it may not be easy to shoe-horn support in after the fact ...

I will let christophe answer.
>
> With all of that said, I really do love the idea of not having to
> support Metacello anymore:) So I would like to see you succeed with
> your effort!

Thanks. We will need help definitively.

>>> Perhaps at this point in time, I'd like to read some code. Then I
>>> can skip reading the paper and get a feel for how hard it will be to
>>> port to GemStone:)
>> I do not know where christophe save his code but it is be public.
> I may not have time to read a paper ... but I would have time to read
> code:)

:)

>
> Dale
>
>


Reply | Threaded
Open this post in threaded view
|

Re: About Magritte Seaside

demarey
In reply to this post by Dale Henrichs-3
Hi Dale,

Le 11 oct. 2015 à 00:40, Dale Henrichs a écrit :

Christophe,

I still don't have a lot of time to read the paper and try to understand what you are trying to accomplish, but I am curious how you think "package dependencies" will play with git-based projects?

Dependencies are not tied to a Version Control System (monticello, git or whatever). Dependencies are a package concern.
With a released version, at the end, we need to fech source code from a VCS (as we do not have a shared binary format): these steps are already done by MC*Repository classes, including git.

In git-based repositories I don't think you have the same type of dependency issues that one might have with monticello repositories --- In a monticello repository you have a whole range of possible package versions to pick from, but in a git-based repository the range of package versions is fixed to those that are committed together so the packages that are meant to work together are committed together.

Git allows you to easily reference a set of packages working together. It works fine for packages of the same repository but you get back the problem since you deal with packages of other repositories.

In the bootstrap scenario, you would only have one version per package to choose from, so the packages that are meant to work together are committed together ....

For the first step of the bootstrap, it will work but not for next steps where we will split the Pharo image into different projects.

I guess I don't know what you mean when you say:
we want to decouple a released version of a package from the working copy of the package version description (implies the creation of a package repository + a web interface on top of it to promote/search packages).
Perhaps a description of the problem being solved would help me understand.

When you develop, you have a working copy of a package meta-data, including dependencies. Actually, there are current dependencies of the package. You could avoid to refer to specific versions and just point to the package name as your working image should already have packages loaded. (kind of configurationOf baseline)
When you release a version (strong act), then you "freeze" the current working version of the package meta-data and you publish it somewhere (a package repository) so that it becomes available to others. This metadata is not source cod, is easily accessible by tools and it becomes easy to build a web site on top of this to search / promote packages.
So, the problems I'm trying to solve there are:
  • do not be tied to a VCS and do not need to load code to "play" with packages metadata
  • offer a central place to easily find the package you need (for example, java has http://central.sonatype.org/, php has https://packagist.org/, etc.)
  • do not mix preoccupations: I do not want to have metadata of all released versions + working copy of a package at the same place

Christophe


smime.p7s (5K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: About Magritte Seaside

demarey
In reply to this post by Dale Henrichs-3

Le 11 oct. 2015 à 18:42, Dale Henrichs a écrit :

>
>
> On 10/11/15 12:19 AM, stepharo wrote:
>>
>>
>> Le 11/10/15 00:40, Dale Henrichs a écrit :
>>> Christophe,
>>>
>>> I still don't have a lot of time to read the paper and try to understand what you are trying to accomplish,
>> you should read it. :)
>> We wrote it for that and it is not boring nor long.
> I scanned through it at the time and as I recall, I thought that the functionality described was already covered by git and BaselineOf ... but I did not read it in great detail and I did not (and still don't) have the time to compose a long-winded response:)
>>
>>> but I am curious how you think "package dependencies" will play with git-based projects?
>>>
>>> In git-based repositories I don't think you have the same type of dependency issues that one might have with monticello repositories --- In a monticello repository you have a whole range of possible package versions to pick from, but in a git-based repository the range of package versions is fixed to those that are committed together so the packages that are meant to work together are committed together.
>>
>> I think that this is only true for packages committed within the same repo.
>> Now between porjects published in different repo you have to express them.
>> I do not think that we all want to publish in the same repo and clone out everything.
> ... and inter-project dependencies is what a BaselineOf does .... which brings me back to the conclusion that I reached when I scanned the paper:)
>>>
>>> In the bootstrap scenario, you would only have one version per package to choose from, so the packages that are meant to work together are committed together ....
>>>
>>> I guess I don't know what you mean when you say:
>>>> we want to decouple a released version of a package from the working copy of the package version description (implies the creation of a package repository + a web interface on top of it to promote/search packages).
>>> Perhaps a description of the problem being solved would help me understand.
>> We want to be able to have a package market place where tools can grab dependencies without to load code
>> and can compute the set of packages that should be loaded.
>>
>> When a package is released into the market: then it externalise its metadata so that a crawler can automatically build
>> dependency graph and create specific distribution.
> Okay. This is a problem .... but it happens to be a problem that Metacello "can solve/does solve" - so there must be something else (a deeper problem?) that I don't quite understand.
>
> With that said, if you are planning to replace Metacello, then I am excited:) But I will repeat that I hope that you are considering cross platform issues ...
>
> Perhaps at this point in time, I'd like to read some code. Then I can skip reading the paper and get a feel for how hard it will be to port to GemStone:)
Well, the point is not to replace metacello but to go towards a per package metadata description allowing some flexibility with the introduction of virtual packages.
This will allow, in a first time, to set up a package repository and more important, a web site on top of it. In a second time, I also want to enable more flexibility in expressing dependencies constraints (eg. > 2.0, 3.*, etc.). To achieve that, you need a very performant dependency solver and I would like to reuse linux ones (it has be done for ocaml by example) through CUDF (check http://mancoosi.org/).

For now, I implemented a simple solver for static dependency constraints (=1.2). I checked Metacello implementation and it looked to me that approaches are a bit too far to be able to reuse the whole code. For sure, it is not as robust as Metacello is, because you enhanced it for years.
What I want now, is to experiment (let's name it) Cargo Package Manager to see if it fits the needs. Pharo bootstrap is the first use case.


What I would like, is that, at the end, the dependency solver get out of Pharo and that we use already existing linux ones. What will stay into Pharo are packages metadata and the way to load a list of packages.

smime.p7s (5K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: About Magritte Seaside

demarey
In reply to this post by Dale Henrichs-3

Le 11 oct. 2015 à 22:32, Dale Henrichs a écrit :

When you talk about "virtual packages", I would say that a BaselineOf is pretty much a "virtual package" already.

I don't think BaselineOf could be seen as a virtual package.
In package A, you tell that A depends on V.
In package B, you simply tell that B provides V. Many other packages could also provide V.
Then, it is the solver's job to take the most relevant package providing V.

When it comes to cross-platform support there are several factors that were built into Metacello from the very beginning:

 - it should be possible to USE a package on a different platform than it was
    originally written for without modifying the package itself

+1
TBH, it is not yet implement in Cargo because I have a dilemnia: once you release a version, you should not edit it anymore.
On another hand, you would like to say that this package released and validated on Pharo 4 is also valid for Pharo5.
A good compromise would be to be able to edit only some metadata of a released package.

 - it should be possible to SUBSTITUTE a platform-specific package with
    another platform-specific package without modifying either of the packages

with virtual packages, it becomes easy

 - it should be possible to CHANGE the package dependencies based on
    platform-dependent requirements without modifying any of the packages

The key here is that if one needs to change a package to use it on a different platform then you lose the ability to share source code.

The BaselineOf satisfies these requirements, because the "project meta data" is separate from the package/source code and the BaselineOf itself is cross-platform.

If you haven't thought about these issues from the very beginning, then it may not be easy to shoe-horn support in after the fact ...

With our approach, metadata lies in the package for the current version and it is on the package repository when the version is released. Platform-specific packages could have their own dependencies.
What will be possible is to create a new package (not a source code package but a package that is used by a package manager, i.e. metadata) to support a new platform and reusing existing code (by pointing to the package source code).
Do you have an example to provide to me?

With all of that said, I really do love the idea of not having to support Metacello anymore:) So I would like to see you succeed with your effort!

It will take time ...
I would really like to get feedbacks on Cargo because the knowledge you got with Metacello is invaluable.

Perhaps at this point in time, I'd like to read some code. Then I can skip reading the paper and get a feel for how hard it will be to port to GemStone:)
I do not know where christophe save his code but it is be public.
I may not have time to read a paper ... but I would have time to read code:)

http://smalltalkhub.com/#!/~demarey/CargoPackageManager

Regards,
Christophe

smime.p7s (5K) Download Attachment
12