Pharo-dev
By thread
pharo-dev@lists.pharo.org
By month
Messages by month
- ----- 2026 -----
- November
- October
- September
- 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
- 144635 messages
Re: [Pharo-dev] About asClass and friend
by Esteban Lorenzano
> On 26 Aug 2016, at 08:49, Luc Fabresse <luc.fabresse(a)gmail.com> wrote:
>
> Hi,
>
> My point of view is:
>
> 1) in code/core, we should use (we already said that with Camille in the past ;-)):
>
> self environmentAt: #Blah
>
> Object>>environmentAt: aSymbol
> ^ self class environmentAt: aSymbol
>
> Object class>>environmentAt: aSymbol
> ...
>
> The idea is that we can then customize name resolution, per object, per class and per module in the future.
+1
>
> 2) For scripting purpose, asClass is indeed useful (GTInspector, ...).
> I would start simple as said before, re-package it and add a rule as suggested by Denis.
> Now, I am not sure that making asClass supporting name resolution in another environment is really useful.
> And if we do it using thisContext, some developers may use that instead of "obj environmentAt: XXX" which would be bad.
I dislike a lot the thisContext resolution idea.
If is bad is bad⦠and it will be bad also for scripting. I know, now it does not looks like adding value, but think about: #asClass is monolithic and #asClass with thisContext âlooks monolithicâ, IMO promoting a bad way of thinking problems in Pharo thus inducing confusion for non expert users.
Esteban
>
> my 2KÄ,
>
> #Luc
>
> 2016-08-26 6:56 GMT+02:00 Tudor Girba <tudor(a)tudorgirba.com <mailto:tudor@tudorgirba.com>>:
> Hi,
>
>
>
> > On Aug 26, 2016, at 6:37 AM, stepharo <stepharo(a)free.fr <mailto:stepharo@free.fr>> wrote:
> >
> > Thanks doru.
> >
> > I do not like when people think that we are complaining just because something changes.
> >
> > It should change for the better and we all agree on that.
>
> Certainly. There are many points of view and many constraints. This is why it is so important that we all bring forward those constraints because only like this we can reach a global maximum.
>
> So, about asClass, everyone agrees that it should be moved to another package. The open questions are:
> - do we add an automatic deprecation for those that use it in code, or
> - do we make use of thisContext to retrieve the environment?
> (or both)
>
> Also, what about the asClassInEnvironment: method? Can it be used in code, or do we better discourage its usage altogether? I am thinking that if we have to write:
> #MyClass asClassInEnvironment: self class environment
> is even longer than:
> self environment at: #MyClass
> so, I think there is little point to it.
>
> In fact, for scripting what I find useful is not so much less characters, but the lack of parentheses, hence unary methods. That is why asClass is worth being salvaged for scripting (even with a solution that is slower with thisContext), but the rest maybe can be removed. What do you think?
>
> Cheers,
> Doru
>
> >
> > Stef
> >
> >
> >>>>>> Hi,
> >>>>>>
> >>>>>> There exists already a method for that:
> >>>>>> Symbol>>asClassInEnvironment:
> >>>>>>
> >>>>>> But, what if we introduce:
> >>>>>>
> >>>>>> Symbol>>asClassFrom: anObject
> >>>>>> ^ self asClassInEnvironment: anObject class environment
> >>>>>>
> >>>>>> ?
> >>>>> The problem is asClass unary.
> >>>>>
> >>>>> All the tools should be parametrized by an environment.
> >>>> Yes, but asClassFrom: would not be unary but would save us from typing an extra "class environment" :).
> >>> Yes I see.
> >>> But inside Pharo core tools we are ready to type
> >>> environment as a message that dispatch to something else than a symbol.
> >> Sure.
> >>
> >>>>>> This would allow us to still script and be dynamic.
> >>>>>>
> >>>>>> Furthermore, as #asClass is meant to be mainly used for convenience, not performance, I would also propose to make it lookup in thisContext and take the environment from there. I know that his might sound like magic, but it would be the default that we are looking for (to always lookup through the current environment dynamically).
> >>>>> argh I will die....:)
> >>>>> No use of thisContext or only in the scripting package.
> >>>>> :D
> >>>>>
> >>>>> Yes, yes. I just talked with Guille. Moving these scripting methods outside of the Kernel is clearly a must.
> >>> I think that each time you use them we will preempt cross compilation and others.
> >> Yes, we agree that this method should not be used inside code.
> >>
> >>>>> I was just thinking that we can make it so that we do not break any code while still making it dynamic.
> >>> I do not like your definition of dynamic. Sending a message to an object is dynamic.
> >>> What you imply is compact. I can understand it when typing in playground.
> >> By dynamic I meant the dispatch through âself class environmentâ or âself environmentâ which is what people will use by default.
> >>
> >>
> >>>>> Like with scripting solutions there is a performance penalty, but that is fine if people choose to pay it (like in the case of Symbol>>#value:).
> >>> Yes for scripts. Not for core code.
> >>> Since people tend to be a bit lazy I think that having rules will make sense.
> >> Definitely.
> >>
> >> Doru
> >>
> >>>>> Cheers,
> >>>>> Doru
> >>>>>
> >>>>>
> >>>>>> What do you think?
> >>>>>>
> >>>>>> Cheers,
> >>>>>> Doru
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>> On Aug 25, 2016, at 8:34 AM, Yuriy Tymchuk <yuriy.tymchuk(a)me.com <mailto:yuriy.tymchuk@me.com>> wrote:
> >>>>>>>
> >>>>>>> Just my 2 cents:
> >>>>>>>
> >>>>>>>
> >>>>>>> instead of
> >>>>>>>
> >>>>>>> #name asClass
> >>>>>>>
> >>>>>>> we have to use
> >>>>>>>
> >>>>>>> self class environment at: #name.
> >>>>>>>
> >>>>>>>
> >>>>>>> Maybe instead of #at: we can have #classNamed:? Or something similar? Because 1) itâs not obvious that the method will give you a class, what if in the future and environment can also have a mapping of something else like packages?
> >>>>>>>
> >>>>>>> Uko
> >>>>>>>
> >>>>>>>> On 25 Aug 2016, at 07:21, stepharo <stepharo(a)free.fr <mailto:stepharo@free.fr>> wrote:
> >>>>>>>>
> >>>>>>>> Hi guys
> >>>>>>>>
> >>>>>>>> We got a meeting at ESUG with all the compiler guys and james from gemstone.
> >>>>>>>>
> >>>>>>>> Our goal is to have a full tool suite that can be parametrized by environments (so that
> >>>>>>>>
> >>>>>>>> we can compile code in other space, or compile other code inside pharo).
> >>>>>>>>
> >>>>>>>> I personnally started this effort one decade ago. Now the introduction
> >>>>>>>>
> >>>>>>>> of #asClass and friend is simply destroying all our efforts. There was a discussion
> >>>>>>>>
> >>>>>>>> in the past but we are not listened.
> >>>>>>>>
> >>>>>>>> We will
> >>>>>>>>
> >>>>>>>> - packaged these extensions in a separate package
> >>>>>>>>
> >>>>>>>> - add rules to ban the use of such method in Pharo
> >>>>>>>>
> >>>>>>>> - fix all the use (again) to use the correct way to do it.
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> I can understand that for scripting this is easier but it cannot be at that cost and impact.
> >>>>>>>>
> >>>>>>>> I hope that we will understand but we have to do something else than
> >>>>>>>>
> >>>>>>>> fixing code that breaks our effort.
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> Stef, Marcus, Guille and Luc
> >>>>>>>>
> >>>>>>>>
> >>>>>> --
> >>>>>> www.tudorgirba.com <http://www.tudorgirba.com/>
> >>>>>> www.feenk.com <http://www.feenk.com/>
> >>>>>>
> >>>>>> "It's not what we do that matters most, it's how we do it."
> >>>>>>
> >>>>>>
> >>>>>>
> >>>> --
> >>>> www.tudorgirba.com <http://www.tudorgirba.com/>
> >>>> www.feenk.com <http://www.feenk.com/>
> >>>>
> >>>> "Quality cannot be an afterthought."
> >> --
> >> www.tudorgirba.com <http://www.tudorgirba.com/>
> >> www.feenk.com <http://www.feenk.com/>
> >>
> >> "Every thing has its own flow."
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >
> >
>
> --
> www.tudorgirba.com <http://www.tudorgirba.com/>
> www.feenk.com <http://www.feenk.com/>
>
> "Every thing should have the right to be different."
>
>
>
>
>
>
Aug. 26, 2016
Re: [Pharo-dev] About asClass and friend
by Luc Fabresse
Hi,
My point of view is:
1) in code/core, we should use (we already said that with Camille in the
past ;-)):
self environmentAt: #Blah
Object>>environmentAt: aSymbol
^ self class environmentAt: aSymbol
Object class>>environmentAt: aSymbol
...
The idea is that we can then customize name resolution, per object, per
class and per module in the future.
2) For scripting purpose, asClass is indeed useful (GTInspector, ...).
I would start simple as said before, re-package it and add a rule as
suggested by Denis.
Now, I am not sure that making asClass supporting name resolution in
another environment is really useful.
And if we do it using thisContext, some developers may use that instead of
"obj environmentAt: XXX" which would be bad.
my 2KÄ,
#Luc
2016-08-26 6:56 GMT+02:00 Tudor Girba <tudor(a)tudorgirba.com>:
> Hi,
>
>
>
> > On Aug 26, 2016, at 6:37 AM, stepharo <stepharo(a)free.fr> wrote:
> >
> > Thanks doru.
> >
> > I do not like when people think that we are complaining just because
> something changes.
> >
> > It should change for the better and we all agree on that.
>
> Certainly. There are many points of view and many constraints. This is why
> it is so important that we all bring forward those constraints because only
> like this we can reach a global maximum.
>
> So, about asClass, everyone agrees that it should be moved to another
> package. The open questions are:
> - do we add an automatic deprecation for those that use it in code, or
> - do we make use of thisContext to retrieve the environment?
> (or both)
>
> Also, what about the asClassInEnvironment: method? Can it be used in code,
> or do we better discourage its usage altogether? I am thinking that if we
> have to write:
> #MyClass asClassInEnvironment: self class environment
> is even longer than:
> self environment at: #MyClass
> so, I think there is little point to it.
>
> In fact, for scripting what I find useful is not so much less characters,
> but the lack of parentheses, hence unary methods. That is why asClass is
> worth being salvaged for scripting (even with a solution that is slower
> with thisContext), but the rest maybe can be removed. What do you think?
>
> Cheers,
> Doru
>
> >
> > Stef
> >
> >
> >>>>>> Hi,
> >>>>>>
> >>>>>> There exists already a method for that:
> >>>>>> Symbol>>asClassInEnvironment:
> >>>>>>
> >>>>>> But, what if we introduce:
> >>>>>>
> >>>>>> Symbol>>asClassFrom: anObject
> >>>>>> ^ self asClassInEnvironment: anObject class environment
> >>>>>>
> >>>>>> ?
> >>>>> The problem is asClass unary.
> >>>>>
> >>>>> All the tools should be parametrized by an environment.
> >>>> Yes, but asClassFrom: would not be unary but would save us from
> typing an extra "class environment" :).
> >>> Yes I see.
> >>> But inside Pharo core tools we are ready to type
> >>> environment as a message that dispatch to something else than a symbol.
> >> Sure.
> >>
> >>>>>> This would allow us to still script and be dynamic.
> >>>>>>
> >>>>>> Furthermore, as #asClass is meant to be mainly used for
> convenience, not performance, I would also propose to make it lookup in
> thisContext and take the environment from there. I know that his might
> sound like magic, but it would be the default that we are looking for (to
> always lookup through the current environment dynamically).
> >>>>> argh I will die....:)
> >>>>> No use of thisContext or only in the scripting package.
> >>>>> :D
> >>>>>
> >>>>> Yes, yes. I just talked with Guille. Moving these scripting methods
> outside of the Kernel is clearly a must.
> >>> I think that each time you use them we will preempt cross compilation
> and others.
> >> Yes, we agree that this method should not be used inside code.
> >>
> >>>>> I was just thinking that we can make it so that we do not break any
> code while still making it dynamic.
> >>> I do not like your definition of dynamic. Sending a message to an
> object is dynamic.
> >>> What you imply is compact. I can understand it when typing in
> playground.
> >> By dynamic I meant the dispatch through âself class environmentâ or
> âself environmentâ which is what people will use by default.
> >>
> >>
> >>>>> Like with scripting solutions there is a performance penalty, but
> that is fine if people choose to pay it (like in the case of
> Symbol>>#value:).
> >>> Yes for scripts. Not for core code.
> >>> Since people tend to be a bit lazy I think that having rules will make
> sense.
> >> Definitely.
> >>
> >> Doru
> >>
> >>>>> Cheers,
> >>>>> Doru
> >>>>>
> >>>>>
> >>>>>> What do you think?
> >>>>>>
> >>>>>> Cheers,
> >>>>>> Doru
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>> On Aug 25, 2016, at 8:34 AM, Yuriy Tymchuk <yuriy.tymchuk(a)me.com>
> wrote:
> >>>>>>>
> >>>>>>> Just my 2 cents:
> >>>>>>>
> >>>>>>>
> >>>>>>> instead of
> >>>>>>>
> >>>>>>> #name asClass
> >>>>>>>
> >>>>>>> we have to use
> >>>>>>>
> >>>>>>> self class environment at: #name.
> >>>>>>>
> >>>>>>>
> >>>>>>> Maybe instead of #at: we can have #classNamed:? Or something
> similar? Because 1) itâs not obvious that the method will give you a class,
> what if in the future and environment can also have a mapping of something
> else like packages?
> >>>>>>>
> >>>>>>> Uko
> >>>>>>>
> >>>>>>>> On 25 Aug 2016, at 07:21, stepharo <stepharo(a)free.fr> wrote:
> >>>>>>>>
> >>>>>>>> Hi guys
> >>>>>>>>
> >>>>>>>> We got a meeting at ESUG with all the compiler guys and james
> from gemstone.
> >>>>>>>>
> >>>>>>>> Our goal is to have a full tool suite that can be parametrized by
> environments (so that
> >>>>>>>>
> >>>>>>>> we can compile code in other space, or compile other code inside
> pharo).
> >>>>>>>>
> >>>>>>>> I personnally started this effort one decade ago. Now the
> introduction
> >>>>>>>>
> >>>>>>>> of #asClass and friend is simply destroying all our efforts.
> There was a discussion
> >>>>>>>>
> >>>>>>>> in the past but we are not listened.
> >>>>>>>>
> >>>>>>>> We will
> >>>>>>>>
> >>>>>>>> - packaged these extensions in a separate package
> >>>>>>>>
> >>>>>>>> - add rules to ban the use of such method in Pharo
> >>>>>>>>
> >>>>>>>> - fix all the use (again) to use the correct way to do it.
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> I can understand that for scripting this is easier but it cannot
> be at that cost and impact.
> >>>>>>>>
> >>>>>>>> I hope that we will understand but we have to do something else
> than
> >>>>>>>>
> >>>>>>>> fixing code that breaks our effort.
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> Stef, Marcus, Guille and Luc
> >>>>>>>>
> >>>>>>>>
> >>>>>> --
> >>>>>> www.tudorgirba.com
> >>>>>> www.feenk.com
> >>>>>>
> >>>>>> "It's not what we do that matters most, it's how we do it."
> >>>>>>
> >>>>>>
> >>>>>>
> >>>> --
> >>>> www.tudorgirba.com
> >>>> www.feenk.com
> >>>>
> >>>> "Quality cannot be an afterthought."
> >> --
> >> www.tudorgirba.com
> >> www.feenk.com
> >>
> >> "Every thing has its own flow."
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >
> >
>
> --
> www.tudorgirba.com
> www.feenk.com
>
> "Every thing should have the right to be different."
>
>
>
>
>
>
Aug. 26, 2016
Re: [Pharo-dev] About better communication in the community
by Gour
On Fri, 26 Aug 2016 14:27:24 +0800
Ben Coman <btc(a)openinworld.com> wrote:
> Definitely. And not necessarily that you *solve* an issues, but that
> I found a benefit from "goal directed learning".
That's a good point!
> When I started using Pharo I learned a lot from: * trying to reproduce
> issues - which also benefits core developers if you can gather more
> complete symptom info * testing other people's solutions - putting
> halts in the changed code and simultaneously stepping through the
> original and solution code. Actually I was surprised at far into the
> depths of the system this led me sometimes and how accessible they
> were. Look for issue marked "Fixed - review needed"
Thank you. It seems that I'm ahead of new (learning) experience provided
by "inspired by Smalltalk" environment. :-)
Sincerely,
Gour
--
But for one who takes pleasure in the self, whose human life
is one of self-realization, and who is satisfied in the self only,
fully satiated â for him there is no duty.
Aug. 26, 2016
Re: [Pharo-dev] About better communication in the community
by Gour
On Thu, 25 Aug 2016 23:06:51 +0200
Tudor Girba <tudor(a)tudorgirba.com> wrote:
> It definitely does! We are all noobs in many parts in our system.
Heh, I'm for the whole system. :-)
> But, if you take your time and are willing to dig, the system is kind
> enough to reveal itself to you :). That is the beauty of this world.
> Please join us. Just dive :).
OK, thank you for encouraging me...I'm going to create it. ;)
Sincerely,
Gour
--
A person is said to be established in self-realization and is called a
yogī [or mystic] when he is fully satisfied by virtue of acquired
knowledge and realization. Such a person is situated in transcendence
and is self-controlled. He sees everything â whether it be pebbles,
stones or gold â as the same.
Aug. 26, 2016
Re: [Pharo-dev] About better communication in the community
by Ben Coman
On Thu, Aug 25, 2016 at 11:31 PM, Gour <gour(a)atmarama.com> wrote:
> On Thu, 25 Aug 2016 09:05:45 +0200
> stepharo <stepharo(a)free.fr> wrote:
>
>> Yes but we cannot do much
>
> OK. I got it...do you believe it makes sense for a noob to create account
> in case there are some low-hanging fruits to pick?
Definitely. And not necessarily that you *solve* an issues, but that
I found a benefit from "goal directed learning".
When I started using Pharo I learned a lot from:
* trying to reproduce issues - which also benefits core developers if
you can gather more complete symptom info
* testing other people's solutions - putting halts in the changed code
and simultaneously stepping through the original and solution code.
Actually I was surprised at far into the depths of the system this led
me sometimes and how accessible they were. Look for issue marked
"Fixed - review needed"
cheers -ben
Aug. 26, 2016
Re: [Pharo-dev] About asClass and friend
by Tudor Girba
Hi,
> On Aug 26, 2016, at 6:37 AM, stepharo <stepharo(a)free.fr> wrote:
>
> Thanks doru.
>
> I do not like when people think that we are complaining just because something changes.
>
> It should change for the better and we all agree on that.
Certainly. There are many points of view and many constraints. This is why it is so important that we all bring forward those constraints because only like this we can reach a global maximum.
So, about asClass, everyone agrees that it should be moved to another package. The open questions are:
- do we add an automatic deprecation for those that use it in code, or
- do we make use of thisContext to retrieve the environment?
(or both)
Also, what about the asClassInEnvironment: method? Can it be used in code, or do we better discourage its usage altogether? I am thinking that if we have to write:
#MyClass asClassInEnvironment: self class environment
is even longer than:
self environment at: #MyClass
so, I think there is little point to it.
In fact, for scripting what I find useful is not so much less characters, but the lack of parentheses, hence unary methods. That is why asClass is worth being salvaged for scripting (even with a solution that is slower with thisContext), but the rest maybe can be removed. What do you think?
Cheers,
Doru
>
> Stef
>
>
>>>>>> Hi,
>>>>>>
>>>>>> There exists already a method for that:
>>>>>> Symbol>>asClassInEnvironment:
>>>>>>
>>>>>> But, what if we introduce:
>>>>>>
>>>>>> Symbol>>asClassFrom: anObject
>>>>>> ^ self asClassInEnvironment: anObject class environment
>>>>>>
>>>>>> ?
>>>>> The problem is asClass unary.
>>>>>
>>>>> All the tools should be parametrized by an environment.
>>>> Yes, but asClassFrom: would not be unary but would save us from typing an extra "class environment" :).
>>> Yes I see.
>>> But inside Pharo core tools we are ready to type
>>> environment as a message that dispatch to something else than a symbol.
>> Sure.
>>
>>>>>> This would allow us to still script and be dynamic.
>>>>>>
>>>>>> Furthermore, as #asClass is meant to be mainly used for convenience, not performance, I would also propose to make it lookup in thisContext and take the environment from there. I know that his might sound like magic, but it would be the default that we are looking for (to always lookup through the current environment dynamically).
>>>>> argh I will die....:)
>>>>> No use of thisContext or only in the scripting package.
>>>>> :D
>>>>>
>>>>> Yes, yes. I just talked with Guille. Moving these scripting methods outside of the Kernel is clearly a must.
>>> I think that each time you use them we will preempt cross compilation and others.
>> Yes, we agree that this method should not be used inside code.
>>
>>>>> I was just thinking that we can make it so that we do not break any code while still making it dynamic.
>>> I do not like your definition of dynamic. Sending a message to an object is dynamic.
>>> What you imply is compact. I can understand it when typing in playground.
>> By dynamic I meant the dispatch through âself class environmentâ or âself environmentâ which is what people will use by default.
>>
>>
>>>>> Like with scripting solutions there is a performance penalty, but that is fine if people choose to pay it (like in the case of Symbol>>#value:).
>>> Yes for scripts. Not for core code.
>>> Since people tend to be a bit lazy I think that having rules will make sense.
>> Definitely.
>>
>> Doru
>>
>>>>> Cheers,
>>>>> Doru
>>>>>
>>>>>
>>>>>> What do you think?
>>>>>>
>>>>>> Cheers,
>>>>>> Doru
>>>>>>
>>>>>>
>>>>>>
>>>>>>> On Aug 25, 2016, at 8:34 AM, Yuriy Tymchuk <yuriy.tymchuk(a)me.com> wrote:
>>>>>>>
>>>>>>> Just my 2 cents:
>>>>>>>
>>>>>>>
>>>>>>> instead of
>>>>>>>
>>>>>>> #name asClass
>>>>>>>
>>>>>>> we have to use
>>>>>>>
>>>>>>> self class environment at: #name.
>>>>>>>
>>>>>>>
>>>>>>> Maybe instead of #at: we can have #classNamed:? Or something similar? Because 1) itâs not obvious that the method will give you a class, what if in the future and environment can also have a mapping of something else like packages?
>>>>>>>
>>>>>>> Uko
>>>>>>>
>>>>>>>> On 25 Aug 2016, at 07:21, stepharo <stepharo(a)free.fr> wrote:
>>>>>>>>
>>>>>>>> Hi guys
>>>>>>>>
>>>>>>>> We got a meeting at ESUG with all the compiler guys and james from gemstone.
>>>>>>>>
>>>>>>>> Our goal is to have a full tool suite that can be parametrized by environments (so that
>>>>>>>>
>>>>>>>> we can compile code in other space, or compile other code inside pharo).
>>>>>>>>
>>>>>>>> I personnally started this effort one decade ago. Now the introduction
>>>>>>>>
>>>>>>>> of #asClass and friend is simply destroying all our efforts. There was a discussion
>>>>>>>>
>>>>>>>> in the past but we are not listened.
>>>>>>>>
>>>>>>>> We will
>>>>>>>>
>>>>>>>> - packaged these extensions in a separate package
>>>>>>>>
>>>>>>>> - add rules to ban the use of such method in Pharo
>>>>>>>>
>>>>>>>> - fix all the use (again) to use the correct way to do it.
>>>>>>>>
>>>>>>>>
>>>>>>>> I can understand that for scripting this is easier but it cannot be at that cost and impact.
>>>>>>>>
>>>>>>>> I hope that we will understand but we have to do something else than
>>>>>>>>
>>>>>>>> fixing code that breaks our effort.
>>>>>>>>
>>>>>>>>
>>>>>>>> Stef, Marcus, Guille and Luc
>>>>>>>>
>>>>>>>>
>>>>>> --
>>>>>> www.tudorgirba.com
>>>>>> www.feenk.com
>>>>>>
>>>>>> "It's not what we do that matters most, it's how we do it."
>>>>>>
>>>>>>
>>>>>>
>>>> --
>>>> www.tudorgirba.com
>>>> www.feenk.com
>>>>
>>>> "Quality cannot be an afterthought."
>> --
>> www.tudorgirba.com
>> www.feenk.com
>>
>> "Every thing has its own flow."
>>
>>
>>
>>
>>
>>
>>
>
>
--
www.tudorgirba.com
www.feenk.com
"Every thing should have the right to be different."
Aug. 26, 2016
Re: [Pharo-dev] About asClass and friend
by stepharo
Thanks doru.
I do not like when people think that we are complaining just because
something changes.
It should change for the better and we all agree on that.
Stef
>>>>> Hi,
>>>>>
>>>>> There exists already a method for that:
>>>>> Symbol>>asClassInEnvironment:
>>>>>
>>>>> But, what if we introduce:
>>>>>
>>>>> Symbol>>asClassFrom: anObject
>>>>> ^ self asClassInEnvironment: anObject class environment
>>>>>
>>>>> ?
>>>> The problem is asClass unary.
>>>>
>>>> All the tools should be parametrized by an environment.
>>> Yes, but asClassFrom: would not be unary but would save us from typing an extra "class environment" :).
>> Yes I see.
>> But inside Pharo core tools we are ready to type
>> environment as a message that dispatch to something else than a symbol.
> Sure.
>
>>>>> This would allow us to still script and be dynamic.
>>>>>
>>>>> Furthermore, as #asClass is meant to be mainly used for convenience, not performance, I would also propose to make it lookup in thisContext and take the environment from there. I know that his might sound like magic, but it would be the default that we are looking for (to always lookup through the current environment dynamically).
>>>> argh I will die....:)
>>>> No use of thisContext or only in the scripting package.
>>>> :D
>>>>
>>>> Yes, yes. I just talked with Guille. Moving these scripting methods outside of the Kernel is clearly a must.
>> I think that each time you use them we will preempt cross compilation and others.
> Yes, we agree that this method should not be used inside code.
>
>>>> I was just thinking that we can make it so that we do not break any code while still making it dynamic.
>> I do not like your definition of dynamic. Sending a message to an object is dynamic.
>> What you imply is compact. I can understand it when typing in playground.
> By dynamic I meant the dispatch through âself class environmentâ or âself environmentâ which is what people will use by default.
>
>
>>>> Like with scripting solutions there is a performance penalty, but that is fine if people choose to pay it (like in the case of Symbol>>#value:).
>> Yes for scripts. Not for core code.
>> Since people tend to be a bit lazy I think that having rules will make sense.
> Definitely.
>
> Doru
>
>>>> Cheers,
>>>> Doru
>>>>
>>>>
>>>>> What do you think?
>>>>>
>>>>> Cheers,
>>>>> Doru
>>>>>
>>>>>
>>>>>
>>>>>> On Aug 25, 2016, at 8:34 AM, Yuriy Tymchuk <yuriy.tymchuk(a)me.com> wrote:
>>>>>>
>>>>>> Just my 2 cents:
>>>>>>
>>>>>>
>>>>>> instead of
>>>>>>
>>>>>> #name asClass
>>>>>>
>>>>>> we have to use
>>>>>>
>>>>>> self class environment at: #name.
>>>>>>
>>>>>>
>>>>>> Maybe instead of #at: we can have #classNamed:? Or something similar? Because 1) itâs not obvious that the method will give you a class, what if in the future and environment can also have a mapping of something else like packages?
>>>>>>
>>>>>> Uko
>>>>>>
>>>>>>> On 25 Aug 2016, at 07:21, stepharo <stepharo(a)free.fr> wrote:
>>>>>>>
>>>>>>> Hi guys
>>>>>>>
>>>>>>> We got a meeting at ESUG with all the compiler guys and james from gemstone.
>>>>>>>
>>>>>>> Our goal is to have a full tool suite that can be parametrized by environments (so that
>>>>>>>
>>>>>>> we can compile code in other space, or compile other code inside pharo).
>>>>>>>
>>>>>>> I personnally started this effort one decade ago. Now the introduction
>>>>>>>
>>>>>>> of #asClass and friend is simply destroying all our efforts. There was a discussion
>>>>>>>
>>>>>>> in the past but we are not listened.
>>>>>>>
>>>>>>> We will
>>>>>>>
>>>>>>> - packaged these extensions in a separate package
>>>>>>>
>>>>>>> - add rules to ban the use of such method in Pharo
>>>>>>>
>>>>>>> - fix all the use (again) to use the correct way to do it.
>>>>>>>
>>>>>>>
>>>>>>> I can understand that for scripting this is easier but it cannot be at that cost and impact.
>>>>>>>
>>>>>>> I hope that we will understand but we have to do something else than
>>>>>>>
>>>>>>> fixing code that breaks our effort.
>>>>>>>
>>>>>>>
>>>>>>> Stef, Marcus, Guille and Luc
>>>>>>>
>>>>>>>
>>>>> --
>>>>> www.tudorgirba.com
>>>>> www.feenk.com
>>>>>
>>>>> "It's not what we do that matters most, it's how we do it."
>>>>>
>>>>>
>>>>>
>>> --
>>> www.tudorgirba.com
>>> www.feenk.com
>>>
>>> "Quality cannot be an afterthought."
> --
> www.tudorgirba.com
> www.feenk.com
>
> "Every thing has its own flow."
>
>
>
>
>
>
>
Aug. 26, 2016
UIprocess around when loading broken code
by stepharo
Hi
yesterday I started to port omnibase to pharo and it uses the old API
apicall:
so it breaks when loading.
I got some windows showing errors and after the image was full of new
UIProcess.
Can someone try to reproduce it and I think that we should fix it?
Stef
Aug. 26, 2016
Re: [Pharo-dev] problem with Epicea and #name
by Martin Dias
ok, ok, thanks ;-)
Loading latest ConfigurationOfEpicea from Epicea's repo and load
bleedingEdge fixes the #name issue in the script.
Tomorrow I can release the new version.
Martin
On Thu, Aug 25, 2016 at 6:10 PM, Tudor Girba <tudor(a)tudorgirba.com> wrote:
> Hi,
>
> > On Aug 25, 2016, at 10:03 PM, stepharo <stepharo(a)free.fr> wrote:
> >
> >
> >
> > Le 25/8/16 à 14:10, Tudor Girba a écrit :
> >> Hi Martin,
> >>
> >> Thanks a lot for the quick response.
> >>
> >> As Andrei said, please do not feel sorry. Epicea is an important new
> core component and just because it is a core one every tiny error will
> appear as a large problem. But, we are all humans here, and it should be
> expected that we make errors :).
> > + 1
> > Even the king of Pharo is doing errors :)
>
> No no. We have agreed that there many kings :))
>
> Doru
>
>
>
> > Stef
> >>
> >> Cheers,
> >> Doru
> >>
> >>
> >>> On Aug 25, 2016, at 1:19 PM, Andrei Chis <chisvasileandrei(a)gmail.com>
> wrote:
> >>>
> >>> Hi Martin,
> >>>
> >>> To reproduce the error execute the code below. The first part does
> some cleanups needed to remove the code. The second part attempts to
> remove two packages and seems to go into a recursion. If you interrupt the
> execution with cmd+. you'll see a lot of Context>>#handleSignal:. If you
> right click on one and select 'Peel to first like this' it will find the
> original context that triggered the error.
> >>>
> >>> Don't worry there is no inconvenience :).
> >>> Thanks for looking into this.
> >>>
> >>> GTExampleOrganizer instance reset.
> >>> GTExampleOrganizer instance stopThoroughly.
> >>> GTExampleOrganizer stop.
> >>> Smalltalk garbageCollect.
> >>> self assert: GTExample allSubInstances isEmpty.
> >>> self assert: GTExampleMethod allSubInstances isEmpty.
> >>>
> >>> Gofer new
> >>> smalltalkhubUser: 'Moose' project: 'GToolkit';
> >>> package: 'GT-InspectorExtensions-Core';
> >>> package: 'GT-Inspector';
> >>> load.
> >>>
> >>> Cheers,
> >>> Andrei
> >>>
> >>> On Thu, Aug 25, 2016 at 1:00 PM, Martin Dias <tinchodias(a)gmail.com>
> wrote:
> >>> Hi Andrei, there is an open issue that involves #name in category
> removal whose fix is ready in bleeding edge and only waits that i release
> the new stable version. But this is about category removal, not class
> removal. This night I will take a look on the code of class removal...
> however, could you send a stack trace, please?
> >>> I'm sorry for the inconvenience.
> >>> MartÃn
> >>>
> >>>
> >>> El 25/8/2016 7:18, "Andrei Chis" <chisvasileandrei(a)gmail.com>
> escribió:
> >>> Hi,
> >>>
> >>> When trying to load a new version of the GTInspector in the latest
> Pharo image I get an infinite recursion. It seems that the problem is
> appears because a class is removed, which at a certain point calls
> #asEpiceaRingDefinition. This does then 'self superclass name', however,
> the superclass is nil and UndefinedObject>>#name is called, which is
> deprecated. This should open a warning window and but it leads to an
> infinite recursion. Know problem or should I opened an issues?
> >>>
> >>> Cheers,
> >>> Andrei
> >>>
> >> --
> >> www.tudorgirba.com
> >> www.feenk.com
> >>
> >> "What is more important: To be happy, or to make happy?"
> >>
> >>
> >>
> >
> >
>
> --
> www.tudorgirba.com
> www.feenk.com
>
> "We cannot reach the flow of things unless we let go."
>
>
>
>
>
>
Aug. 26, 2016
Re: [Pharo-dev] About better communication in the community
by Hernán Morales Durand
Hi Stef,
2016-08-25 3:48 GMT-03:00 stepharo <stepharo(a)free.fr>:
> Hi hernan
>
> Could you reply to my mail? Because what is important is how we can make
> progres.
>
Ok, here it is :)
> About GT I have some concerns too now I see also a lot of improvements. I
> love GTInspector and we should remove EyeInspector.
>
> I want to have once brick is out another minimal environment not based on
> anything so that we can have a back-door to debug when the other tools have
> a problems.
>
Cool you are considering this situation.
> Now some answers:
>
>
>
> Then it makes no sense raise any form of criticism, or the board, if by
> definition lobby groups silence any possible mistake.
>
> No this is wrong. You can criticize as I criticize but you should give
> clear actionable points.
> Else this is Oh XX is bad.
> Tell us how we can address your problems and we will try.
> Without clear feedback we cannot act.
>
>
I'm afraid my english is good enough to provide clear feedback. I try to do
my best without offending anyone (see below)
> 2. Features that goes inside Pharo are not decided by vote. They have to
>> add value and share the Pharo vision (pointed in the vision document who is
>> not slightly updated but still guides our steps). We try to reach consensus
>> and if it is not possible, then we decide. Yes, is like that⦠Iâm sorry for
>> not being perfect democratic but this was never the idea of Pharo (it *has*
>> a benevolent dictator⦠who by the way is not me but a group, the board).
>>
>>
> Ok, now people can see one reason why Pharo is light years from the
> popularity of other OSS. I don't get how do you expect success with Pharo
> if you never change your mindset... I read a lot of papers and see KDE,
> gcc, Linux, NetBeans, Python, Mozilla, Apache collaboration models... never
> *ever* read something like that, specially now where OSS literature is
> considering distributed democracy.
>
> Sorry but
> - you would be surprised by how many people would vote to get GT tools
> inside Pharo :)
>
In my opinion is because it is biased by the same people who is behind, or
invested time testing/fixing it, and we are few to have a valuable N. This
will never be fair, newbies will ignore the old inspector/explorer (yes,
the old one from Squeak) was just fine and was easily understandable and
extensible just adding a few methods. And, I repeat in my opinion, a new
inspector isn't really a high priority for our world problems (big data is,
for example), much less a framework.... So that's my view on it.
But that's all, decision was taken. Now we have to move on.
> - then I do not know what to tell you because I'm quite sure that
> Apache or Mozilla are not managed by vote of people.
>
Just a few references you, or the board, may consider for the future :
Python: https://www.python.org/psf/membership/#who-is-allowed-to-vote
KDE : " A "KDE Core Team" uses a democratic voting procedure to resolve
important issues "
Apache HTTPD : " Proposed changes are voted upon via mailing list; 3 yes
votes with no vetos are required to commit a change "
Mozilla : "A review and super-review process is required for most code
changes."
http://flosshub.org/sites/flosshub.org/files/HalloranScherlis.pdf
"It is important to keep users involved in the process and not treat them
as second-class citizens."
Richard P. Gabriel
http://www.dreamsongs.com/IHE/IHE-52.html
> In the end, time will tell, but can you cite another successful open
> source project with such "model"?
>
> Sorry I do not have the time to know.
> We want an doit model: doing in things should be more important than suh
> having needs (even if clients and users are important)
>
4. You have a very negative opinion about our design choices. Thatâs ok,
>> but we are not going to remove GT just because you dislike it.
>>
>
> It's not because of just my dislike. It's because it was never proposed
> for inclusion (it was just decided), it is because you make it almost
> impossible to uninstall it, and because it was integrated very early like
> an enhacement/future/vision set of tools without any votes, or
> high-resistance policy like many Open-Source projects, and judging by the
> volume of mails it required a lot of of time of beta-testing by many users.
>
> You mean beside me someone was not really happy?
> Seriously?
> Now you can not use Spotter so I do not see the problem.
> The Debugger is working well.
> Playground looks like a default workspace.
> Then GTInspector works perfectly for me.
>
To be clear, it's not against GT specifically (I don't like it, too slow,
takes too much space, etc) but the integration process behind, where the
board delivered it and seemed to said f**ck you this must be loved, deal
with it if don't. But then we don't have an easy way too uninstall it, I
have to spend days investigating how to remove it disabling settings in
specific order, and without leaving obsolete instances all around. So
what's my proposal for a next release?
Respect the freedom of choice for people which is not obligated to love all
your tools, by providing an uninstall option (if the tool is not really
essential)
>
> I would love to have the time to invite you, or any GT developer, to work
> with me just one week with real DNA data, and see how well GT goes...
>
>
> Please do a skype sharing session with Andrei and Doru. I'm sure that they
> will love to do it.
> So I take your words and urge you do it.
> It will help you to get out your frsutration and I'm sure that GT will
> improve.
> So a clear win/win situation.
>
This is hard for me because I'm sure at this point Andrei and Doru should
be angry with me for ciriticizing their work. But I will try to make some
use cases these days and share with you so I can show you specifically what
I'm talking about.
>
> Maybe I should be sorry for not being as obedient and blindly accepting
> all board decisions as the word of God, as many on this list.
>
> Can you imagine one moment that people like it?
>
>
I know people like it. This is not against people but against conformity. I
am saying the board, at some point, may have to reflect on if decisions
taken and results obtained aren't masked by "likes" and **may be** raising
questions like if we want to compete with Python because with such a crappy
eval they have hundreds of libraries used by millions, and we are still
discussing why there isn't uninstallers.
>
>
> Understood, what makes me most sad is users almost accepted they cannot do
> better and if they do, their work will never be integrated by default.
>
> No do better.
> Why I started Spec when ther was Glamour. Why Alain was working on Calipso?
> I would love that someone comes and tell me: take XX it is super hyper
> cool UI Builder.
>
>
Me too, and by this point we should really ask ourselves why we don't have
yet a cool UI Builder.
Hernán
Instead, non-voters decisions discourages users to be rewarded for their
> creativity, and imposes many others to work free "supporting" tools which
> were imposed de facto.
>
>
>> So again, I cannot stress this enough: Is my job to say no. I know I hurt
>> some people but social development is complicated.
>> I do not think I do a bad job :)
>>
>>
> Me neither, but you cannot expect conformity from all of us.
>
> Hernán
>
>
>
>> cheers!
>> Esteban
>>
>> On 24 Aug 2016, at 09:38, stepharo <stepharo(a)free.fr> wrote:
>>
>> Hi Hernan
>>
>> First thanks for your email because we may disagree but we often agree.
>> :) so this is an email for me.
>>
>> Hi Stef,
>>
>> Good communication implies being clear when writing about sensitive
>> topics, especially when communicating through virtual channels. I am not in
>> Europe, so I cannot discuss these things with you face to face.
>>
>> This is what we want to change with montly videos meeting.
>>
>> Therefore is not clear to me (and others) what are your policies in many
>> subjects. Lately I also delayed the release of packages because my lack of
>> motivation around this community, specially when discussions exists around
>> three or fourth topics for months.
>>
>>
>> Like what?
>> Let us know because we do not
>>
>> Another "motivational" case for me. I stopped to report bugs in fogbuz
>> because I felt there was too much "Won't fix" for me (specifically by a
>> person but I won't go there...) even in cases where it was ilogical. Then I
>> felt tired of reading "It's like that. Invalid".
>>
>> This is a pity.
>> I know the feeling because some of mine are close too. You are not the
>> only victim of the "Issue closing syndrom" ;).
>> And I would like the syndrome to be more human friendly. Thanks for
>> raising this point.
>>
>> Now two points
>> - You should always send a mail to the mailing-list and that we
>> discuss your points.
>>
>> - Now what will happen if we all open bugs and none of us works on
>> the open bugs.
>> So what is the solution for you. I mean it concretely. How to deal with
>> dying
>>
>> Looking at bugs is really difficult. There are not enough people looking
>> and fixing bugs.
>>
>> About features.
>>
>> What's the policy about voting for default features in next Pharo images?
>> Let's suppose I am a VM/core Pharo maintainer and I want to include
>> MySuperPackage into a Pharo release, which nobody needs (and I don't care),
>> but it is useful to me.... there will ever be voting there? (note it
>> doesn't makes sense if you are a group of 50 always supporting your work)
>>
>>
>> It does not really work because engineers are paid for certain task.
>>
>> Images are becoming huge (at least for my workflows). There will be
>> (more) packages included by default (for promotion?) ?
>>
>> Thanks to raise this point because I mentioned it also to the board. So I
>> like when I'm not alone.
>> Now we should not see look only at the size. Doing nothing is size zero :)
>> The point is what are the functionalities delivered.
>>
>> Three points:
>> - what are the key things we want?
>> keybinding, settings, cool inspector cool....
>>
>> - how many duplicated functionality can we remove:
>> for example I want to merge MCDefinitions with Ring with
>> RBDefinition
>> we removed pseudo*
>> but this is a lot of work
>>
>> The goal is to throw many system when bloc and brick are ready
>>
>> - what is the list of things that you would remove?
>>
>> - with the bootstrap and all the packages of the image managed with
>> Cargo plus the git management
>> we believe that we will be able to manage a set of images with
>> minimal images.
>> - this is several years that we are working on this goal.
>> Believe me this is the vision document not for the sake of
>> it.
>>
>> How do you plan to manage if some people want the Tests be removed from
>> the official Image? (Personally I never run them)
>>
>> - then you use a jenkins job to produce your image where you unload
>> the tests.
>>
>> Another example, what happens if another research group came with a
>> better alternative to Calypso, Brick, Telescope, Bloc. Would you integrate
>> first your tool to mark territory?
>>
>>
>> No this is not a question of territory. Doru and GT does not do that
>> in that spirit.
>> RMOD too. We do something when we think that this is better.
>> For example Epicea is three years of work of Martin, Fuel was so nice
>> that we could not lose it.
>> You see Ghost got changed by denis, Seamless got rewritten from
>> scratch.
>>
>>
>> Who decides? For example (IIRC) TxText and Twisty.
>>
>> Igor looked at Twisty seriously and I do not think that it could
>> handle large cobol files.
>>
>> (you see funnily denis is doing the same with Seamless - He rewrote
>> it from scratch while
>> nick worked on it for several years).
>>
>> Igor wanted to have a stream-based API that could work on modern
>> command-oriented videos card framework.
>> My team (on our own money if you understand what it means)
>> paid Igor to build TxText (and I can tell you that I would have
>> prefered him to do something else).
>>
>>
>> The same applies if anyone came with another rewrite of classic Smalltalk
>> Workspace, Debugger and Inspector tools, what would you do with GT? GT
>> stays because it came before and others would be optional?
>>
>> No this is not like that.
>> If you are better or answer better needs.
>>
>> There will be anything like PEPs?
>>
>> I would love but will people have the energy to implement them?
>> I would definitively encourage you as a community to raise points on
>> what you need.
>>
>> If someone can answer me I think that would be an example of good
>> communication.
>>
>> Hernan I always answered your emails. I always consider your work
>> (and you know it for other reasons and by my facts) after I'm not always in
>> agreement as I'm not always in agreement with other board members and this
>> is how live happens.
>> What is clear is that the most important aspects is to continue to
>> communicate. This is why the board is launching
>> this initiative and I would love to see it taken by people even for
>> their projects.
>>
>>
>>
>> Hernán
>>
>>
>> 2016-08-24 1:51 GMT-03:00 stepharo <stepharo(a)free.fr>:
>>
>>> Hi guys
>>>
>>> the board got a good discussion at ESUG about how to improve and a lot
>>> of the discussion turned around improving communication. We got some ideas
>>> that we will propose soon but I would like to get *your* ideas.
>>>
>>> If you have idea about improving communication around pharo please tell
>>> us.
>>>
>>>
>>> Stef
>>>
>>>
>>>
>>
>>
>>
>
>
Aug. 26, 2016