Pharo-dev
By thread
pharo-dev@lists.pharo.org
By month
Messages by month
- ----- 2026 -----
- 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
August 2016
- 766 messages
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
Re: [Pharo-dev] [ann] GTExamples alpha
by Tudor Girba
Hi,
I just tried again, and the latest GToolkit image does contain FileSystem class >> gtExampleZip:
Inspect this:
Smalltalk gtExamplesContained select: [ :each |
each method methodClass instanceSide = FileSystem ]
This is the image:
https://ci.inria.fr/moose/job/gtoolkit/5595/artifact/gtoolkit.zip
Cheers,
Doru
> On Aug 25, 2016, at 11:40 PM, Tudor Girba <tudor(a)tudorgirba.com> wrote:
>
> Hi Nicolai,
>
> Thanks a lot for the feedback. Please letâs continue. See more inline.
>
>> On Aug 25, 2016, at 6:34 PM, Nicolai Hess <nicolaihess(a)gmail.com> wrote:
>>
>>
>>
>> 2016-08-25 8:47 GMT+02:00 Tudor Girba <tudor(a)tudorgirba.com>:
>> Hi,
>>
>> Hi Doru,
>> some questions and feedback ( I am sorry for my tone or if this sounds negative, it isn't meant to be)
>>
>> Over the last coupe of years Stefan Reichhart and the rest of the GT team worked on an implementation of examples. The work is inspired from previous work done by Markus Gaelli and Adrian Kuhn.
>>
>> As one of the goals of GT is to offer a live programming environment,
>>
>> Isn't this what we already have, a live programming environment, I think for newcomers (and maybe others) this needs to make be more clear, how is different, what gap are you trying to fill.
>>
>> one important issue is how to move from the static code to live objects as fast as possible.
>>
>> Isn't code always "static" and aren't objects always "live", how do play gtExamples any role in this?
>
> What I meant is that I want to be as little as possible in the static code browser. Instead I want to write code in the presence of a bounded âselfâ which happens either in a debugger or in an inspector.
>
> The gap that examples fill is that when I look at a static code and I have examples about it, I can possibly jump to those examples and code against their result. So, instead of coding a method about a FileReference in the code browser, I will code it against an instance of a FileReference. Hence, we make live programming easier to achieve.
>
>
>> That is why we worked on this library as a solution to provide a link between the static code and live objects.
>>
>> From my understanding, I think this "link" between code an objects is the real valuable new point. This is the great thing about gtExamples. link from code (the example methods itself or methods refering a class
>> to an example object/instance that can be inspected (the raw object or an object specific inspector pane).
>> This is what I would consider the real step forward. You see a method refering to class TextModel and Nautilus or any other tool not only offers a method to browse all Users of this class, but too, a dedicated
>> list of "example methods" where every example has a view for this example instance that let the user show and interact (even for non-visual objects through the "evaluater pane", or just see the code creating this
>> example.
>
> Exactly.
>
>> We really miss examples, I often see questions on the mailing list (especially about spect) that can be explained easily with an example. And even worse, often the examples already exists, they just aren't as visible.
>
> Exactly. These examples are particularly amplified by the fact that we have an inspector that can provide a reacher experience through different views.
>
>
>> Furthermore, this examples library also enables the definition of assertions on the examples, and this provides the possibility of rethinking the way we construct tests throughout our system. Tests are great as they help us create live objects and then to assert live properties.
>>
>> This whole thing sounds as if Unit-Test were a good idea but not the way that they are used today, I strongly disagree. I don't see this as a "rethinking the way we construct tests", yes, we can
>> augment the current set of tests with addtional assertions on live objects, but this is not a replacement.
>> "Tests are great as they help us create live objects" This is not my only purpose for writing tests, often unit-tests cover methods and "private-apis" not even considered to be used on live objects. You can not (or I don't want to
>> ) write tests only on "finished lived objects" sometimes we need tests for initialiazation/private code or exception handling I don't see how we can offer this only by using example instances (yes your "rethinking" sounds like "this
>> is the better way to do testsâ).
>
> I think there is a misunderstanding here.
>
> When I test, (1) I create one or more objects, (2) I assert against them and then (3) I potentially cleanup. At least the objects from step 1 are potentially interesting for documentation purposes as well. However, because tests are built in a completely different environment than examples are, and because they are not casually linked to the code they are about, we cannot exploit them to the maximum potential.
>
> The GT-Examples model offers a unification. This means that you can use the same mechanism for expressing both a test scenario and a documentation one. There is potential to be exploited here. For example, there is research that aims to take the all sorts of objects and try to infer types for code out of these. We could make this much simpler.
>
> I understand that this is a departure from the classic way of testing, but we have already expressed more than 1 thousand examples both from a documentation and from testing point of view, and it does seem to work.
>
>
>> However, they do not allow us to leverage the objects we create, and this can be a tremendous resource for understanding systems.
>>
>> In our vision, examples should be everywhere and they should be explicitly linked to the static code they exemplify. That is why the library comes with an initial integration in existing tools (such as Nautilus, Spotter, Inspector).
>>
>> The current solution works well and it is the result of several rewrites. We think that the solution is complete in terms of features, but there are still several things to improve and iterate on. To this end, I kindly ask you to take a look at it while distinguishing between the concrete implementation choice (e.g., the current extensive use of pragmas) and the conceptual benefits of the approach.
>>
>> To ease the discussion, we put together a short documentation:
>>
>> Everytime I see a gtExample method on a class I first think, shouldn't this go to a Help or Doc or Exampels class instead. I don't know how others thinks about this but this is my first impression.
>> For example, the example on your page:
>>
>> FileSystem class >> #createFileOnDisk
>>
>> <gtExample>
>> <
>> description: 'Create a new file or override an existing file with some contents. Open and close the stream safely'
>>>
>> ^
>> FileSystem workingDirectory / 'test.txt'
>>
>>
>> writeStreamDo: [ :stream | stream nextPutAll: self
>> comment ];
>> yourself
>>
>> Nice, now the user can see how to use FileSystem to create a file, open *and* close the stream safely. But for me, this method does *not* belong to the FileSystem class it just not make any sense to me, to have a method (*in this class*) that opens and closes a stream. Even if this is just an example, I would put it in a doc-page or a tutorial that can execute code. But again , this is just my point of view.
>> I can not really explain it, having a example method on Morph or a widget ui or a widget model class, that opens an example morph or widget in the world, is for me something completly different and a valid example.
>> Having the same for the method above - is not, at least not as executable code on the FileSystm class).
>
> I do not understand this last point.
>
> Just because an object does not have a visual appearance like a Morph does, does not make it uninteresting from an interaction point of view. The inspector already can provide the views. We also have the possibility of adding custom actions that can be installed as menu items. Even for a morph, I sometimes want to not look at its default appearance, but at its submorphs. Thus, I do not see the confusion.
>
> Nevertheless, the example does not have to be on the class side. It can be in any class you want and you can associate it with a subject. For example, all Roassal examples are in dedicated classes. There are hundreds of methods, so putting them all on the class side of a domain class would not work at all. We showed the example on the class side because that is a pattern that people used for a long time and it is a reasonable place when you have only a handful of examples. The rationale is that an example is a way to instantiate a class, so having it on the class side is not far fetched. Also, if you put it on the class side, you get by default the class as a subject for the examples it contains which is quite natural.
>
>
>> http://gtoolkit.org/doc/Examples/examples.html
>>
>> That being said, you can get it with the full GToolkit in Pharo 6.0:
>>
>> Is this based on the recent Pharo 6.0?
>>
>> GTExamplesReleaseTests are failing for me
>
> Yes, these are yellow.
>
>
>> Where did you test this? I get some Object>>#name deprecation warnings when browsing for examples refering a class, for example on
>> class FileSystem and menu entry "Browse Examples refering FileSystem" (maybe a Pharo 5.0 version?)
>
> I tested in Pharo 6.0 (60188), but we just got a problem that was reported related to Epicea and Martin is looking at it.
>
>
>> The example on the examples.html side isn't actually in the image right?
>
> Yes, itâs not there yet.
>
>
>> The browsing examples of a package (context menu on nautilus package pane) does not work or I don't understand why it does not find any examples at all.
>> The World menu "Browse All Examples" does not contain the class FileSystem, although FileSystem>>gtExampleZip is a gtExample, this is because
>> the example method is in an extension package, should all gtExample methods be class extensions ? This is handled differently for different packages.
>
> Hmm. When I "Browse All Examples" I get a Nautilus with FileSystem class>>gtExampleZip in my image. But, indeed, in the latest GToolkit image, this example is missing.
>
>
>> The code pane context menu of a sendersOf Message browser is broken (debug menu).
>
> I do not understand what menu item you refer to. Could provide a screenshot.
>
>>
>> From the web-side:
>>
>> "Furthermore, Nautilus, the World-Menu, all Rub-Text-Editors as well as Spotter and Inspector provide access to retrieve, browse and navigate examples from entities within the world"
>> I can not find it, not in inspector, Rub-Text-Editors, only in Nautilus.
>
> In Nautilus and in RubText you get it in the GT-Examples menu (Browse examples with subject â¦).
>
> The Inspector is not yet there, but we are adding it.
>
>
>> And the menu entries are ... unfortunate (see screenshot), what you put in, the whole source as menu label?
>
> Hmm. Something is strange there. I get the name of a method, not the source code. What image are you in?
>
>
>> run "run the example and return its return-value"
>>
>> debug
>> "same run, but open debugger if the example failsâ
>> returnValue
>> "the return-value"
>> Executing run/debug/inspect returnValue does not seem to make any different when called from nautilus. It always gives
>> an inspector on a dictionary holding the gtexample and its gtexampleresult (is this a bug?)
>
> Yes.
>
>
>> Glossary:
>> "Example: an example is a tiny stub object representing a GT-Example. It holds the references to its dependencies, subjects and many other entities. "
>> What are "many other entities" this is a bit unclear
>
> Icon, Label, Provider, and others that you can add through custom annotations if you want to. This part is not yet clear.
>
>
>> "After-method: the after-method is a method that is performed right after the example."
>> After the example ? I thought an example is a "tiny stub *object*", how can it run?
>> How it is run after I run an example for inspection, after I closed the inspector?
>
> Not yet. At this point, inspecting does not prevent triggering of the cleanup method, but it would certainly be interesting to get there.
>
> Cheers,
> Doru
>
>> http://gtoolkit.org/#install
>> (easiest is to download the ready made image for now)
>>
>> For those that are at ESUG, I will try to provide a short overview during the Show Us Your Project session from today.
>>
>> Cheers,
>> Doru
>>
>>
>> --
>> www.tudorgirba.com
>> www.feenk.com
>>
>> "Reasonable is what we are accustomed with."
>>
>>
>>
>> <gtexample_menu.png>
>
> --
> www.tudorgirba.com
> www.feenk.com
>
> "No matter how many recipes we know, we still value a chef."
--
www.tudorgirba.com
www.feenk.com
"Quality cannot be an afterthought."
Aug. 25, 2016
Re: [Pharo-dev] [ann] GTExamples alpha
by Tudor Girba
Hi Nicolai,
Thanks a lot for the feedback. Please letâs continue. See more inline.
> On Aug 25, 2016, at 6:34 PM, Nicolai Hess <nicolaihess(a)gmail.com> wrote:
>
>
>
> 2016-08-25 8:47 GMT+02:00 Tudor Girba <tudor(a)tudorgirba.com>:
> Hi,
>
> Hi Doru,
> some questions and feedback ( I am sorry for my tone or if this sounds negative, it isn't meant to be)
>
> Over the last coupe of years Stefan Reichhart and the rest of the GT team worked on an implementation of examples. The work is inspired from previous work done by Markus Gaelli and Adrian Kuhn.
>
> As one of the goals of GT is to offer a live programming environment,
>
> Isn't this what we already have, a live programming environment, I think for newcomers (and maybe others) this needs to make be more clear, how is different, what gap are you trying to fill.
>
> one important issue is how to move from the static code to live objects as fast as possible.
>
> Isn't code always "static" and aren't objects always "live", how do play gtExamples any role in this?
What I meant is that I want to be as little as possible in the static code browser. Instead I want to write code in the presence of a bounded âselfâ which happens either in a debugger or in an inspector.
The gap that examples fill is that when I look at a static code and I have examples about it, I can possibly jump to those examples and code against their result. So, instead of coding a method about a FileReference in the code browser, I will code it against an instance of a FileReference. Hence, we make live programming easier to achieve.
> That is why we worked on this library as a solution to provide a link between the static code and live objects.
>
> From my understanding, I think this "link" between code an objects is the real valuable new point. This is the great thing about gtExamples. link from code (the example methods itself or methods refering a class
> to an example object/instance that can be inspected (the raw object or an object specific inspector pane).
> This is what I would consider the real step forward. You see a method refering to class TextModel and Nautilus or any other tool not only offers a method to browse all Users of this class, but too, a dedicated
> list of "example methods" where every example has a view for this example instance that let the user show and interact (even for non-visual objects through the "evaluater pane", or just see the code creating this
> example.
Exactly.
> We really miss examples, I often see questions on the mailing list (especially about spect) that can be explained easily with an example. And even worse, often the examples already exists, they just aren't as visible.
Exactly. These examples are particularly amplified by the fact that we have an inspector that can provide a reacher experience through different views.
> Furthermore, this examples library also enables the definition of assertions on the examples, and this provides the possibility of rethinking the way we construct tests throughout our system. Tests are great as they help us create live objects and then to assert live properties.
>
> This whole thing sounds as if Unit-Test were a good idea but not the way that they are used today, I strongly disagree. I don't see this as a "rethinking the way we construct tests", yes, we can
> augment the current set of tests with addtional assertions on live objects, but this is not a replacement.
> "Tests are great as they help us create live objects" This is not my only purpose for writing tests, often unit-tests cover methods and "private-apis" not even considered to be used on live objects. You can not (or I don't want to
> ) write tests only on "finished lived objects" sometimes we need tests for initialiazation/private code or exception handling I don't see how we can offer this only by using example instances (yes your "rethinking" sounds like "this
> is the better way to do testsâ).
I think there is a misunderstanding here.
When I test, (1) I create one or more objects, (2) I assert against them and then (3) I potentially cleanup. At least the objects from step 1 are potentially interesting for documentation purposes as well. However, because tests are built in a completely different environment than examples are, and because they are not casually linked to the code they are about, we cannot exploit them to the maximum potential.
The GT-Examples model offers a unification. This means that you can use the same mechanism for expressing both a test scenario and a documentation one. There is potential to be exploited here. For example, there is research that aims to take the all sorts of objects and try to infer types for code out of these. We could make this much simpler.
I understand that this is a departure from the classic way of testing, but we have already expressed more than 1 thousand examples both from a documentation and from testing point of view, and it does seem to work.
> However, they do not allow us to leverage the objects we create, and this can be a tremendous resource for understanding systems.
>
> In our vision, examples should be everywhere and they should be explicitly linked to the static code they exemplify. That is why the library comes with an initial integration in existing tools (such as Nautilus, Spotter, Inspector).
>
> The current solution works well and it is the result of several rewrites. We think that the solution is complete in terms of features, but there are still several things to improve and iterate on. To this end, I kindly ask you to take a look at it while distinguishing between the concrete implementation choice (e.g., the current extensive use of pragmas) and the conceptual benefits of the approach.
>
> To ease the discussion, we put together a short documentation:
>
> Everytime I see a gtExample method on a class I first think, shouldn't this go to a Help or Doc or Exampels class instead. I don't know how others thinks about this but this is my first impression.
> For example, the example on your page:
>
> FileSystem class >> #createFileOnDisk
>
> <gtExample>
> <
> description: 'Create a new file or override an existing file with some contents. Open and close the stream safely'
> >
> ^
> FileSystem workingDirectory / 'test.txt'
>
>
> writeStreamDo: [ :stream | stream nextPutAll: self
> comment ];
> yourself
>
> Nice, now the user can see how to use FileSystem to create a file, open *and* close the stream safely. But for me, this method does *not* belong to the FileSystem class it just not make any sense to me, to have a method (*in this class*) that opens and closes a stream. Even if this is just an example, I would put it in a doc-page or a tutorial that can execute code. But again , this is just my point of view.
> I can not really explain it, having a example method on Morph or a widget ui or a widget model class, that opens an example morph or widget in the world, is for me something completly different and a valid example.
> Having the same for the method above - is not, at least not as executable code on the FileSystm class).
I do not understand this last point.
Just because an object does not have a visual appearance like a Morph does, does not make it uninteresting from an interaction point of view. The inspector already can provide the views. We also have the possibility of adding custom actions that can be installed as menu items. Even for a morph, I sometimes want to not look at its default appearance, but at its submorphs. Thus, I do not see the confusion.
Nevertheless, the example does not have to be on the class side. It can be in any class you want and you can associate it with a subject. For example, all Roassal examples are in dedicated classes. There are hundreds of methods, so putting them all on the class side of a domain class would not work at all. We showed the example on the class side because that is a pattern that people used for a long time and it is a reasonable place when you have only a handful of examples. The rationale is that an example is a way to instantiate a class, so having it on the class side is not far fetched. Also, if you put it on the class side, you get by default the class as a subject for the examples it contains which is quite natural.
> http://gtoolkit.org/doc/Examples/examples.html
>
> That being said, you can get it with the full GToolkit in Pharo 6.0:
>
> Is this based on the recent Pharo 6.0?
>
> GTExamplesReleaseTests are failing for me
Yes, these are yellow.
> Where did you test this? I get some Object>>#name deprecation warnings when browsing for examples refering a class, for example on
> class FileSystem and menu entry "Browse Examples refering FileSystem" (maybe a Pharo 5.0 version?)
I tested in Pharo 6.0 (60188), but we just got a problem that was reported related to Epicea and Martin is looking at it.
> The example on the examples.html side isn't actually in the image right?
Yes, itâs not there yet.
> The browsing examples of a package (context menu on nautilus package pane) does not work or I don't understand why it does not find any examples at all.
> The World menu "Browse All Examples" does not contain the class FileSystem, although FileSystem>>gtExampleZip is a gtExample, this is because
> the example method is in an extension package, should all gtExample methods be class extensions ? This is handled differently for different packages.
Hmm. When I "Browse All Examples" I get a Nautilus with FileSystem class>>gtExampleZip in my image. But, indeed, in the latest GToolkit image, this example is missing.
> The code pane context menu of a sendersOf Message browser is broken (debug menu).
I do not understand what menu item you refer to. Could provide a screenshot.
>
> From the web-side:
>
> "Furthermore, Nautilus, the World-Menu, all Rub-Text-Editors as well as Spotter and Inspector provide access to retrieve, browse and navigate examples from entities within the world"
> I can not find it, not in inspector, Rub-Text-Editors, only in Nautilus.
In Nautilus and in RubText you get it in the GT-Examples menu (Browse examples with subject â¦).
The Inspector is not yet there, but we are adding it.
> And the menu entries are ... unfortunate (see screenshot), what you put in, the whole source as menu label?
Hmm. Something is strange there. I get the name of a method, not the source code. What image are you in?
> run "run the example and return its return-value"
>
> debug
> "same run, but open debugger if the example failsâ
> returnValue
> "the return-value"
> Executing run/debug/inspect returnValue does not seem to make any different when called from nautilus. It always gives
> an inspector on a dictionary holding the gtexample and its gtexampleresult (is this a bug?)
Yes.
> Glossary:
> "Example: an example is a tiny stub object representing a GT-Example. It holds the references to its dependencies, subjects and many other entities. "
> What are "many other entities" this is a bit unclear
Icon, Label, Provider, and others that you can add through custom annotations if you want to. This part is not yet clear.
> "After-method: the after-method is a method that is performed right after the example."
> After the example ? I thought an example is a "tiny stub *object*", how can it run?
> How it is run after I run an example for inspection, after I closed the inspector?
Not yet. At this point, inspecting does not prevent triggering of the cleanup method, but it would certainly be interesting to get there.
Cheers,
Doru
> http://gtoolkit.org/#install
> (easiest is to download the ready made image for now)
>
> For those that are at ESUG, I will try to provide a short overview during the Show Us Your Project session from today.
>
> Cheers,
> Doru
>
>
> --
> www.tudorgirba.com
> www.feenk.com
>
> "Reasonable is what we are accustomed with."
>
>
>
> <gtexample_menu.png>
--
www.tudorgirba.com
www.feenk.com
"No matter how many recipes we know, we still value a chef."
Aug. 25, 2016
Re: [Pharo-dev] problem with Epicea and #name
by Tudor Girba
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. 25, 2016
Re: [Pharo-dev] About asClass and friend
by Tudor Girba
Hi,
> On Aug 25, 2016, at 10:10 PM, stepharo <stepharo(a)free.fr> wrote:
>
>>>> 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. 25, 2016
Re: [Pharo-dev] About better communication in the community
by Tudor Girba
Hi,
> On Aug 25, 2016, at 5: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 acount
> in case there are some low-hanging fruits to pick?
It definitely does! We are all noobs in many parts in our 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 :).
Cheers,
Doru
>
> Sincerely,
> Gour
>
> --
> From wherever the mind wanders due to its flickering and unsteady
> nature, one must certainly withdraw it and bring it back under
> the control of the self.
>
>
>
--
www.tudorgirba.com
www.feenk.com
"If you interrupt the barber while he is cutting your hair,
you will end up with a messy haircut."
Aug. 25, 2016