[Pharo-dev] Some clarifications (was DebugSession>>activePC:)

Eliot Miranda eliot.miranda at gmail.com
Wed Jan 16 17:15:56 EST 2019

Hi Stef,

    thanks for taking the time to respond so thoughtfully.

On Mon, Jan 14, 2019 at 12:20 AM ducasse <stepharo at netcourrier.com> wrote:

> Hi Eliot
> I would like to make some clarifications.
> Preamble:
> --------------
> I was thinking that I should not reply but I think that I have the right
> to clarify a bit because I do not like several points.
> I reply as Stef "the guy that had the vision of Pharo and that spent 10
> years pushing and building Pharo.”
> So I think that it makes me credible enough.

You do not have to defend your credentials.  The community is aware of your

> My points:
> -------------
>         - With you this is always the same: I’m too emotional and it ends
> everything. Stephane is emotional
>         so we cannot communicate with him. You often place yourself as a
> professional and that I’m emotional.
>         Could you stop this little game because to me it starts to be a
> bit boring? Or I will just put a filter and
>         trash systematically your emails.

I do not say "Stephane is emotional so we cannot communicate with him.".  I
do think you let your emotions show too much and that it makes
communication with you difficult.  But more importantly, a leader is more
effective if they can reign in their emotions and not criticize people in
public, and so on.  I mention your emotionality not to denigrate you but to
hope that communication in the community can improve.  You have as much to
gain as anyone, arguably more, from not taking things so personally and
being less emotional.  If we analyze the above statement we see that it is
coercive: stop criticizing my emotionality or I will stop reading your
emails.  One could instead be open: "Why is it that you criticize me as
being emotional?", "Can you give me evidence of me being emotional?" etc.
Instead you open with a defensive position, and with a threat.  If, later
on, having started filtering out my emails, you found you had to respond
again, because we have common interests and those interests cause us to
need to interact, you will put yourself in a weak position having to back
track on your filtering.

        - Last week you told us that time bombing our process was a bad
> idea in an answer about settings
>         keeping references instead of releasing them.

No.  I said that my opinion is that time boxing releases is a bad idea.
This is not about settings, it is about the content of releases. For me, a
release is done when it satisfactorily meets objective release criteria:
tests pass, a subset of new features planned for the release are
functional, etc.  That releasing something that is incomplete or broken
does not help.  I base this on long experience with VisualWorks, Qwaq and

        First this had nothing to do with the problem.
>         You see P7 was delayed because we considered that the system was
> not ready but P7 should be released.
>         May I make the remark that the world is using time-based delivery?

May I make the remark that what others choose to do does not make it right?

>         - About CMake, you may be right that makefile is better than CMake
> but a part of the world is using
>         CMake and the net result is that we lost our effort and
> infrastructure just to follow you. Ronie uses CMake.
>         Igor which I consider as a talented developer used CMake because
> he thought it was the best tool
>         he should use.

Yes, and I disagree about the way that they use it, and for good reason.  I
have defended my use of Makefiles for a long time, for objective reasons.
I have also proposed good ways for using CMake (to derive a
platform-specific header file defining available platform-specific
features).  But my objection to Igor's process was that he generated
sources on each build.  And my objections to Ronie's use of CMake for the
minheadless build are that a) it is slow and b) explicit feature sets are
much better than the implicit feature sets that arise when using CMake.

>         - About infrastructure and process.
>         I wanted to check the REplugin this week end because we should use
> it since the world
>         is using Perl reg-expression and I could not find the code of the
> plugin on github.
>         I saw that some plugin code is not even versioned and only
> available on a strange ftp and it was surprising
>         to me. I’m still surprised that after 3 years (when esteban
> requested that all plugin code are grouped together
>         in a single place, this is still not the case).

Esteban is free to move the code into VMMaker.oscog.  VMMaker.oscog below
to the community.  It is wrong to expect me, a member of that community, to
do all the leg work.  The VM is called opensmalltalk-vm for a reason.

>         - Did it not look strange to you that Esteban left the VM list in
> the past?
>         Esteban looks like a reasonable and stable person to me.

Would you like to expand on this?  I find your sentence vague.  If you have
specifics you would like to address I am open to hearing them.

>         - You are systematically telling to me that I’m offended when
> people criticized us. I’m not offended by critics.
>         We are not offended by critics.
>         We have internal emails that are much more violent about our own
> process.

Wow, that does not sound good.  Surely a discussion over process does not
have to be violent.

>         We are not blind and we reflect on our own process and we invite
> people to REPORT problems.

Do you invite them to discuss problems also?  Is the only avenue by which a
problem can be raised through a bug tracker?  What is the bug that covers
this discussion?

>         Now we ask people to be credible when they do it because we are
> busy
>                 - report situation
>                 - step by step reproducibility
>                 - proportionality of the voice versus the problem
>                 - and not been offensive
>         We did not see any official reports about problems that we may
> have introduced.
>         - You are vocal about “instability". And you report that one
> method changed. Seriously?
>         Are you not exagerating a bit?

My comment comes from the frustration of having prepared a functional
system in Pharo 6 only to find that it no longer works in Pharo 7.  Am I
wrong to feel frustrated?  Would you not also feel frustrated?  Would you
not also want to discuss this?  Would you not also, as the maintainer of a
package upon which Pharo depends, want to have that package well-supported
and n to be one that is frequently broken?

        Let us talk about instability:
>                 - When we talk about instability we talk about the fact
> that we cannot use for real ephemerons
>                 because they corrupt the memory and that we get random
> crash.

Um, I have reached out on numerous occasions for test cases.  I haven't
received a test case or complaint on ephemeris for many months, perhaps
over a year (I will check).  I am very motivated to fix these problems.
Please bring them to my attention on vm-dev.  They will receive prompt
attention.  I love working on this part of the system, ads does Clément.  I
am eager to see ephemeris deployed in Squeak, Pharo and Cuis, especially to
improve file handling, specifically arranging that files are flushed on
close, and that we do not have two copies (one inevitably out of date) of
each file, simply to arrange that file handles are closed on finalization.

>                 - We had instability when we have memory leaks that
> randomly slows down Pharo.

Indeed, and memory leaks are not necessarily caused by the GC, but by
handles to external memory, something that affects Pharo deeply because its
graphics model uses external libraries, and hence requires more careful
interfacing with external libraries, something that would be improved by
having reliable ephemeron support.

I am quite confident that there are no memory leaks in the Spur GC; but I'm
happy to be proved wrong and, along with Clément, who is currently doing
great work on the GC, work that we hope to show a string publication for
very soon, I will be happy to attempt to fix any memory leaks that are the
fault of the GC, and not thin the FFI.

>                 - We had instability which delays our release with a bug
> in FFI that made cairo crash on windows 64 bits.

Yes, there are bugs in the VM. And what's your point?

> If you want to interact with us (and not only me, because I’m the tip of
> the iceberg
> and many people are frustrated by your attitude), let us start with
> positive communication and attitude:
>         - You express your problems and we see how we (together) can fix
> them.

That's what I'm trying to do.

>         - You can contribute by writing tests and by entering bug entries
> in the bug tracker.

I write tests in VMMaker and elsewhere.  Being able to load VMMaker into
Pharo and run the simulator, generate sources, do in-image compilation, and
run its test suites is a significant number of tests. I work principally in
Squeak.  I interact with lots of people in the Pharo community.  I am here,
interacting now.

> About Pharo:
> ————————
> We understand that some people do not like it but we do not force anybody
> use and make business with it.
> Now I want to make something super clear: Pharo will not sacrifice agility
> and improvements on the altar of
> compatibility with Squeak.

I am not asking that the Pharo community do that.  I am asking that the
VMMaker package continue to work from releases to release.  From Pharo 6 to
Pharo 7 that did not happen.

Pharo will change because Pharo is agile and because many things should be
> improved.

and because it has a high-quality VM beneath it that has improved
performance exponentially in the move from interpreter, stack interpreter,
cog v1 and spur, and should continue to do so through Sista.  We are all
working hard to make things better.

We pay real attention about backwards compatibility. Much more than people
> think.
> Because we have many external projects and libraries that we support.
> Now if Pharo is used to build the VM then we will have to find a way to
> pay attention.
> And we will reinvest in building a process that checks this.

Good; thank you.

> Our problem is that integration time cannot take hours and right now
> validating Pharo is
> a bit too long. We will work on it.
> We strongly advocate to invest in tests. Tests are a good mechanisms to
> support evolution.
> If you have tests we can automatically rewrite deprecated methods and we
> will use this more often.
> We finally start to have:
>         - a better compiler and not an ancient one which reported error as
> Morph.
>         - a better architecture, more modular
>         - a real bootstrap (we should improve it and build tools to
> support it - we are working on it)
>         - strong libraries (File, Stream, HTTP) more documented and tested
>         - better tools (Iceberg and Calypso are definitively steps in the
> right direction)
> And we will continue to improve.
> We will iterate on all these to make Pharo even better.
> We are writing more tests to support those changes.

Glad to hear it.  And I'm very much aware of this work and support it
wholeheartedly.  And in the VM we are doing similar things.

> I repeat it: I think that we are doing a pretty good job about the quality
> that we deliver.

I agree.

> Stef

Thank you.

> > On 11 Jan 2019, at 18:54, Eliot Miranda <eliot.miranda at gmail.com> wrote:
> >
> > Hi Stef,
> >
> >> On Jan 10, 2019, at 7:59 AM, ducasse <stepharo at netcourrier.com> wrote:
> >>
> >> Eliot I would like also two points to this.
> >>
> >> - First we asked thomas to write tests about the debugger model and you
> see if they would be tests about methods we could understand
> >> that they are used and control what they do. So we should all thank
> thomas for his energy in this not so easy task.
> >>
> >> - Second it would be nice if you could refrain to be systematically
> negative about what we are doing. I think that our development process
> >> is much better than many others :) It is not perfect because this does
> not exist.
> >> I think that we are doing a great job make Smalltalk cool. And yes it
> may happen that one untested, undocumented method
> >> get lost. I think that we are doing pretty good given the resources we
> have.
> >
> > Even more serious an issue for the Pharo community than a development
> process which fails to support the Ned’s of users is a defensive attitude
> that does not want to discuss serious issues maturely. I bring up the
> stability and backward-portability issue because it is *important*; it has
> affected Clément’s ability to deliver Sista and my and feenk’s efforts to
> support VM development on Pharo.  If your response to my trying to discuss
> seriously and objectively a problem that needs discussion is always to say
> “please don’t be negative” I have even less confidence that Pharo can be a
> realistic platform for my work and the work of others.
> >
> >
> >> Stef
> >>
> >>> On 10 Jan 2019, at 15:11, Eliot Miranda <eliot.miranda at gmail.com>
> wrote:
> >>>
> >>> Hi Thomas,
> >>>
> >>>> On Jan 10, 2019, at 2:24 AM, Thomas Dupriez via Pharo-dev <
> pharo-dev at lists.pharo.org> wrote:
> >>>>
> >>>> <mime-attachment>
> >>>
> >>> in a stack of contexts the active pc is different for the top
> context.  For other than the top context, a context’s pc will be pointing
> after the send that created the context above it, so to find the pc of the
> send one finds the previous pc.  For the top context its pc is the active
> pc.
> >>>
> >>> Typically the debugger is invoked in two different modes, interruption
> or exception. When interrupted, a process is stopped at the next suspension
> point (method entry or backward branch) and the top context in the process
> is the context to be displayed in the debugger.  When an exception occurs
> the exception search machinery will find the signaling context, the context
> that raised the exception, which will be below the search machinery and the
> debugger invocation above that. The active pc of the signaling context will
> be the of for the send of digbsl et al.
> >>>
> >>> So the distinction is important and the utility method is probably
> useful.
> >>>
> >>> Do you want to remove the method simply because there are no senders
> in the image?
> >>>
> >>> If so, this is indicative of a serious problem with the Pharo
> development process.  In the summer I ported VMMaker.oscog to Pharo 6.  Now
> as feenk try and build a VMMaker.oscog image on Pharo 7, the system is
> broken, in part because of depreciations and in part because useful methods
> (isOptimisedBlock (isOptimizedBlock?) in the Opal compiler) have been
> removed.
> >>>
> >>> Just because a method is not in the image does not imply it is not in
> use.  It simply means that it is not in use in the base image.  As the
> system gets modularised this issue will only increase.  There are lots of
> collection methods that exist as a library that are not used in the base
> image and removing them would clearly damage the library for users.  This
> is the case for lots of so-called system code.  There are users out there,
> like those of us in the vm team, who rely on such system code, and it is
> extremely unsettling and frustrating to have that system code change all
> the time.  If Pharo is to be a useful platform to the vm team it has to be
> more stable.
> >>
> >>
> >>

best, Eliot
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.pharo.org/pipermail/pharo-dev_lists.pharo.org/attachments/20190116/0584665c/attachment.html>

More information about the Pharo-dev mailing list