Re: [Development] QUIP 12: Code of Conduct

2018-10-28 Thread Thiago Macieira
On Sunday, 28 October 2018 17:20:04 PDT Alexey Andreyev wrote:
> > Sure, but again that's why we have a committee behind who will evaluate
> the
> > charges and decide what the proper action to be taken is. If the charges
> are
> > fake, then the accused would of course not be affected in any way. And if
> the
> > accuser keeps making false accusations, that's the one who could face
> > sanctions.
> 
> Sanctions like ban with additional false accusations about harassment could
> be sent to mass media to create negative image of the community.

And if the mass media does buy into the fake story, what can we do? The 
attacker can seize on any particular point of our community, whether there's a 
CoC or not. They could attack us for *not* having one in the first place and 
having no method to address their fake injutsice. They could attack us for 
having a security mailing list that judged a particular issue they reported 
not to be a security problem, etc.

If they want to be malicious, they'll find a way.

And if the media sides with them, not giving us a chance to explain, what are 
we going to do?

> Let's take a look at archlinux CoC for example:
> https://wiki.archlinux.org/index.php/Code_of_conduct
> 
> Literally no vulnerable promises about protecting from harassment that
> could be hard to keep. Additional mention at archwiki not to play with
> controvertial non-related subjects at technical place:

Which promises in other CoCs do you find vulnerable?

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center



___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] QUIP 12: Code of Conduct

2018-10-28 Thread Thiago Macieira
On Sunday, 28 October 2018 16:53:01 PDT Lydia Pintscher wrote:
> On Sun, Oct 28, 2018 at 10:45 PM Thiago Macieira
> 
>  wrote:
> > And I'm pretty sure the KDE Community WG can easily compile a list of
> > times
> > that they were maliciously asked to look into situations and how much time
> > it took them to give it the attention it was due.
> 
> I don't have an exact number but less than 10. And we could always
> deal with it very quickly thanks to some common sense and good
> knowledge of the situation and people involved. No big deal.

Hi Lydia

Thanks for chiming in.

Note I asked about malicious request to the CWG, not legitimate ones. I mean 
baseless accusations, based on no actual fact, just attempts to smear someone 
or generate useless expediture of people's time. Has that happened, at all? If 
so, how long did the committee spend addressing it? How much effort was put 
into it?

Maybe we can also expand to accusations that, though not malicious, were found 
not to be under the CoC's purview, like asking someone to be removed due to 
some action on their personal time.

> PS: As someone on the fringes of the Qt Project some emails in this
> thread sadly make me see part of the project in a different light. I
> fear I'm not the only one.

You must remember we discussion we had in KDE 10 years ago. As I wrote in my 
email here, I was one of those not convinced of the need to have a text at 
all, and I do think several other proeminent community members were like me. 
But the discussion went through and we were won out. Now I see the value of it 
that I didn't then.

Almost all the emails in this thread have been civil and willing to engage in 
discussion, though not without some language barriers sometimes. I'm not 
seeing anyone in a different light as I did a week ago.

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center



___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] QUIP 12: Code of Conduct

2018-10-28 Thread Thiago Macieira
On Sunday, 28 October 2018 14:57:42 PDT Konstantin Shegunov wrote:
> Note: I continue to think that KDE's CoC's text is written better and more
> clearly.

me too.

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center



___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] QUIP 12: Code of Conduct

2018-10-28 Thread Alexey Andreyev
Thank you, Lydia and everyone!

I hope I'm not upsetting anyone. I could accept I'm taking too much
attention to the subject.

Qt project is very valuable for me as a user and a developer.

пн, 29 окт. 2018 г. в 2:53, Lydia Pintscher :

> On Sun, Oct 28, 2018 at 10:45 PM Thiago Macieira
>  wrote:
> > And I'm pretty sure the KDE Community WG can easily compile a list of
> times
> > that they were maliciously asked to look into situations and how much
> time it
> > took them to give it the attention it was due.
>
> I don't have an exact number but less than 10. And we could always
> deal with it very quickly thanks to some common sense and good
> knowledge of the situation and people involved. No big deal.
>
> (For those who don't know me: I'm one of the people who wrote KDE's
> CoC and has been a member of it's community working group since then.
> I'm also the current president of the non-profit behind KDE.)
> If you have further questions about KDE's Code of Conduct please let
> me know. I'm happy to answer them.
>
>
> Cheers
> Lydia
>
> PS: As someone on the fringes of the Qt Project some emails in this
> thread sadly make me see part of the project in a different light. I
> fear I'm not the only one.
>
> --
> Lydia Pintscher - http://about.me/lydia.pintscher
> KDE e.V. Board of Directors
> http://kde.org - http://open-advice.org
> ___
> Development mailing list
> Development@qt-project.org
> http://lists.qt-project.org/mailman/listinfo/development
>
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] QUIP 12: Code of Conduct

2018-10-28 Thread Alexey Andreyev
> Sure, but again that's why we have a committee behind who will evaluate
the
> charges and decide what the proper action to be taken is. If the charges
are
> fake, then the accused would of course not be affected in any way. And if
the
> accuser keeps making false accusations, that's the one who could face
> sanctions.

Sanctions like ban with additional false accusations about harassment could
be sent to mass media to create negative image of the community.

> No one said that keeping a
> community welcoming is free. It requires all of us to look after one
another
> and our shared values.
> But I think it's a price we're willing to pay.

I'm not saying we should not work on shared values. As I said earlier many
times, I agree we need rules.

Let's take a look at archlinux CoC for example:
https://wiki.archlinux.org/index.php/Code_of_conduct

Literally no vulnerable promises about protecting from harassment that
could be hard to keep. Additional mention at archwiki not to play with
controvertial non-related subjects at technical place:

"The staff certainly realize that such issues are deeply ingrained human
realities. However, this is a technical community and is not intended nor
able to effectively facilitate such commentary nor the resulting unrest."

> And I'm pretty sure the KDE Community WG can easily compile a list of
times
> that they were maliciously asked to look into situations and how much
time it
> took them to give it the attention it was due.

Thank you! It would be nice to see with general numbers, to make a
comparison, but I agree it is very hard to research

> Tell us how to measure the benefit compared to not having a CoC.

I never said we don't need a CoC. I've said that not any CoC is healthy.


пн, 29 окт. 2018 г. в 0:44, Thiago Macieira :

> On Sunday, 28 October 2018 13:18:02 PDT Alexey Andreyev wrote:
> > > The text is clear - actions will be taken to stop the discrimination.
> > > That involves technical means (kick / ban) but also more social means
> >
> > It is not clear. Intruder could ask to ban some person pretending it's
> > discrimination problem.
>
> Sure, but again that's why we have a committee behind who will evaluate
> the
> charges and decide what the proper action to be taken is. If the charges
> are
> fake, then the accused would of course not be affected in any way. And if
> the
> accuser keeps making false accusations, that's the one who could face
> sanctions.
>
> > intruder could ask to accept vulnerable changes.
>
> And why would you or an approver accept technically inferior solutions? No
> one
> is saying that we should do that. All that is required is to be civil and
> harassment-free when discussing such a solution.
>
> > All the described situations requires resources from the community.
> > It also could be used to something could be called denial-of-community
> > situation.
>
> Yes, it does require resources from the community. No one said that
> keeping a
> community welcoming is free. It requires all of us to look after one
> another
> and our shared values.
>
> But I think it's a price we're willing to pay.
>
> And I'm pretty sure the KDE Community WG can easily compile a list of
> times
> that they were maliciously asked to look into situations and how much time
> it
> took them to give it the attention it was due.
>
> > In general, it could be used to change the image of the community to made
> > it less popular
> > and decrease the number of new members.
>
> How could it be used to do that?
>
> > Anyway, I guess there's still no scientific research and social survey
> > about the number of the situations that could be called conflicts.
> > So I don't see what problem should be solved right now.
>
> First of all, there are enough situations handled by multiple CoC
> committees
> in several communities to prove that it's worth it. There have been
> situations
> when they've been called to act and they have. I'd like to know about
> situations that were resolved peacefully and the person who was found to
> be
> doing harassing changed their behaviour.
>
> As for a scientific research, it's pretty hard with social situations,
> like
> almost anything related to people's behaviour: communities are different
> from
> one another and you can't have a control group to see what happens if you
> don't adopt a CoC.
>
> > I could not accept an answer like "let's try and see" since we didn't
> even
> > proposed metrics how to check new CoC is helping.
>
> Tell us how to measure the benefit compared to not having a CoC.
>
> I'll be very satisfied even if we have a total of zero times the CoC acts
> in
> the next 5 years and that no new contributor mentions reading the CoC
> before
> joining the community.
>
> --
> Thiago Macieira - thiago.macieira (AT) intel.com
>   Software Architect - Intel Open Source Technology Center
>
>
>
> ___
> Development mailing list
> Development@qt-project.org
> 

Re: [Development] QUIP 12: Code of Conduct

2018-10-28 Thread Lydia Pintscher
On Sun, Oct 28, 2018 at 10:45 PM Thiago Macieira
 wrote:
> And I'm pretty sure the KDE Community WG can easily compile a list of times
> that they were maliciously asked to look into situations and how much time it
> took them to give it the attention it was due.

I don't have an exact number but less than 10. And we could always
deal with it very quickly thanks to some common sense and good
knowledge of the situation and people involved. No big deal.

(For those who don't know me: I'm one of the people who wrote KDE's
CoC and has been a member of it's community working group since then.
I'm also the current president of the non-profit behind KDE.)
If you have further questions about KDE's Code of Conduct please let
me know. I'm happy to answer them.


Cheers
Lydia

PS: As someone on the fringes of the Qt Project some emails in this
thread sadly make me see part of the project in a different light. I
fear I'm not the only one.

-- 
Lydia Pintscher - http://about.me/lydia.pintscher
KDE e.V. Board of Directors
http://kde.org - http://open-advice.org
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] QUIP 12: Code of Conduct

2018-10-28 Thread Thiago Macieira
On Sunday, 28 October 2018 13:18:02 PDT Alexey Andreyev wrote:
> > The text is clear - actions will be taken to stop the discrimination.
> > That involves technical means (kick / ban) but also more social means
> 
> It is not clear. Intruder could ask to ban some person pretending it's
> discrimination problem.

Sure, but again that's why we have a committee behind who will evaluate the 
charges and decide what the proper action to be taken is. If the charges are 
fake, then the accused would of course not be affected in any way. And if the 
accuser keeps making false accusations, that's the one who could face 
sanctions.

> intruder could ask to accept vulnerable changes.

And why would you or an approver accept technically inferior solutions? No one 
is saying that we should do that. All that is required is to be civil and 
harassment-free when discussing such a solution.

> All the described situations requires resources from the community.
> It also could be used to something could be called denial-of-community
> situation.

Yes, it does require resources from the community. No one said that keeping a 
community welcoming is free. It requires all of us to look after one another 
and our shared values.

But I think it's a price we're willing to pay.

And I'm pretty sure the KDE Community WG can easily compile a list of times 
that they were maliciously asked to look into situations and how much time it 
took them to give it the attention it was due.

> In general, it could be used to change the image of the community to made
> it less popular
> and decrease the number of new members.

How could it be used to do that?

> Anyway, I guess there's still no scientific research and social survey
> about the number of the situations that could be called conflicts.
> So I don't see what problem should be solved right now.

First of all, there are enough situations handled by multiple CoC committees 
in several communities to prove that it's worth it. There have been situations 
when they've been called to act and they have. I'd like to know about 
situations that were resolved peacefully and the person who was found to be 
doing harassing changed their behaviour.

As for a scientific research, it's pretty hard with social situations, like 
almost anything related to people's behaviour: communities are different from 
one another and you can't have a control group to see what happens if you 
don't adopt a CoC.

> I could not accept an answer like "let's try and see" since we didn't even
> proposed metrics how to check new CoC is helping.

Tell us how to measure the benefit compared to not having a CoC.

I'll be very satisfied even if we have a total of zero times the CoC acts in 
the next 5 years and that no new contributor mentions reading the CoC before 
joining the community.

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center



___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] QUIP 12: Code of Conduct

2018-10-28 Thread Konstantin Shegunov
On Sun, Oct 28, 2018 at 9:51 PM Thiago Macieira 
wrote:

> I'm pretty sure their company HR would want to have a chat anyway.
>

Well, I'm not as sure as you, but I am hopeful.


> That's also a good reason to choose the KDE CoC, as both TQtC and KDAB
> recruit
> heavily from the KDE community and its CoC is basically a statement of
> shared
> values.
>

A very good point.
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] QUIP 12: Code of Conduct

2018-10-28 Thread Konstantin Shegunov
On Sun, Oct 28, 2018 at 2:08 PM Martin Smith  wrote:

> No, it isn't a resolution. Not reacting to a complaint is no resolution.


Given the (current) structure of the community I take that as the offence
not carrying merit.

But even if "the community" does react to the alleged offense, how is that
> different from mob rule?
>

It is not. Note that having a committee doesn't exclude mob rule either. In
all fairness, though, it makes it less likely, as I can easily imagine the
people voted in are going to be of significant integrity.

>Not only can I, I pretty much have to.
>
> No. You don't. You used the word "heinous." It has a meaning. You used it
> deliberately to draw attention away from the problems the CoC is meant to
> resolve.
>

I did no such thing, and I resent the accusation.

I'm not defending the CoC text and premise. I'm defending the goal of
> establishing a CoC.
>

Then I have no idea why we are arguing. I was just responding in good faith
to a question that was put forth. From the very beginning of this thread I
have operated under the assumption that a CoC is going to be adopted in
some form or another.

My turn to bite. What is a heinous act that is not a criminal act?
>

 Personal attacks, baseless accusations, mean-spirited comments, a
combination thereof. Anything that's beyond distasteful, but still doesn't
constitute a crime.
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] QUIP 12: Code of Conduct

2018-10-28 Thread Alexey Andreyev
> So, as far as I see you have not identified any controversial
> sentences either
I've defined controversial sentences previously about proposed
harassment-free pledge part and KDE's protection from discrimination part.

> see people reporting on successes of KDE CoC and
> problems with kernel one

Could you provide the link with research or any other details about
successes of the KDE CoC?

> The text is clear - actions will be taken to stop the discrimination.
> That involves technical means (kick / ban) but also more social means

It is not clear. Intruder could ask to ban some person pretending it's
discrimination problem.
intruder could ask to accept vulnerable changes.
All the described situations requires resources from the community.
It also could be used to something could be called denial-of-community
situation.

In general, it could be used to change the image of the community to made
it less popular
and decrease the number of new members.

Anyway, I guess there's still no scientific research and social survey
about the number of the situations that could be called conflicts.
So I don't see what problem should be solved right now.

I could not accept an answer like "let's try and see" since we didn't even
proposed metrics how to check new CoC is helping.


вс, 28 окт. 2018 г. в 22:29, Tomasz Siekierda :

> > > вс, 28 окт. 2018 г. в 10:47, Tomasz Siekierda :
> > > Hi Alexey, I've just read the QUIP proposal and couldn't find any
> > > controversial sentences. Could you elaborate? Which points shall be
> > > discussed?
> > >
> > > > The controversial discrimination protection sentences at least
> should be carefully discussed. It's not some thing that we could accept as
> easy as rewrite.
>
> On Sun, 28 Oct 2018 at 11:34, Alexey Andreyev
>  wrote:
> >
> > Hello, Tomasz! :)
> > Thank you for the question!
> >
> >
> > [...]
> >
> > Do we have any research about effects it leading?
> >
> > How many discrimination suspicions do we have right now?
> >
> > How could it be resolved successfully at digital community?
> >
> > How many misuse examples do we have at open projects since accepting
> similar rules?
> >
> > How CoC board are going to protect community from discrimination and
> harassment?
> >
> > Are CoC committee ready for "affirmative action"?
> >
> > [...]
>
> So, as far as I see you have not identified any controversial
> sentences either, your questions are more general and have been
> answered already (see people reporting on successes of KDE CoC and
> problems with kernel one).
>
> Regarding:
>
> > How CoC board are going to protect community from discrimination and
> harassment?
>
> The text is clear - actions will be taken to stop the discrimination.
> That involves technical means (kick / ban) but also more social means
> (talking with both parties, trying to mediate, trying to understand
> what is going on etc. - all this is mentioned in CoC draft).
>
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] QUIP 12: Code of Conduct

2018-10-28 Thread Thiago Macieira
On Saturday, 27 October 2018 13:40:42 PDT Konstantin Shegunov wrote:
> > Note also it applies to any company. If you're not welcome anymore in the
> > community where your employer is asking you to do work, that is going to
> > affect your employment.
> 
> I agree. However my argument was that the QtC being a major contributor to
> the codebase is going to have to abide by the ruling of the proposed
> committee, which is a significant commitment (and a major nitpick I admit).

Correct, they would have to, but given that it looks like the majority of them 
are in agreement, it doesn't look problematic.

And besides, if any of them or the KDABians started being obnoxious and 
hostile, given how many of their coworkers are working on this project, I'm 
pretty sure their company HR would want to have a chat anyway.

That's also a good reason to choose the KDE CoC, as both TQtC and KDAB recruit 
heavily from the KDE community and its CoC is basically a statement of shared 
values.

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center



___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] QUIP 12: Code of Conduct

2018-10-28 Thread Tomasz Siekierda
> > вс, 28 окт. 2018 г. в 10:47, Tomasz Siekierda :
> > Hi Alexey, I've just read the QUIP proposal and couldn't find any
> > controversial sentences. Could you elaborate? Which points shall be
> > discussed?
> >
> > > The controversial discrimination protection sentences at least should be 
> > > carefully discussed. It's not some thing that we could accept as easy as 
> > > rewrite.

On Sun, 28 Oct 2018 at 11:34, Alexey Andreyev
 wrote:
>
> Hello, Tomasz! :)
> Thank you for the question!
>
>
> [...]
>
> Do we have any research about effects it leading?
>
> How many discrimination suspicions do we have right now?
>
> How could it be resolved successfully at digital community?
>
> How many misuse examples do we have at open projects since accepting similar 
> rules?
>
> How CoC board are going to protect community from discrimination and 
> harassment?
>
> Are CoC committee ready for "affirmative action"?
>
> [...]

So, as far as I see you have not identified any controversial
sentences either, your questions are more general and have been
answered already (see people reporting on successes of KDE CoC and
problems with kernel one).

Regarding:

> How CoC board are going to protect community from discrimination and 
> harassment?

The text is clear - actions will be taken to stop the discrimination.
That involves technical means (kick / ban) but also more social means
(talking with both parties, trying to mediate, trying to understand
what is going on etc. - all this is mentioned in CoC draft).
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] qMoveToConst helper for rvalue references to movable Qt containers?

2018-10-28 Thread Thiago Macieira
On Sunday, 28 October 2018 11:49:08 PDT Olivier Goffart wrote:
> It is a bit ironic that one reason given to deprecate Q_FOREACH is that it
> may copy the container in some cases, while the alternative has the same
> problem in much more common cases. (It is my impression that implicitly
> shared container such as QList/QVector are by far much more used than the
> one that are not within a typical Qt code base)

There are two problems with Q_FOREACH:

1) it will copy containers. For Qt containers, that's rather cheap (two atomic 
refcount operations), but it's not free. And for Standard Library containers, 
that is likely very expensive.

2) it's implemented by way of a for loop inside a for loop, which is known to 
throw optimisers out, generating slightly worse code

Our rule already was: Don't use foreach in Qt code. (it was fine in examples)

Using iterators and now using the ranged for may need more typing, but 
produces optimal code.

> What could be done is to only deprecate partial specialization of
> qMakeForeachContainer for QVarLenghtArray and the standard containers.
> Or for containers that do not have a 'detach' function.
> That way, users would get a warning for the problematic containers, but
> would continue to work just fine with with the containers most Qt developer
> use.

I disagree. The optimisation problem is not solved.

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center



___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] QUIP 12: Code of Conduct

2018-10-28 Thread Thiago Macieira
On Sunday, 28 October 2018 08:36:17 PDT André Pönitz wrote:
> That would be a valid reason in case there had been or we would
> expect to be unstoppable abusive behaviour.
> 
> Most abusive behaviour on the mailing lists and IRC can be
> stopped by technical means, in exceptional cases like the recent
> spam attack on FreeNode also a coc won't help.

Spam is pretty obvious, since spammy messages are off-topic and the spammer is 
not going to bother contesting the filter.

But if it isn't spam, what gives the list moderator the right to intervene in 
something that he/she believes is abusive behaviour? Same thing about IRC: we 
do have one annoying person who does come along every now and then, but most 
of his messages are just that: annoyance. It's only when he uses profanity 
that I feel justified in kicking him out of the channel.

Am I the one abusing my position as channel op to kick him? Am I being 
arbitrary?

> > We need a formal procedure to enable that, and the CoC is that
> > procedure.
> 
> This "we" needs qualification. It apparently does not include me.

Of course it does. Why do you feel excluded? Or did you mean you feel you 
don't need a procedure?

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center



___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] qMoveToConst helper for rvalue references to movable Qt containers?

2018-10-28 Thread Olivier Goffart

On 10/27/18 5:27 PM, Sérgio Martins wrote:

Den lör 27 okt. 2018 kl 13:37 skrev Olivier Goffart :

Jokes aside, I think we still should let users use Q_FOREACH for implicitly
shared containers.


But what's the percentage of Qt developers that understand the
subtleties between Q_FOREACH and range-for ?
Having a toolbox with two similar-but-not-quite constructs is bad for
less seasoned users.
I prefer explicitly assigning the container to a const local variable
instead of relying in the magic behind macros.



I don't know... what's the percentage of Qt developers that understands when to 
use this qAsConst or const copy gymnastic?


It is a bit ironic that one reason given to deprecate Q_FOREACH is that it may 
copy the container in some cases, while the alternative has the same problem in 
much more common cases. (It is my impression that implicitly shared container 
such as QList/QVector are by far much more used than the one that are not 
within a typical Qt code base)


What could be done is to only deprecate partial specialization of 
qMakeForeachContainer for QVarLenghtArray and the standard containers.

Or for containers that do not have a 'detach' function.
That way, users would get a warning for the problematic containers, but would 
continue to work just fine with with the containers most Qt developer use.


--
Olivier

Woboq - Qt services and support - https://woboq.com - https://code.woboq.org
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


[Development] Undeprecating Q_FOREACH (was: Re: qMoveToConst helper for rvalue references to movable Qt containers?)

2018-10-28 Thread Giuseppe D'Angelo via Development

Il 28/10/18 15:42, Kevin Kofler ha scritto:

As long as it is not actually removed, it is not too late to undo this
totally incorrect decision.

See also:https://valdyas.org/fading/hacking/happy-porting/

(Technically, it could be readded even after it is removed, but it would be
much easier to undeprecate it now.)


Please bring technical arguments to the table for undoing this 
deprecation. So far, this hasn't been done, so the deprecation stands 
and likely go into effect the first time we get a chance of breaking SC.


Note that "annoyance for end-users" is not an argument. In the absence 
of infinite development bandwidth, and given the natural evolution of 
software, Qt will need to shed some old crust from time to time, even if 
that means annoyances for the users.


I briefly discussed about this here:


https://www.kdab.com/un-deprecate-qt-project/



Specifically for Q_FOREACH, if a project doesn't want to move away, then 
the solution takes 5 minutes:


1) copy and paste Q_FOREACH's implementation in a central header of your 
project

2) rename it to MY_FOREACH
3) do a search/replace of Q_FOREACH to MY_FOREACH throughout the 
project's code base


And that's it.

Yes, this is effectively a fork, which means you'll also need to 
backport any fixes that in the meanwhile land upstream. And they _do 
land_, even for something apparently as "mundane" as Q_FOREACH:



https://codereview.qt-project.org/#/c/179396/
https://codereview.qt-project.org/#/c/176299/ > 
https://codereview.qt-project.org/#/c/176298/
https://codereview.qt-project.org/#/c/170073/
https://codereview.qt-project.org/#/c/167065/
https://codereview.qt-project.org/#/c/140268/


Why should the Qt Project invest any resource whatsoever maintaining a 
solution to a problem that has also been solved by the C++ language (and 
in a more efficient and general way than Q_FOREACH)?


--
Giuseppe D'Angelo | giuseppe.dang...@kdab.com | Senior Software Engineer
KDAB (France) S.A.S., a KDAB Group company
Tel. France +33 (0)4 90 84 08 53, http://www.kdab.com
KDAB - The Qt, C++ and OpenGL Experts



smime.p7s
Description: Firma crittografica S/MIME
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


[Development] How to create dummy plugins in qtbase?

2018-10-28 Thread Kyle Edwards
Hello all,

I am currently working on improving Qt's CMake support, and I've written
some rather complicated logic that I want to test thoroughly -
specifically, I want to make sure that an exact list of plugins that I've
requested has been statically loaded, no more, and no less. The easiest way
to do this would be to create a new dummy Qt module which contains a bunch
of dummy plugins for me to load. However, I'm not sure how to create a new
Qt module that's visible to the tests without also being installed/visible
outside the tests.

I've attempted to hack together an external project outside the qtbase tree
that creates some plugins, but I'm not very familiar with qmake, and in its
current state it is installing its plugins into the qtbase build tree,
which is undesirable (I want it to install them into its own build tree
instead.) Can someone who's more familiar with qmake help me out here?
Thank you very much.

Kyle
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] QUIP 12: Code of Conduct

2018-10-28 Thread Alexey Andreyev
I agree my example is extremely contrived right now,
I just tried to show the idea.

Thank you, Elvis, for your answers.

> getting your patches rejected is not harassment
I agree that getting some patches rejected without any additional info is
not a harassment by default

I'm saying something like "water wears away a stone".
What could you say about public conflicts at
Opal, Github, Django, Ruby, PHP, Nodejs, Drupal, Linux after accepting
similar CoC?

> The patches can be respectfully rejected with e.g. "this is not in
> line with the Qt vision", or "could you please revise this part
> first?".

It easily could be misused as blocking due to discrimination
with existing CoC
and the question of resources and time on both sides

> See the difference?

Yes, of course. But I'm not talking about where CoC could be helpful right
now,
I agree we need rules.
I'm trying to pay attention on the current implementation.

We (me too) spend literally 0 minutes to scientifically research
social state of the Qt community,
didn't research influence and the trends of the accepted CoC at other
projects.

Nobody held even one social survey
about the nubmer of the conflicts at Qt project before,
anything like that.
Nobody tried to predict the consequences after accepting current CoC.

We just trying to provide some rules and to treat something blindly
without even specifying the problem.

вс, 28 окт. 2018 г. в 17:35, Elvis Stansvik :

> Den sön 28 okt. 2018 kl 14:29 skrev Alexey Andreyev
> :
> >
> > > [...]  or the shorter list in the KDE CoC, so we instinctively
> > > want to trim the fat - we want to optimize.
> >
> > I've provided both (CC and from KDE) not to show some version is better,
> > but to show both have same problems.
> >
> > For me it's not about optimization right now. Is it possible to follow
> provided versions?
> > And receive more positive for the commuity than negative.
> >
> > > the purpose of this enumeration is to list those very large
> > > groups of people in society who are currently experiencing harassment
> > > and mistreatment for who they are
> >
> > Is that obvious that provided document will help not made things worse
> for everyone?
> > Are we going to treat something at the commuity just blindly without
> diagnosis and research?
> >
> > >  We tell a large part of the population who are currently
> > > being oppressed/mistreated that, at least in our community, you can
> > > feel safe
> >
> > How are we going to provide safety?
> >
> > > The enumeration is not supposed to cover everything, but I
> > > think it fulfills a purpose by covering a lot.
> >
> > As far as I can see the reasoning is based on the hypothesis that any
> rules will not be able to aggravate the situation. It's not obvious.
> >
> > > I don't agree with some earlier poster who thought of the enumeration
> > > as setting some kind of bar, I don't think that is the purpose of it.
> >
> > > The concluding "[...] or any other characteristics that are
> > > not relevant to a person's ability to contribute to the Qt Project."
> > > is of course very important *as well*, to cover our bases.
> >
> > How the committee is going to determine that someone has violated these
> "guidelines not bars"?
> > What is the purpose of the guidelines without additional information how
> to protect them?
> >
> > > I can't really see how this list could be misused. If people have an
> > > issue with a particular item on the list, they should say so.
> >
> > For example, let's say some person (person or legal entity, organization
> or groups of organizations) have projects, competing with Qt somehow (or
> linux, or KDE).
> > That "person/groups" will get more profit if Qt community will became
> unhealthy or will cease to exist.
> > That person could sponsor, support or pay money somehow to other persons
> to support some vulnerable ideas.
> > Persons who accept that ideas and have interests, conflicting with the
> community, could say something like
> > "hey, we are actually feeling harassment, please accept our
> ideas/patches/anything too".
> > It is a space for accepting non-obvious security or architectural
> changes.
> >
> > In 50, 10 or 5 years :) if attackers will be lucky enough, Qt community
> could lost their image of as awesome commuity as it is right now.
>
> I honestly think this is an extremely contrived example, and I think
> you're worrying way too much, but OK let's play along.
>
> You're suggesting that someone would submit bad patches, hoping to get
> harassed and thereby somehow get the patches in, as some sort of
> compensation for the harassment, and would use this in order to
> sabotage the Qt project?
>
> Looking past the ridiculousness of that idea for the moment, getting
> your patches rejected is not harassment. Not under any definition of
> harassment that I know of, and certainly not according to the
> suggested CoC.
>
> The patches can be respectfully rejected with e.g. "this is not in
> line with the Qt vision", or 

Re: [Development] qMoveToConst helper for rvalue references to movable Qt containers?

2018-10-28 Thread Kevin Kofler
Sérgio Martins wrote:
> On Sat, Oct 27, 2018 at 1:53 PM Elvis Stansvik  wrote:
>> Yes, I thought that Q_FOREACH was slated for deprecation though. But
>> maybe that's not set in stone yet?
> 
> It is, see Qt's documentation:
> "Since Qt 5.7, the use of this macro is discouraged. It will be
> removed in a future version of Qt"

As long as it is not actually removed, it is not too late to undo this 
totally incorrect decision.

See also: https://valdyas.org/fading/hacking/happy-porting/

(Technically, it could be readded even after it is removed, but it would be 
much easier to undeprecate it now.)

Kevin Kofler

___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] QUIP 12: Code of Conduct

2018-10-28 Thread André Pönitz
On Sun, Oct 28, 2018 at 08:34:40AM +, Martin Smith wrote:
> And because we are online and spread all around the world, there is
> currently no way for us to stop and prevent abusive behavior.

That would be a valid reason in case there had been or we would
expect to be unstoppable abusive behaviour.

Most abusive behaviour on the mailing lists and IRC can be
stopped by technical means, in exceptional cases like the recent
spam attack on FreeNode also a coc won't help.

> We need a formal procedure to enable that, and the CoC is that
> procedure.

This "we" needs qualification. It apparently does not include me.

Andre'
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] QUIP 12: Code of Conduct

2018-10-28 Thread Elvis Stansvik
Den sön 28 okt. 2018 kl 14:29 skrev Alexey Andreyev
:
>
> > [...]  or the shorter list in the KDE CoC, so we instinctively
> > want to trim the fat - we want to optimize.
>
> I've provided both (CC and from KDE) not to show some version is better,
> but to show both have same problems.
>
> For me it's not about optimization right now. Is it possible to follow 
> provided versions?
> And receive more positive for the commuity than negative.
>
> > the purpose of this enumeration is to list those very large
> > groups of people in society who are currently experiencing harassment
> > and mistreatment for who they are
>
> Is that obvious that provided document will help not made things worse for 
> everyone?
> Are we going to treat something at the commuity just blindly without 
> diagnosis and research?
>
> >  We tell a large part of the population who are currently
> > being oppressed/mistreated that, at least in our community, you can
> > feel safe
>
> How are we going to provide safety?
>
> > The enumeration is not supposed to cover everything, but I
> > think it fulfills a purpose by covering a lot.
>
> As far as I can see the reasoning is based on the hypothesis that any rules 
> will not be able to aggravate the situation. It's not obvious.
>
> > I don't agree with some earlier poster who thought of the enumeration
> > as setting some kind of bar, I don't think that is the purpose of it.
>
> > The concluding "[...] or any other characteristics that are
> > not relevant to a person's ability to contribute to the Qt Project."
> > is of course very important *as well*, to cover our bases.
>
> How the committee is going to determine that someone has violated these 
> "guidelines not bars"?
> What is the purpose of the guidelines without additional information how to 
> protect them?
>
> > I can't really see how this list could be misused. If people have an
> > issue with a particular item on the list, they should say so.
>
> For example, let's say some person (person or legal entity, organization or 
> groups of organizations) have projects, competing with Qt somehow (or linux, 
> or KDE).
> That "person/groups" will get more profit if Qt community will became 
> unhealthy or will cease to exist.
> That person could sponsor, support or pay money somehow to other persons to 
> support some vulnerable ideas.
> Persons who accept that ideas and have interests, conflicting with the 
> community, could say something like
> "hey, we are actually feeling harassment, please accept our 
> ideas/patches/anything too".
> It is a space for accepting non-obvious security or architectural changes.
>
> In 50, 10 or 5 years :) if attackers will be lucky enough, Qt community could 
> lost their image of as awesome commuity as it is right now.

I honestly think this is an extremely contrived example, and I think
you're worrying way too much, but OK let's play along.

You're suggesting that someone would submit bad patches, hoping to get
harassed and thereby somehow get the patches in, as some sort of
compensation for the harassment, and would use this in order to
sabotage the Qt project?

Looking past the ridiculousness of that idea for the moment, getting
your patches rejected is not harassment. Not under any definition of
harassment that I know of, and certainly not according to the
suggested CoC.

The patches can be respectfully rejected with e.g. "this is not in
line with the Qt vision", or "could you please revise this part
first?".

The patches can also be rejected with "please don't submit crap like
this, you fat dyke".

See the difference?

The first is not a matter for the CoC. If the party would still file a
complaint, it would be dealt with and the council would find that no
harassment took place. The second would most certainly be cause for
some kind of action (I guess to begin with, tell the offender to not
do that again and point them to the CoC).

Elvis

>
> ..???
>
> PROFIT! Young generation not interested, no support, commuity is dying, 
> profit for competing projects.
>
>
> It's just one example that could sound like a joke since I'm not a 
> professional with this kind of tricky social questions,
> but I hope I showed the danger as a caricature at least.
>
> I don't want my arguments be adressed to someone personally, and I'm not 
> saying there's some conspiracy here.
> I just want to help to save and develop the community for the future.
>
> I agree we need rules. My problem is not any rules are healthy.
>
> вс, 28 окт. 2018 г. в 14:37, Elvis Stansvik :
>>
>> Den sön 28 okt. 2018 kl 11:34 skrev Alexey Andreyev
>> :
>> >
>> > Hello, Tomasz! :)
>> > Thank you for the question!
>> >
>> > Current draft based on CoC:
>> >
>> > > Our Pledge
>> > > ==
>> > > In the interest of fostering an open and welcoming environment, we
>> > > as contributors to and maintainers of the Qt Project pledge to make
>> > > participation in our project and our community a harassment-free
>> > > experience for everyone, 

Re: [Development] QUIP 12: Code of Conduct

2018-10-28 Thread Alexey Andreyev
> [...]  or the shorter list in the KDE CoC, so we instinctively
> want to trim the fat - we want to optimize.

I've provided both (CC and from KDE) not to show some version is better,
but to show both have same problems.

For me it's not about optimization right now. Is it possible to follow
provided versions?
And receive more positive for the commuity than negative.

> the purpose of this enumeration is to list those very large
> groups of people in society who are currently experiencing harassment
> and mistreatment for who they are

Is that obvious that provided document will help not made things worse for
everyone?
Are we going to treat something at the commuity just blindly without
diagnosis and research?

>  We tell a large part of the population who are currently
> being oppressed/mistreated that, at least in our community, you can
> feel safe

How are we going to provide safety?

> The enumeration is not supposed to cover everything, but I
> think it fulfills a purpose by covering a lot.

As far as I can see the reasoning is based on the hypothesis that any rules
will not be able to aggravate the situation. It's not obvious.

> I don't agree with some earlier poster who thought of the enumeration
> as setting some kind of bar, I don't think that is the purpose of it.

> The concluding "[...] or any other characteristics that are
> not relevant to a person's ability to contribute to the Qt Project."
> is of course very important *as well*, to cover our bases.

How the committee is going to determine that someone has violated these
"guidelines not bars"?
What is the purpose of the guidelines without additional information how to
protect them?

> I can't really see how this list could be misused. If people have an
> issue with a particular item on the list, they should say so.

For example, let's say some person (person or legal entity, organization or
groups of organizations) have projects, competing with Qt somehow (or
linux, or KDE).
That "person/groups" will get more profit if Qt community will became
unhealthy or will cease to exist.
That person could sponsor, support or pay money somehow to other persons to
support some vulnerable ideas.
Persons who accept that ideas and have interests, conflicting with the
community, could say something like
"hey, we are actually feeling harassment, please accept our
ideas/patches/anything too".
It is a space for accepting non-obvious security or architectural changes.

In 50, 10 or 5 years :) if attackers will be lucky enough, Qt community
could lost their image of as awesome commuity as it is right now.

..???

PROFIT! Young generation not interested, no support, commuity is dying,
profit for competing projects.


It's just one example that could sound like a joke since I'm not a
professional with this kind of tricky social questions,
but I hope I showed the danger as a caricature at least.

I don't want my arguments be adressed to someone personally, and I'm not
saying there's some conspiracy here.
I just want to help to save and develop the community for the future.

I agree we need rules. My problem is not any rules are healthy.

вс, 28 окт. 2018 г. в 14:37, Elvis Stansvik :

> Den sön 28 okt. 2018 kl 11:34 skrev Alexey Andreyev
> :
> >
> > Hello, Tomasz! :)
> > Thank you for the question!
> >
> > Current draft based on CoC:
> >
> > > Our Pledge
> > > ==
> > > In the interest of fostering an open and welcoming environment, we
> > > as contributors to and maintainers of the Qt Project pledge to make
> > > participation in our project and our community a harassment-free
> > > experience for everyone, regardless of age, body size, disability,
> > > ethnicity, sex characteristics, gender identity and expression, level
> > > of experience, education, socio-economic status, nationality, personal
> > > appearance, race, religion, or sexual identity and orientation,
> > > or any other characteristics that are not relevant to a person's
> > > ability to contribute to the Qt Project.
>
> A lot of people seem to have a problem with this long enumeration.
>
> I think this is because we're programmers, and we think of it as
> redundant given the concluding "[...] or any other characteristics
> that are not relevant to a person's ability to contribute to the Qt
> Project.", or the shorter list in the KDE CoC, so we instinctively
> want to trim the fat - we want to optimize.
>
> But, and this is of course just my personal opinion/interpretation, I
> think the purpose of this enumeration is to list those very large
> groups of people in society who are currently experiencing harassment
> and mistreatment for who they are. The pledge is supposed to be a set
> of guidelines for how the community operates, but *also* a message to
> potential contributors. Thought of that way, I think the enumeration
> makes sense: We tell a large part of the population who are currently
> being oppressed/mistreated that, at least in our community, you can
> feel safe. The 

Re: [Development] qMoveToConst helper for rvalue references to movable Qt containers?

2018-10-28 Thread Elvis Stansvik
Den sön 28 okt. 2018 kl 13:32 skrev Giuseppe D'Angelo via Development
:
>
> Il 28/10/18 11:22, Elvis Stansvik ha scritto:
> > Though hmm, even if we'd lose move-construction, for the copy we'd get
> > instead, wouldn't copy elision kick in and elide it? So we wouldn't
> > have to pay for the ref count up/down?
>
> GCE is one thing, and applies in a very specific case (returning a
> prvalue).
>
> (N)RVO is another thing, and may or may not be applied depending on
> whether the compiler *can* apply it and *will* apply it.
>
> In the general case, you won't have either, and thus having a move will
> be cheaper than a copy. Returning const objects for types which benefit
> from moves is a bad idea.

Ah yes of course, my bad.

Elvis

>
> My 2 c,
>
> --
> Giuseppe D'Angelo | giuseppe.dang...@kdab.com | Senior Software Engineer
> KDAB (France) S.A.S., a KDAB Group company
> Tel. France +33 (0)4 90 84 08 53, http://www.kdab.com
> KDAB - The Qt, C++ and OpenGL Experts
>
> ___
> Development mailing list
> Development@qt-project.org
> http://lists.qt-project.org/mailman/listinfo/development
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] qMoveToConst helper for rvalue references to movable Qt containers?

2018-10-28 Thread Giuseppe D'Angelo via Development

Il 27/10/18 17:27, Sérgio Martins ha scritto:

It is, see Qt's documentation:
"Since Qt 5.7, the use of this macro is discouraged. It will be
removed in a future version of Qt"



... we need to start adding actual deprecation macros, or people will 
never notice.


https://codereview.qt-project.org/#/c/243949/

Cheers,
--
Giuseppe D'Angelo | giuseppe.dang...@kdab.com | Senior Software Engineer
KDAB (France) S.A.S., a KDAB Group company
Tel. France +33 (0)4 90 84 08 53, http://www.kdab.com
KDAB - The Qt, C++ and OpenGL Experts



smime.p7s
Description: Firma crittografica S/MIME
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] qMoveToConst helper for rvalue references to movable Qt containers?

2018-10-28 Thread Giuseppe D'Angelo via Development

Il 28/10/18 11:22, Elvis Stansvik ha scritto:

Though hmm, even if we'd lose move-construction, for the copy we'd get
instead, wouldn't copy elision kick in and elide it? So we wouldn't
have to pay for the ref count up/down?


GCE is one thing, and applies in a very specific case (returning a 
prvalue).


(N)RVO is another thing, and may or may not be applied depending on 
whether the compiler *can* apply it and *will* apply it.


In the general case, you won't have either, and thus having a move will 
be cheaper than a copy. Returning const objects for types which benefit 
from moves is a bad idea.


My 2 c,

--
Giuseppe D'Angelo | giuseppe.dang...@kdab.com | Senior Software Engineer
KDAB (France) S.A.S., a KDAB Group company
Tel. France +33 (0)4 90 84 08 53, http://www.kdab.com
KDAB - The Qt, C++ and OpenGL Experts



smime.p7s
Description: Firma crittografica S/MIME
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] QUIP 12: Code of Conduct

2018-10-28 Thread Martin Smith
>In any case, the current status quo, which is what I described, ends in either 
>the
>community reacting or not reacting to the alleged offence (i.e. isolating the
>offensive party for example). That is A resolution, be it a good one or bad.

No, it isn't a resolution. Not reacting to a complaint is no resolution. But 
even if "the community" does react to the alleged offense, how is that 
different from mob rule?

>Not only can I, I pretty much have to.

No. You don't. You used the word "heinous." It has a meaning. You used it 
deliberately to draw attention away from the problems the CoC is meant to 
resolve. We don't need a CoC to deal with heinous offenses because heinous 
offenses are dealt with by the police.

>You can't defend the CoC's text and premise on the basis that my argument is
>unlikely, or extreme.

I'm not defending the CoC text and premise. I'm defending the goal of 
establishing a CoC.

>Not if they don't elevate to a criminal act.

My turn to bite. What is a heinous act that is not a criminal act?


From: Konstantin Shegunov 
Sent: Sunday, October 28, 2018 11:35:42 AM
To: Martin Smith
Cc: development@qt-project.org
Subject: Re: [Development] QUIP 12: Code of Conduct



On Sun, Oct 28, 2018 at 10:43 AM Martin Smith 
mailto:martin.sm...@qt.io>> wrote:
>Oh, it is going to end in A resolution, it may not end the way the offended 
>party
>may feel just, but that's true also for the proposed text.

HA! You are not Konstantin Shegunov! A software engineer would imediately see 
that your 3 step CoC might not terminate. You are an imposter!

That's actually amusing, but I'll bite. Formally speaking, I'm not a software 
engineer, never had any formal training in the field. I'm a physicist who 
moonlights as a programmer. In any case, the current status quo, which is what 
I described, ends in either the community reacting or not reacting to the 
alleged offence (i.e. isolating the offensive party for example). That is A 
resolution, be it a good one or bad.

>imagine that the abusive party is an employee of the QtC and has committed
>heinous acts against a community member.

You can't immediately jump to the worst case scenario to discredit the code of 
conduct. In fact, the CoC can deal with "heinous acts" by stating that such 
acts will be referred to the appropriate legal authority.

Not only can I, I pretty much have to. Minor infringements can already be 
handled internally without the need for CoC, major ones is where it would 
actually matter if we have one and which one we chose. Also it's a perfectly 
valid logic to push an argument to the extreme to see if holds, we do it on 
every day basis. In math you can assume something, operate on the presumption 
and see if contradicts itself when pushed (reductio ad impossibilem). If I were 
to design a safety net for a nuclear power plant am I to just ignore the 
extreme or unlikely case? Surely not. You compared the CoC to a "local law" of 
sorts, but does the local law forgo the unlikely case that from the whole 
population one person would be a murderer? I shouldn't think so.
You can't defend the CoC's text and premise on the basis that my argument is 
unlikely, or extreme. It has to able to withstand exactly those extremes!

In fact, the CoC can deal with "heinous acts" by stating that such acts will be 
referred to the appropriate legal authority.

Not if they don't elevate to a criminal act.
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] QUIP 12: Code of Conduct

2018-10-28 Thread Elvis Stansvik
Den sön 28 okt. 2018 kl 11:34 skrev Alexey Andreyev
:
>
> Hello, Tomasz! :)
> Thank you for the question!
>
> Current draft based on CoC:
>
> > Our Pledge
> > ==
> > In the interest of fostering an open and welcoming environment, we
> > as contributors to and maintainers of the Qt Project pledge to make
> > participation in our project and our community a harassment-free
> > experience for everyone, regardless of age, body size, disability,
> > ethnicity, sex characteristics, gender identity and expression, level
> > of experience, education, socio-economic status, nationality, personal
> > appearance, race, religion, or sexual identity and orientation,
> > or any other characteristics that are not relevant to a person's
> > ability to contribute to the Qt Project.

A lot of people seem to have a problem with this long enumeration.

I think this is because we're programmers, and we think of it as
redundant given the concluding "[...] or any other characteristics
that are not relevant to a person's ability to contribute to the Qt
Project.", or the shorter list in the KDE CoC, so we instinctively
want to trim the fat - we want to optimize.

But, and this is of course just my personal opinion/interpretation, I
think the purpose of this enumeration is to list those very large
groups of people in society who are currently experiencing harassment
and mistreatment for who they are. The pledge is supposed to be a set
of guidelines for how the community operates, but *also* a message to
potential contributors. Thought of that way, I think the enumeration
makes sense: We tell a large part of the population who are currently
being oppressed/mistreated that, at least in our community, you can
feel safe. The enumeration is not supposed to cover everything, but I
think it fulfills a purpose by covering a lot.

I don't agree with some earlier poster who thought of the enumeration
as setting some kind of bar, I don't think that is the purpose of it.
It is meant as a message, and to drive that message home with the
groups of people we want to reach, I think it makes sense to be
explicit. The concluding "[...] or any other characteristics that are
not relevant to a person's ability to contribute to the Qt Project."
is of course very important *as well*, to cover our bases.

If in 5, 10 or 50 years (I know, I'm a pessimist), there is no longer
widespread discrimination and mistreatment of people for their race,
religion or sexual identity/orientation, but some other groups are
being mistreated (again, sorry for the pessimism), then I think it's
perfectly fine to revise this list.

I can't really see how this list could be misused. If people have an
issue with a particular item on the list, they should say so.

That's just my 2 cents on the enumeration, which seems to bug people,
and I completely understand if others see it differently.

Elvis

>
> and KDE version:
>
> > We do not tolerate personal attacks, racism, sexism or any other form of 
> > discrimination.
>
> Do we have any research about effects it leading?
>
> How many discrimination suspicions do we have right now?
>
> How could it be resolved successfully at digital community?
>
> How many misuse examples do we have at open projects since accepting similar 
> rules?
>
> How CoC board are going to protect community from discrimination and 
> harassment?
>
> Are CoC committee ready for "affirmative action"?
>
> I'm not against the rules as a concept, I agree we need it,
> but I totally against perverted or undefined rules that could help to destroy 
> the community.
>
> I could not accept argument like "let's accept just anything and see how it 
> goes and fix something later".
> "Don't code today what you can't debug tomorrow" :)
>
> I'm just saying we should think twice befoce accepting something.
>
> P.S.: I'm ready to change my mind if I've made a mistake, feel free to 
> criticize, correct and ignore me :)
>
> вс, 28 окт. 2018 г. в 10:47, Tomasz Siekierda :
>>
>> > The controversial discrimination protection sentences at least should be 
>> > carefully discussed. It's not some thing that we could accept as easy as 
>> > rewrite.
>>
>> Hi Alexey, I've just read the QUIP proposal and couldn't find any
>> controversial sentences. Could you elaborate? Which points shall be
>> discussed?
>> On Sat, 27 Oct 2018 at 22:41, Konstantin Shegunov  
>> wrote:
>> >
>> > On Sat, Oct 27, 2018 at 11:20 PM Thiago Macieira 
>> >  wrote:
>> >>
>> >> The answer to all of those questions needs to be "yes". Anything short of 
>> >> that
>> >> means the CoC is powerless and just for show.
>> >
>> >
>> > Which was my point exactly.
>> >
>> >>
>> >> Whether there's a termination of employment or not is out of scope, since 
>> >> the
>> >> CoC does not rule TQtC employment and what other work there is inside that
>> >> company.
>> >>
>> >>
>> >> Note also it applies to any company. If you're not welcome anymore in the
>> >> community where your employer is asking you to do work, 

Re: [Development] qMoveToConst helper for rvalue references to movable Qt containers?

2018-10-28 Thread Elvis Stansvik
Den sön 28 okt. 2018 kl 11:22 skrev Elvis Stansvik :
>
> Den lör 27 okt. 2018 kl 22:23 skrev Thiago Macieira 
> :
> >
> > On Saturday, 27 October 2018 08:33:30 PDT Sérgio Martins wrote:
> > > Should we instead just encourage people to make returnsQtContainer()
> > > return a const container ?
> >
> > We should not, since the prevents move-construction from happening. You'll 
> > pay
> > the cost of two reference counts (one up and one down).
>
> Though hmm, even if we'd lose move-construction, for the copy we'd get
> instead, wouldn't copy elision kick in and elide it? So we wouldn't
> have to pay for the ref count up/down?
>
> I simplified my example a little, so to recap:
>
> $ cat copytest.cpp
> #include 
> #include 
>
> struct Foo {
> Foo() {
> std::cout << this << " constructed" << std::endl;
> }
> Foo(const Foo &) {
> std::cout << this << " copy constructed" << std::endl;
> }
> Foo(Foo &&) {
> std::cout << this << " move constructed" << std::endl;
> }
> ~Foo() {
> std::cout << this << " destructed" << std::endl;
> }
> std::vector::iterator begin() {
> std::cout << this << " begin" << std::endl; return v.begin();
> };
> std::vector::const_iterator begin() const {
> std::cout << this << " begin const" << std::endl; return v.begin();
> };
> std::vector::iterator end() {
> std::cout << this << " end" << std::endl; return v.end();
> };
> std::vector::const_iterator end() const {
> std::cout << this << " end const" << std::endl; return v.end();
> };
> std::vector v{1, 2, 3};
> };
>
> Foo f() {
> Foo foo;
> return foo;
> }
>
> const Foo constF() {
> Foo foo;
> return foo;
> }
>
> template 
> const T moveToConst(T &)
> {
> return std::move(t);
> }
>
> int main(void) {
> std::cout << "without moveToConst:" << std::endl;
> for (auto v : f()) { }
>
> std::cout << std::endl;
>
> std::cout << "with moveToConst:" << std::endl;
> for (auto v : moveToConst(f())) { }
>
> std::cout << std::endl;
>
> std::cout << "with returning const:" << std::endl;
> for (auto v : constF()) { }
>
> std::cout << std::endl;
>
> std::cout << "with recommended way:" << std::endl;
> const auto stuff = f();
> for (auto v : stuff) { }
>
> return 0;
> }
>
> Result:
>
> $ g++ -std=c++17 -O0 -o copytest copytest.cpp
> $ ./copytest
> without moveToConst:
> 0x7ffcc6ac76b0 constructed
> 0x7ffcc6ac76b0 begin
> 0x7ffcc6ac76b0 end
> 0x7ffcc6ac76b0 destructed
>
> with moveToConst:
> 0x7ffcc6ac7710 constructed
> 0x7ffcc6ac76d0 move constructed
> 0x7ffcc6ac7710 destructed
> 0x7ffcc6ac76d0 begin const
> 0x7ffcc6ac76d0 end const
> 0x7ffcc6ac76d0 destructed
>
> with returning const:
> 0x7ffcc6ac76f0 constructed
> 0x7ffcc6ac76f0 begin const
> 0x7ffcc6ac76f0 end const
> 0x7ffcc6ac76f0 destructed
>
> with recommended way:
> 0x7ffcc6ac7710 constructed
> 0x7ffcc6ac7710 begin const
> 0x7ffcc6ac7710 end const
> 0x7ffcc6ac7710 destructed
>
> So it looks like the copy has been elided also in the "with returning
> const" case. Anyone know if this is guaranteed in C++17, or just
> permitted?
>
> If I compile with -fno-elide-constructors to disable elision:
>
> $ g++ -std=c++17 -fno-elide-constructors -O0 -o copytest copytest.cpp
> $ ./copytest
> without moveToConst:
> 0x7ffe7c107070 constructed
> 0x7ffe7c1070f0 move constructed
> 0x7ffe7c107070 destructed
> 0x7ffe7c1070f0 begin
> 0x7ffe7c1070f0 end
> 0x7ffe7c1070f0 destructed
>
> with moveToConst:
> 0x7ffe7c107070 constructed
> 0x7ffe7c107150 move constructed
> 0x7ffe7c107070 destructed
> 0x7ffe7c107110 move constructed
> 0x7ffe7c107150 destructed
> 0x7ffe7c107110 begin const
> 0x7ffe7c107110 end const
> 0x7ffe7c107110 destructed
>
> with returning const:
> 0x7ffe7c107070 constructed
> 0x7ffe7c107130 move constructed
> 0x7ffe7c107070 destructed
> 0x7ffe7c107130 begin const
> 0x7ffe7c107130 end const
> 0x7ffe7c107130 destructed
>
> with recommended way:
> 0x7ffe7c107070 constructed
> 0x7ffe7c107150 move constructed
> 0x7ffe7c107070 destructed
> 0x7ffe7c107150 begin const
> 0x7ffe7c107150 end const
> 0x7ffe7c107150 destructed
> $

I tried some more compilers.

With Apple Clang 9.0.0 and -std=c++14, the output is the same without
-fno-elide-constructors, but interestingly, if -fno-elide-constructors
is added, the output is:

with returning const:
0x7fff596ed8a8 constructed
0x7fff596eda20 move constructed
0x7fff596ed8a8 destructed
0x7fff596eda20 begin const
0x7fff596eda20 end const
0x7fff596eda20 destructed

with recommended way:
0x7fff596ed8a8 constructed
0x7fff596ed9c8 move constructed
0x7fff596ed8a8 destructed
0x7fff596ed9e0 move constructed
0x7fff596ed9c8 destructed
0x7fff596ed9e0 begin const
0x7fff596ed9e0 end const
0x7fff596ed9e0 destructed

With MSVC 2015 (compiled with just cl copytest.cpp), the output is:

with returning const:
009FFE4BFD90 constructed
009FFE4BFE88 move constructed
009FFE4BFD90 

Re: [Development] QUIP 12: Code of Conduct

2018-10-28 Thread Alexey Andreyev
I agree with you, Konstantin

вс, 28 окт. 2018 г. в 13:36, Konstantin Shegunov :

>
>
> On Sun, Oct 28, 2018 at 10:43 AM Martin Smith  wrote:
>
>> >Oh, it is going to end in A resolution, it may not end the way the
>> offended party
>> >may feel just, but that's true also for the proposed text.
>>
>> HA! You are not Konstantin Shegunov! A software engineer would imediately
>> see that your 3 step CoC might not terminate. You are an imposter!
>>
>
> That's actually amusing, but I'll bite. Formally speaking, I'm not a
> software engineer, never had any formal training in the field. I'm a
> physicist who moonlights as a programmer. In any case, the current status
> quo, which is what I described, ends in either the community reacting or
> not reacting to the alleged offence (i.e. isolating the offensive party for
> example). That is A resolution, be it a good one or bad.
>
> >imagine that the abusive party is an employee of the QtC and has committed
>> >heinous acts against a community member.
>>
>> You can't immediately jump to the worst case scenario to discredit the
>> code of conduct. In fact, the CoC can deal with "heinous acts" by stating
>> that such acts will be referred to the appropriate legal authority.
>>
>
> Not only can I, I pretty much have to. Minor infringements can already be
> handled internally without the need for CoC, major ones is where it would
> actually matter if we have one and which one we chose. Also it's a
> perfectly valid logic to push an argument to the extreme to see if holds,
> we do it on every day basis. In math you can assume something, operate on
> the presumption and see if contradicts itself when pushed (reductio ad
> impossibilem). If I were to design a safety net for a nuclear power plant
> am I to just ignore the extreme or unlikely case? Surely not. You compared
> the CoC to a "local law" of sorts, but does the local law forgo the
> unlikely case that from the whole population one person would be a
> murderer? I shouldn't think so.
> You can't defend the CoC's text and premise on the basis that my argument
> is unlikely, or extreme. It has to able to withstand exactly those extremes!
>
> In fact, the CoC can deal with "heinous acts" by stating that such acts
>> will be referred to the appropriate legal authority.
>
>
> Not if they don't elevate to a criminal act.
> ___
> Development mailing list
> Development@qt-project.org
> http://lists.qt-project.org/mailman/listinfo/development
>
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] QUIP 12: Code of Conduct

2018-10-28 Thread Konstantin Shegunov
On Sun, Oct 28, 2018 at 10:43 AM Martin Smith  wrote:

> >Oh, it is going to end in A resolution, it may not end the way the
> offended party
> >may feel just, but that's true also for the proposed text.
>
> HA! You are not Konstantin Shegunov! A software engineer would imediately
> see that your 3 step CoC might not terminate. You are an imposter!
>

That's actually amusing, but I'll bite. Formally speaking, I'm not a
software engineer, never had any formal training in the field. I'm a
physicist who moonlights as a programmer. In any case, the current status
quo, which is what I described, ends in either the community reacting or
not reacting to the alleged offence (i.e. isolating the offensive party for
example). That is A resolution, be it a good one or bad.

>imagine that the abusive party is an employee of the QtC and has committed
> >heinous acts against a community member.
>
> You can't immediately jump to the worst case scenario to discredit the
> code of conduct. In fact, the CoC can deal with "heinous acts" by stating
> that such acts will be referred to the appropriate legal authority.
>

Not only can I, I pretty much have to. Minor infringements can already be
handled internally without the need for CoC, major ones is where it would
actually matter if we have one and which one we chose. Also it's a
perfectly valid logic to push an argument to the extreme to see if holds,
we do it on every day basis. In math you can assume something, operate on
the presumption and see if contradicts itself when pushed (reductio ad
impossibilem). If I were to design a safety net for a nuclear power plant
am I to just ignore the extreme or unlikely case? Surely not. You compared
the CoC to a "local law" of sorts, but does the local law forgo the
unlikely case that from the whole population one person would be a
murderer? I shouldn't think so.
You can't defend the CoC's text and premise on the basis that my argument
is unlikely, or extreme. It has to able to withstand exactly those extremes!

In fact, the CoC can deal with "heinous acts" by stating that such acts
> will be referred to the appropriate legal authority.


Not if they don't elevate to a criminal act.
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] QUIP 12: Code of Conduct

2018-10-28 Thread Alexey Andreyev
Hello, Tomasz! :)
Thank you for the question!

Current draft based on CoC:

> Our Pledge
> ==
> In the interest of fostering an open and welcoming environment, we
> as contributors to and maintainers of the Qt Project pledge to make
> participation in our project and our community a harassment-free
> experience for everyone, regardless of age, body size, disability,
> ethnicity, sex characteristics, gender identity and expression, level
> of experience, education, socio-economic status, nationality, personal
> appearance, race, religion, or sexual identity and orientation,
> or any other characteristics that are not relevant to a person's
> ability to contribute to the Qt Project.

and KDE version:

> We do not tolerate personal attacks, racism, sexism or any other form of
discrimination.

Do we have any research about effects it leading?

How many discrimination suspicions do we have right now?

How could it be resolved successfully at digital community?

How many misuse examples do we have at open projects since accepting
similar rules?

How CoC board are going to protect community from discrimination and
harassment?

Are CoC committee ready for "affirmative action"?

I'm not against the rules as a concept, I agree we need it,
but I totally against perverted or undefined rules that could help to
destroy the community.

I could not accept argument like "let's accept just anything and see how it
goes and fix something later".
"Don't code today what you can't debug tomorrow" :)

I'm just saying we should think twice befoce accepting something.

P.S.: I'm ready to change my mind if I've made a mistake, feel free to
criticize, correct and ignore me :)

вс, 28 окт. 2018 г. в 10:47, Tomasz Siekierda :

> > The controversial discrimination protection sentences at least should be
> carefully discussed. It's not some thing that we could accept as easy as
> rewrite.
>
> Hi Alexey, I've just read the QUIP proposal and couldn't find any
> controversial sentences. Could you elaborate? Which points shall be
> discussed?
> On Sat, 27 Oct 2018 at 22:41, Konstantin Shegunov 
> wrote:
> >
> > On Sat, Oct 27, 2018 at 11:20 PM Thiago Macieira <
> thiago.macie...@intel.com> wrote:
> >>
> >> The answer to all of those questions needs to be "yes". Anything short
> of that
> >> means the CoC is powerless and just for show.
> >
> >
> > Which was my point exactly.
> >
> >>
> >> Whether there's a termination of employment or not is out of scope,
> since the
> >> CoC does not rule TQtC employment and what other work there is inside
> that
> >> company.
> >>
> >>
> >> Note also it applies to any company. If you're not welcome anymore in
> the
> >> community where your employer is asking you to do work, that is going to
> >> affect your employment.
> >
> >
> > I agree. However my argument was that the QtC being a major contributor
> to the codebase is going to have to abide by the ruling of the proposed
> committee, which is a significant commitment (and a major nitpick I admit).
> > ___
> > Development mailing list
> > Development@qt-project.org
> > http://lists.qt-project.org/mailman/listinfo/development
> ___
> Development mailing list
> Development@qt-project.org
> http://lists.qt-project.org/mailman/listinfo/development
>
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] qMoveToConst helper for rvalue references to movable Qt containers?

2018-10-28 Thread Elvis Stansvik
Den sön 28 okt. 2018 kl 11:22 skrev Elvis Stansvik :
>
> Den lör 27 okt. 2018 kl 22:23 skrev Thiago Macieira 
> :
> >
> > On Saturday, 27 October 2018 08:33:30 PDT Sérgio Martins wrote:
> > > Should we instead just encourage people to make returnsQtContainer()
> > > return a const container ?
> >
> > We should not, since the prevents move-construction from happening. You'll 
> > pay
> > the cost of two reference counts (one up and one down).
>
> Though hmm, even if we'd lose move-construction, for the copy we'd get
> instead, wouldn't copy elision kick in and elide it? So we wouldn't
> have to pay for the ref count up/down?
>
> I simplified my example a little, so to recap:
>
> $ cat copytest.cpp
> #include 
> #include 
>
> struct Foo {
> Foo() {
> std::cout << this << " constructed" << std::endl;
> }
> Foo(const Foo &) {
> std::cout << this << " copy constructed" << std::endl;
> }
> Foo(Foo &&) {
> std::cout << this << " move constructed" << std::endl;
> }
> ~Foo() {
> std::cout << this << " destructed" << std::endl;
> }
> std::vector::iterator begin() {
> std::cout << this << " begin" << std::endl; return v.begin();
> };
> std::vector::const_iterator begin() const {
> std::cout << this << " begin const" << std::endl; return v.begin();
> };
> std::vector::iterator end() {
> std::cout << this << " end" << std::endl; return v.end();
> };
> std::vector::const_iterator end() const {
> std::cout << this << " end const" << std::endl; return v.end();
> };
> std::vector v{1, 2, 3};
> };
>
> Foo f() {
> Foo foo;
> return foo;
> }
>
> const Foo constF() {
> Foo foo;
> return foo;
> }
>
> template 
> const T moveToConst(T &)
> {
> return std::move(t);
> }
>
> int main(void) {
> std::cout << "without moveToConst:" << std::endl;
> for (auto v : f()) { }
>
> std::cout << std::endl;
>
> std::cout << "with moveToConst:" << std::endl;
> for (auto v : moveToConst(f())) { }
>
> std::cout << std::endl;
>
> std::cout << "with returning const:" << std::endl;
> for (auto v : constF()) { }
>
> std::cout << std::endl;
>
> std::cout << "with recommended way:" << std::endl;
> const auto stuff = f();
> for (auto v : stuff) { }
>
> return 0;
> }

I put it up on godbolt for this who want to play: https://godbolt.org/z/x6FPq_

Elvis

>
> Result:
>
> $ g++ -std=c++17 -O0 -o copytest copytest.cpp
> $ ./copytest
> without moveToConst:
> 0x7ffcc6ac76b0 constructed
> 0x7ffcc6ac76b0 begin
> 0x7ffcc6ac76b0 end
> 0x7ffcc6ac76b0 destructed
>
> with moveToConst:
> 0x7ffcc6ac7710 constructed
> 0x7ffcc6ac76d0 move constructed
> 0x7ffcc6ac7710 destructed
> 0x7ffcc6ac76d0 begin const
> 0x7ffcc6ac76d0 end const
> 0x7ffcc6ac76d0 destructed
>
> with returning const:
> 0x7ffcc6ac76f0 constructed
> 0x7ffcc6ac76f0 begin const
> 0x7ffcc6ac76f0 end const
> 0x7ffcc6ac76f0 destructed
>
> with recommended way:
> 0x7ffcc6ac7710 constructed
> 0x7ffcc6ac7710 begin const
> 0x7ffcc6ac7710 end const
> 0x7ffcc6ac7710 destructed
>
> So it looks like the copy has been elided also in the "with returning
> const" case. Anyone know if this is guaranteed in C++17, or just
> permitted?
>
> If I compile with -fno-elide-constructors to disable elision:
>
> $ g++ -std=c++17 -fno-elide-constructors -O0 -o copytest copytest.cpp
> $ ./copytest
> without moveToConst:
> 0x7ffe7c107070 constructed
> 0x7ffe7c1070f0 move constructed
> 0x7ffe7c107070 destructed
> 0x7ffe7c1070f0 begin
> 0x7ffe7c1070f0 end
> 0x7ffe7c1070f0 destructed
>
> with moveToConst:
> 0x7ffe7c107070 constructed
> 0x7ffe7c107150 move constructed
> 0x7ffe7c107070 destructed
> 0x7ffe7c107110 move constructed
> 0x7ffe7c107150 destructed
> 0x7ffe7c107110 begin const
> 0x7ffe7c107110 end const
> 0x7ffe7c107110 destructed
>
> with returning const:
> 0x7ffe7c107070 constructed
> 0x7ffe7c107130 move constructed
> 0x7ffe7c107070 destructed
> 0x7ffe7c107130 begin const
> 0x7ffe7c107130 end const
> 0x7ffe7c107130 destructed
>
> with recommended way:
> 0x7ffe7c107070 constructed
> 0x7ffe7c107150 move constructed
> 0x7ffe7c107070 destructed
> 0x7ffe7c107150 begin const
> 0x7ffe7c107150 end const
> 0x7ffe7c107150 destructed
> $
>
> What I find surprising here is that with the -fno-elide-constructors
> flag, in the "with returning const", the move constructor *is* called.
>
> Didn't we just say it wouldn't, because the const rvalue wouldn't bind
> to the non-const rvalue reference?
>
> I'm a little confused :p
>
> Elvis
>
> >
> > --
> > Thiago Macieira - thiago.macieira (AT) intel.com
> >   Software Architect - Intel Open Source Technology Center
> >
> >
> >
> > ___
> > Development mailing list
> > Development@qt-project.org
> > http://lists.qt-project.org/mailman/listinfo/development
___
Development mailing list
Development@qt-project.org

Re: [Development] qMoveToConst helper for rvalue references to movable Qt containers?

2018-10-28 Thread Elvis Stansvik
Den lör 27 okt. 2018 kl 22:23 skrev Thiago Macieira :
>
> On Saturday, 27 October 2018 08:33:30 PDT Sérgio Martins wrote:
> > Should we instead just encourage people to make returnsQtContainer()
> > return a const container ?
>
> We should not, since the prevents move-construction from happening. You'll pay
> the cost of two reference counts (one up and one down).

Though hmm, even if we'd lose move-construction, for the copy we'd get
instead, wouldn't copy elision kick in and elide it? So we wouldn't
have to pay for the ref count up/down?

I simplified my example a little, so to recap:

$ cat copytest.cpp
#include 
#include 

struct Foo {
Foo() {
std::cout << this << " constructed" << std::endl;
}
Foo(const Foo &) {
std::cout << this << " copy constructed" << std::endl;
}
Foo(Foo &&) {
std::cout << this << " move constructed" << std::endl;
}
~Foo() {
std::cout << this << " destructed" << std::endl;
}
std::vector::iterator begin() {
std::cout << this << " begin" << std::endl; return v.begin();
};
std::vector::const_iterator begin() const {
std::cout << this << " begin const" << std::endl; return v.begin();
};
std::vector::iterator end() {
std::cout << this << " end" << std::endl; return v.end();
};
std::vector::const_iterator end() const {
std::cout << this << " end const" << std::endl; return v.end();
};
std::vector v{1, 2, 3};
};

Foo f() {
Foo foo;
return foo;
}

const Foo constF() {
Foo foo;
return foo;
}

template 
const T moveToConst(T &)
{
return std::move(t);
}

int main(void) {
std::cout << "without moveToConst:" << std::endl;
for (auto v : f()) { }

std::cout << std::endl;

std::cout << "with moveToConst:" << std::endl;
for (auto v : moveToConst(f())) { }

std::cout << std::endl;

std::cout << "with returning const:" << std::endl;
for (auto v : constF()) { }

std::cout << std::endl;

std::cout << "with recommended way:" << std::endl;
const auto stuff = f();
for (auto v : stuff) { }

return 0;
}

Result:

$ g++ -std=c++17 -O0 -o copytest copytest.cpp
$ ./copytest
without moveToConst:
0x7ffcc6ac76b0 constructed
0x7ffcc6ac76b0 begin
0x7ffcc6ac76b0 end
0x7ffcc6ac76b0 destructed

with moveToConst:
0x7ffcc6ac7710 constructed
0x7ffcc6ac76d0 move constructed
0x7ffcc6ac7710 destructed
0x7ffcc6ac76d0 begin const
0x7ffcc6ac76d0 end const
0x7ffcc6ac76d0 destructed

with returning const:
0x7ffcc6ac76f0 constructed
0x7ffcc6ac76f0 begin const
0x7ffcc6ac76f0 end const
0x7ffcc6ac76f0 destructed

with recommended way:
0x7ffcc6ac7710 constructed
0x7ffcc6ac7710 begin const
0x7ffcc6ac7710 end const
0x7ffcc6ac7710 destructed

So it looks like the copy has been elided also in the "with returning
const" case. Anyone know if this is guaranteed in C++17, or just
permitted?

If I compile with -fno-elide-constructors to disable elision:

$ g++ -std=c++17 -fno-elide-constructors -O0 -o copytest copytest.cpp
$ ./copytest
without moveToConst:
0x7ffe7c107070 constructed
0x7ffe7c1070f0 move constructed
0x7ffe7c107070 destructed
0x7ffe7c1070f0 begin
0x7ffe7c1070f0 end
0x7ffe7c1070f0 destructed

with moveToConst:
0x7ffe7c107070 constructed
0x7ffe7c107150 move constructed
0x7ffe7c107070 destructed
0x7ffe7c107110 move constructed
0x7ffe7c107150 destructed
0x7ffe7c107110 begin const
0x7ffe7c107110 end const
0x7ffe7c107110 destructed

with returning const:
0x7ffe7c107070 constructed
0x7ffe7c107130 move constructed
0x7ffe7c107070 destructed
0x7ffe7c107130 begin const
0x7ffe7c107130 end const
0x7ffe7c107130 destructed

with recommended way:
0x7ffe7c107070 constructed
0x7ffe7c107150 move constructed
0x7ffe7c107070 destructed
0x7ffe7c107150 begin const
0x7ffe7c107150 end const
0x7ffe7c107150 destructed
$

What I find surprising here is that with the -fno-elide-constructors
flag, in the "with returning const", the move constructor *is* called.

Didn't we just say it wouldn't, because the const rvalue wouldn't bind
to the non-const rvalue reference?

I'm a little confused :p

Elvis

>
> --
> Thiago Macieira - thiago.macieira (AT) intel.com
>   Software Architect - Intel Open Source Technology Center
>
>
>
> ___
> Development mailing list
> Development@qt-project.org
> http://lists.qt-project.org/mailman/listinfo/development
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] QUIP 12: Code of Conduct

2018-10-28 Thread Martin Smith
>Oh, it is going to end in A resolution, it may not end the way the offended 
>party
>may feel just, but that's true also for the proposed text.

HA! You are not Konstantin Shegunov! A software engineer would imediately see 
that your 3 step CoC might not terminate. You are an imposter!

>imagine that the abusive party is an employee of the QtC and has committed
>heinous acts against a community member.

You can't immediately jump to the worst case scenario to discredit the code of 
conduct. In fact, the CoC can deal with "heinous acts" by stating that such 
acts will be referred to the appropriate legal authority.


From: Konstantin Shegunov 
Sent: Saturday, October 27, 2018 9:04:12 PM
To: Martin Smith
Cc: development@qt-project.org
Subject: Re: [Development] QUIP 12: Code of Conduct

On Sat, Oct 27, 2018 at 4:56 PM Martin Smith 
mailto:martin.sm...@qt.io>> wrote:
You just specified a code of conduct. The problem with your code of conduct is 
that it isn't guaranteed to end in resolution.

Oh, it is going to end in A resolution, it may not end the way the offended 
party may feel just, but that's true also for the proposed text.

But that isn't the implication.

Then I apologize, this is how I interpreted it.

The implication is that a mistreated person can take the actions you have 
specified, and the result can be that the mistreatment, real or not, is not 
resolved.

The proposed text can't guarantee resolution either (see below for a reductio 
ad absurdum).

Active contributors who abuse others should be treated the same as inactive 
contributors who abuse others. What would be done would of course depend on 
what the abuser did. I suppose the abuser (active contributor or not) would be 
informed as to what he/she did wrong and would be told to stop doing it.

Say we adopt the CC (basically the proposed text) and imagine that the abusive 
party is an employee of the QtC and has committed heinous acts against a 
community member. As far as I can tell this is very unlikely, but humor me for 
a second. As QtC employees' main work is on the Qt project, i.e. writing 
patches, committing features, writing docs and such, how would is this proposed 
committee to enforce the CoC? Are they going to plead that the person is taken 
out of the project, and wouldn't that mean that, basically, he/she can't be an 
employee for the QtC anymore? And to drive it home, say the head troll had a 
mental breakdown or something what is the committee to do? Take over the QtC?

Just as I said before, I'm not against a CoC in principle. I'm against the CC's 
text which is quite invasive and badly written. To me KDE's CoC is much more 
practical in the case of the Qt project.

Exactly. Without a CoC, we have no laws, so the implication is we don't 
consider any behavior an offense.

Laws are bit more complicated than a statement of how people *should* behave. 
There's also separation of power, mandates, enforcement and laws that control 
how laws are made. Also there's hierarchy between the laws themselves in case 
they are in conflict. I suggest we don't venture into that. It's not what binds 
us to this community to begin with.
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] QUIP 12: Code of Conduct

2018-10-28 Thread Martin Smith
>I am not aware of a single country without laws.
>Over here e.g. "insult" is an offense.

First, most of us aren't in Germany and don't have the German legal system to 
protect us. But more to the point, A CoC need not be adequate to deal with 
actual crimes nor even violations of civil law, because, as you point out, 
every country has laws to deal with incidents that rise to that level. For 
dealing with these problems, our CoC can simply state that the committee will 
refer such incidents to the appropriate legal authority.

The forums where our CoC is needed are like meetings, but they are online. 
Imagine a group of contributors attending a meeting in a room. Abusive behavior 
would not be allowed there, and it probably wouldn't happen anyway, because 
people generally remain civil in a face to face context. But the same set of 
behaviors that would not be allowed in that face to face meeting should not be 
allowed in our online interactions, whether synchronous in an actual online 
meeting or asynchronous via code reviews and email list discussions.

And because we are online and spread all around the world, there is currently 
no way for us to stop and prevent abusive behavior.We need a formal procedure 
to enable that, and the CoC is that procedure.


From: André Pönitz 
Sent: Saturday, October 27, 2018 8:37:12 PM
To: Martin Smith
Cc: Bernhard Lindner; development@qt-project.org
Subject: Re: [Development] QUIP 12: Code of Conduct

On Sat, Oct 27, 2018 at 05:34:30PM +, Martin Smith wrote:
> >Actions that are considered offenses by a society are typically mentioned
> >in its laws. If something is not forbidden by law it usually means that
> >there is no majority, let alone consensus in that society that this action
> >is an offense.
>
> Exactly. Without a CoC, we have no laws, so the implication
> is we don't consider any behavior an offense.

I am not aware of a single country without laws.

Over here e.g. "insult" is an offense.

Andre'
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] QUIP 12: Code of Conduct

2018-10-28 Thread Tomasz Siekierda
> The controversial discrimination protection sentences at least should be 
> carefully discussed. It's not some thing that we could accept as easy as 
> rewrite.

Hi Alexey, I've just read the QUIP proposal and couldn't find any
controversial sentences. Could you elaborate? Which points shall be
discussed?
On Sat, 27 Oct 2018 at 22:41, Konstantin Shegunov  wrote:
>
> On Sat, Oct 27, 2018 at 11:20 PM Thiago Macieira  
> wrote:
>>
>> The answer to all of those questions needs to be "yes". Anything short of 
>> that
>> means the CoC is powerless and just for show.
>
>
> Which was my point exactly.
>
>>
>> Whether there's a termination of employment or not is out of scope, since the
>> CoC does not rule TQtC employment and what other work there is inside that
>> company.
>>
>>
>> Note also it applies to any company. If you're not welcome anymore in the
>> community where your employer is asking you to do work, that is going to
>> affect your employment.
>
>
> I agree. However my argument was that the QtC being a major contributor to 
> the codebase is going to have to abide by the ruling of the proposed 
> committee, which is a significant commitment (and a major nitpick I admit).
> ___
> Development mailing list
> Development@qt-project.org
> http://lists.qt-project.org/mailman/listinfo/development
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development