Evaluation of Pharo for Commercial Project

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

Evaluation of Pharo for Commercial Project

Torsten Bergmann
>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
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project