Francois
De : Lester Caine [mailto:lester@lsces.co.uk]
I just saw the reddit where you mention that v0.4 is practically
abandoned now, so I will just renounce my previous mail!DO NOT USE OTHER CHANNELS!
Agreed.
You mean like contacting another contributor in private asking them to
not make a proposal and to stop work on it?
And the RFC was not abandoned at all. I and others have been working almost continuously on a 'compromise' single-mode approach during the last 3 days (and nights), as activity on the list shows with no doubt. So, pretending the RFC to be 'abandoned' is just a way to discard a disagreed work.
Let me quote something that was said:
"Ze'ev and François have not-so-politely asked [Sara] to not put 0.4
forward since they have something they believe they have consensus
on."
So while it may not have been "abandoned", it was sandbagged
(sabotaged, strong-armed, etc). I used abandoned as a light term to
not point out to list what strong-arming happened behind the scenes.
But since you apparently don't want "other channels used"...
I can't stress how deplorable that act is. How harmful to the
community it is to ask in private for a contributor to stop what they
are doing because someone else "has a better idea". We had a proposal
that had consensus (66%). It was withdrawn. With some minor changes,
at least 25% of no-voters would have changed their mind (based on
conversations around why the voted no).
So rather than go for the 70-75% consensus that we know we have,
we should drop all work for a magic vaporware proposal. Contributors
should stand down and not contribute because "you know better".
I'm sorry, I favor the proposal that's in writing and implemented
rather than one that's yet to be seen. If yours does indeed prove to
be as good as possible, then the votes will decide. Or if it convinces
me early enough, I'll withdraw the current proposal. But based on
everything I've seen in the discussion threads, I can't possibly see
how that will happen. I hope you surprise me, but in case that you
don't, I'm moving forward with the existing implementation that we
know has support.
As long as she does not officially gives up (posting to the list), I'll keep considering Sara still has the lead on scalar type hinting. If she officially gives up, I'll immediately propose to take it over and, if we are several to want it, we'll discuss.
I created a forked RFC. You can keep her as lead all you want, that
doesn't mean I can't move forward with my RFC.
That's the rule and I encourage list members to explicitly show their support to the formal process we all agreed upon.
What rule is that? Can you point me to anywhere in the Voting RFC that
says that? https://wiki.php.net/rfc/voting
It doesn't.
That's fine. Let's let the votes decide rather than relying on strongarming.
For the rest, Lester summarized quite well my view about designing PHP for static analysis, instead of static analysis for PHP ;)
Saying a problem doesn't exist doesn't make it go away.
Anthony
-----Original Message-----
From: Anthony Ferrara [mailto:ircmaxell@gmail.com]
Sent: Thursday, February 19, 2015 3:24 PM
To: francois@php.net
Cc: Lester Caine; internals@lists.php.net
Subject: [PHP-DEV] Using Other Channels (was Scalar Type Declarations
v0.5)Let me quote something that was said:
"Ze'ev and François have not-so-politely asked [Sara] to not put 0.4
forward
since they have something they believe they have consensus on."
Anthony,
Please stop this. I have been in touch with Sara, yes, but it was
absolutely and 100% polite, which I'm sure she'll confirm if you ask her. I
can't speak for François as I wasn't a part of whatever correspondence they
had between them.
And no, quoting someone else instead of you making that statement and
doesn't make it any better.
So while it may not have been "abandoned", it was sandbagged (sabotaged,
strong-armed, etc). I used abandoned as a light term to not point out to
list
what strong-arming happened behind the scenes.
But since you apparently don't want "other channels used"...I can't stress how deplorable that act is. How harmful to the community it
is
to ask in private for a contributor to stop what they are doing because
someone else "has a better idea".
Strong-arming, sabotaging... Absolute nonsense, and offending nonsense at
that. I, for one, didn't ask her to stop what she was doing. I try to get
her opinion of an alternative which I - and many others - believe is better.
I'll let her decide whether she wants to disclose her reply, but I can quote
her public tweet, which I'm sure you've seen:
"@ircmaxell @andrerom @trevorsuarez @zeevs @rasmus ftr, I'm deferring to a
couple of other proposals on the table. Doesn't need to be mine."
There's absolutely nothing deplorable about talking to Sara off list. As I
told her in my email, I wanted to first gauge her opinion about that
proposal and see if she was willing to support it. I did not push her to
abandon v0.4.
To be clear, the proposal you're pushing as v0.5 is very different from what
she had in mind for v0.4, based on the initial discussions on internals.
She was trying to listen in to issues and come up with substantial changes
to the v0.3 RFC to radically increase the consensus around it. v0.5, on the
other hand, is, for the most part, v0.3 with opinionated, discussionless
explanations of why it's absolutely fine to keep as-is.
We had a proposal that had consensus
(66%). It was withdrawn.
66% is not consensus. It's a form of special majority but by any stretch
absolutely not consensus in any definition of the word.
I'm not going to refer to your guesstimates you have about your ability to
reach consensus with slight modifications to the proposal, but I can say
that I know there are at least a few people that voted yes, and in light of
the new proposal that's forming up would now vote no, preferring that new
option.
Zeev
Zeev,
-----Original Message-----
From: Anthony Ferrara [mailto:ircmaxell@gmail.com]
Sent: Thursday, February 19, 2015 3:24 PM
To: francois@php.net
Cc: Lester Caine; internals@lists.php.net
Subject: [PHP-DEV] Using Other Channels (was Scalar Type Declarations
v0.5)Let me quote something that was said:
"Ze'ev and François have not-so-politely asked [Sara] to not put 0.4
forward
since they have something they believe they have consensus on."Anthony,
Please stop this. I have been in touch with Sara, yes, but it was
absolutely and 100% polite, which I'm sure she'll confirm if you ask her. I
can't speak for François as I wasn't a part of whatever correspondence they
had between them.
And no, quoting someone else instead of you making that statement and
doesn't make it any better.
That was a quote directly from Sara in a public chat room. It wasn't
"someone else".
So it seems like there was a failure in communication if you felt that
it was 100% polite, and she described it as "not-so-politely".
To be clear, the proposal you're pushing as v0.5 is very different from what
she had in mind for v0.4, based on the initial discussions on internals.
She was trying to listen in to issues and come up with substantial changes
to the v0.3 RFC to radically increase the consensus around it. v0.5, on the
other hand, is, for the most part, v0.3 with opinionated, discussionless
explanations of why it's absolutely fine to keep as-is.
Correct. v0.5 is very much in line with 0.3. Because many have been
asking for it. Because I truely believe that the discussions that were
happening around 0.4 and the other proposals have been moving further
away from a good consensus rather than towards it.
So I saw what I believe is a good proposal, and moved forward with it,
tweaking the few things that I thought had to be tweaked.
We had a proposal that had consensus
(66%). It was withdrawn.66% is not consensus. It's a form of special majority but by any stretch
absolutely not consensus in any definition of the word.
I'm not going to refer to your guesstimates you have about your ability to
reach consensus with slight modifications to the proposal, but I can say
that I know there are at least a few people that voted yes, and in light of
the new proposal that's forming up would now vote no, preferring that new
option.
Then that's great! But let's find that out by voting rather than
guessing, and rather than politicking. Let's let two competing
proposals go head to head.
Anthony
-----Original Message-----
From: Anthony Ferrara [mailto:ircmaxell@gmail.com]
Sent: Thursday, February 19, 2015 4:04 PM
To: Zeev Suraski
Cc: internals@lists.php.net
Subject: Re: [PHP-DEV] Using Other Channels (was Scalar Type Declarations
v0.5)Zeev,
That was a quote directly from Sara in a public chat room. It wasn't
"someone else".So it seems like there was a failure in communication if you felt that it
was
100% polite, and she described it as "not-so-politely".
Ouch. I'm really not sure why she felt that way. I'll follow up with her
to try and understand.
Then that's great! But let's find that out by voting rather than guessing,
and
rather than politicking. Let's let two competing proposals go head to
head.
I'd rather find out by first discussing the alternative, rather than just
moving ahead to a revote - especially a revote that was placed on a
shortened timeline - given the importance of this RFC. But as you clearly
disagree, it's your call to make and I respect that.
Zeev
Zeev,
Then that's great! But let's find that out by voting rather than guessing,
and
rather than politicking. Let's let two competing proposals go head to
head.I'd rather find out by first discussing the alternative, rather than just
moving ahead to a revote - especially a revote that was placed on a
shortened timeline - given the importance of this RFC. But as you clearly
disagree, it's your call to make and I respect that.
With all due respect, we've been discussing this for literally 5 years
since Ilia's commit into 5.4 was reverted:
http://marc.info/?l=php-internals&m=127454069030304&w=2
I've personally gone through several iterations of it including
associated discussion.
For this proposal (v0.5), I think the time for fundamental behavior
discussion is over. Some disagree, sure. But we've never required 100%
consensus before, why start now? I am asking for discussion on the
finer points. And indeed some minor modifications have been made. And
I'm open to making them. Hence why I specifically asked in the
announcement on list that if people disagree they should explain why
(from a technical level).
I personally don't see how a new proposal can fit better than this
one, hence why I am moving forward with it. Show me, in writing, in an
RFC, how your proposal is better, and I'll gladly withdraw (or delay)
this proposal. But short of that, I don't think it's fair to say
"first discussing the alternative".
This topic has been discussed to death in circles over the past
several years. You're involved now. Awesome. Show me why your proposal
is better rather than trying to just tell me to stop or pause. Show
the result of the discussion.
Thanks
Anthony
-----Original Message-----
From: Anthony Ferrara [mailto:ircmaxell@gmail.com]
Sent: Thursday, February 19, 2015 4:24 PM
To: Zeev Suraski
Cc: internals@lists.php.net
Subject: Re: [PHP-DEV] Using Other Channels (was Scalar Type Declarations
v0.5)Zeev,
This topic has been discussed to death in circles over the past several
years.
You're involved now. Awesome. Show me why your proposal is better rather
than trying to just tell me to stop or pause. Show the result of the
discussion.
I already said I respect your decision, even if I disagree with it. Holding
absolutely no grudge. The key tenets of the proposal that's being worked on
have already been shared on internals. Without putting words in your mouth,
based on the feedback you've provided over the last few days I don't have
high hopes that you personally would find it better, but I'm hoping many
others would. The formal RFC takes a bit more time to phrase, but I hope
we'll be able to finish the first version today or tomorrow.
Thanks,
Zeev
Zeev,
Based on Sara's clarification in this thread, I owe you a formal
apology. I interpreted something she said incorrectly, which was then
compounded by messages in private and on-list this morning. I then
attributed both of you qualities and motives that have been proven
false.
For this, I am sorry for any implication or direct acquisition that I
made against you.
I do believe that the best way forward is parallel proposals, as I
believe that we have different goals. So I look forward to seeing
yours, and will continue forward with mine. Hopefully this differing
of opinion can be rectified before too long.
Thanks,
Anthony
-----Original Message-----
From: Anthony Ferrara [mailto:ircmaxell@gmail.com]
Sent: Thursday, February 19, 2015 4:04 PM
To: Zeev Suraski
Cc: internals@lists.php.net
Subject: Re: [PHP-DEV] Using Other Channels (was Scalar Type Declarations
v0.5)Zeev,
That was a quote directly from Sara in a public chat room. It wasn't
"someone else".So it seems like there was a failure in communication if you felt that it
was
100% polite, and she described it as "not-so-politely".Ouch. I'm really not sure why she felt that way. I'll follow up with her
to try and understand.Then that's great! But let's find that out by voting rather than guessing,
and
rather than politicking. Let's let two competing proposals go head to
head.I'd rather find out by first discussing the alternative, rather than just
moving ahead to a revote - especially a revote that was placed on a
shortened timeline - given the importance of this RFC. But as you clearly
disagree, it's your call to make and I respect that.Zeev
Zeev,
Based on Sara's clarification in this thread, I owe you a formal
apology. I interpreted something she said incorrectly, which was then
compounded by messages in private and on-list this morning. I then
attributed both of you qualities and motives that have been proven
false.For this, I am sorry for any implication or direct acquisition that I
made against you.
Apology accepted! No worries.
I do believe that the best way forward is parallel proposals, as I
believe that we have different goals. So I look forward to seeing
yours, and will continue forward with mine. Hopefully this differing
of opinion can be rectified before too long.
Me too!
Thanks,
Zeev
-----Original Message-----
From: Anthony Ferrara [mailto:ircmaxell@gmail.com]
Sent: Thursday, February 19, 2015 3:24 PM
To: francois@php.net
Cc: Lester Caine; internals@lists.php.net
Subject: [PHP-DEV] Using Other Channels (was Scalar Type Declarations
v0.5)Let me quote something that was said:
"Ze'ev and François have not-so-politely asked [Sara] to not put 0.4
forward
since they have something they believe they have consensus on."Anthony,
Please stop this. I have been in touch with Sara, yes, but it was
absolutely and 100% polite, which I'm sure she'll confirm if you ask her. I
can't speak for François as I wasn't a part of whatever correspondence they
had between them.
And no, quoting someone else instead of you making that statement and
doesn't make it any better.
Zeev,
You are smart enough to understand what has been said here.
We have seen off list discussions or pressures many times in the
pasts. I have (other too but I can only talk for myself) been said an
insane amount of times to stop private discussions, for anything
related to php core. There is no exception to this rule. I repeat:
There is NO exception to this rule.
This is what killed cooperation, it was what make PHPNG a bad thing to
begin with, no matter the promises it brought. While we got over it
and push it forward in the meantime, trying to stay positive.
The bad thing with the acceptance of it is that you may feel that what
has been done and how it has been done is all good. That the community
does not care. let me tell you, I do care. And many do. What happened
and is still happening damage the core communities around PHP.
Feel free to ignore this message, but that does not make any of the
recent events look better. And expect an open letter soon.
Cheers,
Pierre
-----Original Message-----
From: Pierre Joye [mailto:pierre.php@gmail.com]
Sent: Thursday, February 19, 2015 4:09 PM
To: Zeev Suraski
Cc: Anthony Ferrara; PHP internals
Subject: Re: [PHP-DEV] Using Other Channels (was Scalar Type Declarations
v0.5)We have seen off list discussions or pressures many times in the pasts. I
have
(other too but I can only talk for myself) been said an insane amount of
times
to stop private discussions, for anything related to php core. There is no
exception to this rule. I repeat:
There is NO exception to this rule.
I disagree. Completely.
I think 1:1 or group discussions are completely legitimate, and they're not
only legitimate - they can be very productive.
There's a huge gap between making decisions in closed groups, or doing 'arm
bending' - and private discussions, which I repeat, are completely
legitimate.
Private discussions happen all the time, in countless mediums. Conferences,
emails, IRC (public in theory, private in practice), Twitter DMs and more.
There's absolutely nothing wrong with discussing an idea directly with one
or more people before bugging thousands of people with it. They'd all be
better served if the idea presented to them already had a slightly more than
just one person standing behind it (which is an inherent side effect of
barring private discussions as you suggest), and had some of the initial
issues weeded out. Now, if such ideas are presented as a final dictation
with no opportunity to discuss them - that's is in fact problematic,
although ultimately, there's always the bar of the vote. Regardless, this
isn't the case here.
Zeev
-----Original Message-----
From: Pierre Joye [mailto:pierre.php@gmail.com]
Sent: Thursday, February 19, 2015 4:09 PM
To: Zeev Suraski
Cc: Anthony Ferrara; PHP internals
Subject: Re: [PHP-DEV] Using Other Channels (was Scalar Type Declarations
v0.5)We have seen off list discussions or pressures many times in the pasts. I
have
(other too but I can only talk for myself) been said an insane amount of
times
to stop private discussions, for anything related to php core. There is no
exception to this rule. I repeat:
There is NO exception to this rule.I disagree. Completely.
I did not expect you to agree. I would be surprised if you do.
I think 1:1 or group discussions are completely legitimate, and they're not
only legitimate - they can be very productive.There's a huge gap between making decisions in closed groups, or doing 'arm
bending' - and private discussions, which I repeat, are completely
legitimate.
Private discussions happen all the time, in countless mediums. Conferences,
emails, IRC (public in theory, private in practice), Twitter DMs and more.There's absolutely nothing wrong with discussing an idea directly with one
or more people before bugging thousands of people with it. They'd all be
better served if the idea presented to them already had a slightly more than
just one person standing behind it (which is an inherent side effect of
barring private discussions as you suggest), and had some of the initial
issues weeded out.
To discuss at an idea or concept at events and co? Indeed. We all do
that. The difference is how to move it to a group discussions and grab
other people thoughts to actually get it done, with consensus. The
latter part is totally absent using your process.
Discussing, working, implementing something for weeks or months
privately? NDA and all that? Sorry, this is not the PHP I want.
Weeding out the initial issues? I wonder which magic you use to be
able to figure out all issues based on the experiences or thoughts of
a couple of people. It does not work. What you say is that a very
small group is able to pin point the perfect proposal better than
actually discussing it on the open channels. This is wrong in so many
ways.
Cheers,
Pierre
2015-02-19 16:51 GMT+02:00 Pierre Joye pierre.php@gmail.com:
-----Original Message-----
From: Pierre Joye [mailto:pierre.php@gmail.com]
Sent: Thursday, February 19, 2015 4:09 PM
To: Zeev Suraski
Cc: Anthony Ferrara; PHP internals
Subject: Re: [PHP-DEV] Using Other Channels (was Scalar Type
Declarations
v0.5)We have seen off list discussions or pressures many times in the pasts.
I
have
(other too but I can only talk for myself) been said an insane amount of
times
to stop private discussions, for anything related to php core. There is
no
exception to this rule. I repeat:
There is NO exception to this rule.I disagree. Completely.
I did not expect you to agree. I would be surprised if you do.
I think 1:1 or group discussions are completely legitimate, and they're
not
only legitimate - they can be very productive.There's a huge gap between making decisions in closed groups, or doing
'arm
bending' - and private discussions, which I repeat, are completely
legitimate.
Private discussions happen all the time, in countless mediums.
Conferences,
emails, IRC (public in theory, private in practice), Twitter DMs and
more.There's absolutely nothing wrong with discussing an idea directly with
one
or more people before bugging thousands of people with it. They'd all be
better served if the idea presented to them already had a slightly more
than
just one person standing behind it (which is an inherent side effect of
barring private discussions as you suggest), and had some of the initial
issues weeded out.To discuss at an idea or concept at events and co? Indeed. We all do
that. The difference is how to move it to a group discussions and grab
other people thoughts to actually get it done, with consensus. The
latter part is totally absent using your process.Discussing, working, implementing something for weeks or months
privately? NDA and all that? Sorry, this is not the PHP I want.Weeding out the initial issues? I wonder which magic you use to be
able to figure out all issues based on the experiences or thoughts of
a couple of people. It does not work. What you say is that a very
small group is able to pin point the perfect proposal better than
actually discussing it on the open channels. This is wrong in so many
ways.Cheers,
Pierre--
I think this starts to go the route of putting things into absolute. Ideal
things tend not to happen/work in the real world to the letter.
Some things just don't work out by themselves. The Type Hinting RFC's are
an anomaly in the regular PHP Core workflow and need some creative
handling. My personal view is that the RFC requires a mediator - the
person. who is more or less impartial to what type of hints get into PHP
and is able to handle communications between groups and bring them
together. RFC needs a triage. It needs someone to make a game plan and
implement it. Not someone developing one or the other proposal, but a
strictly managing entity. Because the further we go, the more things are
need to be taken care of. I believe the Type Hint project reached the
point, where it can't be handled by a single person. It touches into some
other RFC's in one or the other way, sometimes maybe requiring some
adjustments in the related RFC or the type hints itself.
Also, whatever way it goes at this point, the RFC's are not going to make
into 7.0 if we follow the release process properly. So, there needs some
decision making to happen considering the PHP itself, like reserving
keywords for 7.0, doing typehints for 7.1 and stuff alike.
Maybe it does not look like I have described it from inside, but from the
side it looks like a disaster is brewing and it's gonna blow any second now
leading to rushed decisions that may screw up things. I saw similar
situations a few times in my carrier and I certainly have that feel right
now. I'd give it 50/50 chance that something will go wrong here.
On Thu, Feb 19, 2015 at 7:11 AM, Arvids Godjuks
arvids.godjuks@gmail.com wrote:
I think this starts to go the route of putting things into absolute. Ideal
things tend not to happen/work in the real world to the letter.Some things just don't work out by themselves. The Type Hinting RFC's are an
anomaly in the regular PHP Core workflow and need some creative handling.
No it is not an anomaly but a standard way for some since too long.
And we need to fix this.
2015-02-19 17:14 GMT+02:00 Pierre Joye pierre.php@gmail.com:
On Thu, Feb 19, 2015 at 7:11 AM, Arvids Godjuks
arvids.godjuks@gmail.com wrote:I think this starts to go the route of putting things into absolute.
Ideal
things tend not to happen/work in the real world to the letter.Some things just don't work out by themselves. The Type Hinting RFC's
are an
anomaly in the regular PHP Core workflow and need some creative handling.No it is not an anomaly but a standard way for some since too long.
And we need to fix this.
I meant it in a way that no other RFC has failed so many times or had so
much misunderstanding or divide.
Sometimes it is required to ditch the preferences of people and do stuff
for the greater good. Right now I see most people (not all) pushing their
own agendas not really giving a damn over the big picture, the timeline and
the fact that at this moment RFC already too late for 7.0 according to the
Release Process RFC - they cannot be discussed and voted before the feature
freeze. Yes, it can be pushed rather easily, but it means breaking the
release process RFC again. See the pattern here?
And we have the 0.4 version still being made, so it means it will be out
for discussion probably next week. Or may not.
Arvids,
I meant it in a way that no other RFC has failed so many times or had so
much misunderstanding or divide.
No scalar type proposal has made it through a vote. So none of them
have technically failed (all except the current one were withdrawn).
Sometimes it is required to ditch the preferences of people and do stuff
for the greater good. Right now I see most people (not all) pushing their
own agendas not really giving a damn over the big picture, the timeline and
the fact that at this moment RFC already too late for 7.0 according to the
Release Process RFC - they cannot be discussed and voted before the feature
freeze. Yes, it can be pushed rather easily, but it means breaking the
release process RFC again. See the pattern here?
Well, 0.5, as a minor tweak on 0.3 could (by the RFC process) go to
vote on the 25th. Which would end on the 11th. A full 4 days before
freeze. Without breaking the release process.
However, I would be happy to target 7.1 even if the vote passes prior
to freeze (assuming an RFC to reserve the scalar type names is
proposed and passes, otherwise 8.0).
My reason for pushing for the vote is not to get it into 7, but to get
it over with. We've been discussing these proposals for years. We have
one that came extremely close to passing (save for a few minor issues
people voted no to, which are now fixed). Let's get it behind us.
And we have the 0.4 version still being made, so it means it will be out
for discussion probably next week. Or may not.
No, it's not being made. See the first post to this thread.
Anthony
2015-02-19 17:41 GMT+02:00 Anthony Ferrara ircmaxell@gmail.com:
Arvids,
I meant it in a way that no other RFC has failed so many times or had so
much misunderstanding or divide.No scalar type proposal has made it through a vote. So none of them
have technically failed (all except the current one were withdrawn).
Technically - agreed, but overall you can see how it may be considered as
"failed" :)
Sometimes it is required to ditch the preferences of people and do stuff
for the greater good. Right now I see most people (not all) pushing their
own agendas not really giving a damn over the big picture, the timeline
and
the fact that at this moment RFC already too late for 7.0 according to
the
Release Process RFC - they cannot be discussed and voted before the
feature
freeze. Yes, it can be pushed rather easily, but it means breaking the
release process RFC again. See the pattern here?Well, 0.5, as a minor tweak on 0.3 could (by the RFC process) go to
vote on the 25th. Which would end on the 11th. A full 4 days before
freeze. Without breaking the release process.However, I would be happy to target 7.1 even if the vote passes prior
to freeze (assuming an RFC to reserve the scalar type names is
proposed and passes, otherwise 8.0).My reason for pushing for the vote is not to get it into 7, but to get
it over with. We've been discussing these proposals for years. We have
one that came extremely close to passing (save for a few minor issues
people voted no to, which are now fixed). Let's get it behind us.
At this point my main concern is the fact that it's going to be rushed.
Rushed means mistakes, things overlooked and timeline getting shifted like
with 5.6. The overall picture (maybe i'm thinking like a RM here).
And we have the 0.4 version still being made, so it means it will be out
for discussion probably next week. Or may not.No, it's not being made. See the first post to this thread.
Anthony
I read the mails and my feeling is that something is brewing between Sara,
Zeev and Francois. At least that's my impression, that people are working
and they will have something to show. I never saw a direct "we are dropping
it", just a vague "it's essentially dead" addressed directly to me by
Francois and after that he started to be even more active. So, all
indications, something's happening :)
-----Original Message-----
From: Pierre Joye [mailto:pierre.php@gmail.com]
Sent: Thursday, February 19, 2015 4:52 PM
To: Zeev Suraski
Cc: PHP internals
Subject: Re: [PHP-DEV] Using Other Channels (was Scalar Type Declarations
v0.5)To discuss at an idea or concept at events and co? Indeed. We all do that.
The difference is how to move it to a group discussions and grab other
people thoughts to actually get it done, with consensus. The latter part
is
totally absent using your process.
What exactly are we discussing here? My email to Sara yesterday? Or your
gripes with how PHPNG was handled?
I have no intention to discuss the latter, as it's been beaten to death ages
ago; And everything you're bringing up appears to be completely
disconnected to the former, which was supposedly the trigger to your email.
If it's just an excuse to reopen the PHPNG discussion, I'm not going to play
along with it.
Focusing on my email to Sara (and several others), there is NOTHING, nothing
wrong with a bit of private communications trying to gauge support,
opposition, gaps and sort out differences before going for a public
discussion. Personally I think it's ridiculous to suggest otherwise, and
it's completely equivalent to the stuff you stated 'we all do'. But
obviously you're entitled to a different opinion, including one that thinks
my position is ridiculous.
Thanks,
Zeev
-----Original Message-----
From: Pierre Joye [mailto:pierre.php@gmail.com]
Sent: Thursday, February 19, 2015 4:52 PM
To: Zeev Suraski
Cc: PHP internals
Subject: Re: [PHP-DEV] Using Other Channels (was Scalar Type Declarations
v0.5)To discuss at an idea or concept at events and co? Indeed. We all do that.
The difference is how to move it to a group discussions and grab other
people thoughts to actually get it done, with consensus. The latter part
is
totally absent using your process.What exactly are we discussing here? My email to Sara yesterday? Or your
gripes with how PHPNG was handled?
I have no intention to discuss the latter, as it's been beaten to death ages
ago; And everything you're bringing up appears to be completely
disconnected to the former, which was supposedly the trigger to your email.
If it's just an excuse to reopen the PHPNG discussion, I'm not going to play
along with it.
I am discussion how things should ideally done. I use examples to show
why what is currently becoming or already is a standard way to do
things is actually causing arms to the project as a whole.
Focusing on my email to Sara (and several others), there is NOTHING, nothing
wrong with a bit of private communications trying to gauge support,
opposition, gaps and sort out differences before going for a public
discussion. Personally I think it's ridiculous to suggest otherwise, and
it's completely equivalent to the stuff you stated 'we all do'. But
obviously you're entitled to a different opinion, including one that thinks
my position is ridiculous.
I have made my point clear and the recent events show me that I am
right to stick to my point, stubbornly and honestly. Nothing you can
say will make me think that any of these things were totally fine to
be handled this way. So let spare our bored readers some time and
bandwidth: I am done with this discussion here.
Cheers,
Pierre
@pierrejoye | http://www.libgd.org
Focusing on my email to Sara (and several others), there is NOTHING, nothing
wrong with a bit of private communications trying to gauge support,
opposition, gaps and sort out differences before going for a public
discussion.
My original comment was on the basis that we have had too much 'we
agreed on list X' and I think a lot of the underlying discussion while
voluminous here has lost some of the critical fine detail ... because it
has not been copied here. Currently 0.4 and 0.5 versions are still being
discussed, but neither relax the weak/strict debate which is apparently
so essential in other forums?
--
Lester Caine - G8HFL
Contact - http://lsces.co.uk/wiki/?page=contact
L.S.Caine Electronic Services - http://lsces.co.uk
EnquirySolve - http://enquirysolve.com/
Model Engineers Digital Workshop - http://medw.co.uk
Rainbow Digital Media - http://rainbowdigitalmedia.co.uk
Hi!
So rather than go for the 70-75% consensus that we know we have,
How we magically know that? We have the (unfinished) vote, which has a
tiny bit over 66% for the proposal. Where 75% comes from?
Saying a problem doesn't exist doesn't make it go away.
Except if it really doesn't exist, so there's nothing to go away :)
Saying "static analysis" a hundred times doesn't magically makes it a
strong argument when nobody showed that it's impossible or even much
harder without it (many claimed that, but I so far have seen very
little substantiation for these claims).
Stas Malyshev
smalyshev@gmail.com
Stas,
Hi!
So rather than go for the 70-75% consensus that we know we have,
How we magically know that? We have the (unfinished) vote, which has a
tiny bit over 66% for the proposal. Where 75% comes from?
Based on the no reasons that people presented, and some back-of-envelope math.
Basically, it seemed like there were three reasons people voted no:
- They don't like strict (Zeev, etc)
- They don't like weak (Sebastian, etc)
- They don't like declare() + int->float issue (Levi, Daniel, etc)
My view was it seemed to be approximately an even split. So if we
assume that, then 33% of the no-voters (approximately) would vote yes
for 0.5 since declare is fixed.
66% + (34% * 33%) == 77%
I rounded down (saying 70-75). And considering that I've talked to at
least 5 people who've said that they would explicitly change from no
to yes for the proposed v0.5, that would be 71%.
Sure, some people may change yes to no. And people may not vote this
time who voted last time. The only way to know for sure is a vote.
Which is why I'm bringing it to a vote. I wouldn't be doing this if I
didn't think it would pass.
Saying a problem doesn't exist doesn't make it go away.
Except if it really doesn't exist, so there's nothing to go away :)
Saying "static analysis" a hundred times doesn't magically makes it a
strong argument when nobody showed that it's impossible or even much
harder without it (many claimed that, but I so far have seen very
little substantiation for these claims).
As someone who's built a static analyzer for PHP, I can say that it is
much harder without strict typing.
The reason is, with strict typing you only need to deal with 8
possible states for every variable (int, float, bool, resource, array,
object, callable, null and string). And many of those states you can
eliminate based on context (you know an argument passed to an int
declared parameter will always be an int).
Without strict typing, you also need to consider virtual states:
castable object (internally implementing get()), stringable object
(implementing __tostring), numeric string ("123"), kind-of numeric
string ("123 abc"), etc. And many of those states can't be
eliminated based on context.
So if a static analysis engine models an application as a graph of
potential state changes, the number of edges goes up exponentially
when you can't eliminate possible variable states. So a lot of work
goes into inferring the possible states involved.
An example is that ($a + $b) we know can never produce a string. We
know it can never produce a bool, resource, array, callable or null.
The only things it can produce is an object, an int or a float. So if
we see expressions of the form $c = ($a + $b)
, we can immediately
deduce something about $c and therefore reduce the number of possible
states.
With strict typing, if we then pass $c to a function expecting int, we
know that C must be an int. Which means that $a and $b therefore
must be castable to an integer (otherwise an error will be thrown
down the road). So we've just reduced $a down to 5 types: int, numeric
string, null, bool and castable object (from at least 12). And $b the
same. So our expression has 10 possible valid (non-error-case)
permutations. Down from the approximately 432 possibilities before
hand (12 for $a, 12 for $b, 3 for $c). And that's with unknown $a and
unknown $b.
The only static analysis engine I've come across that does this for
dynamic types is Klee (LLVM project).
With strictly typed $a and $b, the expression drops to 1 possible
permutation. And you can detect if it's a valid one. And many static
analysis engines do this.
It's not that static analysis is impossible without strict typing.
It's that it gets drastically easier. Both in terms of processing
power, and in terms of edge-cases that you need to support.
Does that substantiate the claim? If not, I'm definitely open to
discussing it further.
Anthony
Hi!
Based on the no reasons that people presented, and some back-of-envelope math.
That is not "knowing", much less "knowing". That is a guess based on
an estimate and set of assumptions, some of which very well may be wrong
(such as, people can have more than one reason to vote no).
The reason is, with strict typing you only need to deal with 8
possible states for every variable (int, float, bool, resource, array,
object, callable, null and string). And many of those states you can
eliminate based on context (you know an argument passed to an int
declared parameter will always be an int).
This is possible with coercive typing too, if the argument is declared
int then it will be coerced to int.
Without strict typing, you also need to consider virtual states:
castable object (internally implementing get()), stringable object
(implementing __tostring), numeric string ("123"), kind-of numeric
string ("123 abc"), etc. And many of those states can't be
eliminated based on context.
I don't see why you don't need to consider them anyway - if your
analyzer cares about ability of the object to be casted to a string,
you'd have to carry this information anyway - for use in (string), echo,
"$foo", internal functions, etc. So again no advantage here.
An example is that ($a + $b) we know can never produce a string. We
know it can never produce a bool, resource, array, callable or null.
The only things it can produce is an object, an int or a float. So if
we see expressions of the form$c = ($a + $b)
, we can immediately
deduce something about $c and therefore reduce the number of possible
states.
This is right, but no advantage to strict typing here, this is true
under any typing model.
With strict typing, if we then pass $c to a function expecting int, we
know that C must be an int. Which means that $a and $b therefore
That seems to be an incorrect assumption - passing something to function
asking for an int doesn't mean it is an int. It means that inside
function it would be int or fail happens, but that is achieved with
coercive typing too, so no advantage to strict typing here. Of course,
since we already know $c is an int or a float or an object, no
additional information here is obtained, and we do not know anything
about $c itself - we only know the "A->B" is true but we don't know
whether A is true and thus not whether B is true.
must be castable to an integer (otherwise an error will be thrown
down the road). So we've just reduced $a down to 5 types: int, numeric
string, null, bool and castable object (from at least 12). And $b the
Yes, after the expression is done and if it did not error out, we can
deduce some things about $a's value after the expression. But we have
no guarantees the expression would succeed and no advantage to string
typing which does not come into play here at all.
same. So our expression has 10 possible valid (non-error-case)
permutations. Down from the approximately 432 possibilities before
hand (12 for $a, 12 for $b, 3 for $c). And that's with unknown $a and
unknown $b.
Still don't see any advantage to strict typing here. Deduction about the
behavior of + can be made without any strict typing involved, as far as
I can see.
With strictly typed $a and $b, the expression drops to 1 possible
permutation. And you can detect if it's a valid one. And many static
analysis engines do this.
I didn't see any proposal that proposes strictly types variables. As for
parameters, both strict and coercive typing provide knowledge about the
types of parameter inside the function they are defined in, so no
advantage to strict typing here.
It's not that static analysis is impossible without strict typing.
It's that it gets drastically easier. Both in terms of processing
It may be so, but yet again it was not demonstrated.
Does that substantiate the claim? If not, I'm definitely open to
discussing it further.
So far I did not see any substantiation, unless I have not understood
what your analyzer is doing.
Stas Malyshev
smalyshev@gmail.com
Stas,
The reason is, with strict typing you only need to deal with 8
possible states for every variable (int, float, bool, resource, array,
object, callable, null and string). And many of those states you can
eliminate based on context (you know an argument passed to an int
declared parameter will always be an int).This is possible with coercive typing too, if the argument is declared
int then it will be coerced to int.
At the function border, yes. But not beyond that.
Without strict typing, you also need to consider virtual states:
castable object (internally implementing get()), stringable object
(implementing __tostring), numeric string ("123"), kind-of numeric
string ("123 abc"), etc. And many of those states can't be
eliminated based on context.I don't see why you don't need to consider them anyway - if your
analyzer cares about ability of the object to be casted to a string,
you'd have to carry this information anyway - for use in (string), echo,
"$foo", internal functions, etc. So again no advantage here.An example is that ($a + $b) we know can never produce a string. We
know it can never produce a bool, resource, array, callable or null.
The only things it can produce is an object, an int or a float. So if
we see expressions of the form$c = ($a + $b)
, we can immediately
deduce something about $c and therefore reduce the number of possible
states.
With strict typing, if we then pass $c to a function expecting int, we
know that C must be an int. Which means that $a and $b thereforeThat seems to be an incorrect assumption - passing something to function
asking for an int doesn't mean it is an int. It means that inside
function it would be int or fail happens, but that is achieved with
coercive typing too, so no advantage to strict typing here. Of course,
since we already know $c is an int or a float or an object, no
additional information here is obtained, and we do not know anything
about $c itself - we only know the "A->B" is true but we don't know
whether A is true and thus not whether B is true.
Sort-of correct. We don't know if A is true, but we know what
conditions need to exist for A->B to be true. We know that A can be
any value. It could be a float. But that would lead to an error down
the road when the sum is passed to the function typing for an int.
Therefore, by knowing $c is passed to a function expecting an int, we
have information about stable states for $a and $b which would result
in a stable state for $c.
With strict mode, then we can work backwards and see that if $a is set
to 3.5, that we know that it's not a stable state (because at best an
error will be created).
With coercive typing (weak), you can't work backwards there because
3.5 + 1.5 is 5.0 which would be acceptable for an int hint. So you
have a LOT more possibilities to contend with.
This isn't so much about proving an application correct as it is about
proving information about the stable (non-error) states of the
program.
So with coercive typing (weak), the ability to detect errors and prove
stable states of the application is reduced and requires significantly
more computation.
must be castable to an integer (otherwise an error will be thrown
down the road). So we've just reduced $a down to 5 types: int, numeric
string, null, bool and castable object (from at least 12). And $b theYes, after the expression is done and if it did not error out, we can
deduce some things about $a's value after the expression. But we have
no guarantees the expression would succeed and no advantage to string
typing which does not come into play here at all.
I'm talking about using the static analyzer to prove properties of the
stable (non-error) state. Yes, at runtime you only know things about
$a after the expression. But at static time, we can prove based on
what we know of $c, the acceptable input states that could possibly
lead to a stable state. Yes, you can generate errors. But the entire
point of static analysis is to detect the possibility of these errors
ahead of time rather than at runtime.
same. So our expression has 10 possible valid (non-error-case)
permutations. Down from the approximately 432 possibilities before
hand (12 for $a, 12 for $b, 3 for $c). And that's with unknown $a and
unknown $b.Still don't see any advantage to strict typing here. Deduction about the
behavior of + can be made without any strict typing involved, as far as
I can see.
But we're talking about much more than the behavior of one operation.
We're talking about the behavior of the entire set of function calls
around it (and the flow of type information based on these predictable
operations). So while + itself has no advantage from strict types,
passing the result to a function expecting an integer does give you a
lot of information about the non-error possibilities that the +
operation can have.
With strictly typed $a and $b, the expression drops to 1 possible
permutation. And you can detect if it's a valid one. And many static
analysis engines do this.I didn't see any proposal that proposes strictly types variables. As for
parameters, both strict and coercive typing provide knowledge about the
types of parameter inside the function they are defined in, so no
advantage to strict typing here.
It's not about how data gets in, it's about how data moves once it's
in. It's about knowing how types change and flow into other functions
that's important. Because that lets you determine more data about the
stable (non-error) state of the application.
Anthony
Hi!
At the function border, yes. But not beyond that.
Not sure what you mean here. If the value is identified as int, it
remains int. How strict typing would change that?
Sort-of correct. We don't know if A is true, but we know what
conditions need to exist for A->B to be true. We know that A can be
any value. It could be a float. But that would lead to an error down
the road when the sum is passed to the function typing for an int.
Yes, and nothing guarantees you that the error actually does not occur
in this code, so you can't derive any additional information here.
Therefore, by knowing $c is passed to a function expecting an int, we
have information about stable states for $a and $b which would result
in a stable state for $c.
But that is not related to strict typing - this is a property of +,
which does not change with strict typing.
With strict mode, then we can work backwards and see that if $a is set
to 3.5, that we know that it's not a stable state (because at best an
error will be created).
I don't see how you can "work backwards". You can, again, reason that if
you passed the function call, then $c was int. But you can not derive
from that that $c was indeed int, since you don't know that the function
call actually worked. In fact, then whole purpose of strict typing is
catering for the case where it didn't, so you can not assume such cases
do not exist and also propose string typing - it is logically inconsistent.
With coercive typing (weak), you can't work backwards there because
3.5 + 1.5 is 5.0 which would be acceptable for an int hint. So you
have a LOT more possibilities to contend with.
You have the same possibilities in any case. Nothing guarantees you that
in fact, in real code, $a and $b is not exactly 3.5 and 1.5. Nothing
prevents them from being so.
This isn't so much about proving an application correct as it is about
proving information about the stable (non-error) states of the
program.
If you just ignore any cases when program may malfunction, what use such
analyzer would be for any real program - which with probability close to
1 has states in which it malfunctions? I still don't see how strict
typing adds any information here.
So with coercive typing (weak), the ability to detect errors and prove
stable states of the application is reduced and requires significantly
more computation.
I still don't see how. You only say that if we assume that the program
never fails, then we can derive more information from strict typing, but
if we could write programs that never fail we didn't have any need in
strict typing at the first place!
In compiled languages, this problem is solved by pre-resolving the types
of all variables prior to execution, but it is not possible in PHP, so
I don't see where the reduction comes from.
I'm talking about using the static analyzer to prove properties of the
stable (non-error) state. Yes, at runtime you only know things about
$a after the expression. But at static time, we can prove based on
what we know of $c, the acceptable input states that could possibly
lead to a stable state. Yes, you can generate errors. But the entire
point of static analysis is to detect the possibility of these errors
ahead of time rather than at runtime.
I still don't see how it is a useful thing. You are saying that by
inserting a code in your program somewhere that says "if(!is_int($a)) {
exit(0);} " you magically improve your knowledge about your program
before this code line. This seems to be a baseless claim, and quite
strange - whatever post-conditions you declare, it can not go back in
time and make the code before the post-condition somehow change or make
your knowledge about this code somehow better just because you have
added some code at the end.
But we're talking about much more than the behavior of one operation.
We're talking about the behavior of the entire set of function calls
around it (and the flow of type information based on these predictable
operations). So while + itself has no advantage from strict types,
passing the result to a function expecting an integer does give you a
lot of information about the non-error possibilities that the +
operation can have.
The whole point is that these operations are not predictable. What
you're doing here is saying "I don't care about hard cases where program
malfunctions" and then define any unexpected input as a hard case. With
this definition, of course, it is very easy to reason about the
remaining cases, only this reasoning is useless since it does not cover
what happens in real program run. That's like saying if you have code
that says $a = $b/$c then you can derive from mere existence of such
code that $c is non-zero, since otherwise the program fails. But of
course you can't derive that $c is non-zero only because you wrote a
code that relies on it! Otherwise no debugging would be ever necessary :)
It's not about how data gets in, it's about how data moves once it's
in. It's about knowing how types change and flow into other functions
I'm sorry, I don't see how the data moves differently in strict model
than in weak model. The only difference happens when passing the
function call, afterwards everything is the same, so if you say "it's
not about how data gets in" then there's no "it", since the only
difference between the models is exactly when the data gets in!
that's important. Because that lets you determine more data about the
stable (non-error) state of the application.
That claim is repeated again but not proved so far. Unless we accept the
(non-error) qualifier which makes the data useless, as if we assume our
program never fails we don't need any analysis at all - we just can read
the spec! The whole point of analysis is (usually) finding where the
program may fail!
Stas Malyshev
smalyshev@gmail.com
While typing this I did think to just scrap what I was writing, but I
think it is relevant if only if someone can explain why I am wrong?
With strictly typed $a and $b, the expression drops to 1 possible
permutation. And you can detect if it's a valid one. And many static
analysis engines do this.
I didn't see any proposal that proposes strictly types variables. As for
parameters, both strict and coercive typing provide knowledge about the
types of parameter inside the function they are defined in, so no
advantage to strict typing here.
It's not about how data gets in, it's about how data moves once it's
in. It's about knowing how types change and flow into other functions
that's important. Because that lets you determine more data about the
stable (non-error) state of the application.
With much of this it is what validation needs doing where. Data coming
into the process can either be well constrained, or totally random.
Pulling stuff back from a database, it has already been sanitised and
should be well constrained but even that may be questionable. Processing
the data may well introduce other constraints and I make no apology
hammering data size again. If we get an overflow for what ever reason
it has to be handled, and while that may be by adding additional checks
on a generic datatype, using a suitable already constrained type just
seems logical. Even more so if your reason for introducing strict
elements is to produce better optimized code? If all I need is a 16bit
count and the process will never exceed that do I really want an
unconstrained variable to represent it?
I will put my hand up and say that up until now I've not worried about
just how some of this works inside the box. It has only been since 64bit
builds have become the norm and unexplained errors started that I have
dug into that layer and to be honest some of the constraints that the
zend objects have created perhaps does not make sense although it does
explain why some people want to take it a stage further.
If I have a variable which is populated by a string of characters as a
starting point, then viewing that as a numeric value is a function of
that object rather than creating a new different object. Back to my
as_xxx rather than is_xxx ... as_xxx fails if the result can't be
produced, or yes it gives a new object of that type. It's how all these
extra objects exist that is confusing, but if all the persistent data
simply creates objects of the correct type in the first place then why
do you need to cast anything?
--
Lester Caine - G8HFL
Contact - http://lsces.co.uk/wiki/?page=contact
L.S.Caine Electronic Services - http://lsces.co.uk
EnquirySolve - http://enquirysolve.com/
Model Engineers Digital Workshop - http://medw.co.uk
Rainbow Digital Media - http://rainbowdigitalmedia.co.uk
While typing this I did think to just scrap what I was writing, but I
think it is relevant if only if someone can explain why I am wrong?With strictly typed $a and $b, the expression drops to 1 possible
permutation. And you can detect if it's a valid one. And many static
analysis engines do this.I didn't see any proposal that proposes strictly types variables. As for
parameters, both strict and coercive typing provide knowledge about the
types of parameter inside the function they are defined in, so no
advantage to strict typing here.It's not about how data gets in, it's about how data moves once it's
in. It's about knowing how types change and flow into other functions
that's important. Because that lets you determine more data about the
stable (non-error) state of the application.With much of this it is what validation needs doing where. Data coming
into the process can either be well constrained, or totally random.
Pulling stuff back from a database,
This is not the point of this discussion. What you referto has to be
done for anything PHP uses, every library, every extension or services
(http or other).
Cheers,
Pierre
@pierrejoye | http://www.libgd.org
This is not the point of this discussion. What you referto has to be
done for anything PHP uses, every library, every extension or services
(http or other).
Now read the rest of what I wrote ...
Where ever validated data comes from ... it does not need a cast. If
it's not validated ... it needs to be before it can be used anyway.
Is every variable stored as a string even when it's source is a
validated scalar value?
--
Lester Caine - G8HFL
Contact - http://lsces.co.uk/wiki/?page=contact
L.S.Caine Electronic Services - http://lsces.co.uk
EnquirySolve - http://enquirysolve.com/
Model Engineers Digital Workshop - http://medw.co.uk
Rainbow Digital Media - http://rainbowdigitalmedia.co.uk
As long as she does not officially gives up (posting to the list), I'll keep considering Sara still has the lead on scalar type hinting. If she officially gives up, I'll immediately propose to take it over and, if we are several to want it, we'll discuss.
My official statement: I'm backing away from my 0.4
not-even-a-full-proposal-just-a-testing-of-the-waters because there
are at least two other strong proposals on the table and introducing a
third won't help the matter, it'll just make things more divided and
complicated. I'll focus my effort on influencing those two to make
them more sensible from my pov.
"Ze'ev and François have not-so-politely asked [Sara] to not put 0.4
forward since they have something they believe they have consensus
on."
That quote was said, but it's not entirely accurate. Ze'ev, as he's
protested on this list, was in fact perfectly polite in his
correspondence. In fact, he's been leaning on me to co-author his RFC,
probably in an attempt to make it balanced, rather than partisan. If
he was impolite at all, it was the multiple pestering twitter DMs
trying to get me to provide feedback while I was running around on a
busy day. :)
Please notice the smiley at the end of that last sentence... for the
love of god notice it.
When I wrote that earlier statement, I was still steaming at François,
who was quite impolite and a bit bullying in his out-of-band email.
I didn't want to make him the single-target subject of any backlash
though, so I fuzzed it inti Ze'ev as well. That's my bad.
My pulling back at this stage is not a reflection of the tone of his
email, I'm way to obstinate to put up with foolishness like that. I'm
pulling back for the sake of this community. Three RFCs active on a
single topic is too many. If one of these succeeds, great. If not, I
can step forward again. That might mean this gets deferred to 7.1,
but that's the breaks.
So while it may not have been "abandoned", it was sandbagged
(sabotaged, strong-armed, etc). I used abandoned as a light term to
not point out to list what strong-arming happened behind the scenes.
But since you apparently don't want "other channels used"...
"Strong-arm" is an unnecessarily forceful term. I'm setting it on
pause pending the other two proposals. The reasons for which include
you putting forth 0.5, so if you want to assign blame for pushing mine
out of the picture, include yourself. (But don't really, because I'm
glad you have a proposal that you're running with).
-Sara
Hi!
So rather than go for the 70-75% consensus that we know we have,
How we magically know that? We have the (unfinished) vote, which has a
tiny bit over 66% for the proposal. Where 75% comes from?
I created a forked RFC. You can keep her as lead all you want, that
doesn't mean I can't move forward with my RFC.
I think it would really be better to have a lot less "us vs them" and a
bit more cooperative spirit here.
That's fine. Let's let the votes decide rather than relying on
strongarming.
And cooperation means a bit more than "we've got 66% so we don't care
about anything else".
Saying a problem doesn't exist doesn't make it go away.
Except if it really doesn't exist, so there's nothing to go away :)
--
Stas Malyshev
smalyshev@gmail.com
Stas,
I created a forked RFC. You can keep her as lead all you want, that
doesn't mean I can't move forward with my RFC.I think it would really be better to have a lot less "us vs them" and a
bit more cooperative spirit here.
That ignores the mail that spawned this thread (and the one I got in
private) saying in no uncertain terms I shouldn't open a proposal (and
should abandon this one) because someone else was working on one. It
goes both ways.
And sometimes the best way to cooperate is to compete. That doesn't
mean we're enemies. It means we have different ideas. So we let the
ideas stand for themselves, away from ourselves.
That's fine. Let's let the votes decide rather than relying on
strongarming.And cooperation means a bit more than "we've got 66% so we don't care
about anything else".
Again, please don't twist words. The point was there exists a proposal
which I believe can pass by a supermajority (and nearly did the first
time). Why should that be abandoned because some people disagree with
it? People disagree with proposals all the time. The way we've agreed
to solve that is voting. So isn't that the proper way forward?
I don't care if this proposal fails. If it's voted no, that's fine. I
think it has a shot to pass though, so shouldn't it be given a fair
chance?
Anthony
Hi Anthony,
I'll post a more elaborate message later, including what I really sent to Sara, so that we can estimate how rude I was. I'll also explain the context. But I need a little more time to write it (I know I'm always asking for time ;).
The replies below are just quick and dirty.
De : Anthony Ferrara [mailto:ircmaxell@gmail.com]
That ignores the mail that spawned this thread (and the one I got in
private) saying in no uncertain terms I shouldn't open a proposal (and
should abandon this one) because someone else was working on one. It
goes both ways.
I never asked anyone to abandon his work. I just asked to respect the rules. What I told you first is that, while Sara did not resigned formally, I didn't see why you could publish derived concurrent work from the RFC she was currently owning (and I don't use reddit, sorry).
Now, it is still not very clear to me whether we have one or two active RFCs at this time...
You will be surprised but I prefer the way you're dealing with Andrea's RFC, because you are just taking over, orienting but not denaturing anything she did, and that's fine, even if we don't fully agree. The reason I didn't formally take over the RFC first is that I considered I would denature her work and couldn't do that (while it would have brought me less problems, finally).
And sometimes the best way to cooperate is to compete. That doesn't
mean we're enemies. It means we have different ideas. So we let the
ideas stand for themselves, away from ourselves.
That's exactly my position. The only point I insist on is that we compete with the same rules. Then, it is positive and I am all for it.
Again, please don't twist words. The point was there exists a proposal
which I believe can pass by a supermajority (and nearly did the first
time). Why should that be abandoned because some people disagree with
it? People disagree with proposals all the time. The way we've agreed
to solve that is voting. So isn't that the proper way forward?
I agree I was a little late to propose something. I just asked if I could have 4/5 days to propose an alternative. Feature freeze is soon but I thought it was acceptable. But, while I was using that time to speak with people and move towards, not an acceptable, but a satisfying compromise between both positions, I saw all the stuff put on the table again almost every day, destroying everything we had built, and even questioning new points that were agreed for months. I don' believe it was the case but I could have thought of sabotage too...
One last thing. I voted yes on Andrea's 0.3 and was for nothing in the withdrawal. I even privately proposed solutions for issues I had detected without exposing them publicly, while I thought the approach was fundamentally flawed. But, it was the rule, she was first. So, I'm not so shameful on the way I'm playing the game.
More later.
François
Hi François,
I never asked anyone to abandon his work. I just asked to respect the rules. What I told you first is that, while Sara did not resigned formally, I didn't see why you could publish derived concurrent work from the RFC she was currently owning (and I don't use reddit, sorry).
Now, it is still not very clear to me whether we have one or two active RFCs at this time...
You will be surprised but I prefer the way you're dealing with Andrea's RFC, because you are just taking over, orienting but not denaturing anything she did, and that's fine, even if we don't fully agree. The reason I didn't formally take over the RFC first is that I considered I would denature her work and couldn't do that (while it would have brought me less problems, finally).
As I understand it, Andrea left her RFC free to be reused, reopened
and derived without any specific limitation. It would therefore appear
that it would be possible for there to be 100 derived RFCs all owned
by different people, i.e. nobody has an exclusive right to either the
RFC text or the concept of scalar typehints insofar as I understand
it. Nevertheless, 0.5 following 0.4 leads to certain obvious
assumptions that for good or ill may be made in the absence of the
full picture. This all sounds like a simple misunderstanding under
exceptional circumstances.
As I believe Sara noted before, she will work with either of the RFCs
(yours or Anthony's) as it fits her own purposes, so it will boil down
to whichever RFCs gets published in the end. There's one up. I assume
yours will follow. That shall make two :).
Paddy
--
Pádraic Brady
http://blog.astrumfutura.com
http://www.survivethedeepend.com
De : Pádraic Brady [mailto:padraic.brady@gmail.com]
As I understand it, Andrea left her RFC free to be reused, reopened
and derived without any specific limitation. It would therefore appear
that it would be possible for there to be 100 derived RFCs all owned
by different people, i.e. nobody has an exclusive right to either the
RFC text or the concept of scalar typehints insofar as I understand
it.
You're right. The process of taking over an RFC in this case is not defined. Even if Andrea explicitly authorized anyone to derive anything from her work, I thought it was lack of respect for her work to take control and switch to another direction. That's why, while I'm not totally in sync with Anthony's proposal, I think he is acting the right way regarding Andrea's work.
And yes, apparently, you could have 100 RFCs derived from the same one and published by different people. I also guessed it was forbidden, at least by common sense, but it is possible.
I would happily support more rules for such cases.
As I believe Sara noted before, she will work with either of the RFCs
(yours or Anthony's) as it fits her own purposes, so it will boil down
to whichever RFCs gets published in the end. There's one up. I assume
yours will follow. That shall make two :).
Not sure we compete. Main reason is that, while I sometimes believe in (fair) competition, I am pretty sure one on such a hot subject would be globally negative for the community. Anyway, we will publish work done so far but, maybe, just for information. Anyway, nothing is decided and I'm talking for myself only. Others may decide differently. I don't own anything.
Regards
François
De : Pádraic Brady [mailto:padraic.brady@gmail.com]
As I understand it, Andrea left her RFC free to be reused, reopened
and derived without any specific limitation. It would therefore appear
that it would be possible for there to be 100 derived RFCs all owned
by different people, i.e. nobody has an exclusive right to either the
RFC text or the concept of scalar typehints insofar as I understand
it.You're right. The process of taking over an RFC in this case is not defined. Even if Andrea explicitly authorized anyone to derive anything from her work, I thought it was lack of respect for her work to take control and switch to another direction. That's why, while I'm not totally in sync with Anthony's proposal, I think he is acting the right way regarding Andrea's work.
I think so too and it is not the 1st time.
And yes, apparently, you could have 100 RFCs derived from the same one and published by different people. I also guessed it was forbidden, at least by common sense, but it is possible.
I would happily support more rules for such cases.
Such as? Competition is good and my past experiences is that in cases
like this one, it is nearly an utopia to think that the other party
will actually try to reach your needs. So the only way to actually get
a RFC representing what you want to do is to have a competitive one.
In the other hand, I had other cases where the counter part happily
added options and co to have an objective RFC.
De : Pierre Joye [mailto:pierre.php@gmail.com]
Such as? Competition is good and my past experiences is that in cases
like this one, it is nearly an utopia to think that the other party
will actually try to reach your needs. So the only way to actually get
a RFC representing what you want to do is to have a competitive one.
Competition is good but needs rules.
I am still skeptic about whether bringing concurrent RFCs in such complex and hot subjects does more good than bad. If discussion were meaningful and focused, maybe, but I'm afraid it could degenerate in FUD campaigns, which would waste energy for nothing.
You probably don't remember, I experienced such FUD when I proposed a concurrent to phar. That's something I'll try to avoid because it showed that competition with no rule is not the solution.
Regards
François
Hi Anthony,
I sent you a copy of the messages I sent to Sara, asking for more details about what you consider as 'deplorable' in them. I also sent another message to get your opinion about the new ruleset I could propose. It seems you didn't have time to reply. Just hope you don't refuse communication. If this was the case, go on with vote now, no need to make it look like you're waiting for me if, behind the scene, you're not ready to communicate.
As I didn't get the explanation I was looking for from you, I'll now ask everyone interested to give an opinion. That's why I attached both messages. If anyone understands the reaction it generated, please tell me, it will help me not do the mistake again. As I told you, the only thing I see as potentially offensive is 'you probably don't care'. I don't know how it is in English but, in French, it is not considered as very offensive.
I would have preferred avoiding to disturb everyone with the subject again and I took time to think about it but, while I may have been impolite in private, you made it public and your message even contains terms that I consider as public insults against me, my work, and my relationship with the community. So, while you 'can't stress how deplorable my acts were', I won't qualify yours, especially since it seems you wrote this without having read the messages in question.
To be clear, Sara's reporting I did 'not-so-politely' ask her to stop work, is technically wrong but the tone is correct. It just saddens me because I have the biggest respect for her work, but I can live with it. You amplified it to 'sandbagged, sabotage, strong-armed' which is still more wrong, but also insulting.
So, if anyone sees something incorrect in the attached messages, I'll apologize again because it was not intended, and I do it in advance to Sara. But I am not sure who should apologize most. Now, unless someone wants it to go on, I'm afraid I won't have time for this anymore.
Regards
François
-----Message d'origine-----
De : Anthony Ferrara [mailto:ircmaxell@gmail.com]
Envoyé : jeudi 19 février 2015 14:24
À : francois@php.net
Cc : Lester Caine; internals@lists.php.net
Objet : Using Other Channels (was Scalar Type Declarations v0.5)Francois
On Thu, Feb 19, 2015 at 6:58 AM, François Laupretre francois@php.net
wrote:De : Lester Caine [mailto:lester@lsces.co.uk]
I just saw the reddit where you mention that v0.4 is practically
abandoned now, so I will just renounce my previous mail!DO NOT USE OTHER CHANNELS!
Agreed.
You mean like contacting another contributor in private asking them to
not make a proposal and to stop work on it?And the RFC was not abandoned at all. I and others have been working
almost continuously on a 'compromise' single-mode approach during the last
3 days (and nights), as activity on the list shows with no doubt. So,
pretending the RFC to be 'abandoned' is just a way to discard a disagreed
work.Let me quote something that was said:
"Ze'ev and François have not-so-politely asked [Sara] to not put 0.4
forward since they have something they believe they have consensus
on."So while it may not have been "abandoned", it was sandbagged
(sabotaged, strong-armed, etc). I used abandoned as a light term to
not point out to list what strong-arming happened behind the scenes.
But since you apparently don't want "other channels used"...I can't stress how deplorable that act is. How harmful to the
community it is to ask in private for a contributor to stop what they
are doing because someone else "has a better idea". We had a proposal
that had consensus (66%). It was withdrawn. With some minor changes,
at least 25% of no-voters would have changed their mind (based on
conversations around why the voted no).So rather than go for the 70-75% consensus that we know we have,
we should drop all work for a magic vaporware proposal. Contributors
should stand down and not contribute because "you know better".I'm sorry, I favor the proposal that's in writing and implemented
rather than one that's yet to be seen. If yours does indeed prove to
be as good as possible, then the votes will decide. Or if it convinces
me early enough, I'll withdraw the current proposal. But based on
everything I've seen in the discussion threads, I can't possibly see
how that will happen. I hope you surprise me, but in case that you
don't, I'm moving forward with the existing implementation that we
know has support.As long as she does not officially gives up (posting to the list), I'll keep
considering Sara still has the lead on scalar type hinting. If she officially gives
up, I'll immediately propose to take it over and, if we are several to want it,
we'll discuss.I created a forked RFC. You can keep her as lead all you want, that
doesn't mean I can't move forward with my RFC.That's the rule and I encourage list members to explicitly show their
support to the formal process we all agreed upon.What rule is that? Can you point me to anywhere in the Voting RFC that
says that? https://wiki.php.net/rfc/votingIt doesn't.
That's fine. Let's let the votes decide rather than relying on strongarming.
For the rest, Lester summarized quite well my view about designing PHP
for static analysis, instead of static analysis for PHP ;)Saying a problem doesn't exist doesn't make it go away.
Anthony
Francois,
I sent you a copy of the messages I sent to Sara, asking for more details about what you consider as 'deplorable' in them. I also sent another message to get your opinion about the new ruleset I could propose. It seems you didn't have time to reply. Just hope you don't refuse communication. If this was the case, go on with vote now, no need to make it look like you're waiting for me if, behind the scene, you're not ready to communicate.
I didn't have the time to reply, because you sent that mail at 01:04
local time today, while I was sleeping. And then you sent this
mail 10:16 local time (just as I was logging on to check mail). I
actually saw this message before the other one.
And that's all I'll say at this time.
Anthony
On Sat, Feb 21, 2015 at 4:55 PM, Anthony Ferrara ircmaxell@gmail.com
wrote:
Francois,
I sent you a copy of the messages I sent to Sara, asking for more
details about what you consider as 'deplorable' in them. I also sent
another message to get your opinion about the new ruleset I could propose.
It seems you didn't have time to reply. Just hope you don't refuse
communication. If this was the case, go on with vote now, no need to make
it look like you're waiting for me if, behind the scene, you're not ready
to communicate.I didn't have the time to reply, because you sent that mail at 01:04
local time today, while I was sleeping. And then you sent this
mail 10:16 local time (just as I was logging on to check mail). I
actually saw this message before the other one.
Anthony,
maybe you weren't told, but we obviously expect all PHP contributors to be
available 24/7. Not reading your mails at 1am on a Saturday is a clear sign
that you're refusing to cooperate :P
Nikita
OK, sorry, I was a little negligent with local times. I said that because I sent another message some hours ago. And I was honest when saying ‘I think you didn’t have time to reply’ because I knew it was short. No irony here even if I agree it may seem so, especially in the context.
Actually, I was not totally exact when I said that I published this because I had no reply. After reading the messages again, I thought I had to publish them so that anyone interested can make his own opinion, whatever Anthony had to reply.
Regards
François
De : Nikita Popov [mailto:nikita.ppv@gmail.com]
Envoyé : samedi 21 février 2015 17:15
À : Anthony Ferrara
Cc : francois@php.net; Sara Golemon; Lester Caine; internals@lists.php.net; Zeev Suraski; Arvids Godjuks; Robert Stoll; Rasmus Lerdorf; Yasuo Ohgaki; Andrey Andreev; Andi Gutmans; Pierre Joye
Objet : Re: [PHP-DEV] Re: Using Other Channels (was Scalar Type Declarations v0.5)
Francois,
I sent you a copy of the messages I sent to Sara, asking for more details about what you consider as 'deplorable' in them. I also sent another message to get your opinion about the new ruleset I could propose. It seems you didn't have time to reply. Just hope you don't refuse communication. If this was the case, go on with vote now, no need to make it look like you're waiting for me if, behind the scene, you're not ready to communicate.
I didn't have the time to reply, because you sent that mail at 01:04
local time today, while I was sleeping. And then you sent this
mail 10:16 local time (just as I was logging on to check mail). I
actually saw this message before the other one.
Anthony,
maybe you weren't told, but we obviously expect all PHP contributors to be available 24/7. Not reading your mails at 1am on a Saturday is a clear sign that you're refusing to cooperate :P
Nikita