>We are used to VisualAge and VisualWorks, which clearly shows the >structure 
>of packages in the browser

Do you know O2 browser for Pharo? It's an additional browser that
shows the packages similar to VW. See [1] and ask on the pharo list 
to get the right version for your image. 

>We are uncertain how packages are made and how they show up in Monticello.

Monticello is simple - an MCZ is just a ZIP including the code.
Monticello (ab)uses class/method categories to find out which package 
the code belongs to.

Packaging is simple: in short if you create a package "MyApp" in 
Monticello any class that is in a class category that starts 
with "MyApp" will be in this package. 

Example: a) class "MyClass" in class category "MyApp-Core" and 
         b) class "MyModelClass" in class category "MyApp-Core-Model" and 
         c) class "MyTestCase" in class category "MyApp-Tests" 

1. When you create a Monticello package (in the Monticello browser)
   called "MyApp" automatically all three classes (core and tests) are
   then into this simple package (click on "Browse" to verify)

2. If you want core and tests in separate packages you create 
   two packages "MyApp-Core" (automatically including a and b) 
   and "MyApp-Tests" with c.

Method extensions:
If you put a method in a category with a leading star and your
package name it gets included too.

So if you put a method #foo on String into the method category 
"*myapp-core" it is a method extension on String packaged in "MyApp-Core"
package.

If you have well named packages this works good and even works in the 
large.

Typically packages are stored in repositories (www.squeaksource.com repo
server, local (shared) directories, FTP, ...)

Read the http://pharobyexample.org/ book to get more info on Monticello.
Also check out http://pharocasts.blogspot.com/

> Since we are unable to organize our code in packages, controlling and
> verifying dependencies between them is hard.

This is adressed using METACELLO (which manages Monticello packages)
- think of Monticello to provide packages and Metacello as configurations
to manage which package (version) depends on which other package (version)

You just describe baselines (structure and dependencies) and versions that 
fit together in a class/package called "ConfigurationOfMyApp".


See [2] and [3] and the ProfStef teacher workspace that comes with 
Pharo to learn more. If stuck just ask.

Namespace support and better Breakpoint support will (hopefully)
adressed in the near future. Also better packaging.

Bye
T.


[1] 
http://lists.gforge.inria.fr/pipermail/pharo-project/2010-January/020475.html
[2] http://code.google.com/p/metacello/
[3] https://gforge.inria.fr/frs/download.php/27018/Monticello.pdf

-- 
GMX DSL: Internet-, Telefon- und Handy-Flat ab 19,99 EUR/mtl.  
Bis zu 150 EUR Startguthaben inklusive! http://portal.gmx.net/de/go/dsl

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

Reply via email to