a process to maintain non core package

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

a process to maintain non core package

Stéphane Ducasse
Hi

in the future I would like to have a process like that to maintain  
package like sound (or morphic extras) or any package that are not  
core else we will not be able to maintain them or to apply package  
wide changes.

- we mark the packages that are not in the image but that we want to  
maintain
- at integration step we
        load all the external packages
- integrate
- publish in different repos

Else I bet that we will not be able to maintain the non core packages.

Stef

PS: I'm integrating

Issue 1051: Cuis 0053-ensure-close.1.cs
and some changes touched sound so this is good experiment.

_______________________________________________
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: a process to maintain non core package

keith1y
Stéphane Ducasse wrote:

> Hi
>
> in the future I would like to have a process like that to maintain  
> package like sound (or morphic extras) or any package that are not  
> core else we will not be able to maintain them or to apply package  
> wide changes.
>
> - we mark the packages that are not in the image but that we want to  
> maintain
> - at integration step we
> load all the external packages
> - integrate
> - publish in different repos
>
> Else I bet that we will not be able to maintain the non core packages.
>
> Stef
>  
In PackageInfo/MC1.5 packages keep knowledge of where they were loaded
from in order to support this scenario

Keith

_______________________________________________
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: a process to maintain non core package

Stéphane Ducasse
thanks for the info.

Stef

On Aug 8, 2009, at 8:20 PM, Keith Hodges wrote:

> Stéphane Ducasse wrote:
>> Hi
>>
>> in the future I would like to have a process like that to maintain
>> package like sound (or morphic extras) or any package that are not
>> core else we will not be able to maintain them or to apply package
>> wide changes.
>>
>> - we mark the packages that are not in the image but that we want to
>> maintain
>> - at integration step we
>> load all the external packages
>> - integrate
>> - publish in different repos
>>
>> Else I bet that we will not be able to maintain the non core  
>> packages.
>>
>> Stef
>>
> In PackageInfo/MC1.5 packages keep knowledge of where they were loaded
> from in order to support this scenario
>
> Keith
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
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: a process to maintain non core package

Adrian Lienhard
In reply to this post by Stéphane Ducasse
Hi,

I really think we need a package management system and a process to  
maintain it.

The goal is that loading and using non-core packages "just  
works" (unlike for instance SqueakMap, where loading more often fails  
than succeeds because there are a lot of obsolete packages and a  
dependency mechanism is missing).

- There should be a responsible maintainer for each package
- For each package there should be a known way to discuss and report  
problems
- A gate keeper includes and removes packages from the set depending  
on their status

This limits the set of included packages (at least initially) but  
would increase the quality and hence the user experience.

Maybe there could be two sets, a stable and an unstable set. New  
packages would first go to the unstable set and then move up to the  
stable set after a while.

An automated build process could load packages into new builds and  
report the result of the tests.

The package management system does not need to be very sophisticated,  
but it should manage dependencies and have a simple GUI (to search for  
packages and see what is already loaded).

Cheers,
Adrian

On Aug 8, 2009, at 12:31 , Stéphane Ducasse wrote:

> Hi
>
> in the future I would like to have a process like that to maintain
> package like sound (or morphic extras) or any package that are not
> core else we will not be able to maintain them or to apply package
> wide changes.
>
> - we mark the packages that are not in the image but that we want to
> maintain
> - at integration step we
> load all the external packages
> - integrate
> - publish in different repos
>
> Else I bet that we will not be able to maintain the non core packages.
>
> Stef
>
> PS: I'm integrating
>
> Issue 1051: Cuis 0053-ensure-close.1.cs
> and some changes touched sound so this is good experiment.
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
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: a process to maintain non core package

Stéphane Ducasse

On Aug 9, 2009, at 2:26 PM, Adrian Lienhard wrote:

> Hi,
>
> I really think we need a package management system and a process to
> maintain it.
>
> The goal is that loading and using non-core packages "just
> works" (unlike for instance SqueakMap, where loading more often fails
> than succeeds because there are a lot of obsolete packages and a
> dependency mechanism is missing).

Yeap!

> - There should be a responsible maintainer for each package
> - For each package there should be a known way to discuss and report
> problems
> - A gate keeper includes and removes packages from the set depending
> on their status
>
> This limits the set of included packages (at least initially) but
> would increase the quality and hence the user experience.
>
> Maybe there could be two sets, a stable and an unstable set. New
> packages would first go to the unstable set and then move up to the
> stable set after a while.

Yes but if we take for example sound. When I integrate a fix from
Cuis I do not want to get

> An automated build process could load packages into new builds and
> report the result of the tests.

Yes!

> The package management system does not need to be very sophisticated,
> but it should manage dependencies and have a simple GUI (to search for
> packages and see what is already loaded).

Yes.
We should start incrementally fixing that.
I should look at Metacello and MC1.5 when I get more time.

Stef

>
> Cheers,
> Adrian
>
> On Aug 8, 2009, at 12:31 , Stéphane Ducasse wrote:
>
>> Hi
>>
>> in the future I would like to have a process like that to maintain
>> package like sound (or morphic extras) or any package that are not
>> core else we will not be able to maintain them or to apply package
>> wide changes.
>>
>> - we mark the packages that are not in the image but that we want to
>> maintain
>> - at integration step we
>> load all the external packages
>> - integrate
>> - publish in different repos
>>
>> Else I bet that we will not be able to maintain the non core  
>> packages.
>>
>> Stef
>>
>> PS: I'm integrating
>>
>> Issue 1051: Cuis 0053-ensure-close.1.cs
>> and some changes touched sound so this is good experiment.
>>
>> _______________________________________________
>> Pharo-project mailing list
>> [hidden email]
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
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: a process to maintain non core package

Michael Roberts-2
do we have a list of candidate package management systems?

cheers,

Mike

On Sun, Aug 9, 2009 at 1:52 PM, Stéphane
Ducasse<[hidden email]> wrote:

>
> On Aug 9, 2009, at 2:26 PM, Adrian Lienhard wrote:
>
>> Hi,
>>
>> I really think we need a package management system and a process to
>> maintain it.
>>
>> The goal is that loading and using non-core packages "just
>> works" (unlike for instance SqueakMap, where loading more often fails
>> than succeeds because there are a lot of obsolete packages and a
>> dependency mechanism is missing).
>
> Yeap!
>
>> - There should be a responsible maintainer for each package
>> - For each package there should be a known way to discuss and report
>> problems
>> - A gate keeper includes and removes packages from the set depending
>> on their status
>>
>> This limits the set of included packages (at least initially) but
>> would increase the quality and hence the user experience.
>>
>> Maybe there could be two sets, a stable and an unstable set. New
>> packages would first go to the unstable set and then move up to the
>> stable set after a while.
>
> Yes but if we take for example sound. When I integrate a fix from
> Cuis I do not want to get
>
>> An automated build process could load packages into new builds and
>> report the result of the tests.
>
> Yes!
>
>> The package management system does not need to be very sophisticated,
>> but it should manage dependencies and have a simple GUI (to search for
>> packages and see what is already loaded).
>
> Yes.
> We should start incrementally fixing that.
> I should look at Metacello and MC1.5 when I get more time.
>
> Stef
>
>>
>> Cheers,
>> Adrian
>>
>> On Aug 8, 2009, at 12:31 , Stéphane Ducasse wrote:
>>
>>> Hi
>>>
>>> in the future I would like to have a process like that to maintain
>>> package like sound (or morphic extras) or any package that are not
>>> core else we will not be able to maintain them or to apply package
>>> wide changes.
>>>
>>> - we mark the packages that are not in the image but that we want to
>>> maintain
>>> - at integration step we
>>>      load all the external packages
>>> - integrate
>>> - publish in different repos
>>>
>>> Else I bet that we will not be able to maintain the non core
>>> packages.
>>>
>>> Stef
>>>
>>> PS: I'm integrating
>>>
>>> Issue 1051: Cuis 0053-ensure-close.1.cs
>>> and some changes touched sound so this is good experiment.
>>>
>>> _______________________________________________
>>> Pharo-project mailing list
>>> [hidden email]
>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>>
>> _______________________________________________
>> Pharo-project mailing list
>> [hidden email]
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>

_______________________________________________
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: a process to maintain non core package

Miguel Cobá
In reply to this post by Adrian Lienhard
El dom, 09-08-2009 a las 14:26 +0200, Adrian Lienhard escribió:

> - There should be a responsible maintainer for each package
> - For each package there should be a known way to discuss and report  
> problems
> - A gate keeper includes and removes packages from the set depending  
> on their status
>

Yes, something like the Debian process, but simplified for pharo.
Also it is important to have a way to track unmantained packages to
avoid the squeak map problem.




_______________________________________________
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: a process to maintain non core package

keith1y
In reply to this post by Adrian Lienhard
Adrian Lienhard wrote:

> Hi,
>
> I really think we need a package management system and a process to  
> maintain it.
>
> The goal is that loading and using non-core packages "just  
> works" (unlike for instance SqueakMap, where loading more often fails  
> than succeeds because there are a lot of obsolete packages and a  
> dependency mechanism is missing).
>
> - There should be a responsible maintainer for each package
> - For each package there should be a known way to discuss and report  
> problems
> - A gate keeper includes and removes packages from the set depending  
> on their status
>
> This limits the set of included packages (at least initially) but  
> would increase the quality and hence the user experience.
>
> Maybe there could be two sets, a stable and an unstable set. New  
> packages would first go to the unstable set and then move up to the  
> stable set after a while.
>
> An automated build process could load packages into new builds and  
> report the result of the tests.
>
> The package management system does not need to be very sophisticated,  
> but it should manage dependencies and have a simple GUI (to search for  
> packages and see what is already loaded).
>
> Cheers,
> Adrian
>
>  
Half of what you describe is in Sake/Packages

Keith

_______________________________________________
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: a process to maintain non core package

Dale
In reply to this post by Stéphane Ducasse
Mike,

I have been working on  Metacello which is a package management system for Smalltalk. Metacello is built on top of Monticello and should also be able to manage MC2 artifacts.

Metacello runs on Squeak, Pharo and GemStone. It is currently in alpha as I am still working on making it "feature complete". Information for downloading it can be found on the Monticello mailing list - there is a tutorial (see the version 0.6 announcement).

I created Metacello to address specific needs that I have run into while maintaining GLASS:

  - Named versions associated with lists of explicit Monticello file names.
    One can declare that version 0.3 consists of:
      'Example-Core-anon.9'
      'Example-Tests-anon.3'
      'Example-AddOn-anon.1'
      'Example-UI-anon.1'
    When one comes across an announcement of version 0.3 for the Example project
    you will know exactly which versions of the packages need to be loaded.
    Furthermore, you can evaluate an expression like the following to load version
    0.3:
      (ExampleProject version: '0.3') load
  - Package to package dependencies. One can declare required packages like the
    following:
      'Example-Core-anon.9'
      'Example-Tests-anon.3' requires: 'Example-Core'
      'Example-AddOn-anon.1' requires: 'Example-Tests'
      'Example-UI-anon.1'    requires: { 'OB'. 'Example-AddOn'. }
    From the above statements, the package load order is derived and used when you
    load the project:
      (ExampleProject version: '0.3') load
    It is also used to determine _which_ packages should be loaded when an
    expression like the following is executed:
      (ExampleProject version: '0.3') load: 'Example-AddOn'
    This statement causes 'Example-Core-anon.9', 'Example-Tests-anon.3',
    'Example-AddOn-anon.1' to be loaded in order.
  - Package to Project dependencies. In the above example 'OB' is a named reference
    to the OmniBrowser project and if 'Example-UI' is loaded, then the OmniBrowser
    project will be loaded.
  - Conditional package declarations. One can declare package versions that will
    be conditionally loaded for Squeak, Pharo. or GemStone. For GemStone I also
    declare different package versions based on which version of GemStone is being
    run.

There is more, including a spartan OB interface...

Currently I am integrating Metacello into the GemStone/GLASS build process. Soon I will be using Metacello for managing updates for GLASS users - the version of GemTools running on the 1.0beta is managed with Metacello...

In parallel I am working on making Metacello feature complete for the 1.0 release (only a couple features left on my list). The biggest item remaining is a tutorial covering the all of the features (or a least the most important).

Metacello is under the MIT license.

I think that Metacello addresses at least a couple of requirements for Pharo, but then I'm biased:)

Dale

----- "Michael Roberts" <[hidden email]> wrote:

| do we have a list of candidate package management systems?
|
| cheers,
|

_______________________________________________
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: a process to maintain non core package

johnmci
In reply to this post by Michael Roberts-2
I believe Joseph Pelrine work on one for the "Squeak World Tour" fork.
http://desk.org:8080/CampSmalltalk/Squeak%20World%20Tour%20Results

 From time to time he thinks of bring it up to date, but there is a  
general lack of interest...
However I can ask him for a spec sheet/objectives for the product and  
see how they match to other
proposals.

If people are curious about why he would know a bit about package  
management then consider
http://www.amazon.com/Mastering-Envy-Developer-Joseph-Pelrine/dp/0521666503


On 9-Aug-09, at 9:03 AM, Michael Roberts wrote:

> do we have a list of candidate package management systems?
>
> cheers,
>
> Mike
>

--
=
=
=
========================================================================
John M. McIntosh <[hidden email]>   Twitter:  
squeaker68882
Corporate Smalltalk Consulting Ltd.  http://www.smalltalkconsulting.com
=
=
=
========================================================================





_______________________________________________
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: a process to maintain non core package

Miguel Cobá
In reply to this post by Dale
El dom, 09-08-2009 a las 10:29 -0700, Dale Henrichs escribió:

>   - Package to package dependencies. One can declare required packages
> like the
>     following:
>       'Example-Core-anon.9'
>       'Example-Tests-anon.3' requires: 'Example-Core'
>       'Example-AddOn-anon.1' requires: 'Example-Tests'
>       'Example-UI-anon.1'    requires: { 'OB'. 'Example-AddOn'. }
>     From the above statements, the package load order is derived and used when you
>     load the project:
>       (ExampleProject version: '0.3') load
>     It is also used to determine _which_ packages should be loaded when an
>     expression like the following is executed:
>       (ExampleProject version: '0.3') load: 'Example-AddOn'
>     This statement causes 'Example-Core-anon.9', 'Example-Tests-anon.3',
>     'Example-AddOn-anon.1' to be loaded in order.

This is very good, one thing that the package management system of
Debian has is that you can indicate a minimal version for a required
package:

for example, following your code snippet:

'Example-Core-anon.9'
'Example-Tests-anon.3' requires: 'Example-Core' minVersion: 9
'Example-AddOn-anon.1' requires: 'Example-Tests' minVersion: 1 maxVersion: 3
'Example-UI-anon.1'    requires: { 'OB' . 'Example-AddOn'. }

This way, the package system doesn't have to install a exact version if a group of
versions of the package required can equally work. This permits to have a package, say
5 of a package that have a new feature that I need in my image and not be overwrote by
a dependency of other package that needs exactly version 3 that doesn't have the feature
that I need.

Maybe Metacello has this functionality, but if not, it would be, I think, easy to add it,
just a comparation that the version available in the system meets the criteria stated by
the package dependency.

Also, a form to force the install a package even if not all the dependencies are met is good,
in particular to test some experimental package.

For more information you can refer to the dpkg/deb/aptitude tools in the debian system.
Of course that tools do a lot more but we don't need, at least for now, all the features.


http://en.wikipedia.org/wiki/Aptitude_(program)
http://en.wikipedia.org/wiki/Deb_(file_format)
http://en.wikipedia.org/wiki/Dpkg

All of them are GPL but I think that a new implementation, without use the code, and in another
language, using only the ideas, is permited and can be integrated in Pharo as MIT code.



_______________________________________________
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: a process to maintain non core package

keith1y
In reply to this post by keith1y
Keith Hodges wrote:
> Adrian Lienhard wrote:
>  
>> Hi,
>>
>> I really think we need a package management system and a process to  
>> maintain it.
>>
>> The goal is that loading and using non-core packages "just  
>> works"
Same goal as for Sake/Packages, and it works for me.

>>  (unlike for instance SqueakMap, where loading more often fails  
>> than succeeds because there are a lot of obsolete packages and a  
>> dependency mechanism is missing).
>>
>> - There should be a responsible maintainer for each package
>>    
Not a realistic proposition. Better to be open to all to maintain on
behalf of the community.
>> - For each package there should be a known way to discuss and report  
>> problems
>>    
That's just arbitrary metadata in the package definition, for more
general topics we use the [hidden email] mailing list
>> - A gate keeper includes and removes packages from the set depending  
>> on their status
>>    
Probably too complicated to be practical.
>> This limits the set of included packages (at least initially) but  
>> would increase the quality and hence the user experience.
>>
>> Maybe there could be two sets, a stable and an unstable set. New  
>>    
Sake/Packages supports a stable and a beta release of each package.
>> packages would first go to the unstable set and then move up to the  
>> stable set after a while.
>>
>> An automated build process could load packages into new builds and  
>> report the result of the tests.
>>    
Bob does that.
>> The package management system does not need to be very sophisticated,  
>>    
Sake is as simple as possible for defining actions with dependencies.
>> but it should manage dependencies and have a simple GUI (to search for  
>> packages and see what is already loaded).
>>    
Sake/Packages uses the class browser as is, no extra GUI is required.

Packages provided explore

shows you what is loaded, and this should be merged into
PackageOrganization.

Keith

_______________________________________________
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: a process to maintain non core package

Stéphane Ducasse
In reply to this post by johnmci
I have ginsu on my disc since years.
Ginsu was a good declarative model (now we have MC which plays the  
same role).
What we are missing is a package management system. So may be  
metacello can play this role.
I think that once we will have cleaner and better modular package we  
should be able to rely on
an external build process to integrate and release pharo.
Right now script loader is a big bag of hack and scripts which were  
mandatory to deal with dependent
packages and other dirty things. Also a true atomic loader will help.  
(I mean true as opposite of Ginsu/MC<1.5
loader which could not deal with the issue of modifying parts of the  
system used to load the system).
So all in all I do not think that there is a need for Ginsu right now.
Cleaning and making MC better (probably MC2) is the way to go.
Something I feel that MC1.0 was designed from a UI point of view and  
is a bit arcane to script.
Stef

On Aug 9, 2009, at 7:41 PM, John M McIntosh wrote:

> I believe Joseph Pelrine work on one for the "Squeak World Tour" fork.
> http://desk.org:8080/CampSmalltalk/Squeak%20World%20Tour%20Results
>
> From time to time he thinks of bring it up to date, but there is a
> general lack of interest...
> However I can ask him for a spec sheet/objectives for the product and
> see how they match to other
> proposals.
>
> If people are curious about why he would know a bit about package
> management then consider
> http://www.amazon.com/Mastering-Envy-Developer-Joseph-Pelrine/dp/0521666503
>
>
> On 9-Aug-09, at 9:03 AM, Michael Roberts wrote:
>
>> do we have a list of candidate package management systems?
>>
>> cheers,
>>
>> Mike
>>
>
> --
> =
> =
> =
> =
> =
> ======================================================================
> John M. McIntosh <[hidden email]>   Twitter:
> squeaker68882
> Corporate Smalltalk Consulting Ltd.  http://
> www.smalltalkconsulting.com
> =
> =
> =
> =
> =
> ======================================================================
>
>
>
>
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
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: a process to maintain non core package

Stéphane Ducasse
In reply to this post by keith1y
Keith you mentioned that you did videos about Bob or sake.
Do you have them so that I can watch them?

Stef

On Aug 9, 2009, at 10:01 PM, Keith Hodges wrote:

> Keith Hodges wrote:
>> Adrian Lienhard wrote:
>>
>>> Hi,
>>>
>>> I really think we need a package management system and a process to
>>> maintain it.
>>>
>>> The goal is that loading and using non-core packages "just
>>> works"
> Same goal as for Sake/Packages, and it works for me.
>
>>> (unlike for instance SqueakMap, where loading more often fails
>>> than succeeds because there are a lot of obsolete packages and a
>>> dependency mechanism is missing).
>>>
>>> - There should be a responsible maintainer for each package
>>>
> Not a realistic proposition. Better to be open to all to maintain on
> behalf of the community.
>>> - For each package there should be a known way to discuss and report
>>> problems
>>>
> That's just arbitrary metadata in the package definition, for more
> general topics we use the [hidden email] mailing list
>>> - A gate keeper includes and removes packages from the set depending
>>> on their status
>>>
> Probably too complicated to be practical.
>>> This limits the set of included packages (at least initially) but
>>> would increase the quality and hence the user experience.
>>>
>>> Maybe there could be two sets, a stable and an unstable set. New
>>>
> Sake/Packages supports a stable and a beta release of each package.
>>> packages would first go to the unstable set and then move up to the
>>> stable set after a while.
>>>
>>> An automated build process could load packages into new builds and
>>> report the result of the tests.
>>>
> Bob does that.
>>> The package management system does not need to be very  
>>> sophisticated,
>>>
> Sake is as simple as possible for defining actions with dependencies.
>>> but it should manage dependencies and have a simple GUI (to search  
>>> for
>>> packages and see what is already loaded).
>>>
> Sake/Packages uses the class browser as is, no extra GUI is required.
>
> Packages provided explore
>
> shows you what is loaded, and this should be merged into
> PackageOrganization.
>
> Keith
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
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: a process to maintain non core package

Dale
In reply to this post by Stéphane Ducasse

----- "Miguel Enrique Cobá Martinez" <[hidden email]> wrote:

| El dom, 09-08-2009 a las 10:29 -0700, Dale Henrichs escribió:
|
| >   - Package to package dependencies. One can declare required
| packages
| > like the
| >     following:
| >       'Example-Core-anon.9'
| >       'Example-Tests-anon.3' requires: 'Example-Core'
| >       'Example-AddOn-anon.1' requires: 'Example-Tests'
| >       'Example-UI-anon.1'    requires: { 'OB'. 'Example-AddOn'. }
| >     From the above statements, the package load order is derived and
| used when you
| >     load the project:
| >       (ExampleProject version: '0.3') load
| >     It is also used to determine _which_ packages should be loaded
| when an
| >     expression like the following is executed:
| >       (ExampleProject version: '0.3') load: 'Example-AddOn'
| >     This statement causes 'Example-Core-anon.9',
| 'Example-Tests-anon.3',
| >     'Example-AddOn-anon.1' to be loaded in order.
|
| This is very good, one thing that the package management system of
| Debian has is that you can indicate a minimal version for a required
| package:
|
| for example, following your code snippet:
|
| 'Example-Core-anon.9'
| 'Example-Tests-anon.3' requires: 'Example-Core' minVersion: 9
| 'Example-AddOn-anon.1' requires: 'Example-Tests' minVersion: 1
| maxVersion: 3
| 'Example-UI-anon.1'    requires: { 'OB' . 'Example-AddOn'. }
|
| This way, the package system doesn't have to install a exact version
| if a group of
| versions of the package required can equally work. This permits to
| have a package, say
| 5 of a package that have a new feature that I need in my image and not
| be overwrote by
| a dependency of other package that needs exactly version 3 that
| doesn't have the feature
| that I need.
|
| Maybe Metacello has this functionality, but if not, it would be, I
| think, easy to add it,
| just a comparation that the version available in the system meets the
| criteria stated by
| the package dependency.

Metacello has the notion of version comparison operators (including the approximately greater than operator from Ruby Gems). These operators are used for project to project version comparison as well as comparing package versions.

Currently a single operator is supported, but I intend to support range operations in a future version.

|
| Also, a form to force the install a package even if not all the
| dependencies are met is good,
| in particular to test some experimental package.

This sounds like an interesting feature to consider...I'm inclined to use Notifications for these "boundary crossings" making it possible for the driver code to customize operations without burdening the core with tons of options ... but I'm just riffing:)

|
| For more information you can refer to the dpkg/deb/aptitude tools in
| the debian system.
| Of course that tools do a lot more but we don't need, at least for
| now, all the features.
|
|
| http://en.wikipedia.org/wiki/Aptitude_(program)
| http://en.wikipedia.org/wiki/Deb_(file_format)
| http://en.wikipedia.org/wiki/Dpkg
|
| All of them are GPL but I think that a new implementation, without use
| the code, and in another
| language, using only the ideas, is permited and can be integrated in
| Pharo as MIT code.

I agree that some useful ideas can be picked up from some of the other package management systems out there and I'm very open to specific suggestions.

Dale




_______________________________________________
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: a process to maintain non core package

Michael Roberts-2
great, i have created a small page on the wiki

http://code.google.com/p/pharo/wiki/PackageManagementSystem

it would be good if people could update they are interested in /
represent.  I am mainly interested in links that go to docs &
downloads (code).

Looking at the recent IdeasToImplement tidy up, package management
concerns are spread around somewhat. Would someone like to group them
all together?

thanks,
Mike

_______________________________________________
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: a process to maintain non core package

keith1y
In reply to this post by Stéphane Ducasse
Stéphane Ducasse wrote:

> I have ginsu on my disc since years.
> Ginsu was a good declarative model (now we have MC which plays the  
> same role).
> What we are missing is a package management system. So may be  
> metacello can play this role.
> I think that once we will have cleaner and better modular package we  
> should be able to rely on
> an external build process to integrate and release pharo.
> Right now script loader is a big bag of hack and scripts which were  
> mandatory to deal with dependent
> packages and other dirty things. Also a true atomic loader will help.  
> (I mean true as opposite of Ginsu/MC<1.5
> loader which could not deal with the issue of modifying parts of the  
> system used to load the system).
> So all in all I do not think that there is a need for Ginsu right now.
> Cleaning and making MC better (probably MC2) is the way to go.
> Something I feel that MC1.0 was designed from a UI point of view and  
> is a bit arcane to script.
> Stef
>
>  
MC1.6 is the one with atomic loading

Keith

_______________________________________________
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: a process to maintain non core package

Miguel Cobá
In reply to this post by keith1y
El dom, 09-08-2009 a las 21:01 +0100, Keith Hodges escribió:

> Keith Hodges wrote:
> > Adrian Lienhard wrote:
> >  
> >> Hi,
> >>
> >> I really think we need a package management system and a process to  
> >> maintain it.
> >>
> >> The goal is that loading and using non-core packages "just  
> >> works"
> Same goal as for Sake/Packages, and it works for me.
>
> >>  (unlike for instance SqueakMap, where loading more often fails  
> >> than succeeds because there are a lot of obsolete packages and a  
> >> dependency mechanism is missing).
> >>
> >> - There should be a responsible maintainer for each package
> >>    
> Not a realistic proposition. Better to be open to all to maintain on
> behalf of the community.

Why not, the debian project use this model since 1996 or something like
that.
The same package system the use report packages not maintained anymore
(orphans and waiting for mantainer)

> >> - For each package there should be a known way to discuss and report  
> >> problems
> >>    
> That's just arbitrary metadata in the package definition, for more
> general topics we use the [hidden email] mailing list
> >> - A gate keeper includes and removes packages from the set depending  
> >> on their status
> >>    
> Probably too complicated to be practical.
> >> This limits the set of included packages (at least initially) but  
> >> would increase the quality and hence the user experience.
> >>
> >> Maybe there could be two sets, a stable and an unstable set. New  
> >>    
> Sake/Packages supports a stable and a beta release of each package.
> >> packages would first go to the unstable set and then move up to the  
> >> stable set after a while.
> >>
> >> An automated build process could load packages into new builds and  
> >> report the result of the tests.
> >>    
> Bob does that.
> >> The package management system does not need to be very sophisticated,  
> >>    
> Sake is as simple as possible for defining actions with dependencies.
> >> but it should manage dependencies and have a simple GUI (to search for  
> >> packages and see what is already loaded).
> >>    
> Sake/Packages uses the class browser as is, no extra GUI is required.
>
> Packages provided explore
>
> shows you what is loaded, and this should be merged into
> PackageOrganization.
>
> Keith

Keith, it really appear that you have built the platform to bring this
dream a reality, but somehow (the details are not relevant now) you
haven't materialized a "steve jobs" kind of show off of it.
I believe your words, based on your other projects that I use. What do
you need, as Stephan said, to bring a complete, working, and as simple
to understand for all of us of your tools.
This is my proposal:

I think that if you can put a working example (minimal, a couple of
packages, and the core) using Pharo, the pharo community happily will
support you. No more fights, no more angry mails, just the working full
simple demo.
I offer to you access to a server with a homologated IP to install (I
can help you here too) to setup the repositories to test your tools.
If the community agree to use your tools and process I can also buy and
donate the domain to host this infrastructure. In the beginning I will
host it, if someday it grows more than I can support (bandwidth mainly,
the space isn't problem) then we will discuss with the community to
migrate the repos to a bigger servers or to ask for donations or some
other party that can host it (maybe the folks of seasidehosting). We'll
see in that moment.

But, Keith, we need to see to believe and support you.

Indeed, Pharo needs a real proccess to not get to the same point that
squeak.

Cheers,
Miguel Cobá


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


_______________________________________________
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: a process to maintain non core package

Douglas Brebner
Miguel Enrique Cobá Martinez wrote:

> El dom, 09-08-2009 a las 21:01 +0100, Keith Hodges escribió:
>  
>> Keith Hodges wrote:
>>    
>>> Adrian Lienhard wrote:
>>>  
>>>      
>>>> Hi,
>>>>
>>>> I really think we need a package management system and a process to  
>>>> maintain it.
>>>>
>>>> The goal is that loading and using non-core packages "just  
>>>> works"
>>>>        
>> Same goal as for Sake/Packages, and it works for me.
>>
>>    
>>>>  (unlike for instance SqueakMap, where loading more often fails  
>>>> than succeeds because there are a lot of obsolete packages and a  
>>>> dependency mechanism is missing).
>>>>
>>>> - There should be a responsible maintainer for each package
>>>>    
>>>>        
>> Not a realistic proposition. Better to be open to all to maintain on
>> behalf of the community.
>>    
>
> Why not, the debian project use this model since 1996 or something like
> that.
> The same package system the use report packages not maintained anymore
> (orphans and waiting for mantainer)
>
>  
>>>> - For each package there should be a known way to discuss and report  
>>>> problems
>>>>    
>>>>        
>> That's just arbitrary metadata in the package definition, for more
>> general topics we use the [hidden email] mailing list
>>    
>>>> - A gate keeper includes and removes packages from the set depending  
>>>> on their status
>>>>    
>>>>        
>> Probably too complicated to be practical.
>>    
>>>> This limits the set of included packages (at least initially) but  
>>>> would increase the quality and hence the user experience.
>>>>
>>>> Maybe there could be two sets, a stable and an unstable set. New  
>>>>    
>>>>        
>> Sake/Packages supports a stable and a beta release of each package.
>>    
>>>> packages would first go to the unstable set and then move up to the  
>>>> stable set after a while.
>>>>
>>>> An automated build process could load packages into new builds and  
>>>> report the result of the tests.
>>>>    
>>>>        
>> Bob does that.
>>    
>>>> The package management system does not need to be very sophisticated,  
>>>>    
>>>>        
>> Sake is as simple as possible for defining actions with dependencies.
>>    
>>>> but it should manage dependencies and have a simple GUI (to search for  
>>>> packages and see what is already loaded).
>>>>    
>>>>        
>> Sake/Packages uses the class browser as is, no extra GUI is required.
>>
>> Packages provided explore
>>
>> shows you what is loaded, and this should be merged into
>> PackageOrganization.
>>
>> Keith
>>    
>
> Keith, it really appear that you have built the platform to bring this
> dream a reality, but somehow (the details are not relevant now) you
> haven't materialized a "steve jobs" kind of show off of it.
> I believe your words, based on your other projects that I use. What do
> you need, as Stephan said, to bring a complete, working, and as simple
> to understand for all of us of your tools.
> This is my proposal:
>
> I think that if you can put a working example (minimal, a couple of
> packages, and the core) using Pharo, the pharo community happily will
> support you. No more fights, no more angry mails, just the working full
> simple demo.
> I offer to you access to a server with a homologated IP to install (I
> can help you here too) to setup the repositories to test your tools.
> If the community agree to use your tools and process I can also buy and
> donate the domain to host this infrastructure. In the beginning I will
> host it, if someday it grows more than I can support (bandwidth mainly,
> the space isn't problem) then we will discuss with the community to
> migrate the repos to a bigger servers or to ask for donations or some
> other party that can host it (maybe the folks of seasidehosting). We'll
> see in that moment.
>
> But, Keith, we need to see to believe and support you.
>
>
>  
I've seen Keiths Seaside gui he made for Bob though I don't know if he
wants it to be shown around. It looks nice.

Here's a quick explanation for those not familiar with them.
Sake is essentially Make for Smalltalk, allowing you to define tasks
that can depend on other tasks.
Bob is a build tool, which handles all the actual building using Sake
tasks to define what to do.

With Bob+Sake, you can define a build to:
1. Start with a defined image.
2. Load a set of packages into that image (either specific versions or
the latest ones).
3. Apply specific fixes from the bug tracker.
4. Run tests.
5. Save the new image and export all the new package versions to a new
folder.

You can define tasks to apply features to an image such as closures or
perform updates between versions or even update applications.

For example, you can define tasks to do the following sort of things
Pharo1.0beta -> Pharo1.0final
Pharo1.0beta -> Pharo-latest.
Squeak 3.10.2 image -> 3.10.2+closures.
Squeak 3.8 image -> 3.8+closures.
Seaside 2.8 -> 2.9.
Pharo-latest -> Pharo-latest + Seaside-latest + your own favourite packages.

Once defined, these will allow anyone to repeatably and reliably produce
an updated image+packages without changing the original image. You can
then do things like upgrade a production image based on 1.0beta to
1.0final just by using the same task but telling it to start with your
production image instead of the 1.0beta distribution image. Since it
produces a new image you don't risk clobbering your original.

You should also be able to replace the update stream with distributing
build definitions for Bob.

I believe one of the key points to this setup is that you don't need to
work on the image as a single blob any more, you only work on the
packages and use Bob to handle the messy image building stuff. That does
depend on the image being sectioned into packages of course.

If I've had any misunderstandings here I hope Keith will correct me but
the system looks awesome :)


_______________________________________________
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: a process to maintain non core package

Stéphane Ducasse
Thanks.
I tried to follow sake/package and bob and I got lost.

Now for the update there are some tricky operations from time to time
(and yes ideally I would like to use a system like the one you  
describe).

>> Why not, the debian project use this model since 1996 or something  
>> like
>> that.
>> The same package system the use report packages not maintained  
>> anymore
>> (orphans and waiting for mantainer)
>>
>>
>>>>> - For each package there should be a known way to discuss and  
>>>>> report
>>>>> problems
>>>>>
>>>>>
>>> That's just arbitrary metadata in the package definition, for more
>>> general topics we use the [hidden email] mailing list
>>>
>>>>> - A gate keeper includes and removes packages from the set  
>>>>> depending
>>>>> on their status
>>>>>
>>>>>
>>> Probably too complicated to be practical.
>>>
>>>>> This limits the set of included packages (at least initially) but
>>>>> would increase the quality and hence the user experience.
>>>>>
>>>>> Maybe there could be two sets, a stable and an unstable set. New
>>>>>
>>>>>
>>> Sake/Packages supports a stable and a beta release of each package.
>>>
>>>>> packages would first go to the unstable set and then move up to  
>>>>> the
>>>>> stable set after a while.
>>>>>
>>>>> An automated build process could load packages into new builds and
>>>>> report the result of the tests.
>>>>>
>>>>>
>>> Bob does that.
>>>
>>>>> The package management system does not need to be very  
>>>>> sophisticated,
>>>>>
>>>>>
>>> Sake is as simple as possible for defining actions with  
>>> dependencies.
>>>
>>>>> but it should manage dependencies and have a simple GUI (to  
>>>>> search for
>>>>> packages and see what is already loaded).
>>>>>
>>>>>
>>> Sake/Packages uses the class browser as is, no extra GUI is  
>>> required.
>>>
>>> Packages provided explore
>>>
>>> shows you what is loaded, and this should be merged into
>>> PackageOrganization.
>>>
>>> Keith
>>>
>>
>> Keith, it really appear that you have built the platform to bring  
>> this
>> dream a reality, but somehow (the details are not relevant now) you
>> haven't materialized a "steve jobs" kind of show off of it.
>> I believe your words, based on your other projects that I use. What  
>> do
>> you need, as Stephan said, to bring a complete, working, and as  
>> simple
>> to understand for all of us of your tools.
>> This is my proposal:
>>
>> I think that if you can put a working example (minimal, a couple of
>> packages, and the core) using Pharo, the pharo community happily will
>> support you. No more fights, no more angry mails, just the working  
>> full
>> simple demo.
>> I offer to you access to a server with a homologated IP to install (I
>> can help you here too) to setup the repositories to test your tools.
>> If the community agree to use your tools and process I can also buy  
>> and
>> donate the domain to host this infrastructure. In the beginning I  
>> will
>> host it, if someday it grows more than I can support (bandwidth  
>> mainly,
>> the space isn't problem) then we will discuss with the community to
>> migrate the repos to a bigger servers or to ask for donations or some
>> other party that can host it (maybe the folks of seasidehosting).  
>> We'll
>> see in that moment.
>>
>> But, Keith, we need to see to believe and support you.
>>
>>
>>
> I've seen Keiths Seaside gui he made for Bob though I don't know if he
> wants it to be shown around. It looks nice.
>
> Here's a quick explanation for those not familiar with them.
> Sake is essentially Make for Smalltalk, allowing you to define tasks
> that can depend on other tasks.
> Bob is a build tool, which handles all the actual building using Sake
> tasks to define what to do.
>
> With Bob+Sake, you can define a build to:
> 1. Start with a defined image.
> 2. Load a set of packages into that image (either specific versions or
> the latest ones).
> 3. Apply specific fixes from the bug tracker.
> 4. Run tests.
> 5. Save the new image and export all the new package versions to a new
> folder.
>
> You can define tasks to apply features to an image such as closures or
> perform updates between versions or even update applications.
>
> For example, you can define tasks to do the following sort of things
> Pharo1.0beta -> Pharo1.0final
> Pharo1.0beta -> Pharo-latest.
> Squeak 3.10.2 image -> 3.10.2+closures.
> Squeak 3.8 image -> 3.8+closures.
> Seaside 2.8 -> 2.9.
> Pharo-latest -> Pharo-latest + Seaside-latest + your own favourite  
> packages.
>
> Once defined, these will allow anyone to repeatably and reliably  
> produce
> an updated image+packages without changing the original image. You can
> then do things like upgrade a production image based on 1.0beta to
> 1.0final just by using the same task but telling it to start with your
> production image instead of the 1.0beta distribution image. Since it
> produces a new image you don't risk clobbering your original.
>
> You should also be able to replace the update stream with distributing
> build definitions for Bob.
>
> I believe one of the key points to this setup is that you don't need  
> to
> work on the image as a single blob any more, you only work on the
> packages and use Bob to handle the messy image building stuff. That  
> does
> depend on the image being sectioned into packages of course.
>
> If I've had any misunderstandings here I hope Keith will correct me  
> but
> the system looks awesome :)
>
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


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