[Development] QtCS19 Notes: Remote display of Qt applications in Qt 6

2019-11-20 Thread Maurice Kalinowski
Hi,

Following the notes taken on the remote display session:

- Qt5 has webgl and vnc
- Use-case duplicate displays
○ One local
○ One remote
- TQtC Hackathon project
○ Stream the scene graph to another machine
- Multi seat is problematic
○ Affect all current solutions
○ However, part of Wayland protocol
- Option: Being able to have multiple QPA backends at the same time
- use-cases
○ Remote mirror
○ Multiple displays
○ Virtual Keyboard and physical keyboard at the same time
○ …
○ Need to stay focused
- Current understanding is that this is not 6.0 content
○ WebGL etc might not be ready within timeframe
- "Multiplexing QPA" does help to shift any work beyond 6.0 and stay 
compatible with current API
- Again, multiple inputs should be handled via wayland
○ Moved details to be discussed to wayland session
- Proposal is to fix this based on specific project and not try to aim 
at an swiss army knife right from the beginning
- While it is not part of current 6.0 plans, we should try to get the 
basics available
○ Enable multiple inputs (keyboards, cursors, …)
- Where to draw a line?
○ Multiple cursors displayed?...
- Anything else but wayland?
○ X11 tried this, but never got around to have something to be 
used
○ Are there any other options? No one knows…
- Proposal Paul:
○ QPA API as a start
○ Then merges events to the application
- Action Points:
○ How and who drives multi seat?
○ Need to get started with a pilot project based on Wayland
○ Multiplex solution seems most viable
○ Get user story in JIRA



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


Re: [Development] Notes from "C++17 language and std library features for Qt 6"

2019-11-20 Thread Allan Sandfeld Jensen
On Wednesday, 20 November 2019 20:20:29 CET Kari Oikarinen wrote:
> ## Parallel STL algorithms
> 
> We could allow parallel execution tags in our API to let users ask for
> use of parallel algorithms.
> 
> But what are the places in Qt API that actually need these? More data
> analysis stuff (if developed) would find it helpful. But often users
> get to choose their own algorithms and so can use parallel algorithms
> without our containers needing to know about it.
> 
> If a parallel STL implementation is not available, falling back to
> single-threaded implementation is always an option. So support could
> be utilized only when available and not demanded from all platforms.
> Or the platfrom support can be a shim that still always processes
> everything without parallelism.
> 
> 
One problem with this is that it is a very recent addition in the standard 
libraries, and isn't even in any released version of libc++ yet. So using it 
would require MSVC 2019 and gcc 9, and a future version of clang.

It could be useful for image handling though, and theoretically also for 
raster painting if for some reason the GPU isn't used.

It could be opportunistically used when available though. It would be entirely 
internal, and just split some operations over multiple threads. But the things 
it would optimize are operations that would be even faster if done on the GPU 
instead.

'Allan


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


Re: [Development] Notes from "C++17 language and std library features for Qt 6"

2019-11-20 Thread Kari Oikarinen
I managed to mangle copy pasting to the mail, so probably better to read
from the wiki page rather than read everything twice in a tricky order.

On 20.11.2019 21.20, Kari Oikarinen wrote:
> Hi!
> 
> Here are the notes for the C++17 related session held today at QtCS. I
> tried my best to capture the discussion, but there might still be a lot
> of errors.
> 
> Notes are also in the wiki at
> https://wiki.qt.io/Qt_Contributor_Summit_2019_-_C%2B%2B17_Features_Notes
> 
> # Language
> 
> 
> ## if constexpr
> 
> # Language
> 
> 
> ## if constexpr
> 
> Very useful for our containers.
> 
> 
> ## Fold expressions
> 
> Shortcut for handling parameter packs of vadiadic templates. No need
> to write recursive template helpers.
> 
> 
> ## Inline variable
> 
> Volker: What is the impact of using inline variables to static data
> initialization? How do we deal with `Q_GLOBAL_STATIC`?
> 
> Inline variables are safer than static globals. Compiler and linker
> guarantee that there will be just one definition.
> 
> `Q_GLOBAL_STATIC` still provides lazy initialization. So inline
> variables are not a full replacement. Any big globals that aren't
> necessarily used should be gated by lazy initialization to avoid
> constructing them unnecessarily.
> 
> 
> ## Polymorphic lambdas
> 
> What is it? It has auto as its parameter type. So the same lambda can
> be used with multiple invocations with parameters of different types.
> 
> Most common use is just for brevity. It gives you perfect forwarding
> as well, if you use auto && as the type.
> 
> But these are not API visible, just perhaps useful inside the
> implementation.
> 
> 
> ## Structured bindings
> 
> QRect and QPoint might be possible candidates. But there will not be
> many that this makes sense for.
> 
> Some of these will already be aggregates and work automatically. But
> perhaps they for example have user-defined constructors and so don't
> fulfill the requirements of that.
> 
> 
> ## Language attributes
> 
> There are macros for many standard attributes, like nodiscard,
> deprecated, fallthrough, likely and unlikely.
> 
> When is the right point to remove this macros and use the attributes
> directly? When all compilers support it. Although that causes pain
> when backporting to older branches.
> 
> That applies to all language features, though. Some backporting is
> really hairy, like converting if constexpr solutions back to template
> specializations.
> 
> 
> ## Modules (C++20)
> 
> Properly modularizing Qt is going to be a huge undertaking. There
> should be some prototyping done by an energetic volunteer.
> 
> There are rumors that moc generated code leads to some issues here.
> 
> How will `QT_CONFIG()` macros work together with modules? Every
> permutation would need to be shipped as a separate module. But they
> are going to be constant within a built Qt. Not something the user of
> the library can change.
> 
> Modules are not supported by build systems (including qmake and CMake)
> yet. CMake developer Kitware is working on it, though.
> 
> 
> ## Coroutines (C++20)
> 
> QDialog::call/exec() are already coroutines, but stackful ones. So
> converting to them stackless is not really possible. But there might
> be better candidates in networking or elsewhere with callbacks.
> 
> Standard coroutines are quite cumbersome to use. Would we use an
> external helper library with that or would Qt provide their own helper
> for coroutines? Having Qt-friendly coroutine helpers would be nice.
> 
> Test data supplying is currently a huge matrix of QVariants and is
> actually a performance bottleneck for our tests. Using generators for
> these might be helpful? They are not going to make a difference
> compared to a good hand-written generator. So the performance issues
> might be fixed with other approaches.
> 
> 
> # Library
> 
> Contributions to any of these would be welcome.
> 
> 
> ## std::any
> 
> std::any is like a QVariant that does not need registration.
> 
> Could there be conversions between QVariant and std::any? Ville is
> skeptical about how to do that. Olivier suggested adding support for
> conversion from std::any to QVariant into QMetatype. But can that be
> done with just a reference to `std::type_info`?
> 
> std::any is a replacement for void\*. It knows the type that it holds.
> 
> 
> ## std::filesystem
> 
> Giuseppe: Should be use std::filesystem::path types consistently in
> our APIs instead of QString? Ville: There should be a prototype patch
> to see how big the effect is. I'm concerned that the impact would be
> too big.
> 
> Is std::filesystem::path API stable enough? Standard committee cares
> about API stability a lot, so that's not a worry. Although some want a
> new version of the API that uses std::expected.
> 
> 
> ## Parallel STL algorithms
> 
> We could allow parallel execution tags in our API to let users ask for
> use of parallel algorithms.
> 
> But what are the places in Qt API that actually need these? More data
> analysis stuff (if 

[Development] Notes from "C++17 language and std library features for Qt 6"

2019-11-20 Thread Kari Oikarinen
Hi!

Here are the notes for the C++17 related session held today at QtCS. I
tried my best to capture the discussion, but there might still be a lot
of errors.

Notes are also in the wiki at 
https://wiki.qt.io/Qt_Contributor_Summit_2019_-_C%2B%2B17_Features_Notes

# Language


## if constexpr

# Language


## if constexpr

Very useful for our containers.


## Fold expressions

Shortcut for handling parameter packs of vadiadic templates. No need
to write recursive template helpers.


## Inline variable

Volker: What is the impact of using inline variables to static data
initialization? How do we deal with `Q_GLOBAL_STATIC`?

Inline variables are safer than static globals. Compiler and linker
guarantee that there will be just one definition.

`Q_GLOBAL_STATIC` still provides lazy initialization. So inline
variables are not a full replacement. Any big globals that aren't
necessarily used should be gated by lazy initialization to avoid
constructing them unnecessarily.


## Polymorphic lambdas

What is it? It has auto as its parameter type. So the same lambda can
be used with multiple invocations with parameters of different types.

Most common use is just for brevity. It gives you perfect forwarding
as well, if you use auto && as the type.

But these are not API visible, just perhaps useful inside the
implementation.


## Structured bindings

QRect and QPoint might be possible candidates. But there will not be
many that this makes sense for.

Some of these will already be aggregates and work automatically. But
perhaps they for example have user-defined constructors and so don't
fulfill the requirements of that.


## Language attributes

There are macros for many standard attributes, like nodiscard,
deprecated, fallthrough, likely and unlikely.

When is the right point to remove this macros and use the attributes
directly? When all compilers support it. Although that causes pain
when backporting to older branches.

That applies to all language features, though. Some backporting is
really hairy, like converting if constexpr solutions back to template
specializations.


## Modules (C++20)

Properly modularizing Qt is going to be a huge undertaking. There
should be some prototyping done by an energetic volunteer.

There are rumors that moc generated code leads to some issues here.

How will `QT_CONFIG()` macros work together with modules? Every
permutation would need to be shipped as a separate module. But they
are going to be constant within a built Qt. Not something the user of
the library can change.

Modules are not supported by build systems (including qmake and CMake)
yet. CMake developer Kitware is working on it, though.


## Coroutines (C++20)

QDialog::call/exec() are already coroutines, but stackful ones. So
converting to them stackless is not really possible. But there might
be better candidates in networking or elsewhere with callbacks.

Standard coroutines are quite cumbersome to use. Would we use an
external helper library with that or would Qt provide their own helper
for coroutines? Having Qt-friendly coroutine helpers would be nice.

Test data supplying is currently a huge matrix of QVariants and is
actually a performance bottleneck for our tests. Using generators for
these might be helpful? They are not going to make a difference
compared to a good hand-written generator. So the performance issues
might be fixed with other approaches.


# Library

Contributions to any of these would be welcome.


## std::any

std::any is like a QVariant that does not need registration.

Could there be conversions between QVariant and std::any? Ville is
skeptical about how to do that. Olivier suggested adding support for
conversion from std::any to QVariant into QMetatype. But can that be
done with just a reference to `std::type_info`?

std::any is a replacement for void\*. It knows the type that it holds.


## std::filesystem

Giuseppe: Should be use std::filesystem::path types consistently in
our APIs instead of QString? Ville: There should be a prototype patch
to see how big the effect is. I'm concerned that the impact would be
too big.

Is std::filesystem::path API stable enough? Standard committee cares
about API stability a lot, so that's not a worry. Although some want a
new version of the API that uses std::expected.


## Parallel STL algorithms

We could allow parallel execution tags in our API to let users ask for
use of parallel algorithms.

But what are the places in Qt API that actually need these? More data
analysis stuff (if developed) would find it helpful. But often users
get to choose their own algorithms and so can use parallel algorithms
without our containers needing to know about it.

If a parallel STL implementation is not available, falling back to
single-threaded implementation is always an option. So support could
be utilized only when available and not demanded from all platforms.
Or the platfrom support can be a shim that still always processes
everything without parallelism.


## 

Re: [Development] RFC: Defaulting to or enforcing UTF-8 locales on Unix systems

2019-11-20 Thread Thiago Macieira
On Sunday, 17 November 2019 01:55:32 CET Thiago Macieira wrote:
> I don't know why QTextCodec is being removed. I don't remember any decisions
> in prior QtCS or this mailing list about removing it. We definitely
> discussed removing the CJK codecs and their big tables and that can still
> be done, with no effect in the API, since QTextCodec is backed by ICU's
> ucnv. We may have discussed removing it, but I don't remember a firm
> decision. And even if it is firm, after looking at the consequences of
> doing so, we may want to reverse our decision.

Update: after talking to Lars during QtCS, he said that he thinks the 
QTextCodec API is poorly designed and should be replaced. I agree. But that 
doesn't mean we need to remove the *functionality*, just deprecate the API.

I'll bring this up during the QtCore session tomorrow to see if we want to 
invest time creating a new API, hopefully for 5.15, so code can begin porting 
before the 6.0 time. That way, we could move QTextCodec out of QtCore.

> 1) QTextCodec in the API
> I think we cannot do without it, it'll have to stay in one way or another.
> So the question reduces to whether it should stay in QtCore or be moved to
> another library. Given the QXmlStreamReader problem above, it's probably
> best to keep it in QtCore, actually.
> 
> QTextCodec has some API limitations but they can be fixed. It's not
> necessary for us to remove it: it's not *that* broken.

This is now TBD, depending on finding a good design and whether it can be done 
incrementally in QTextCodec.

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel System Software Products



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


[Development] Notes from "QtGUI, RHI, 3D" session at Qt Contributors Summit 2019

2019-11-20 Thread Laszlo Agocs
Hi all,

Notes from the QtGui, RHI, 3D session are available at 
https://wiki.qt.io/Qt_Contributor_Summit_2019_-_QtGui_RHI_3D

Best regards,
Laszlo

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


[Development] Notes from "Releasing" session in QtCon19

2019-11-20 Thread Kai Köhne
Hi,

I took the notes for the "Releasing" Session we just had at the Qt Contributor 
Summit 2019: https://wiki.qt.io/Qt_Contributor_Summit_2019_-_Releasing_Notes

High level summary:
* The Releasing Dashboard [1] in JIRA provides a good overview of upcoming 
releases, Qt Creator releases will be added there, too.
* We should list all contributors of a release in the ChangeLog (AP Jani 
Heikkinen)
* Let's encourage people to help editing ChangeLogs (gerrit in-editing) (AP 
everyone)
* Next time for release meeting (cancellations) will be (also) announced in IRC 
channel topic (AP Jani Heikkinen)

Greetings from Berlin!

Kai

[1]: https://bugreports.qt.io/secure/Dashboard.jspa?selectPageId=15911

--
Kai Köhne, Director R | The Qt Company

The Qt Company GmbH, Erich-Thilo-Straße 10, D-12489 Berlin
Geschäftsführer: Mika Pälsi, Juha Varelius, Mika Harjuaho
Sitz der Gesellschaft: Berlin, Registergericht: Amtsgericht Charlottenburg, HRB 
144331 B

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


Re: [Development] Session notes for "Code Review: Sharing the load" and follow-up session

2019-11-20 Thread Andre Hartmann
Hi Nils,

thanks for the summary.

I have two additions:

* Reactivate the QDoc bot to sanity check the docs
* Improve the output of sanity bot, especially for new users: 
https://bugreports.qt.io/browse/QTQAINFRA-1478

Best regards,
Andre

Am Mittwoch, 20. November 2019 schrieb Nils Jeisecke via Development:
> Hi list,
> 
> these are my notes for "Code Review: Sharing the load" session, extended
> by "Improve the contributor experience of the Qt project"
> 
> ---
> 
> * Situation: Many reviews in queue for long time (forever?)
>   * Android: They have a button: Find "Maintainers" (Plugin for Gerrit)
>   * Thiago: Would solve the first 15 Minutes for Contributors, not enough
>   * Improve the culture, appreciate the effort ("Thank you!")
>   * Get more people on-board as reviewers (not as approvers yet)
>   * Idea: Should not be +1 and +1, should be "Thumbs up" and "Tick!"
> * Some reviewers don't understand the implication of "+1" (two "+1" != 
> "+2")
> 
> * What does a good patch looks like?
>  * breaking patch up into multiple patches
>  * Is the documentation really good enough (opinions vary)
> 
> * Ask contributors whose changes have just been review to review others 
> (sometimes happens)
> 
> * Gerrit
>   * Sanity bot is good
>   * Revive early warning bot!
> * Should changes only be approved after tests has run on CI?
> * Can we get a "small CI" run (just Linux, "does it build?")
> * Should the bot automatically run tests if tests have been changed?
> * Should the bot automatically give a warning if tests have not been 
> added (excluding doc only changes)?
>   * "Auto defer" bot is currently not active, would be useful to automatically
> defer patches where contributor did not response to requests.
>   * Automatically stage when change is approved? Faster turnaround time.
>   * Mail (monthly?) reports to maintainers (or others?) (based on gerrit 
> dashboard config?): "N Changes approved, but not staged? Link to staging 
> page", List per module? 
>   * Let's try it and see how it works out
> 
> * Gerrit Features unused right now
>   * Attach labels
>   * Bot could apply hashtags ("wants adoption", "stage-me")
>   * Has a feature to make clazy automatically appply improvements to the 
> change ("contributor has to click a button")
>   
> * Public Community Feedback does not exist
>   * Alex: Use Thiago's script to highlight new contributions (Grafana?)? 
> "Welcome new contributor!" for blog post (Like KDE does)?
> 
> ---
> 
> Follow-up session extensions (lots of overlapping topics)
> 
> * Give contributor feedback
>   * Bot should say: "Welcome, Thanks for your first contribution"
>   * Monthly blog post advertising external contributors?
>   * Send out physical awards? T-Shirts, "Thank you" letter, ...?
> 
> * Make contributing easier
>   * Put contributor documentation into Qt's documentation ("Gettings 
> started")?
>   * Link freenode IRC Web-Backend to simplify access to IRC for new 
> contributors
>   * Use Qt account profile to setup everything needed for contributing (ssh 
> keys, CLA check, ...)
>   * Adapt github workflow (Checklist "Auto test done", "Documentation done", 
> ...)
> 
> * Triage bugs
>   * Add Jira label ("for juniors")?
> 
> * Community
>   * Missing Community manager (Consent: Yes, it's needed)
>   * Missing "qt-project" entity, kind of a foundation? Funding?
>   * Redefine: What is the qt-project?
> 
> * Activating new contributors
>   * Communication of Qt (company) targets companies, not community (qt.org => 
> qt.io => sales)
>   * Microsoft pushes its stuff to universities, why not Qt (or qt-project?)
>   * Qt project needs a proper homepage. With nice, contemporary Howtos, ...
> 
> ---
> 
> Nils
>

-- 
Von meinem Jolla gesendet
___
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development


[Development] Session notes for "Code Review: Sharing the load" and follow-up session

2019-11-20 Thread Nils Jeisecke via Development

Hi list,

these are my notes for "Code Review: Sharing the load" session, extended
by "Improve the contributor experience of the Qt project"

---

* Situation: Many reviews in queue for long time (forever?)
 * Android: They have a button: Find "Maintainers" (Plugin for Gerrit)
 * Thiago: Would solve the first 15 Minutes for Contributors, not enough
 * Improve the culture, appreciate the effort ("Thank you!")
 * Get more people on-board as reviewers (not as approvers yet)
 * Idea: Should not be +1 and +1, should be "Thumbs up" and "Tick!"
   * Some reviewers don't understand the implication of "+1" (two "+1" != "+2")

* What does a good patch looks like?
* breaking patch up into multiple patches
* Is the documentation really good enough (opinions vary)

* Ask contributors whose changes have just been review to review others 
(sometimes happens)

* Gerrit
 * Sanity bot is good
 * Revive early warning bot!
   * Should changes only be approved after tests has run on CI?
   * Can we get a "small CI" run (just Linux, "does it build?")
   * Should the bot automatically run tests if tests have been changed?
   * Should the bot automatically give a warning if tests have not been added 
(excluding doc only changes)?
 * "Auto defer" bot is currently not active, would be useful to automatically
   defer patches where contributor did not response to requests.
 * Automatically stage when change is approved? Faster turnaround time.
 * Mail (monthly?) reports to maintainers (or others?) (based on gerrit dashboard config?): "N Changes approved, but not staged? Link to staging page", List per module? 
 * Let's try it and see how it works out


* Gerrit Features unused right now
 * Attach labels
 * Bot could apply hashtags ("wants adoption", "stage-me")
 * Has a feature to make clazy automatically appply improvements to the change 
("contributor has to click a button")
 
* Public Community Feedback does not exist

 * Alex: Use Thiago's script to highlight new contributions (Grafana?)? "Welcome new 
contributor!" for blog post (Like KDE does)?

---

Follow-up session extensions (lots of overlapping topics)

* Give contributor feedback
 * Bot should say: "Welcome, Thanks for your first contribution"
 * Monthly blog post advertising external contributors?
 * Send out physical awards? T-Shirts, "Thank you" letter, ...?

* Make contributing easier
 * Put contributor documentation into Qt's documentation ("Gettings started")?
 * Link freenode IRC Web-Backend to simplify access to IRC for new contributors
 * Use Qt account profile to setup everything needed for contributing (ssh 
keys, CLA check, ...)
 * Adapt github workflow (Checklist "Auto test done", "Documentation done", ...)

* Triage bugs
 * Add Jira label ("for juniors")?

* Community
 * Missing Community manager (Consent: Yes, it's needed)
 * Missing "qt-project" entity, kind of a foundation? Funding?
 * Redefine: What is the qt-project?

* Activating new contributors
 * Communication of Qt (company) targets companies, not community (qt.org => qt.io 
=> sales)
 * Microsoft pushes its stuff to universities, why not Qt (or qt-project?)
 * Qt project needs a proper homepage. With nice, contemporary Howtos, ...

---

Nils


signature.asc
Description: PGP signature
___
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development