PharoMinimal ?

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

PharoMinimal ?

Sven Van Caekenberghe-2
Hi,

What is the story around PharoMinimal and related images ?

Is there a writeup somewhere with instructions ?

I see that we get **FANTASTIC** startup speed with it:

$ cat /etc/issue
Ubuntu 16.04.3 LTS

$ ./pharo --version
5.0-201708271955  Sun Aug 27 20:09:20 UTC 2017 gcc 4.6.3 [Production Spur VM]
CoInterpreter VMMaker.oscog-eem.2265 uuid: 76b62109-629a-4c39-9641-67b53321df9a Aug 27 2017
StackToRegisterMappingCogit VMMaker.oscog-eem.2262 uuid: 8b531242-de02-48aa-b418-8d2dde0bec6c Aug 27 2017
VM: 201708271955 https://github.com/OpenSmalltalk/opensmalltalk-vm.git $ Date: Sun Aug 27 21:55:26 2017 +0200 $
Plugins: 201708271955 https://github.com/OpenSmalltalk/opensmalltalk-vm.git $
Linux testing-gce-ebf45dd8-6a4c-43a5-abd0-e5d8673d05a4 3.13.0-115-generic #162~precise1-Ubuntu SMP Fri Mar 24 16:47:06 UTC 2017 i686 i686 i386 GNU/Linux
plugin path: /home/audio359/pharo7/pharo-vm/lib/pharo/5.0-201708271955 [default: /home/audio359/pharo7/pharo-vm/lib/pharo/5.0-201708271955/]

$ curl get.pharo.org/70-minimal | bash
...

$ ./pharo Pharo.image printVersion
[version] 'Pharo7.0' 'Pharo-7.0+alpha.build.172.sha.d13eed2f80fe19f29fd85ede8c4809d6a6986d4f (32 Bit)'

$ time ./pharo Pharo.image eval '5 factorial'
120
real 0m0.083s
user 0m0.034s
sys 0m0.042s

That is less than 1/10 of a second on a simple server ! Wow.

Loading new code in that image seem hard though.

I see that in http://files.pharo.org/image/70/ there are Pharomonticello & Pharometacello variants.

Any pointers on usage/meaning ?

Thx,

Sven
Reply | Threaded
Open this post in threaded view
|

Re: PharoMinimal ?

Stephane Ducasse-3
I will let guille and pavel reply because they know.
Sven guille and/or Pavel sent a mail a while ago explaining all the
different stages.

What I want is that we continue shrinking the core and get a modular system.
We are getting there for real. ;)

Stef



On Sat, Oct 7, 2017 at 4:18 PM, Sven Van Caekenberghe <[hidden email]> wrote:

> Hi,
>
> What is the story around PharoMinimal and related images ?
>
> Is there a writeup somewhere with instructions ?
>
> I see that we get **FANTASTIC** startup speed with it:
>
> $ cat /etc/issue
> Ubuntu 16.04.3 LTS
>
> $ ./pharo --version
> 5.0-201708271955  Sun Aug 27 20:09:20 UTC 2017 gcc 4.6.3 [Production Spur VM]
> CoInterpreter VMMaker.oscog-eem.2265 uuid: 76b62109-629a-4c39-9641-67b53321df9a Aug 27 2017
> StackToRegisterMappingCogit VMMaker.oscog-eem.2262 uuid: 8b531242-de02-48aa-b418-8d2dde0bec6c Aug 27 2017
> VM: 201708271955 https://github.com/OpenSmalltalk/opensmalltalk-vm.git $ Date: Sun Aug 27 21:55:26 2017 +0200 $
> Plugins: 201708271955 https://github.com/OpenSmalltalk/opensmalltalk-vm.git $
> Linux testing-gce-ebf45dd8-6a4c-43a5-abd0-e5d8673d05a4 3.13.0-115-generic #162~precise1-Ubuntu SMP Fri Mar 24 16:47:06 UTC 2017 i686 i686 i386 GNU/Linux
> plugin path: /home/audio359/pharo7/pharo-vm/lib/pharo/5.0-201708271955 [default: /home/audio359/pharo7/pharo-vm/lib/pharo/5.0-201708271955/]
>
> $ curl get.pharo.org/70-minimal | bash
> ...
>
> $ ./pharo Pharo.image printVersion
> [version] 'Pharo7.0' 'Pharo-7.0+alpha.build.172.sha.d13eed2f80fe19f29fd85ede8c4809d6a6986d4f (32 Bit)'
>
> $ time ./pharo Pharo.image eval '5 factorial'
> 120
> real    0m0.083s
> user    0m0.034s
> sys     0m0.042s
>
> That is less than 1/10 of a second on a simple server ! Wow.
>
> Loading new code in that image seem hard though.
>
> I see that in http://files.pharo.org/image/70/ there are Pharomonticello & Pharometacello variants.
>
> Any pointers on usage/meaning ?
>
> Thx,
>
> Sven

Reply | Threaded
Open this post in threaded view
|

Re: PharoMinimal ?

Pavel Krivanek-3
In reply to this post by Sven Van Caekenberghe-2
Hi Sven,

2017-10-07 16:18 GMT+02:00 Sven Van Caekenberghe <[hidden email]>:
Hi,

What is the story around PharoMinimal and related images ?

Is there a writeup somewhere with instructions ?

Right now the minimal (Metacello) image based on Pharo 7 is used only as intermediate step in building of the full Pharo and the only real (successful) attempt to use it for something else is PharoLambda (https://gitlab.com/macta/PharoLambda).

In general it can be used for building of own (server) applications. E.g. this way you can install and run Teapot on it:

./pharo Pharo7.0-metacello-32bit-d13eed2.image config http://smalltalkhub.com/mc/zeroflag/Teapot/main ConfigurationOfTeapot --install=stable
./pharo Pharo7.0-metacello-32bit-d13eed2.image eval --no-quit "Teapot on GET: '/welcome' -> 'Hello World'; start."

You can load baselines from the Git repositories too but we currently do not have any command line handler for it so you need to do it using "eval" command or *.st flile. Something like this:

Metacello new
baseline: 'Seaside3';
repository: 'github://SeasideSt/Seaside:master/repository';
load

To make it more usable we probably should extend it with SUnit and Fuel. If you want to extend it with some packages from vanilla Pharo, you should load them using FileTree from your local Pharo repository clone.

Gofer it
url: 'filetree:///path-to-my-pharo-repository-clone/pharo/src';
package: 'Multilingual-OtherLanguages';
package: 'Multilingual-TextConverterOtherLanguages';
load.

It still needs some care. E.g. some classes from Zinc are not properly initialized (I know about DigitalSignatureAlgorithm MD5NonPrimitive RxMatcher RxParser RxsPredicate SHA1 ZnByteEncoder ZnConstants ZnMimeType ZnNetworkingUtils ZnServer ZnSingleThreadedServer TextConstants TextAction TextStyle).

I tried to load Seaside into it today (from the example above) and it failed (some strange error probalby related to Unicode processing). But we will fix it. If you will tell me what exactly you need we can make it work together as in case of PharoLambda.

 

I see that we get **FANTASTIC** startup speed with it:

$ cat /etc/issue
Ubuntu 16.04.3 LTS

$ ./pharo --version
5.0-201708271955  Sun Aug 27 20:09:20 UTC 2017 gcc 4.6.3 [Production Spur VM]
CoInterpreter VMMaker.oscog-eem.2265 uuid: 76b62109-629a-4c39-9641-67b53321df9a Aug 27 2017
StackToRegisterMappingCogit VMMaker.oscog-eem.2262 uuid: 8b531242-de02-48aa-b418-8d2dde0bec6c Aug 27 2017
VM: 201708271955 https://github.com/OpenSmalltalk/opensmalltalk-vm.git $ Date: Sun Aug 27 21:55:26 2017 +0200 $
Plugins: 201708271955 https://github.com/OpenSmalltalk/opensmalltalk-vm.git $
Linux testing-gce-ebf45dd8-6a4c-43a5-abd0-e5d8673d05a4 3.13.0-115-generic #162~precise1-Ubuntu SMP Fri Mar 24 16:47:06 UTC 2017 i686 i686 i386 GNU/Linux
plugin path: /home/audio359/pharo7/pharo-vm/lib/pharo/5.0-201708271955 [default: /home/audio359/pharo7/pharo-vm/lib/pharo/5.0-201708271955/]

$ curl get.pharo.org/70-minimal | bash
...

$ ./pharo Pharo.image printVersion
[version] 'Pharo7.0' 'Pharo-7.0+alpha.build.172.sha.d13eed2f80fe19f29fd85ede8c4809d6a6986d4f (32 Bit)'

$ time ./pharo Pharo.image eval '5 factorial'
120
real    0m0.083s
user    0m0.034s
sys     0m0.042s

That is less than 1/10 of a second on a simple server ! Wow.

Loading new code in that image seem hard though.

I see that in http://files.pharo.org/image/70/ there are Pharomonticello & Pharometacello variants.

Any pointers on usage/meaning ?


Monticello is bootstrapped Pharo image with Monticello loaded. This image then loads Metacello and the generated image is the image that we call "minimal". It is minimal in sense minimal for common usage.

During Pharo building process we generate:
- bootstrapped image
- image with Opal that is loaded as binary packages using Hermes
- Monticello with only local repositories support
- Monticello with network and remote repositories support
- Metacello
- full Pharo IDE (which is loaded as sequence of several standalone baselines)

Cheers,
-- Pavel

 
Thx,

Sven

Reply | Threaded
Open this post in threaded view
|

Re: PharoMinimal ?

Thierry Goubier
Hi Pavel,

I'd probably see some interest in building the GitFileTree-MergeDriver
with it. It only requires Monticello.

Thierry

Le 08/10/2017 à 12:41, Pavel Krivanek a écrit :

> Hi Sven,
>
> 2017-10-07 16:18 GMT+02:00 Sven Van Caekenberghe <[hidden email]
> <mailto:[hidden email]>>:
>
>     Hi,
>
>     What is the story around PharoMinimal and related images ?
>
>     Is there a writeup somewhere with instructions ?
>
>
> Right now the minimal (Metacello) image based on Pharo 7 is used only as
> intermediate step in building of the full Pharo and the only real
> (successful) attempt to use it for something else is PharoLambda
> (https://gitlab.com/macta/PharoLambda).
>
> In general it can be used for building of own (server) applications.
> E.g. this way you can install and run Teapot on it:
>
> ./pharo Pharo7.0-metacello-32bit-d13eed2.image config
> http://smalltalkhub.com/mc/zeroflag/Teapot/main ConfigurationOfTeapot
> --install=stable
> ./pharo Pharo7.0-metacello-32bit-d13eed2.image eval --no-quit "Teapot on
> GET: '/welcome' -> 'Hello World'; start."
>
> You can load baselines from the Git repositories too but we currently do
> not have any command line handler for it so you need to do it using
> "eval" command or *.st flile. Something like this:
>
> Metacello new
> baseline: 'Seaside3';
> repository: 'github://SeasideSt/Seaside:master/repository';
> load
>
> To make it more usable we probably should extend it with SUnit and Fuel.
> If you want to extend it with some packages from vanilla Pharo, you
> should load them using FileTree from your local Pharo repository clone.
>
> Gofer it
> url: 'filetree:///path-to-my-pharo-repository-clone/pharo/src';
> package: 'Multilingual-OtherLanguages';
> package: 'Multilingual-TextConverterOtherLanguages';
> load.
>
> It still needs some care. E.g. some classes from Zinc are not properly
> initialized (I know about DigitalSignatureAlgorithm MD5NonPrimitive
> RxMatcher RxParser RxsPredicate SHA1 ZnByteEncoder ZnConstants
> ZnMimeType ZnNetworkingUtils ZnServer ZnSingleThreadedServer
> TextConstants TextAction TextStyle).
>
> I tried to load Seaside into it today (from the example above) and it
> failed (some strange error probalby related to Unicode processing). But
> we will fix it. If you will tell me what exactly you need we can make it
> work together as in case of PharoLambda.
>
>
>     I see that we get **FANTASTIC** startup speed with it:
>
>     $ cat /etc/issue
>     Ubuntu 16.04.3 LTS
>
>     $ ./pharo --version
>     5.0-201708271955  Sun Aug 27 20:09:20 UTC 2017 gcc 4.6.3 [Production
>     Spur VM]
>     CoInterpreter VMMaker.oscog-eem.2265 uuid:
>     76b62109-629a-4c39-9641-67b53321df9a Aug 27 2017
>     StackToRegisterMappingCogit VMMaker.oscog-eem.2262 uuid:
>     8b531242-de02-48aa-b418-8d2dde0bec6c Aug 27 2017
>     VM: 201708271955
>     https://github.com/OpenSmalltalk/opensmalltalk-vm.git
>     <https://github.com/OpenSmalltalk/opensmalltalk-vm.git> $ Date: Sun
>     Aug 27 21:55:26 2017 +0200 $
>     Plugins: 201708271955
>     https://github.com/OpenSmalltalk/opensmalltalk-vm.git
>     <https://github.com/OpenSmalltalk/opensmalltalk-vm.git> $
>     Linux testing-gce-ebf45dd8-6a4c-43a5-abd0-e5d8673d05a4
>     3.13.0-115-generic #162~precise1-Ubuntu SMP Fri Mar 24 16:47:06 UTC
>     2017 i686 i686 i386 GNU/Linux
>     plugin path:
>     /home/audio359/pharo7/pharo-vm/lib/pharo/5.0-201708271955 [default:
>     /home/audio359/pharo7/pharo-vm/lib/pharo/5.0-201708271955/]
>
>     $ curl get.pharo.org/70-minimal <http://get.pharo.org/70-minimal> | bash
>     ...
>
>     $ ./pharo Pharo.image printVersion
>     [version] 'Pharo7.0'
>     'Pharo-7.0+alpha.build.172.sha.d13eed2f80fe19f29fd85ede8c4809d6a6986d4f
>     (32 Bit)'
>
>     $ time ./pharo Pharo.image eval '5 factorial'
>     120
>     real    0m0.083s
>     user    0m0.034s
>     sys     0m0.042s
>
>     That is less than 1/10 of a second on a simple server ! Wow.
>
>     Loading new code in that image seem hard though.
>
>     I see that in http://files.pharo.org/image/70/
>     <http://files.pharo.org/image/70/> there are Pharomonticello &
>     Pharometacello variants.
>
>     Any pointers on usage/meaning ?
>
>
> Monticello is bootstrapped Pharo image with Monticello loaded. This
> image then loads Metacello and the generated image is the image that we
> call "minimal". It is minimal in sense minimal for common usage.
>
> During Pharo building process we generate:
> - bootstrapped image
> - image with Opal that is loaded as binary packages using Hermes
> - Monticello with only local repositories support
> - Monticello with network and remote repositories support
> - Metacello
> - full Pharo IDE (which is loaded as sequence of several standalone
> baselines)
>
> Cheers,
> -- Pavel
>
>     Thx,
>
>     Sven
>
>


Reply | Threaded
Open this post in threaded view
|

Re: PharoMinimal ?

Guillermo Polito
For a really high-level explanation, check the slides in here:


Now, as Pavel says, minimal is an image with metacello (+ its dependencies of course).

This means that you could try to install packages on top of it using baselines.

Still, lot of work to do in that front, mainly
 - modularisation of the minimal-image packages, so we can build even smaller images
 - modularisation and baselines for all full-image packages, so we can build incremental images on a per-user flavour

This means of course
 - cleaning/sorting initializations
 - refactoring packages
 - Uncovering hidden and runtime dependencies
 - making some analyses on how space is taken (most is methods, tons in kernel and collections ;))

What is not so clear yet from the top of my head: if we distribute minimal images, how can we distribute the pharo libraries that you can load on top of them easily. So far, people using pharo minimal are aware that they are using an alpha version. That means that if they want to load on top of it, let's say, Morphic, they will need to do something like

Metacello new
baseline: 'Morphic';
repository: 'github://pharo-project/pharo:development/src';
load

But that means that we'll be loading the so called 'bleeding-edge' of it all the time, and that version may not correspond with the image they are using.

This makes me think we have at some point to revisit the release process so we can have releases internal of libraries such as morphic, athens, fuel, etc, more often.

On Sun, Oct 8, 2017 at 4:34 PM, Thierry Goubier <[hidden email]> wrote:
Hi Pavel,

I'd probably see some interest in building the GitFileTree-MergeDriver with it. It only requires Monticello.

Thierry

Le 08/10/2017 à 12:41, Pavel Krivanek a écrit :
Hi Sven,

2017-10-07 16:18 GMT+02:00 Sven Van Caekenberghe <[hidden email] <mailto:[hidden email]>>:


    Hi,

    What is the story around PharoMinimal and related images ?

    Is there a writeup somewhere with instructions ?


Right now the minimal (Metacello) image based on Pharo 7 is used only as intermediate step in building of the full Pharo and the only real (successful) attempt to use it for something else is PharoLambda (https://gitlab.com/macta/PharoLambda).

In general it can be used for building of own (server) applications. E.g. this way you can install and run Teapot on it:

./pharo Pharo7.0-metacello-32bit-d13eed2.image config http://smalltalkhub.com/mc/zeroflag/Teapot/main ConfigurationOfTeapot --install=stable
./pharo Pharo7.0-metacello-32bit-d13eed2.image eval --no-quit "Teapot on GET: '/welcome' -> 'Hello World'; start."

You can load baselines from the Git repositories too but we currently do not have any command line handler for it so you need to do it using "eval" command or *.st flile. Something like this:

Metacello new
baseline: 'Seaside3';
repository: 'github://SeasideSt/Seaside:master/repository';
load

To make it more usable we probably should extend it with SUnit and Fuel. If you want to extend it with some packages from vanilla Pharo, you should load them using FileTree from your local Pharo repository clone.

Gofer it
url: 'filetree:///path-to-my-pharo-repository-clone/pharo/src';
package: 'Multilingual-OtherLanguages';
package: 'Multilingual-TextConverterOtherLanguages';
load.

It still needs some care. E.g. some classes from Zinc are not properly initialized (I know about DigitalSignatureAlgorithm MD5NonPrimitive RxMatcher RxParser RxsPredicate SHA1 ZnByteEncoder ZnConstants ZnMimeType ZnNetworkingUtils ZnServer ZnSingleThreadedServer TextConstants TextAction TextStyle).

I tried to load Seaside into it today (from the example above) and it failed (some strange error probalby related to Unicode processing). But we will fix it. If you will tell me what exactly you need we can make it work together as in case of PharoLambda.


    I see that we get **FANTASTIC** startup speed with it:

    $ cat /etc/issue
    Ubuntu 16.04.3 LTS

    $ ./pharo --version
    5.0-201708271955  Sun Aug 27 20:09:20 UTC 2017 gcc 4.6.3 [Production
    Spur VM]
    CoInterpreter VMMaker.oscog-eem.2265 uuid:
    76b62109-629a-4c39-9641-67b53321df9a Aug 27 2017
    StackToRegisterMappingCogit VMMaker.oscog-eem.2262 uuid:
    8b531242-de02-48aa-b418-8d2dde0bec6c Aug 27 2017
    VM: 201708271955
    https://github.com/OpenSmalltalk/opensmalltalk-vm.git
    <https://github.com/OpenSmalltalk/opensmalltalk-vm.git> $ Date: Sun
    Aug 27 21:55:26 2017 +0200 $
    Plugins: 201708271955
    https://github.com/OpenSmalltalk/opensmalltalk-vm.git
    <https://github.com/OpenSmalltalk/opensmalltalk-vm.git> $
    Linux testing-gce-ebf45dd8-6a4c-43a5-abd0-e5d8673d05a4
    3.13.0-115-generic #162~precise1-Ubuntu SMP Fri Mar 24 16:47:06 UTC
    2017 i686 i686 i386 GNU/Linux
    plugin path:
    /home/audio359/pharo7/pharo-vm/lib/pharo/5.0-201708271955 [default:
    /home/audio359/pharo7/pharo-vm/lib/pharo/5.0-201708271955/]

    $ curl get.pharo.org/70-minimal <http://get.pharo.org/70-minimal> | bash

    ...

    $ ./pharo Pharo.image printVersion
    [version] 'Pharo7.0'
    'Pharo-7.0+alpha.build.172.sha.d13eed2f80fe19f29fd85ede8c4809d6a6986d4f
    (32 Bit)'

    $ time ./pharo Pharo.image eval '5 factorial'
    120
    real    0m0.083s
    user    0m0.034s
    sys     0m0.042s

    That is less than 1/10 of a second on a simple server ! Wow.

    Loading new code in that image seem hard though.

    I see that in http://files.pharo.org/image/70/
    <http://files.pharo.org/image/70/> there are Pharomonticello &
    Pharometacello variants.

    Any pointers on usage/meaning ?


Monticello is bootstrapped Pharo image with Monticello loaded. This image then loads Metacello and the generated image is the image that we call "minimal". It is minimal in sense minimal for common usage.

During Pharo building process we generate:
- bootstrapped image
- image with Opal that is loaded as binary packages using Hermes
- Monticello with only local repositories support
- Monticello with network and remote repositories support
- Metacello
- full Pharo IDE (which is loaded as sequence of several standalone baselines)

Cheers,
-- Pavel

    Thx,

    Sven







--

   

Guille Polito

Research Engineer

Centre de Recherche en Informatique, Signal et Automatique de Lille

CRIStAL - UMR 9189

French National Center for Scientific Research - http://www.cnrs.fr


Web: http://guillep.github.io

Phone: +33 06 52 70 66 13

Reply | Threaded
Open this post in threaded view
|

Re: PharoMinimal ?

Thierry Goubier
Hi Guille,

Le 08/10/2017 à 18:24, Guillermo Polito a écrit :
> For a really high-level explanation, check the slides in here:
>
> https://www.slideshare.net/GuillePolito1/understanding-the-pharo-dev-process-79632181

Thanks for the pointers. I tried to do something in the Pharo4 days (I
still have probably somewhere a start of baselines and package to add to
a minimal pharo4 image, then the external project integration changed
and this approach would have failed...)

> Now, as Pavel says, minimal is an image with metacello (+ its
> dependencies of course).
>
> This means that you could try to install packages on top of it using
> baselines.

Cool.

> Still, lot of work to do in that front, mainly
>   - modularisation of the minimal-image packages, so we can build even
> smaller images
>   - modularisation and baselines for all full-image packages, so we can
> build incremental images on a per-user flavour

This is really interesting.

> This means of course
>   - cleaning/sorting initializations
>   - refactoring packages
>   - Uncovering hidden and runtime dependencies
>   - making some analyses on how space is taken (most is methods, tons in
> kernel and collections ;))
>
> What is not so clear yet from the top of my head: if we distribute
> minimal images, how can we distribute the pharo libraries that you can
> load on top of them easily. So far, people using pharo minimal are aware
> that they are using an alpha version. That means that if they want to
> load on top of it, let's say, Morphic, they will need to do something like
>
> Metacello new
> baseline: 'Morphic';
> repository: 'github://pharo-project/pharo:development/src';
> load
>
> But that means that we'll be loading the so called 'bleeding-edge' of it
> all the time, and that version may not correspond with the image they
> are using.
>
> This makes me think we have at some point to revisit the release process
> so we can have releases internal of libraries such as morphic, athens,
> fuel, etc, more often.

I think I can suggest a solution. When building an image on the command
line (as us Makefile users are keen to do), it is easy to customize the
additional packages/baselines you load based on some internal state of
the image being built.

So, for example, if you tag the minimal image when built with, say
v70123, then one can write on the command line:

pharo/pharo pharo/Pharo.image --no-default-preferences eval --save
Metacello new baseline: \'Morphic\'\; repository:
\'github://pharo-project/pharo:\'\, SystemVersion current buildNumber
printString\, \'/src\'\; load

Et hop, voilà: you get the right Morphic for the minimal image with a
minimum amount of distortion.

If not, then it could be enough to have the short commit ID of the pharo
repository when the minimal image was built: it is enough to get a
github:// url to work.

Well, if you keep naming your images like that:

Pharo7.0-metacello-32bit-d13eed2.image

Then we could even do it this way in the image building makefile (and
you don't have anything to do)(*).

I'll have a try at it.

Thierry

(*) External projects would have to sort it out, still. But, IMHO, it is
a duty of an external project to be in sync if it wants to stay external...

> On Sun, Oct 8, 2017 at 4:34 PM, Thierry Goubier
> <[hidden email] <mailto:[hidden email]>> wrote:
>
>     Hi Pavel,
>
>     I'd probably see some interest in building the
>     GitFileTree-MergeDriver with it. It only requires Monticello.
>
>     Thierry
>
>     Le 08/10/2017 à 12:41, Pavel Krivanek a écrit :
>
>         Hi Sven,
>
>         2017-10-07 16:18 GMT+02:00 Sven Van Caekenberghe <[hidden email]
>         <mailto:[hidden email]> <mailto:[hidden email] <mailto:[hidden email]>>>:
>
>
>              Hi,
>
>              What is the story around PharoMinimal and related images ?
>
>              Is there a writeup somewhere with instructions ?
>
>
>         Right now the minimal (Metacello) image based on Pharo 7 is used
>         only as intermediate step in building of the full Pharo and the
>         only real (successful) attempt to use it for something else is
>         PharoLambda (https://gitlab.com/macta/PharoLambda
>         <https://gitlab.com/macta/PharoLambda>).
>
>         In general it can be used for building of own (server)
>         applications. E.g. this way you can install and run Teapot on it:
>
>         ./pharo Pharo7.0-metacello-32bit-d13eed2.image config
>         http://smalltalkhub.com/mc/zeroflag/Teapot/main
>         <http://smalltalkhub.com/mc/zeroflag/Teapot/main>
>         ConfigurationOfTeapot --install=stable
>         ./pharo Pharo7.0-metacello-32bit-d13eed2.image eval --no-quit
>         "Teapot on GET: '/welcome' -> 'Hello World'; start."
>
>         You can load baselines from the Git repositories too but we
>         currently do not have any command line handler for it so you
>         need to do it using "eval" command or *.st flile. Something like
>         this:
>
>         Metacello new
>         baseline: 'Seaside3';
>         repository: 'github://SeasideSt/Seaside:master/repository';
>         load
>
>         To make it more usable we probably should extend it with SUnit
>         and Fuel. If you want to extend it with some packages from
>         vanilla Pharo, you should load them using FileTree from your
>         local Pharo repository clone.
>
>         Gofer it
>         url: 'filetree:///path-to-my-pharo-repository-clone/pharo/src';
>         package: 'Multilingual-OtherLanguages';
>         package: 'Multilingual-TextConverterOtherLanguages';
>         load.
>
>         It still needs some care. E.g. some classes from Zinc are not
>         properly initialized (I know about DigitalSignatureAlgorithm
>         MD5NonPrimitive RxMatcher RxParser RxsPredicate SHA1
>         ZnByteEncoder ZnConstants ZnMimeType ZnNetworkingUtils ZnServer
>         ZnSingleThreadedServer TextConstants TextAction TextStyle).
>
>         I tried to load Seaside into it today (from the example above)
>         and it failed (some strange error probalby related to Unicode
>         processing). But we will fix it. If you will tell me what
>         exactly you need we can make it work together as in case of
>         PharoLambda.
>
>
>              I see that we get **FANTASTIC** startup speed with it:
>
>              $ cat /etc/issue
>              Ubuntu 16.04.3 LTS
>
>              $ ./pharo --version
>              5.0-201708271955  Sun Aug 27 20:09:20 UTC 2017 gcc 4.6.3
>         [Production
>              Spur VM]
>              CoInterpreter VMMaker.oscog-eem.2265 uuid:
>              76b62109-629a-4c39-9641-67b53321df9a Aug 27 2017
>              StackToRegisterMappingCogit VMMaker.oscog-eem.2262 uuid:
>              8b531242-de02-48aa-b418-8d2dde0bec6c Aug 27 2017
>              VM: 201708271955
>         https://github.com/OpenSmalltalk/opensmalltalk-vm.git
>         <https://github.com/OpenSmalltalk/opensmalltalk-vm.git>
>              <https://github.com/OpenSmalltalk/opensmalltalk-vm.git
>         <https://github.com/OpenSmalltalk/opensmalltalk-vm.git>> $ Date: Sun
>              Aug 27 21:55:26 2017 +0200 $
>              Plugins: 201708271955
>         https://github.com/OpenSmalltalk/opensmalltalk-vm.git
>         <https://github.com/OpenSmalltalk/opensmalltalk-vm.git>
>              <https://github.com/OpenSmalltalk/opensmalltalk-vm.git
>         <https://github.com/OpenSmalltalk/opensmalltalk-vm.git>> $
>              Linux testing-gce-ebf45dd8-6a4c-43a5-abd0-e5d8673d05a4
>              3.13.0-115-generic #162~precise1-Ubuntu SMP Fri Mar 24
>         16:47:06 UTC
>              2017 i686 i686 i386 GNU/Linux
>              plugin path:
>              /home/audio359/pharo7/pharo-vm/lib/pharo/5.0-201708271955
>         [default:
>              /home/audio359/pharo7/pharo-vm/lib/pharo/5.0-201708271955/]
>
>              $ curl get.pharo.org/70-minimal
>         <http://get.pharo.org/70-minimal>
>         <http://get.pharo.org/70-minimal
>         <http://get.pharo.org/70-minimal>> | bash
>
>              ...
>
>              $ ./pharo Pharo.image printVersion
>              [version] 'Pharo7.0'
>            
>         'Pharo-7.0+alpha.build.172.sha.d13eed2f80fe19f29fd85ede8c4809d6a6986d4f
>              (32 Bit)'
>
>              $ time ./pharo Pharo.image eval '5 factorial'
>              120
>              real    0m0.083s
>              user    0m0.034s
>              sys     0m0.042s
>
>              That is less than 1/10 of a second on a simple server ! Wow.
>
>              Loading new code in that image seem hard though.
>
>              I see that in http://files.pharo.org/image/70/
>         <http://files.pharo.org/image/70/>
>              <http://files.pharo.org/image/70/
>         <http://files.pharo.org/image/70/>> there are Pharomonticello &
>              Pharometacello variants.
>
>              Any pointers on usage/meaning ?
>
>
>         Monticello is bootstrapped Pharo image with Monticello loaded.
>         This image then loads Metacello and the generated image is the
>         image that we call "minimal". It is minimal in sense minimal for
>         common usage.
>
>         During Pharo building process we generate:
>         - bootstrapped image
>         - image with Opal that is loaded as binary packages using Hermes
>         - Monticello with only local repositories support
>         - Monticello with network and remote repositories support
>         - Metacello
>         - full Pharo IDE (which is loaded as sequence of several
>         standalone baselines)
>
>         Cheers,
>         -- Pavel
>
>              Thx,
>
>              Sven
>
>
>
>
>
>
>
> --
>
>
>
> Guille Polito
>
> Research Engineer
>
> Centre de Recherche en Informatique, Signal et Automatique de Lille
>
> CRIStAL - UMR 9189
>
> French National Center for Scientific Research - _http://www.cnrs.fr_
>
>
> *Web:* _http://guillep.github.io_
>
> *Phone: *+33 06 52 70 66 13
>


Reply | Threaded
Open this post in threaded view
|

Re: PharoMinimal ?

Guillermo Polito
That's still not enough ;)

That will work when the loaded package has no dependencies. Otherwise, imagine projects A and B, and A depending on B's release. every time you release B you need to release all dependencies...

And, if you use a tag or exact committish to get the Baseline you want to install, still that baseline needs to point to the exact tag/committish of it's dependencies.

Or! If you know the dependencies of your baseline you can explicitly use a Metacello's lock. I still believe this is an overkill and I'd like to simplify it, but that's what we have right now.

On Sun, Oct 8, 2017 at 6:47 PM, Thierry Goubier <[hidden email]> wrote:
Hi Guille,

Le 08/10/2017 à 18:24, Guillermo Polito a écrit :
For a really high-level explanation, check the slides in here:

https://www.slideshare.net/GuillePolito1/understanding-the-pharo-dev-process-79632181

Thanks for the pointers. I tried to do something in the Pharo4 days (I still have probably somewhere a start of baselines and package to add to a minimal pharo4 image, then the external project integration changed and this approach would have failed...)

Now, as Pavel says, minimal is an image with metacello (+ its dependencies of course).

This means that you could try to install packages on top of it using baselines.

Cool.

Still, lot of work to do in that front, mainly
  - modularisation of the minimal-image packages, so we can build even smaller images
  - modularisation and baselines for all full-image packages, so we can build incremental images on a per-user flavour

This is really interesting.

This means of course
  - cleaning/sorting initializations
  - refactoring packages
  - Uncovering hidden and runtime dependencies
  - making some analyses on how space is taken (most is methods, tons in kernel and collections ;))

What is not so clear yet from the top of my head: if we distribute minimal images, how can we distribute the pharo libraries that you can load on top of them easily. So far, people using pharo minimal are aware that they are using an alpha version. That means that if they want to load on top of it, let's say, Morphic, they will need to do something like

Metacello new
baseline: 'Morphic';
repository: 'github://pharo-project/pharo:development/src';
load

But that means that we'll be loading the so called 'bleeding-edge' of it all the time, and that version may not correspond with the image they are using.

This makes me think we have at some point to revisit the release process so we can have releases internal of libraries such as morphic, athens, fuel, etc, more often.

I think I can suggest a solution. When building an image on the command line (as us Makefile users are keen to do), it is easy to customize the additional packages/baselines you load based on some internal state of
the image being built.

So, for example, if you tag the minimal image when built with, say v70123, then one can write on the command line:

pharo/pharo pharo/Pharo.image --no-default-preferences eval --save Metacello new baseline: \'Morphic\'\; repository: \'github://pharo-project/pharo:\'\, SystemVersion current buildNumber printString\, \'/src\'\; load

Et hop, voilà: you get the right Morphic for the minimal image with a minimum amount of distortion.

If not, then it could be enough to have the short commit ID of the pharo repository when the minimal image was built: it is enough to get a github:// url to work.

Well, if you keep naming your images like that:

Pharo7.0-metacello-32bit-d13eed2.image

Then we could even do it this way in the image building makefile (and you don't have anything to do)(*).

I'll have a try at it.

Thierry

(*) External projects would have to sort it out, still. But, IMHO, it is a duty of an external project to be in sync if it wants to stay external...

On Sun, Oct 8, 2017 at 4:34 PM, Thierry Goubier <[hidden email] <mailto:[hidden email]>> wrote:

    Hi Pavel,

    I'd probably see some interest in building the
    GitFileTree-MergeDriver with it. It only requires Monticello.

    Thierry

    Le 08/10/2017 à 12:41, Pavel Krivanek a écrit :

        Hi Sven,

        2017-10-07 16:18 GMT+02:00 Sven Van Caekenberghe <[hidden email]
        <mailto:[hidden email]> <mailto:[hidden email] <mailto:[hidden email]>>>:


             Hi,

             What is the story around PharoMinimal and related images ?

             Is there a writeup somewhere with instructions ?


        Right now the minimal (Metacello) image based on Pharo 7 is used
        only as intermediate step in building of the full Pharo and the
        only real (successful) attempt to use it for something else is
        PharoLambda (https://gitlab.com/macta/PharoLambda
        <https://gitlab.com/macta/PharoLambda>).


        In general it can be used for building of own (server)
        applications. E.g. this way you can install and run Teapot on it:

        ./pharo Pharo7.0-metacello-32bit-d13eed2.image config
        http://smalltalkhub.com/mc/zeroflag/Teapot/main
        <http://smalltalkhub.com/mc/zeroflag/Teapot/main>
        ConfigurationOfTeapot --install=stable
        ./pharo Pharo7.0-metacello-32bit-d13eed2.image eval --no-quit
        "Teapot on GET: '/welcome' -> 'Hello World'; start."

        You can load baselines from the Git repositories too but we
        currently do not have any command line handler for it so you
        need to do it using "eval" command or *.st flile. Something like
        this:

        Metacello new
        baseline: 'Seaside3';
        repository: 'github://SeasideSt/Seaside:master/repository';
        load

        To make it more usable we probably should extend it with SUnit
        and Fuel. If you want to extend it with some packages from
        vanilla Pharo, you should load them using FileTree from your
        local Pharo repository clone.

        Gofer it
        url: 'filetree:///path-to-my-pharo-repository-clone/pharo/src';
        package: 'Multilingual-OtherLanguages';
        package: 'Multilingual-TextConverterOtherLanguages';
        load.

        It still needs some care. E.g. some classes from Zinc are not
        properly initialized (I know about DigitalSignatureAlgorithm
        MD5NonPrimitive RxMatcher RxParser RxsPredicate SHA1
        ZnByteEncoder ZnConstants ZnMimeType ZnNetworkingUtils ZnServer
        ZnSingleThreadedServer TextConstants TextAction TextStyle).

        I tried to load Seaside into it today (from the example above)
        and it failed (some strange error probalby related to Unicode
        processing). But we will fix it. If you will tell me what
        exactly you need we can make it work together as in case of
        PharoLambda.


             I see that we get **FANTASTIC** startup speed with it:

             $ cat /etc/issue
             Ubuntu 16.04.3 LTS

             $ ./pharo --version
             5.0-201708271955  Sun Aug 27 20:09:20 UTC 2017 gcc 4.6.3
        [Production
             Spur VM]
             CoInterpreter VMMaker.oscog-eem.2265 uuid:
             76b62109-629a-4c39-9641-67b53321df9a Aug 27 2017
             StackToRegisterMappingCogit VMMaker.oscog-eem.2262 uuid:
             8b531242-de02-48aa-b418-8d2dde0bec6c Aug 27 2017
             VM: 201708271955
        https://github.com/OpenSmalltalk/opensmalltalk-vm.git
        <https://github.com/OpenSmalltalk/opensmalltalk-vm.git>
             <https://github.com/OpenSmalltalk/opensmalltalk-vm.git
        <https://github.com/OpenSmalltalk/opensmalltalk-vm.git>> $ Date: Sun
             Aug 27 21:55:26 2017 +0200 $
             Plugins: 201708271955
        https://github.com/OpenSmalltalk/opensmalltalk-vm.git
        <https://github.com/OpenSmalltalk/opensmalltalk-vm.git>
             <https://github.com/OpenSmalltalk/opensmalltalk-vm.git
        <https://github.com/OpenSmalltalk/opensmalltalk-vm.git>> $
             Linux testing-gce-ebf45dd8-6a4c-43a5-abd0-e5d8673d05a4
             3.13.0-115-generic #162~precise1-Ubuntu SMP Fri Mar 24
        16:47:06 UTC
             2017 i686 i686 i386 GNU/Linux
             plugin path:
             /home/audio359/pharo7/pharo-vm/lib/pharo/5.0-201708271955
        [default:
             /home/audio359/pharo7/pharo-vm/lib/pharo/5.0-201708271955/]

             $ curl get.pharo.org/70-minimal
        <http://get.pharo.org/70-minimal>
        <http://get.pharo.org/70-minimal

        <http://get.pharo.org/70-minimal>> | bash

             ...

             $ ./pharo Pharo.image printVersion
             [version] 'Pharo7.0'
                    'Pharo-7.0+alpha.build.172.sha.d13eed2f80fe19f29fd85ede8c4809d6a6986d4f
             (32 Bit)'

             $ time ./pharo Pharo.image eval '5 factorial'
             120
             real    0m0.083s
             user    0m0.034s
             sys     0m0.042s

             That is less than 1/10 of a second on a simple server ! Wow.

             Loading new code in that image seem hard though.

             I see that in http://files.pharo.org/image/70/
        <http://files.pharo.org/image/70/>
             <http://files.pharo.org/image/70/
        <http://files.pharo.org/image/70/>> there are Pharomonticello &
             Pharometacello variants.

             Any pointers on usage/meaning ?


        Monticello is bootstrapped Pharo image with Monticello loaded.
        This image then loads Metacello and the generated image is the
        image that we call "minimal". It is minimal in sense minimal for
        common usage.

        During Pharo building process we generate:
        - bootstrapped image
        - image with Opal that is loaded as binary packages using Hermes
        - Monticello with only local repositories support
        - Monticello with network and remote repositories support
        - Metacello
        - full Pharo IDE (which is loaded as sequence of several
        standalone baselines)

        Cheers,
        -- Pavel

             Thx,

             Sven







--

       

Guille Polito

Research Engineer

Centre de Recherche en Informatique, Signal et Automatique de Lille

CRIStAL - UMR 9189

French National Center for Scientific Research - _http://www.cnrs.fr_


*Web:* _http://guillep.github.io_

*Phone: *<a href="tel:%2B33%2006%2052%2070%2066%2013" value="+33652706613" target="_blank">+33 06 52 70 66 13






--

   

Guille Polito

Research Engineer

Centre de Recherche en Informatique, Signal et Automatique de Lille

CRIStAL - UMR 9189

French National Center for Scientific Research - http://www.cnrs.fr


Web: http://guillep.github.io

Phone: +33 06 52 70 66 13

Reply | Threaded
Open this post in threaded view
|

Re: PharoMinimal ?

Sven Van Caekenberghe-2
In reply to this post by Pavel Krivanek-3
Hi Pavel,

Thanks a lot for the explanation. To summarise: 70-minimal is the one with monticello and metacello in it that can load code via the config handler.

I was confused, because that failed for me.

Now, first doing

$ ./pharo pharo-minimal.image eval 'ZnMimeType initialize'

fixed my loading problem. I also did the following because some of my project don't separate tests (I known ;-)

$ ./pharo pharo-minimal.image eval --save 'Object subclass: #TestCase'

With those fixes I was able to load different projects

$ ./pharo pharo-minimal config http://mc.stfx.eu/Neo ConfigurationOfZTimestamp --install=stable

$ ./pharo pharo-minimal config http://mc.stfx.eu/Neo ConfigurationOfNeoConsole --install=bleedingEdge

The image remains equally fast in startup

$ time ./pharo pharo-minimal.image eval ZTimestamp now
2017-10-08T16:55:00Z
real 0m0.062s
user 0m0.025s
sys 0m0.029s

And it works perfectly as a server, like

$ ./pharo pharo-minimal eval --no-quit 'NeoConsoleTelnetServer new start' &

$ telnet localhost 4999
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Neo Console Pharo-7.0+alpha.build.172.sha.d13eed2f80fe19f29fd85ede8c4809d6a6986d4f (32 Bit)
> get            
known metrics:
  system.status - Simple system status
  memory.total - Total allocated memory
  memory.free - Free memory
  memory.gc - Garbage collect, return free memory
  system.uptime - Image uptime human readeable
  system.uptimeseconds - Image uptime seconds
  system.date - Current date
  system.time - Current time
  system.timestamp - Current timestamp
  process.count - Current process count
  process.list - Current list of processes
  system.version - Image version info
  system.mcversions - Monticello packages version info
> get process.list
Delay Scheduling Process
Low Space Watcher
Idle Process
WeakArray Finalization Process
NeoConsoleTelnetServer port 4999
NeoConsoleTelnetServer port 4999 Connection Handler
> SessionManager default startupList collect: #handledId

#(#SmallInteger #Delay #ProcessorScheduler #OSPlatform #FileLocator #MCMethodDefinition #WeakArray #FileStream #MultiByteFileStream #EndianDetector #Symbol #LanguageEnvironment #Stdio #NonInteractiveTranscript #WeakFinalizationList #DiskStore #BasicCommandLineHandler #SourceFileArray #ASTCache #UUIDGenerator #InternetConfiguration #ZnLogEvent #ZnServer #Color #UIManagerSessionHandler #ZTimestamp)
>
Bye!
Connection closed by foreign host.

Image size remains ~11Mb.

Very nice !

About the class initialisations. Why were they not done already ? You seem to have a list of them, why not make sure they are executed when creating the image ? I guess I could rewrite some of my code to do lazy initialization class side but I should not have to do that, should I ?

Sven

> On 8 Oct 2017, at 12:41, Pavel Krivanek <[hidden email]> wrote:
>
> Hi Sven,
>
> 2017-10-07 16:18 GMT+02:00 Sven Van Caekenberghe <[hidden email]>:
> Hi,
>
> What is the story around PharoMinimal and related images ?
>
> Is there a writeup somewhere with instructions ?
>
> Right now the minimal (Metacello) image based on Pharo 7 is used only as intermediate step in building of the full Pharo and the only real (successful) attempt to use it for something else is PharoLambda (https://gitlab.com/macta/PharoLambda).
>
> In general it can be used for building of own (server) applications. E.g. this way you can install and run Teapot on it:
>
> ./pharo Pharo7.0-metacello-32bit-d13eed2.image config http://smalltalkhub.com/mc/zeroflag/Teapot/main ConfigurationOfTeapot --install=stable
> ./pharo Pharo7.0-metacello-32bit-d13eed2.image eval --no-quit "Teapot on GET: '/welcome' -> 'Hello World'; start."
>
> You can load baselines from the Git repositories too but we currently do not have any command line handler for it so you need to do it using "eval" command or *.st flile. Something like this:
>
> Metacello new
> baseline: 'Seaside3';
> repository: 'github://SeasideSt/Seaside:master/repository';
> load
>
> To make it more usable we probably should extend it with SUnit and Fuel. If you want to extend it with some packages from vanilla Pharo, you should load them using FileTree from your local Pharo repository clone.
>
> Gofer it
> url: 'filetree:///path-to-my-pharo-repository-clone/pharo/src';
> package: 'Multilingual-OtherLanguages';
> package: 'Multilingual-TextConverterOtherLanguages';
> load.
>
> It still needs some care. E.g. some classes from Zinc are not properly initialized (I know about DigitalSignatureAlgorithm MD5NonPrimitive RxMatcherRxParser RxsPredicate SHA1 ZnByteEncoder ZnConstants ZnMimeType ZnNetworkingUtils ZnServer ZnSingleThreadedServer TextConstants TextActionTextStyle).
>
> I tried to load Seaside into it today (from the example above) and it failed (some strange error probalby related to Unicode processing). But we will fix it. If you will tell me what exactly you need we can make it work together as in case of PharoLambda.
>
>  
>
> I see that we get **FANTASTIC** startup speed with it:
>
> $ cat /etc/issue
> Ubuntu 16.04.3 LTS
>
> $ ./pharo --version
> 5.0-201708271955  Sun Aug 27 20:09:20 UTC 2017 gcc 4.6.3 [Production Spur VM]
> CoInterpreter VMMaker.oscog-eem.2265 uuid: 76b62109-629a-4c39-9641-67b53321df9a Aug 27 2017
> StackToRegisterMappingCogit VMMaker.oscog-eem.2262 uuid: 8b531242-de02-48aa-b418-8d2dde0bec6c Aug 27 2017
> VM: 201708271955 https://github.com/OpenSmalltalk/opensmalltalk-vm.git $ Date: Sun Aug 27 21:55:26 2017 +0200 $
> Plugins: 201708271955 https://github.com/OpenSmalltalk/opensmalltalk-vm.git $
> Linux testing-gce-ebf45dd8-6a4c-43a5-abd0-e5d8673d05a4 3.13.0-115-generic #162~precise1-Ubuntu SMP Fri Mar 24 16:47:06 UTC 2017 i686 i686 i386 GNU/Linux
> plugin path: /home/audio359/pharo7/pharo-vm/lib/pharo/5.0-201708271955 [default: /home/audio359/pharo7/pharo-vm/lib/pharo/5.0-201708271955/]
>
> $ curl get.pharo.org/70-minimal | bash
> ...
>
> $ ./pharo Pharo.image printVersion
> [version] 'Pharo7.0' 'Pharo-7.0+alpha.build.172.sha.d13eed2f80fe19f29fd85ede8c4809d6a6986d4f (32 Bit)'
>
> $ time ./pharo Pharo.image eval '5 factorial'
> 120
> real    0m0.083s
> user    0m0.034s
> sys     0m0.042s
>
> That is less than 1/10 of a second on a simple server ! Wow.
>
> Loading new code in that image seem hard though.
>
> I see that in http://files.pharo.org/image/70/ there are Pharomonticello & Pharometacello variants.
>
> Any pointers on usage/meaning ?
>
>
> Monticello is bootstrapped Pharo image with Monticello loaded. This image then loads Metacello and the generated image is the image that we call "minimal". It is minimal in sense minimal for common usage.
>
> During Pharo building process we generate:
> - bootstrapped image
> - image with Opal that is loaded as binary packages using Hermes
> - Monticello with only local repositories support
> - Monticello with network and remote repositories support
> - Metacello
> - full Pharo IDE (which is loaded as sequence of several standalone baselines)
>
> Cheers,
> -- Pavel
>
>  
> Thx,
>
> Sven


Reply | Threaded
Open this post in threaded view
|

Re: PharoMinimal ?

Thierry Goubier
In reply to this post by Guillermo Polito
Le 08/10/2017 à 18:55, Guillermo Polito a écrit :
> That's still not enough ;)

That's close enough for me.

> That will work when the loaded package has no dependencies. Otherwise,
> imagine projects A and B, and A depending on B's release. every time you
> release B you need to release all dependencies...

Sort of. If when loading A, A has a correct reference to a stable B
release, then that is ok.

However, if B is released before A has the time to prepare a compatible
version to the latest B, then, yes, that will break, but that also means
A isn't properly synchronized with B (which is my point about external
projects having to be synchronized).

Then A may have in its baseline a check on the last B release known to
be compatible...

> And, if you use a tag or exact committish to get the Baseline you want
> to install, still that baseline needs to point to the exact
> tag/committish of it's dependencies.

Agreed. You can still, in Metacello scripting, point to two (or more)
repositories when loading the baseline (and then Metacello would pick
the newest one), but: first, I don't know how to do it from inside a
Baseline (dependencies), and, second, if filetree is used, then we loose
the ability to tell which one is newest. (*)

> Or! If you know the dependencies of your baseline you can explicitly use
> a Metacello's lock. I still believe this is an overkill and I'd like to
> simplify it, but that's what we have right now.

As I said above, it seems possible if you create a level of indirection
when fetching the baseline of a dependency.

And saying that, I know how to do it. Within the BaselineOf itself.

Thierry

> On Sun, Oct 8, 2017 at 6:47 PM, Thierry Goubier
> <[hidden email] <mailto:[hidden email]>> wrote:
>
>     Hi Guille,
>
>     Le 08/10/2017 à 18:24, Guillermo Polito a écrit :
>
>         For a really high-level explanation, check the slides in here:
>
>         https://www.slideshare.net/GuillePolito1/understanding-the-pharo-dev-process-79632181
>         <https://www.slideshare.net/GuillePolito1/understanding-the-pharo-dev-process-79632181>
>
>
>     Thanks for the pointers. I tried to do something in the Pharo4 days
>     (I still have probably somewhere a start of baselines and package to
>     add to a minimal pharo4 image, then the external project integration
>     changed and this approach would have failed...)
>
>         Now, as Pavel says, minimal is an image with metacello (+ its
>         dependencies of course).
>
>         This means that you could try to install packages on top of it
>         using baselines.
>
>
>     Cool.
>
>         Still, lot of work to do in that front, mainly
>            - modularisation of the minimal-image packages, so we can
>         build even smaller images
>            - modularisation and baselines for all full-image packages,
>         so we can build incremental images on a per-user flavour
>
>
>     This is really interesting.
>
>         This means of course
>            - cleaning/sorting initializations
>            - refactoring packages
>            - Uncovering hidden and runtime dependencies
>            - making some analyses on how space is taken (most is
>         methods, tons in kernel and collections ;))
>
>         What is not so clear yet from the top of my head: if we
>         distribute minimal images, how can we distribute the pharo
>         libraries that you can load on top of them easily. So far,
>         people using pharo minimal are aware that they are using an
>         alpha version. That means that if they want to load on top of
>         it, let's say, Morphic, they will need to do something like
>
>         Metacello new
>         baseline: 'Morphic';
>         repository: 'github://pharo-project/pharo:development/src';
>         load
>
>         But that means that we'll be loading the so called
>         'bleeding-edge' of it all the time, and that version may not
>         correspond with the image they are using.
>
>         This makes me think we have at some point to revisit the release
>         process so we can have releases internal of libraries such as
>         morphic, athens, fuel, etc, more often.
>
>
>     I think I can suggest a solution. When building an image on the
>     command line (as us Makefile users are keen to do), it is easy to
>     customize the additional packages/baselines you load based on some
>     internal state of
>     the image being built.
>
>     So, for example, if you tag the minimal image when built with, say
>     v70123, then one can write on the command line:
>
>     pharo/pharo pharo/Pharo.image --no-default-preferences eval --save
>     Metacello new baseline: \'Morphic\'\; repository:
>     \'github://pharo-project/pharo:\'\, SystemVersion current
>     buildNumber printString\, \'/src\'\; load
>
>     Et hop, voilà: you get the right Morphic for the minimal image with
>     a minimum amount of distortion.
>
>     If not, then it could be enough to have the short commit ID of the
>     pharo repository when the minimal image was built: it is enough to
>     get a github:// url to work.
>
>     Well, if you keep naming your images like that:
>
>     Pharo7.0-metacello-32bit-d13eed2.image
>
>     Then we could even do it this way in the image building makefile
>     (and you don't have anything to do)(*).
>
>     I'll have a try at it.
>
>     Thierry
>
>     (*) External projects would have to sort it out, still. But, IMHO,
>     it is a duty of an external project to be in sync if it wants to
>     stay external...
>
>         On Sun, Oct 8, 2017 at 4:34 PM, Thierry Goubier
>         <[hidden email] <mailto:[hidden email]>
>         <mailto:[hidden email]
>         <mailto:[hidden email]>>> wrote:
>
>              Hi Pavel,
>
>              I'd probably see some interest in building the
>              GitFileTree-MergeDriver with it. It only requires Monticello.
>
>              Thierry
>
>              Le 08/10/2017 à 12:41, Pavel Krivanek a écrit :
>
>                  Hi Sven,
>
>                  2017-10-07 16:18 GMT+02:00 Sven Van Caekenberghe
>         <[hidden email] <mailto:[hidden email]>
>                  <mailto:[hidden email] <mailto:[hidden email]>>
>         <mailto:[hidden email] <mailto:[hidden email]> <mailto:[hidden email]
>         <mailto:[hidden email]>>>>:
>
>
>                       Hi,
>
>                       What is the story around PharoMinimal and related
>         images ?
>
>                       Is there a writeup somewhere with instructions ?
>
>
>                  Right now the minimal (Metacello) image based on Pharo
>         7 is used
>                  only as intermediate step in building of the full Pharo
>         and the
>                  only real (successful) attempt to use it for something
>         else is
>                  PharoLambda (https://gitlab.com/macta/PharoLambda
>         <https://gitlab.com/macta/PharoLambda>
>                  <https://gitlab.com/macta/PharoLambda
>         <https://gitlab.com/macta/PharoLambda>>).
>
>
>                  In general it can be used for building of own (server)
>                  applications. E.g. this way you can install and run
>         Teapot on it:
>
>                  ./pharo Pharo7.0-metacello-32bit-d13eed2.image config
>         http://smalltalkhub.com/mc/zeroflag/Teapot/main
>         <http://smalltalkhub.com/mc/zeroflag/Teapot/main>
>                  <http://smalltalkhub.com/mc/zeroflag/Teapot/main
>         <http://smalltalkhub.com/mc/zeroflag/Teapot/main>>
>                  ConfigurationOfTeapot --install=stable
>                  ./pharo Pharo7.0-metacello-32bit-d13eed2.image eval
>         --no-quit
>                  "Teapot on GET: '/welcome' -> 'Hello World'; start."
>
>                  You can load baselines from the Git repositories too but we
>                  currently do not have any command line handler for it
>         so you
>                  need to do it using "eval" command or *.st flile.
>         Something like
>                  this:
>
>                  Metacello new
>                  baseline: 'Seaside3';
>                  repository: 'github://SeasideSt/Seaside:master/repository';
>                  load
>
>                  To make it more usable we probably should extend it
>         with SUnit
>                  and Fuel. If you want to extend it with some packages from
>                  vanilla Pharo, you should load them using FileTree from
>         your
>                  local Pharo repository clone.
>
>                  Gofer it
>                  url:
>         'filetree:///path-to-my-pharo-repository-clone/pharo/src';
>                  package: 'Multilingual-OtherLanguages';
>                  package: 'Multilingual-TextConverterOtherLanguages';
>                  load.
>
>                  It still needs some care. E.g. some classes from Zinc
>         are not
>                  properly initialized (I know about
>         DigitalSignatureAlgorithm
>                  MD5NonPrimitive RxMatcher RxParser RxsPredicate SHA1
>                  ZnByteEncoder ZnConstants ZnMimeType ZnNetworkingUtils
>         ZnServer
>                  ZnSingleThreadedServer TextConstants TextAction TextStyle).
>
>                  I tried to load Seaside into it today (from the example
>         above)
>                  and it failed (some strange error probalby related to
>         Unicode
>                  processing). But we will fix it. If you will tell me what
>                  exactly you need we can make it work together as in case of
>                  PharoLambda.
>
>
>                       I see that we get **FANTASTIC** startup speed with it:
>
>                       $ cat /etc/issue
>                       Ubuntu 16.04.3 LTS
>
>                       $ ./pharo --version
>                       5.0-201708271955  Sun Aug 27 20:09:20 UTC 2017 gcc
>         4.6.3
>                  [Production
>                       Spur VM]
>                       CoInterpreter VMMaker.oscog-eem.2265 uuid:
>                       76b62109-629a-4c39-9641-67b53321df9a Aug 27 2017
>                       StackToRegisterMappingCogit VMMaker.oscog-eem.2262
>         uuid:
>                       8b531242-de02-48aa-b418-8d2dde0bec6c Aug 27 2017
>                       VM: 201708271955
>         https://github.com/OpenSmalltalk/opensmalltalk-vm.git
>         <https://github.com/OpenSmalltalk/opensmalltalk-vm.git>
>                  <https://github.com/OpenSmalltalk/opensmalltalk-vm.git
>         <https://github.com/OpenSmalltalk/opensmalltalk-vm.git>>
>                      
>         <https://github.com/OpenSmalltalk/opensmalltalk-vm.git
>         <https://github.com/OpenSmalltalk/opensmalltalk-vm.git>
>                  <https://github.com/OpenSmalltalk/opensmalltalk-vm.git
>         <https://github.com/OpenSmalltalk/opensmalltalk-vm.git>>> $
>         Date: Sun
>                       Aug 27 21:55:26 2017 +0200 $
>                       Plugins: 201708271955
>         https://github.com/OpenSmalltalk/opensmalltalk-vm.git
>         <https://github.com/OpenSmalltalk/opensmalltalk-vm.git>
>                  <https://github.com/OpenSmalltalk/opensmalltalk-vm.git
>         <https://github.com/OpenSmalltalk/opensmalltalk-vm.git>>
>                      
>         <https://github.com/OpenSmalltalk/opensmalltalk-vm.git
>         <https://github.com/OpenSmalltalk/opensmalltalk-vm.git>
>                  <https://github.com/OpenSmalltalk/opensmalltalk-vm.git
>         <https://github.com/OpenSmalltalk/opensmalltalk-vm.git>>> $
>                       Linux testing-gce-ebf45dd8-6a4c-43a5-abd0-e5d8673d05a4
>                       3.13.0-115-generic #162~precise1-Ubuntu SMP Fri Mar 24
>                  16:47:06 UTC
>                       2017 i686 i686 i386 GNU/Linux
>                       plugin path:
>                      
>         /home/audio359/pharo7/pharo-vm/lib/pharo/5.0-201708271955
>                  [default:
>                      
>         /home/audio359/pharo7/pharo-vm/lib/pharo/5.0-201708271955/]
>
>                       $ curl get.pharo.org/70-minimal
>         <http://get.pharo.org/70-minimal>
>                  <http://get.pharo.org/70-minimal
>         <http://get.pharo.org/70-minimal>>
>                  <http://get.pharo.org/70-minimal
>         <http://get.pharo.org/70-minimal>
>
>                  <http://get.pharo.org/70-minimal
>         <http://get.pharo.org/70-minimal>>> | bash
>
>                       ...
>
>                       $ ./pharo Pharo.image printVersion
>                       [version] 'Pharo7.0'
>                            
>         'Pharo-7.0+alpha.build.172.sha.d13eed2f80fe19f29fd85ede8c4809d6a6986d4f
>                       (32 Bit)'
>
>                       $ time ./pharo Pharo.image eval '5 factorial'
>                       120
>                       real    0m0.083s
>                       user    0m0.034s
>                       sys     0m0.042s
>
>                       That is less than 1/10 of a second on a simple
>         server ! Wow.
>
>                       Loading new code in that image seem hard though.
>
>                       I see that in http://files.pharo.org/image/70/
>         <http://files.pharo.org/image/70/>
>                  <http://files.pharo.org/image/70/
>         <http://files.pharo.org/image/70/>>
>                       <http://files.pharo.org/image/70/
>         <http://files.pharo.org/image/70/>
>                  <http://files.pharo.org/image/70/
>         <http://files.pharo.org/image/70/>>> there are Pharomonticello &
>                       Pharometacello variants.
>
>                       Any pointers on usage/meaning ?
>
>
>                  Monticello is bootstrapped Pharo image with Monticello
>         loaded.
>                  This image then loads Metacello and the generated image
>         is the
>                  image that we call "minimal". It is minimal in sense
>         minimal for
>                  common usage.
>
>                  During Pharo building process we generate:
>                  - bootstrapped image
>                  - image with Opal that is loaded as binary packages
>         using Hermes
>                  - Monticello with only local repositories support
>                  - Monticello with network and remote repositories support
>                  - Metacello
>                  - full Pharo IDE (which is loaded as sequence of several
>                  standalone baselines)
>
>                  Cheers,
>                  -- Pavel
>
>                       Thx,
>
>                       Sven
>
>
>
>
>
>
>
>         --
>
>
>
>         Guille Polito
>
>         Research Engineer
>
>         Centre de Recherche en Informatique, Signal et Automatique de Lille
>
>         CRIStAL - UMR 9189
>
>         French National Center for Scientific Research -
>         _http://www.cnrs.fr_
>
>
>         *Web:* _http://guillep.github.io_
>
>         *Phone: *+33 06 52 70 66 13 <tel:%2B33%2006%2052%2070%2066%2013>
>
>
>
>
>
>
> --
>
>
>
> Guille Polito
>
> Research Engineer
>
> Centre de Recherche en Informatique, Signal et Automatique de Lille
>
> CRIStAL - UMR 9189
>
> French National Center for Scientific Research - _http://www.cnrs.fr_
>
>
> *Web:* _http://guillep.github.io_
>
> *Phone: *+33 06 52 70 66 13
>


Reply | Threaded
Open this post in threaded view
|

Re: PharoMinimal ?

Pavel Krivanek-3
In reply to this post by Sven Van Caekenberghe-2


2017-10-08 19:00 GMT+02:00 Sven Van Caekenberghe <[hidden email]>:
Hi Pavel,

Thanks a lot for the explanation. To summarise: 70-minimal is the one with monticello and metacello in it that can load code via the config handler.

I was confused, because that failed for me.

Now, first doing

$ ./pharo pharo-minimal.image eval 'ZnMimeType initialize'

fixed my loading problem. I also did the following because some of my project don't separate tests (I known ;-)

$ ./pharo pharo-minimal.image eval --save 'Object subclass: #TestCase'

With those fixes I was able to load different projects

$ ./pharo pharo-minimal config http://mc.stfx.eu/Neo ConfigurationOfZTimestamp --install=stable

$ ./pharo pharo-minimal config http://mc.stfx.eu/Neo ConfigurationOfNeoConsole --install=bleedingEdge

The image remains equally fast in startup

$ time ./pharo pharo-minimal.image eval ZTimestamp now
2017-10-08T16:55:00Z
real    0m0.062s
user    0m0.025s
sys     0m0.029s

And it works perfectly as a server, like

$ ./pharo pharo-minimal eval --no-quit 'NeoConsoleTelnetServer new start' &

$ telnet localhost 4999
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Neo Console Pharo-7.0+alpha.build.172.sha.d13eed2f80fe19f29fd85ede8c4809d6a6986d4f (32 Bit)
> get
known metrics:
  system.status - Simple system status
  memory.total - Total allocated memory
  memory.free - Free memory
  memory.gc - Garbage collect, return free memory
  system.uptime - Image uptime human readeable
  system.uptimeseconds - Image uptime seconds
  system.date - Current date
  system.time - Current time
  system.timestamp - Current timestamp
  process.count - Current process count
  process.list - Current list of processes
  system.version - Image version info
  system.mcversions - Monticello packages version info
> get process.list
Delay Scheduling Process
Low Space Watcher
Idle Process
WeakArray Finalization Process
NeoConsoleTelnetServer port 4999
NeoConsoleTelnetServer port 4999 Connection Handler
> SessionManager default startupList collect: #handledId

#(#SmallInteger #Delay #ProcessorScheduler #OSPlatform #FileLocator #MCMethodDefinition #WeakArray #FileStream #MultiByteFileStream #EndianDetector #Symbol #LanguageEnvironment #Stdio #NonInteractiveTranscript #WeakFinalizationList #DiskStore #BasicCommandLineHandler #SourceFileArray #ASTCache #UUIDGenerator #InternetConfiguration #ZnLogEvent #ZnServer #Color #UIManagerSessionHandler #ZTimestamp)
>
Bye!
Connection closed by foreign host.

Great! 
 

Image size remains ~11Mb.

I suppose it can be smaller with the release cleanup.
 
 

Very nice !

About the class initialisations. Why were they not done already ? You seem to have a list of them, why not make sure they are executed when creating the image ? I guess I could rewrite some of my code to do lazy initialization class side but I should not have to do that, should I ?


During the baselines loading some of the initializations are done manually because of the dependencies and the mentioned classes are initialized later during Morphic loading. We should check them and move them to a proper location.

-- Pavel

 
Sven

> On 8 Oct 2017, at 12:41, Pavel Krivanek <[hidden email]> wrote:
>
> Hi Sven,
>
> 2017-10-07 16:18 GMT+02:00 Sven Van Caekenberghe <[hidden email]>:
> Hi,
>
> What is the story around PharoMinimal and related images ?
>
> Is there a writeup somewhere with instructions ?
>
> Right now the minimal (Metacello) image based on Pharo 7 is used only as intermediate step in building of the full Pharo and the only real (successful) attempt to use it for something else is PharoLambda (https://gitlab.com/macta/PharoLambda).
>
> In general it can be used for building of own (server) applications. E.g. this way you can install and run Teapot on it:
>
> ./pharo Pharo7.0-metacello-32bit-d13eed2.image config http://smalltalkhub.com/mc/zeroflag/Teapot/main ConfigurationOfTeapot --install=stable
> ./pharo Pharo7.0-metacello-32bit-d13eed2.image eval --no-quit "Teapot on GET: '/welcome' -> 'Hello World'; start."
>
> You can load baselines from the Git repositories too but we currently do not have any command line handler for it so you need to do it using "eval" command or *.st flile. Something like this:
>
> Metacello new
>       baseline: 'Seaside3';
>       repository: 'github://SeasideSt/Seaside:master/repository';
>       load
>
> To make it more usable we probably should extend it with SUnit and Fuel. If you want to extend it with some packages from vanilla Pharo, you should load them using FileTree from your local Pharo repository clone.
>
> Gofer it
>       url: 'filetree:///path-to-my-pharo-repository-clone/pharo/src';
>       package: 'Multilingual-OtherLanguages';
>       package: 'Multilingual-TextConverterOtherLanguages';
>       load.
>
> It still needs some care. E.g. some classes from Zinc are not properly initialized (I know about DigitalSignatureAlgorithm MD5NonPrimitive RxMatcherRxParser RxsPredicate SHA1 ZnByteEncoder ZnConstants ZnMimeType ZnNetworkingUtils ZnServer ZnSingleThreadedServer TextConstants TextActionTextStyle).
>
> I tried to load Seaside into it today (from the example above) and it failed (some strange error probalby related to Unicode processing). But we will fix it. If you will tell me what exactly you need we can make it work together as in case of PharoLambda.
>
>
>
> I see that we get **FANTASTIC** startup speed with it:
>
> $ cat /etc/issue
> Ubuntu 16.04.3 LTS
>
> $ ./pharo --version
> 5.0-201708271955  Sun Aug 27 20:09:20 UTC 2017 gcc 4.6.3 [Production Spur VM]
> CoInterpreter VMMaker.oscog-eem.2265 uuid: 76b62109-629a-4c39-9641-67b53321df9a Aug 27 2017
> StackToRegisterMappingCogit VMMaker.oscog-eem.2262 uuid: 8b531242-de02-48aa-b418-8d2dde0bec6c Aug 27 2017
> VM: 201708271955 https://github.com/OpenSmalltalk/opensmalltalk-vm.git $ Date: Sun Aug 27 21:55:26 2017 +0200 $
> Plugins: 201708271955 https://github.com/OpenSmalltalk/opensmalltalk-vm.git $
> Linux testing-gce-ebf45dd8-6a4c-43a5-abd0-e5d8673d05a4 3.13.0-115-generic #162~precise1-Ubuntu SMP Fri Mar 24 16:47:06 UTC 2017 i686 i686 i386 GNU/Linux
> plugin path: /home/audio359/pharo7/pharo-vm/lib/pharo/5.0-201708271955 [default: /home/audio359/pharo7/pharo-vm/lib/pharo/5.0-201708271955/]
>
> $ curl get.pharo.org/70-minimal | bash
> ...
>
> $ ./pharo Pharo.image printVersion
> [version] 'Pharo7.0' 'Pharo-7.0+alpha.build.172.sha.d13eed2f80fe19f29fd85ede8c4809d6a6986d4f (32 Bit)'
>
> $ time ./pharo Pharo.image eval '5 factorial'
> 120
> real    0m0.083s
> user    0m0.034s
> sys     0m0.042s
>
> That is less than 1/10 of a second on a simple server ! Wow.
>
> Loading new code in that image seem hard though.
>
> I see that in http://files.pharo.org/image/70/ there are Pharomonticello & Pharometacello variants.
>
> Any pointers on usage/meaning ?
>
>
> Monticello is bootstrapped Pharo image with Monticello loaded. This image then loads Metacello and the generated image is the image that we call "minimal". It is minimal in sense minimal for common usage.
>
> During Pharo building process we generate:
> - bootstrapped image
> - image with Opal that is loaded as binary packages using Hermes
> - Monticello with only local repositories support
> - Monticello with network and remote repositories support
> - Metacello
> - full Pharo IDE (which is loaded as sequence of several standalone baselines)
>
> Cheers,
> -- Pavel
>
>
> Thx,
>
> Sven



Reply | Threaded
Open this post in threaded view
|

Re: PharoMinimal ?

Torsten Bergmann
In reply to this post by Pavel Krivanek-3
 >If you will tell me what exactly you need we can make it work together
as in case of PharoLambda.

Even when this offer from Pavel was for Sven I would like to ask:
What about a minimal "TelePharo ready image" that one can remotely
connect to and then debug, enhance, ...

Thanks
T.

Reply | Threaded
Open this post in threaded view
|

Re: PharoMinimal ?

Stephane Ducasse-3
It is in the roadmap.



On Tue, Oct 10, 2017 at 11:49 PM, Torsten Bergmann <[hidden email]> wrote:

>>If you will tell me what exactly you need we can make it work together as
>> in case of PharoLambda.
>
> Even when this offer from Pavel was for Sven I would like to ask:
> What about a minimal "TelePharo ready image" that one can remotely connect
> to and then debug, enhance, ...
>
> Thanks
> T.
>

Reply | Threaded
Open this post in threaded view
|

Re: PharoMinimal ?

Torsten Bergmann
Cool, thanks!


Am 13.10.2017 um 08:32 schrieb Stephane Ducasse:

> It is in the roadmap.
>
>
>
> On Tue, Oct 10, 2017 at 11:49 PM, Torsten Bergmann <[hidden email]> wrote:
>>> If you will tell me what exactly you need we can make it work together as
>>> in case of PharoLambda.
>> Even when this offer from Pavel was for Sven I would like to ask:
>> What about a minimal "TelePharo ready image" that one can remotely connect
>> to and then debug, enhance, ...
>>
>> Thanks
>> T.
>>


Reply | Threaded
Open this post in threaded view
|

Re: PharoMinimal ?

Sean P. DeNigris
Administrator
In reply to this post by Stephane Ducasse-3
Stephane Ducasse-3 wrote
> It is in the roadmap.

Is this available online somewhere? The only ML thread I found was from 2011
and I didn't see it on the website…



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

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

Re: PharoMinimal ?

Pavel Krivanek-3

2017-10-13 14:57 GMT+02:00 Sean P. DeNigris <[hidden email]>:
Stephane Ducasse-3 wrote
> It is in the roadmap.

Is this available online somewhere? The only ML thread I found was from 2011
and I didn't see it on the website…



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


Reply | Threaded
Open this post in threaded view
|

Re: PharoMinimal ?

Sean P. DeNigris
Administrator
Pavel Krivanek-3 wrote
> https://github.com/pharo-project/pharo-workingRoadmaps/blob/master/Pharo7/ROADMAP.md

Thanks! I noticed that Bloc was not mentioned even though the roadmap
purported to cover Pharo 7 and 8…



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

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

Re: PharoMinimal ?

HilaireFernandes
In reply to this post by Sven Van Caekenberghe-2
At this image size, does it come with Morph?

Hilaire

Le 08/10/2017 à 19:00, Sven Van Caekenberghe a écrit :
> Image size remains ~11Mb.
>
> Very nice !

--
Dr. Geo
http://drgeo.eu



Reply | Threaded
Open this post in threaded view
|

Re: PharoMinimal ?

Pavel Krivanek-3


2017-10-14 22:04 GMT+02:00 Hilaire <[hidden email]>:
At this image size, does it come with Morph?

No, Morphic is not included.

-- Pavel
 

Hilaire


Le 08/10/2017 à 19:00, Sven Van Caekenberghe a écrit :
Image size remains ~11Mb.

Very nice !

--
Dr. Geo
http://drgeo.eu




Reply | Threaded
Open this post in threaded view
|

Re: PharoMinimal ?

HilaireFernandes
Ok.

Earlier DrGeo image based on pharo (around 2010 time) shrinked around
8MB[1], Morph included.

[1] https://gforge.inria.fr/frs/download.php/file/27318/DrGeo.app-10.08.zip


Le 14/10/2017 à 22:26, Pavel Krivanek a écrit :

>
> 2017-10-14 22:04 GMT+02:00 Hilaire
> <[hidden email]
> <mailto:[hidden email]>>:
>
>     At this image size, does it come with Morph?
>
>
> No, Morphic is not included.
>
> -- Pavel

--
Dr. Geo
http://drgeo.eu



Reply | Threaded
Open this post in threaded view
|

Re: PharoMinimal ?

Pavel Krivanek-3


2017-10-14 22:58 GMT+02:00 Hilaire <[hidden email]>:
Ok.

Earlier DrGeo image based on pharo (around 2010 time) shrinked around 8MB[1], Morph included.

Reduction of image size is only a side effect, not our main goal. It can probably be cleaned more and with conversion to Spur all images are bigger now. Do you know that there was a version of Cuis that had working Morphic in image of size only 2MB?

http://www.jvuletich.org/Cuis/Cuis3.1r3.zip
use sources from: http://www.jvuletich.org/Cuis/Cuis3.1-0850.zip

-- Pavel
 

[1] https://gforge.inria.fr/frs/download.php/file/27318/DrGeo.app-10.08.zip


Le 14/10/2017 à 22:26, Pavel Krivanek a écrit :

2017-10-14 22:04 GMT+02:00 Hilaire <[hidden email] <mailto:[hidden email]>>:

    At this image size, does it come with Morph?


No, Morphic is not included.

-- Pavel

--
Dr. Geo
http://drgeo.eu




12