What is the actual way of managing code in Pharo

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

What is the actual way of managing code in Pharo

Ichiseki
Hi there,
I am trying the new Pharo 7 and a very elemental question arose.
What I should use to manage my code?

Monticello
Metacello
Iceberg

It seems I am quite confused regarding the role of each of these tools.

Documentation, I am afraid, does not apply to Pharo 7.

The chapters covering Monticello and Metacello in Deep in to Pharo, are
still relevant in Pharo 7?
Please I need profound and detailed help on this.
Thanks so much
best
Ichi




--
Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html

Reply | Threaded
Open this post in threaded view
|

Re: What is the actual way of managing code in Pharo

Sean P. DeNigris
Administrator
Monticello - packages code
Metacello - dependency management between packages
Iceberg - GUI for loading code via git

Currently, the cutting edge is to use Iceberg to load Metacello projects
which load Monticello packages, although there are other options (e.g.
old-school MCZ repos instead of git)


Ichiseki wrote
> The chapters covering Monticello and Metacello in Deep in to Pharo, are
> still relevant in Pharo 7?

Yes, but... Configurations are for applying Metacello to MCZ repos. These
are replaced by Baselines for git. The API is very similar, but Config
#baseline *methods* are reified into Baseline *objects*



-----
Cheers,
Sean
--
Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html

Cheers,
Sean
Reply | Threaded
Open this post in threaded view
|

Re: What is the actual way of managing code in Pharo

Ichiseki
Sean,
Thank you very much for your prompt response.
Do you know, or have a reference to, some documentation on Iceberg?
Pharo is evolving really fast, that is a good thing.
But it seems that the community is formed, largely, by developers of the
Pharo ecosystem and not actual plain vanilla users.
I am not saying that as criticism or in any chance, trying to smear the work
of the community.
What I am trying to say is that I found that the whole system is become
extremely complex for a non-core developer.
I am trying to jump from pharo 5 to 7 and believe me, it is getting really
hard to.
thanks so much again
best
ichi




--
Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html

Reply | Threaded
Open this post in threaded view
|

Re: What is the actual way of managing code in Pharo

Ben Coman
In reply to this post by Ichiseki


On Sat, 1 Dec 2018 at 09:05, Ichiseki <[hidden email]> wrote:
Hi there,
I am trying the new Pharo 7 and a very elemental question arose.
What I should use to manage my code?

Monticello
Metacello
Iceberg 
It seems I am quite confused regarding the role of each of these tools.


Monticello is a "package manager" that defines which package that classes below to.
One way to consider it, is that it consists of three main parts.  
1. An internal representation - all the "MC" classes that make up its in-Image representation.
2. An external representation - a number of different repo systems, traditionally MCZ on a http server, but also disk-based MCZ files, but also disk-based Filetree files and recently git based repos.  Use Spotter to search for "MC' the drill in and search for "Repo"
3. A tool for managing the link the previous two - showing what packages are available in repos, their commit messages, which packages are loaded and their ancestry.

Iceberg is a tool that replaces part 3 of Monticello when working with Git repos.
IIUC, Part 1 remains very much operational and Iceberg makes use of it.
Sorry I'm not clear on how Iceberg overlaps Part 2.  

Metacello is a package "dependency manager".
It defines which packages depends on which packages.  
Before git, it also had to manage its own versioning and both these were defined together in a ConfigurationOfxxxxx.
But with git branching and tagging, storing a ConfigurationOfxxxxx means its versioning info is at best redundant, and at worst confusing and contradictory.
Like the saying... "man with one watch knows the time, man with two watches is never sure." 
So the ConfigurationOfxxxx was trimmed down to a BaselineOfxxxxx.

Now I haven't played with BaselineOf's yet myself, but my understanding is that 
in summary, in Pharo 7 you should use a git repo with Iceberg, with BaselineOfxxxx's stored in that git repo.
ConfigurationOf's may still have some role in linking to older Monticello repos, but sorry I'm not sure on that.

cheers -ben






 
Documentation, I am afraid, does not apply to Pharo 7.

The chapters covering Monticello and Metacello in Deep in to Pharo, are
still relevant in Pharo 7?
Please I need profound and detailed help on this.
Thanks so much
best
Ichi




--
Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html

Reply | Threaded
Open this post in threaded view
|

Re: What is the actual way of managing code in Pharo

Vitor Medina Cruz

Livre de vírus. www.avg.com.

On Sat, Dec 1, 2018 at 11:20 AM Ben Coman <[hidden email]> wrote:


On Sat, 1 Dec 2018 at 09:05, Ichiseki <[hidden email]> wrote:
Hi there,
I am trying the new Pharo 7 and a very elemental question arose.
What I should use to manage my code?

Monticello
Metacello
Iceberg 
It seems I am quite confused regarding the role of each of these tools.


Monticello is a "package manager" that defines which package that classes below to.
One way to consider it, is that it consists of three main parts.  
1. An internal representation - all the "MC" classes that make up its in-Image representation.
2. An external representation - a number of different repo systems, traditionally MCZ on a http server, but also disk-based MCZ files, but also disk-based Filetree files and recently git based repos.  Use Spotter to search for "MC' the drill in and search for "Repo"
3. A tool for managing the link the previous two - showing what packages are available in repos, their commit messages, which packages are loaded and their ancestry.

Iceberg is a tool that replaces part 3 of Monticello when working with Git repos.
IIUC, Part 1 remains very much operational and Iceberg makes use of it.
Sorry I'm not clear on how Iceberg overlaps Part 2.  

Metacello is a package "dependency manager".
It defines which packages depends on which packages.  
Before git, it also had to manage its own versioning and both these were defined together in a ConfigurationOfxxxxx.
But with git branching and tagging, storing a ConfigurationOfxxxxx means its versioning info is at best redundant, and at worst confusing and contradictory.
Like the saying... "man with one watch knows the time, man with two watches is never sure." 
So the ConfigurationOfxxxx was trimmed down to a BaselineOfxxxxx.

Now I haven't played with BaselineOf's yet myself, but my understanding is that 
in summary, in Pharo 7 you should use a git repo with Iceberg, with BaselineOfxxxx's stored in that git repo.
ConfigurationOf's may still have some role in linking to older Monticello repos, but sorry I'm not sure on that.

cheers -ben






 
Documentation, I am afraid, does not apply to Pharo 7.

The chapters covering Monticello and Metacello in Deep in to Pharo, are
still relevant in Pharo 7?
Please I need profound and detailed help on this.
Thanks so much
best
Ichi




--
Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html