Pharo-dev
By thread
pharo-dev@lists.pharo.org
By month
Messages by month
- ----- 2026 -----
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- 3 participants
- 144615 messages
Re: [Pharo-dev] Experiment: New Download page based on Pharo Launcher
by Christophe Demarey
Hi,
> Le 17 mars 2018 à 12:57, kmo <voxkmp(a)gmail.com> a écrit :
>
> I tried the default download of Pharo Launcher on my Windows 7 (32 bit) PC at
> work. It installs. Runs fine - creates images and vms but when you try to
> run them nothing happens. It fails to start the selected image. It just
> fails to run the vm at all as far as I can see.
>
> I tried it on my Windows 10 (32 bit) laptop and got exactly the same result.
Thanks for the report.
Could you tell me if this version works better? https://ci.inria.fr/pharo-ci-jenkins2/job/PharoLauncher/lastSuccessfulBuild…
>
> This is not important for me as I use pharo on Linux - but I thought I'd
> point it out. If having the launcher as the default download causes more
> problems than the traditional vm and image download then perhaps it should
> be reconsidered. A pity since I love the launcher.
True. We need the launcher to run in all cases if it is the first thing a newbie will see from Pharo.
Christophe
March 26, 2018
Re: [Pharo-dev] Experiment: New Download page based on Pharo Launcher
by Christophe Demarey
Hi Milton,
Thanks for the report.
It is important that Pharo Launcher works out of the box.
For Windows, I did some fixes:
- launch images from the shell in background to avoid to have the process killed,
- installation directory is now LOCALAPPDATA folder where user always have write permissions.
- new icon
Could you try it and tell me if it solves problems you had? https://ci.inria.fr/pharo-ci-jenkins2/job/PharoLauncher/lastSuccessfulBuild…
I still need to investigate the problem on OS X.
Thanks,
Christophe.
> Le 18 mars 2018 à 11:47, Tudor Girba <tudor(a)tudorgirba.com> a écrit :
>
> +1
>
> Doru
>
>
>> On Mar 18, 2018, at 10:30 AM, Stephane Ducasse <stepharo.self(a)gmail.com> wrote:
>>
>> Thanks Milton!!!!!!!!!!!
>>
>> Can you open issue on the bug tracker?
>>
>> https://github.com/pharo-project/pharo-launcher/issues
>>
>> This way we are sure that it is not lost.
>>
>> Stef
>>
>> On Sat, Mar 17, 2018 at 11:17 PM, milton mamani <akevalion(a)gmail.com> wrote:
>>> I have issues with Pharo Launcher.
>>>
>>> Pharo Launcher version
>>> version 1.1.1
>>> http://files.pharo.org/pharo-launcher/tmp-1.1.1/
>>>
>>> version 1.1
>>> http://files.pharo.org/pharo-launcher/1.1/
>>>
>>> You can get these links in https://github.com/pharo-project/pharo-launcher/
>>>
>>> OS Version
>>> Mac OS - 10.13.3
>>>
>>> Issues
>>>
>>> Issue #1, version 1.1 does not run in Mac OS - 10.13.3
>>> * Load P.L version 1.1
>>> * Copy the application in `Applications` folder
>>> * Try to open the program, with right-click, open
>>> * Current result the program P.L. does not run.
>>>
>>> Issue #2 Can not open/run downloaded images
>>> * Load P.L version 1.1.1
>>> * Copy the application in `Applications` folder
>>> * Open the program, first time the program does not run
>>> * Open again the program, now the program shows a window
>>> * Try to load a pharo image, In `Templates` >> `Official distributions`>>
>>> `Pharo 6.1 stable`.
>>> * Right-click in the pharo image, then select option `Create Image`
>>> * A popup ask for a name
>>> * Introduce one name, eg: `PImage`
>>> * A loading process appears
>>> * Try to run the image with button `Launch`
>>> * Current result the image `PImage` does not run, and P.L. 1.1.1 quit on
>>> that launch.
>>>
>>> Issue #3 Pharo debugger error appear when navigating in templates
>>> * load P.L version 1.1.1
>>> * Open the P.L
>>> * In templates area, try to load some templates
>>> * Then select one template
>>> * A debugger error window appears with the message #selectMorphList was
>>> sent to nil
>>> * Current result: Sometimes when you try to load and select some templates
>>> an error window appear
>>>
>>> Please tell me If you need more details about these issues
>>>
>>>
>>>
>>> 2018-03-17 16:42 GMT-03:00 Stephane Ducasse <stepharo.self(a)gmail.com>:
>>>>
>>>> On Sat, Mar 17, 2018 at 12:59 PM, Alexandre Bergel
>>>> <alexandre.bergel(a)me.com> wrote:
>>>>> Yesterday we also experienced many problem when using Launcher on OSX
>>>>> :-(
>>>>
>>>> Which version of Launcher?
>>>> Which version of your OS?
>>>> What problems?
>>>> Can we reproduce it?
>>>>
>>>> Could we get pro in reporting problems?
>>>>
>>>>
>>>>> Is the Launcher still maintained?
>>>>
>>>> Alexandre
>>>>
>>>> Christophe spent two months fixing tons of issues.
>>>> So could you report problems in a nicer way?
>>>>
>>>>
>>>>
>>>>
>>>>>
>>>>> Alexandre
>>>>>
>>>>>
>>>>>> On Mar 17, 2018, at 8:57 AM, kmo <voxkmp(a)gmail.com> wrote:
>>>>>>
>>>>>> I tried the default download of Pharo Launcher on my Windows 7 (32 bit)
>>>>>> PC at
>>>>>> work. It installs. Runs fine - creates images and vms but when you try
>>>>>> to
>>>>>> run them nothing happens. It fails to start the selected image. It just
>>>>>> fails to run the vm at all as far as I can see.
>>>>>>
>>>>>> I tried it on my Windows 10 (32 bit) laptop and got exactly the same
>>>>>> result.
>>>>>>
>>>>>> This is not important for me as I use pharo on Linux - but I thought
>>>>>> I'd
>>>>>> point it out. If having the launcher as the default download causes
>>>>>> more
>>>>>> problems than the traditional vm and image download then perhaps it
>>>>>> should
>>>>>> be reconsidered. A pity since I love the launcher.
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Sent from:
>>>>>> http://forum.world.st/Pharo-Smalltalk-Developers-f1294837.html
>>>>>>
>>>>>
>>>>>
>>>>
>>>
>>
>
> --
> www.tudorgirba.com
> www.feenk.com
>
> "Every now and then stop and ask yourself if the war you're fighting is the right one."
>
>
>
>
>
March 26, 2018
[Pharo 7.0-dev] Build #722: Fix Case #21647 - Slot Comments Should List Necessary Overrides
by ci-pharo-ci-jenkins2@inria.fr
There is a new Pharo build available!
The status of the build #722 was: SUCCESS.
The Pull Request #1150 was integrated: "Fix Case #21647 - Slot Comments Should List Necessary Overrides"
Pull request url: https://github.com/pharo-project/pharo/pull/1150
Issue Url: https://pharo.fogbugz.com/f/cases/21647
Build Url: https://ci.inria.fr/pharo-ci-jenkins2/job/Test%20pending%20pull%20request%2…
March 26, 2018
[Pharo 7.0-dev] Build #721: 21623-Update-Jenkinsfile-to-use-staged-bootstrap
by ci-pharo-ci-jenkins2@inria.fr
There is a new Pharo build available!
The status of the build #721 was: SUCCESS.
The Pull Request #1135 was integrated: "21623-Update-Jenkinsfile-to-use-staged-bootstrap"
Pull request url: https://github.com/pharo-project/pharo/pull/1135
Issue Url: https://pharo.fogbugz.com/f/cases/21623
Build Url: https://ci.inria.fr/pharo-ci-jenkins2/job/Test%20pending%20pull%20request%2…
March 26, 2018
Re: [Pharo-dev] Experiment: New Download page based on Pharo Launcher
by Guillermo Polito
On Fri, Mar 23, 2018 at 7:53 PM, Ben Coman <btc(a)openinworld.com> wrote:
>
>
> On 23 March 2018 at 11:31, Ben Coman <btc(a)openinworld.com> wrote:
>
>>
>>
>> On 23 March 2018 at 05:14, Cédrick Béler <cdrick65(a)gmail.com> wrote:
>>
>>> Hi,
>>>
>>> I just saw students and they still have some problem on windows with the
>>> launcher.
>>>
>>> First, the launcher has to be run in admin mode.
>>>
>>> Then, the image download starts but there is an error when
>>> uncompressing. Here is the stack.
>>>
>>> Any idea on how to fix that ?
>>>
>>
>> Now I notice...
>> the Linux PharoLauncher download is a ZIP file
>> and the Mac PharoLauncher download is a ZIP file
>> so... can we make the Windows PharoLauncher download a ZIP file?
>>
>> Doing that, at least as an interim measure, would *immediately* make
>> PharoLauncher
>> usable to students on locked-down Windows machines in University student
>> labs.
>> I'd expect this will improve the success with this experiment
>> to use PharoLauncher as the main user entry point.
>>
>> The problem with using an "Installer" for the Windows PharoLauncher is
>> the large amount
>> of testing required to work *reliably* with *all* the "different ways
>> people work"
>> under several different versions of Windows introduced different layers
>> of user security intricacies.
>> Lets move forward in small steps. A ZIP download/extract is simple, and
>> consistent with other platforms.
>>
>> In the meantime while waiting for that to happen, you can...
>>
>> 1. Download/extract http://files.pharo.org/platform/Pharo6.1-win.zip
>>
>> 2. Rename Pharo6.1 folder to PharoLauncher
>> Rename Pharo6.1.* files to PharoLauncher1.1.*
>>
>> 3. Metacello new
>> smalltalkhubUser: 'Pharo'
>> project: 'PharoLauncher';
>> configuration: 'PharoLauncher';
>> load.
>> PhLDeploymentScript doAll.
>> PharoLauncher open.
>> Smalltalk snapshot: true andQuit: true.
>>
>
>> 4. Zip up the parent folder, test on another machine and provide a link
>> to your students.
>>
>> cheers -ben
>>
>>
>> P.S. I was going to suggest also renaming Pharo.exe to
>> PharoLauncher.exe
>> but with an empty Documents\Pharo\vms
>> I get... "Error: Cannot detect Pharo executable in
>> C:\Temp\MyPharoLauncher\PharoLauncher"
>> in PhLVirtualMachine>>initializeOn: "File @
>> C:\Temp\MyPharoLauncher\PharoLauncher"
>> since "executables := aFolder allChildrenMatching: self class
>> executableName."
>> is empty since "self class executableName" ==> "Pharo.exe"
>>
>> It would be nice for that to not be hard coded. I tried digging further
>> but ran out of time.
>> I am curious it mattered since using "Pharo.exe" the Launcher went on to
>> download a VM anyway.
>>
>>
>> P.S.2.
>> I believe the best path forward for system-wide PharoLauncher installed
>> under "C:\Program Files"
>> would be to install there only...
>> * the VM
>> * PharoLauncher.ZIP
>> * a tiny non-Pharo wrapper program as the shortcut linked from AllUsers >
>> Start Menu > PharoLauncher
>> that extracts PharoLauncher.ZIP to the user's data area and then starts
>> that user specific PharoLauncher.
>>
>> Then regardless whether:
>> * they individually download/extract PharoLauncher.ZIP
>> * the system-wide-wrapper extracts PharoLauncher.ZIP
>> its a similar experience for users which should aid reliability by
>> reducing the number of "different " use cases.
>>
>
> Coincidentally I have returned to Windows for a short while so thought I
> should
> put my money where my mouth is and have a stab at this. After a few hours
> trying with NSIS,
> I went searching for an alternative and Advanced Installer looked like a
> good chance.
> https://www.advancedinstaller.com/feats-list.html
> The important part of (free) Basic Features is "Windows 10/8/7/Vista and
> UAC installs"
> Also further down are some CI options.
>
> After just the "Simple Installation" tutorial and experimenting a few
> hours I ironed out
> a potential solution uploaded for testing to
> http://www.mediafire.com/file/3g579bmzqspt8e1/BCPharoLauncher.msi
> with the full build tree at http://www.mediafire.com/file/
> 5ijiww848lbkk7m/PharoLauncher%20Advanced%20Installer.zip
> Links should be live for 30 days.
> I've directly attached the much smaller installer-configuration file
> "PharoLauncher.aip".
>
>
> PharoLauncher was built with some minor changes from above...
> 1. Download/extracted http://files.pharo.org/platform/Pharo6.1-win.zip
>
> 2. Renamed Pharo6.1 folder to BCPharoLauncher
> Renamed Pharo6.1.* files to PharoLauncher1.1.*
>
> 3. Metacello new
> smalltalkhubUser: 'Pharo'
> project: 'PharoLauncher';
> configuration: 'PharoLauncher';
> load.
> PharoLauncher hardResetPersistanceState: true.
> PhLDeploymentScript doAll.
> PhLDeploymentScript closeWindowsAndOpenLauncher.
> Smalltalk snapshot: true andQuit: true.
>
> 4. Moved the image & changes files into a subfolder "PerUserFiles"
>
> 5. Built BCPharoLauncher.msi
>
> I prefixed my initials to distinguish it from the current official
> PharoLauncher installer.
> Hopefully this can be adopted as the official installer and they can be
> dropped off.
>
>
> Key features:
> a. Provides a choice to install for "Everybody" (i.e. C:\Program Files
> (x86)\Pharo\BCPharoLauncher\)
> or "Only for me" (i.e. C:\Users\Ben\AppData\Local\Programs\Pharo\
> BCPharoLauncher\)
> per attached screen snapshot.
>
> b. Start the install as a Standard User and it escalates only as needed.
>
WOW, YES. I want this, thanks Ben :)
>
> c. The Desktop and Start Menu shortcuts run the following script...
>
> // File: PharoLauncher.js
> // Author: Ben Coman 2018.03.24
> // Purpose: Facilitate each user to run a personal copy of
> PharoLauncher.image in their own data area.
>
> // Locations
> basename = "\\PharoLauncher1.1";
> WshShell = WScript.CreateObject("WScript.Shell");
> fso = WScript.CreateObject("Scripting.FileSystemObject");
> systemFolder = fso.GetAbsolutePathName(".");
> vmFilename = systemFolder + "\\Pharo.exe"
> systemBasename = systemFolder + "\\PerUserFiles" + basename;
> userFolder = WshShell.ExpandEnvironmentStrings("%
> LOCALAPPDATA%\\Pharo");
> userFolder2 = userFolder + "\\PharoLauncher";
> userBasename = userFolder2 + basename;
>
> // Ensure user data folder exists for PharoLauncher
> if( ! fso.FolderExists(userFolder))
> { fso.CreateFolder(userFolder);
> fso.CreateFolder(userFolder2)
> }
>
> // If either image or changes files missing from user folder,
> copy from system folder.
> if( ! fso.FileExists(userBasename + ".image") || !
> fso.FileExists(userBasename + ".changes"))
> {
> //WScript.Echo("Setting up user environment");
> fso.CopyFile(systemBasename + ".image", userBasename +
> ".image", true);
> fso.CopyFile(systemBasename + ".changes", userBasename +
> ".changes", true);
> }
>
> // Start personal copy of PharoLauncher
> WshShell.Exec(vmFilename + " " + userBasename + ".image")
>
>
> cheers -ben
>
>
--
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
<http://www.cnrs.fr>*
*Web:* *http://guillep.github.io* <http://guillep.github.io>
*Phone: *+33 06 52 70 66 13
March 26, 2018
Re: [Pharo-dev] Pavel's ChangeLog week of 2018-03-19
by Pavel Krivanek
Maybe, but it does not solve the issue because, in Ring, every model is a
full, closed and complete environment where every message tries to return
you reasonable value even for unresolved parts of the model. You can start
to build your model from everywhere you want.
method := RGMethod named: #someMethod.
self assert: (method parent localMethods size = 1).
self assert: (method parent name = #unresolved).
self assert: (method parent package = method package).
method parent name: #SomeBehavior.
self assert: method parent isTrait not.
method environment ensureTraitNamed: #SomeBehavior.
method package: (method environment ensurePackageNamed:
#PackageWithExtension).
self assert: method parent isTrait.
self assert: (method parent package ~~ method package).
Cheers,
-- Pavel
2018-03-26 11:21 GMT+02:00 Guillermo Polito <guillermopolito(a)gmail.com>:
> Can't we make Extensions first class objects in ring?
>
> On Mon, Mar 26, 2018 at 11:02 AM, Pavel Krivanek <pavel.krivanek(a)gmail.com
> > wrote:
>
>> 2018-03-26 10:52 GMT+02:00 Stephane Ducasse <stepharo.self(a)gmail.com>:
>> > Pavel
>> >
>> > Why we do not know if this is a class or trait?
>>
>> Imagine that you are loading a package that has an extension method to
>> a class in a foreign package. It is identified only by the behavior
>> name, e.g. "TBehavior". But later, e.g. during merging of the package
>> model with some other, you will realize that the method is in fact a
>> part of a trait so you need to change kind of the class stub you
>> already have.
>>
>> > Maybe we could have decided that Ring2 only works for new traits if
>> > this simplifies your life.
>>
>> Because the traits are now a library and anyone can come with its own
>> metaclass that modifies the behavior metamodel, it is reasonable to
>> support it. And anyway, this work is already done ;-)
>>
>> -- Pavel
>>
>> > Stef
>> >
>> > On Mon, Mar 26, 2018 at 10:37 AM, Pavel Krivanek
>> > <pavel.krivanek(a)gmail.com> wrote:
>> >> Hi,
>> >>
>> >> I did some serious Ring 2 refactorings that I wanted to have finished
>> >> before the integration into Pharo.
>> >> Because Pharo now starts to support the stateful traits, it needs to
>> >> be supported by the metamodel too. However, we need to be able to
>> >> model the images with the old traits as well and from the internal
>> >> point of view, they are quite different.
>> >> Moreover, if you load a code into the Ring model, you sometimes do not
>> >> know if the behavior, where you load a method, is a class or you later
>> >> will realize that it is a trait. The Ring 2 used for this a complex
>> >> machinery that was able to switch the behavior kind using the
>> >> #becomeForward: message.
>> >> Some time ago I decided to solve both problems by introducing of the
>> >> behavior strategies. That means that every behavior is a composition
>> >> of an instance of the RGBehavior class and a behavior strategy (e.g.
>> >> RGClassStrategy). Then changing of the behavior kind is then only a
>> >> matter of swapping of the strategy (which has a state so it not so
>> >> straightforward but still easy). The classes like RGClass or RGTrait
>> >> are still present but now they are only the factories that produce the
>> >> behaviors and they have no real instances.
>> >>
>> >> The next big thing I decided to do in Ring is renaming of the
>> >> entities. From the beginning, I used the prefix "RG2" to avoid the
>> >> collisions with the old Ring implementation but I supposed that before
>> >> the final release it will be renamed because, from the user
>> >> perspective, the Ring 2 should be a replacement for the old Ring and
>> >> not completely separate project. The attempts to replace the old Ring
>> >> with the new one showed me, that it is possible, but the old Ring is
>> >> so deeply used in the system that it leads to a huge amount of
>> >> instabilities.
>> >> So I decided to rename the Ring 2 classes and some methods to do not
>> >> make collisions with the old implementation. While the old Ring class
>> >> was named RGClassDefinition and in Ring 2 it was RG2ClassDefinition,
>> >> now it is renamed simply to RGClass. RG2Definition was renamed to
>> >> RGObject. The only ugly exception is RG2Package which is now named
>> >> RGPackageDefinition because the old Ring does not follow the naming
>> >> convention and uses the name "RGPackage". The old Ring packages will
>> >> get suffix "Deprecated" into their names. The old Ring and the Ring2
>> >> can coexist in one image and it is still possible to load the new Ring
>> >> into the Pharo 6.
>> >>
>> >> Then I started to work on the changes metamodel for Ring with the goal
>> >> to be able to record, reproduce and revert (almost) all changes that
>> >> the user does in the model. The main goal of it is to be able to get
>> >> comparisons of two models and compute loading order of the changes so
>> >> it will be more easy to replace the Monticello metamodel and the
>> >> metamodel for code differences with a single solid solution based on
>> >> Ring.
>> >>
>> >> Cheers,
>> >> -- Pavel
>> >>
>> >
>>
>>
>
>
> --
>
>
>
> 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
> <http://www.cnrs.fr>*
>
>
> *Web:* *http://guillep.github.io* <http://guillep.github.io>
>
> *Phone: *+33 06 52 70 66 13 <+33%206%2052%2070%2066%2013>
>
March 26, 2018
Re: [Pharo-dev] Pavel's ChangeLog week of 2018-03-19
by Guillermo Polito
Can't we make Extensions first class objects in ring?
On Mon, Mar 26, 2018 at 11:02 AM, Pavel Krivanek <pavel.krivanek(a)gmail.com>
wrote:
> 2018-03-26 10:52 GMT+02:00 Stephane Ducasse <stepharo.self(a)gmail.com>:
> > Pavel
> >
> > Why we do not know if this is a class or trait?
>
> Imagine that you are loading a package that has an extension method to
> a class in a foreign package. It is identified only by the behavior
> name, e.g. "TBehavior". But later, e.g. during merging of the package
> model with some other, you will realize that the method is in fact a
> part of a trait so you need to change kind of the class stub you
> already have.
>
> > Maybe we could have decided that Ring2 only works for new traits if
> > this simplifies your life.
>
> Because the traits are now a library and anyone can come with its own
> metaclass that modifies the behavior metamodel, it is reasonable to
> support it. And anyway, this work is already done ;-)
>
> -- Pavel
>
> > Stef
> >
> > On Mon, Mar 26, 2018 at 10:37 AM, Pavel Krivanek
> > <pavel.krivanek(a)gmail.com> wrote:
> >> Hi,
> >>
> >> I did some serious Ring 2 refactorings that I wanted to have finished
> >> before the integration into Pharo.
> >> Because Pharo now starts to support the stateful traits, it needs to
> >> be supported by the metamodel too. However, we need to be able to
> >> model the images with the old traits as well and from the internal
> >> point of view, they are quite different.
> >> Moreover, if you load a code into the Ring model, you sometimes do not
> >> know if the behavior, where you load a method, is a class or you later
> >> will realize that it is a trait. The Ring 2 used for this a complex
> >> machinery that was able to switch the behavior kind using the
> >> #becomeForward: message.
> >> Some time ago I decided to solve both problems by introducing of the
> >> behavior strategies. That means that every behavior is a composition
> >> of an instance of the RGBehavior class and a behavior strategy (e.g.
> >> RGClassStrategy). Then changing of the behavior kind is then only a
> >> matter of swapping of the strategy (which has a state so it not so
> >> straightforward but still easy). The classes like RGClass or RGTrait
> >> are still present but now they are only the factories that produce the
> >> behaviors and they have no real instances.
> >>
> >> The next big thing I decided to do in Ring is renaming of the
> >> entities. From the beginning, I used the prefix "RG2" to avoid the
> >> collisions with the old Ring implementation but I supposed that before
> >> the final release it will be renamed because, from the user
> >> perspective, the Ring 2 should be a replacement for the old Ring and
> >> not completely separate project. The attempts to replace the old Ring
> >> with the new one showed me, that it is possible, but the old Ring is
> >> so deeply used in the system that it leads to a huge amount of
> >> instabilities.
> >> So I decided to rename the Ring 2 classes and some methods to do not
> >> make collisions with the old implementation. While the old Ring class
> >> was named RGClassDefinition and in Ring 2 it was RG2ClassDefinition,
> >> now it is renamed simply to RGClass. RG2Definition was renamed to
> >> RGObject. The only ugly exception is RG2Package which is now named
> >> RGPackageDefinition because the old Ring does not follow the naming
> >> convention and uses the name "RGPackage". The old Ring packages will
> >> get suffix "Deprecated" into their names. The old Ring and the Ring2
> >> can coexist in one image and it is still possible to load the new Ring
> >> into the Pharo 6.
> >>
> >> Then I started to work on the changes metamodel for Ring with the goal
> >> to be able to record, reproduce and revert (almost) all changes that
> >> the user does in the model. The main goal of it is to be able to get
> >> comparisons of two models and compute loading order of the changes so
> >> it will be more easy to replace the Monticello metamodel and the
> >> metamodel for code differences with a single solid solution based on
> >> Ring.
> >>
> >> Cheers,
> >> -- Pavel
> >>
> >
>
>
--
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
<http://www.cnrs.fr>*
*Web:* *http://guillep.github.io* <http://guillep.github.io>
*Phone: *+33 06 52 70 66 13
March 26, 2018
Re: [Pharo-dev] Pavel's ChangeLog week of 2018-03-19
by Pavel Krivanek
2018-03-26 10:52 GMT+02:00 Stephane Ducasse <stepharo.self(a)gmail.com>:
> Pavel
>
> Why we do not know if this is a class or trait?
Imagine that you are loading a package that has an extension method to
a class in a foreign package. It is identified only by the behavior
name, e.g. "TBehavior". But later, e.g. during merging of the package
model with some other, you will realize that the method is in fact a
part of a trait so you need to change kind of the class stub you
already have.
> Maybe we could have decided that Ring2 only works for new traits if
> this simplifies your life.
Because the traits are now a library and anyone can come with its own
metaclass that modifies the behavior metamodel, it is reasonable to
support it. And anyway, this work is already done ;-)
-- Pavel
> Stef
>
> On Mon, Mar 26, 2018 at 10:37 AM, Pavel Krivanek
> <pavel.krivanek(a)gmail.com> wrote:
>> Hi,
>>
>> I did some serious Ring 2 refactorings that I wanted to have finished
>> before the integration into Pharo.
>> Because Pharo now starts to support the stateful traits, it needs to
>> be supported by the metamodel too. However, we need to be able to
>> model the images with the old traits as well and from the internal
>> point of view, they are quite different.
>> Moreover, if you load a code into the Ring model, you sometimes do not
>> know if the behavior, where you load a method, is a class or you later
>> will realize that it is a trait. The Ring 2 used for this a complex
>> machinery that was able to switch the behavior kind using the
>> #becomeForward: message.
>> Some time ago I decided to solve both problems by introducing of the
>> behavior strategies. That means that every behavior is a composition
>> of an instance of the RGBehavior class and a behavior strategy (e.g.
>> RGClassStrategy). Then changing of the behavior kind is then only a
>> matter of swapping of the strategy (which has a state so it not so
>> straightforward but still easy). The classes like RGClass or RGTrait
>> are still present but now they are only the factories that produce the
>> behaviors and they have no real instances.
>>
>> The next big thing I decided to do in Ring is renaming of the
>> entities. From the beginning, I used the prefix "RG2" to avoid the
>> collisions with the old Ring implementation but I supposed that before
>> the final release it will be renamed because, from the user
>> perspective, the Ring 2 should be a replacement for the old Ring and
>> not completely separate project. The attempts to replace the old Ring
>> with the new one showed me, that it is possible, but the old Ring is
>> so deeply used in the system that it leads to a huge amount of
>> instabilities.
>> So I decided to rename the Ring 2 classes and some methods to do not
>> make collisions with the old implementation. While the old Ring class
>> was named RGClassDefinition and in Ring 2 it was RG2ClassDefinition,
>> now it is renamed simply to RGClass. RG2Definition was renamed to
>> RGObject. The only ugly exception is RG2Package which is now named
>> RGPackageDefinition because the old Ring does not follow the naming
>> convention and uses the name "RGPackage". The old Ring packages will
>> get suffix "Deprecated" into their names. The old Ring and the Ring2
>> can coexist in one image and it is still possible to load the new Ring
>> into the Pharo 6.
>>
>> Then I started to work on the changes metamodel for Ring with the goal
>> to be able to record, reproduce and revert (almost) all changes that
>> the user does in the model. The main goal of it is to be able to get
>> comparisons of two models and compute loading order of the changes so
>> it will be more easy to replace the Monticello metamodel and the
>> metamodel for code differences with a single solid solution based on
>> Ring.
>>
>> Cheers,
>> -- Pavel
>>
>
March 26, 2018
Re: [Pharo-dev] Pavel's ChangeLog week of 2018-03-19
by Stephane Ducasse
Pavel
Why we do not know if this is a class or trait?
May be we could have decided that Ring2 only works for new traits if
this simplifies your life.
Stef
On Mon, Mar 26, 2018 at 10:37 AM, Pavel Krivanek
<pavel.krivanek(a)gmail.com> wrote:
> Hi,
>
> I did some serious Ring 2 refactorings that I wanted to have finished
> before the integration into Pharo.
> Because Pharo now starts to support the stateful traits, it needs to
> be supported by the metamodel too. However, we need to be able to
> model the images with the old traits as well and from the internal
> point of view, they are quite different.
> Moreover, if you load a code into the Ring model, you sometimes do not
> know if the behavior, where you load a method, is a class or you later
> will realize that it is a trait. The Ring 2 used for this a complex
> machinery that was able to switch the behavior kind using the
> #becomeForward: message.
> Some time ago I decided to solve both problems by introducing of the
> behavior strategies. That means that every behavior is a composition
> of an instance of the RGBehavior class and a behavior strategy (e.g.
> RGClassStrategy). Then changing of the behavior kind is then only a
> matter of swapping of the strategy (which has a state so it not so
> straightforward but still easy). The classes like RGClass or RGTrait
> are still present but now they are only the factories that produce the
> behaviors and they have no real instances.
>
> The next big thing I decided to do in Ring is renaming of the
> entities. From the beginning, I used the prefix "RG2" to avoid the
> collisions with the old Ring implementation but I supposed that before
> the final release it will be renamed because, from the user
> perspective, the Ring 2 should be a replacement for the old Ring and
> not completely separate project. The attempts to replace the old Ring
> with the new one showed me, that it is possible, but the old Ring is
> so deeply used in the system that it leads to a huge amount of
> instabilities.
> So I decided to rename the Ring 2 classes and some methods to do not
> make collisions with the old implementation. While the old Ring class
> was named RGClassDefinition and in Ring 2 it was RG2ClassDefinition,
> now it is renamed simply to RGClass. RG2Definition was renamed to
> RGObject. The only ugly exception is RG2Package which is now named
> RGPackageDefinition because the old Ring does not follow the naming
> convention and uses the name "RGPackage". The old Ring packages will
> get suffix "Deprecated" into their names. The old Ring and the Ring2
> can coexist in one image and it is still possible to load the new Ring
> into the Pharo 6.
>
> Then I started to work on the changes metamodel for Ring with the goal
> to be able to record, reproduce and revert (almost) all changes that
> the user does in the model. The main goal of it is to be able to get
> comparisons of two models and compute loading order of the changes so
> it will be more easy to replace the Monticello metamodel and the
> metamodel for code differences with a single solid solution based on
> Ring.
>
> Cheers,
> -- Pavel
>
March 26, 2018
Pavel's ChangeLog week of 2018-03-19
by Pavel Krivanek
Hi,
I did some serious Ring 2 refactorings that I wanted to have finished
before the integration into Pharo.
Because Pharo now starts to support the stateful traits, it needs to
be supported by the metamodel too. However, we need to be able to
model the images with the old traits as well and from the internal
point of view, they are quite different.
Moreover, if you load a code into the Ring model, you sometimes do not
know if the behavior, where you load a method, is a class or you later
will realize that it is a trait. The Ring 2 used for this a complex
machinery that was able to switch the behavior kind using the
#becomeForward: message.
Some time ago I decided to solve both problems by introducing of the
behavior strategies. That means that every behavior is a composition
of an instance of the RGBehavior class and a behavior strategy (e.g.
RGClassStrategy). Then changing of the behavior kind is then only a
matter of swapping of the strategy (which has a state so it not so
straightforward but still easy). The classes like RGClass or RGTrait
are still present but now they are only the factories that produce the
behaviors and they have no real instances.
The next big thing I decided to do in Ring is renaming of the
entities. From the beginning, I used the prefix "RG2" to avoid the
collisions with the old Ring implementation but I supposed that before
the final release it will be renamed because, from the user
perspective, the Ring 2 should be a replacement for the old Ring and
not completely separate project. The attempts to replace the old Ring
with the new one showed me, that it is possible, but the old Ring is
so deeply used in the system that it leads to a huge amount of
instabilities.
So I decided to rename the Ring 2 classes and some methods to do not
make collisions with the old implementation. While the old Ring class
was named RGClassDefinition and in Ring 2 it was RG2ClassDefinition,
now it is renamed simply to RGClass. RG2Definition was renamed to
RGObject. The only ugly exception is RG2Package which is now named
RGPackageDefinition because the old Ring does not follow the naming
convention and uses the name "RGPackage". The old Ring packages will
get suffix "Deprecated" into their names. The old Ring and the Ring2
can coexist in one image and it is still possible to load the new Ring
into the Pharo 6.
Then I started to work on the changes metamodel for Ring with the goal
to be able to record, reproduce and revert (almost) all changes that
the user does in the model. The main goal of it is to be able to get
comparisons of two models and compute loading order of the changes so
it will be more easy to replace the Monticello metamodel and the
metamodel for code differences with a single solid solution based on
Ring.
Cheers,
-- Pavel
March 26, 2018