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

Attachment: smime.p7s
Description: S/MIME cryptographic signature

Reply via email to