Erik Luo
2018-04-03 03:40:22 UTC
I could be wrong, but from my observation,
1. sometimes the GUI components perform relatively abnormal comparing to
Linux or OS X. Especially happen in the scaling and drawing parts.
2. When I worked within a team and different team members use different OS,
the external libraries sometimes become unstable using MinGW or GCC
compiler.
1. sometimes the GUI components perform relatively abnormal comparing to
Linux or OS X. Especially happen in the scaling and drawing parts.
2. When I worked within a team and different team members use different OS,
the external libraries sometimes become unstable using MinGW or GCC
compiler.
I'm not involved with the installer, but 2 points.
1. Number of gets doesn't really matter as long as it's HTTP 1.1. yeah
it's not as optimal as a single compressed download, but it's not terrible.
If it's only 1.0, then that's a problem. Or it could be that the concurrent
connections are being limited, or the gets are just taking a fixed time to
get a response. Maybe memcached would help?
2. "Closest" mirror isn't what is important, it's speed. Though you may be
implying that the chosen mirror was still slower? It seemed that you argue
both?
3. I think the scope is ok. Qt is not a tool chain, it's a library with
tools. And the expectation is that Qt sits above the platform and
compiler(s).
Development mailing list
http://lists.qt-project.org/mailman/listinfo/development
1. Number of gets doesn't really matter as long as it's HTTP 1.1. yeah
it's not as optimal as a single compressed download, but it's not terrible.
If it's only 1.0, then that's a problem. Or it could be that the concurrent
connections are being limited, or the gets are just taking a fixed time to
get a response. Maybe memcached would help?
2. "Closest" mirror isn't what is important, it's speed. Though you may be
implying that the chosen mirror was still slower? It seemed that you argue
both?
3. I think the scope is ok. Qt is not a tool chain, it's a library with
tools. And the expectation is that Qt sits above the platform and
compiler(s).
Sent: Tuesday, April 03, 2018 at 2:14 AM
Subject: [Development] To improve UX of the online installer
3 broad issues impede new users who want to start using Qt and
(A) Downloading metadata is very time-consuming.
(B) The automatic mirror selection algorithm doesn't always pick
the best mirror.
(C) (New users) It's not clear how to choose what to install.
======================================
* The metadata downloader opens lots of short-duration TCP
connections. Wireshark revealed 2391 HTTP GET requests from
77.86.229.90 (download.qt.io) on Windows. This process is less painful
on Linux (1205 GETs -- almost half of Windows') as there are fewer
compilers/platforms.
* Downloading many small files is very inefficient compared to
downloading a few large files. While GET-ting metadata from
download.qt.io, my network traffic crawls at ~10 KiB/s (yes, ten
kibibytes). After this, the actual binaries download from my
designated mirror at ~1 MiB/s, which shows that metadata downloader
doesn't make good use of available bandwidth. I'm in Australia.
* MaintenanceTool downloads metadata too frequently (QTIFW-975).
* If the metadata download fails halfway (e.g. one file times out),
the whole process needs to start from scratch. There is no
retry/resume. This makes the online installer nigh unusable if the
https://forum.qt.io/post/450076
* Currently, there is a way to manually avoid downloading unwanted
metadata: Deselecting the unwanted Temporary Repositories. However,
all 91 Repositories must be unchecked one-by-one, and this process
https://forum.qt.io/post/450076
======================================
* Geographical proximity does not imply mirror quality. E.g. a user
from China finds Chinese mirrors too slow, and opts for non-Chinese
http://lists.qt-project.org/pipermail/interest/2013-December/010336.html
* The algorithm doesn't pick the closest mirror anyway. E.g. a user
https://forum.qt.io/topic/87221/
======================================
* Some users don't realize there are multiple kits per Qt version.
https://forum.qt.io/topic/87608/windows-install-download-size
* Some users don't realize Qt Creator != Qt. They install Qt Creator
https://forum.qt.io/topic/84198/no-valid-kits-found
* Some users don't realize they need to install a compiler separately.
https://forum.qt.io/topic/79532/msvc2015-64bit-compiler-
kit-installation-requirementsSubject: [Development] To improve UX of the online installer
3 broad issues impede new users who want to start using Qt and
(A) Downloading metadata is very time-consuming.
(B) The automatic mirror selection algorithm doesn't always pick
the best mirror.
(C) (New users) It's not clear how to choose what to install.
======================================
* The metadata downloader opens lots of short-duration TCP
connections. Wireshark revealed 2391 HTTP GET requests from
77.86.229.90 (download.qt.io) on Windows. This process is less painful
on Linux (1205 GETs -- almost half of Windows') as there are fewer
compilers/platforms.
* Downloading many small files is very inefficient compared to
downloading a few large files. While GET-ting metadata from
download.qt.io, my network traffic crawls at ~10 KiB/s (yes, ten
kibibytes). After this, the actual binaries download from my
designated mirror at ~1 MiB/s, which shows that metadata downloader
doesn't make good use of available bandwidth. I'm in Australia.
* MaintenanceTool downloads metadata too frequently (QTIFW-975).
* If the metadata download fails halfway (e.g. one file times out),
the whole process needs to start from scratch. There is no
retry/resume. This makes the online installer nigh unusable if the
https://forum.qt.io/post/450076
* Currently, there is a way to manually avoid downloading unwanted
metadata: Deselecting the unwanted Temporary Repositories. However,
all 91 Repositories must be unchecked one-by-one, and this process
https://forum.qt.io/post/450076
======================================
* Geographical proximity does not imply mirror quality. E.g. a user
from China finds Chinese mirrors too slow, and opts for non-Chinese
http://lists.qt-project.org/pipermail/interest/2013-December/010336.html
* The algorithm doesn't pick the closest mirror anyway. E.g. a user
https://forum.qt.io/topic/87221/
======================================
* Some users don't realize there are multiple kits per Qt version.
https://forum.qt.io/topic/87608/windows-install-download-size
* Some users don't realize Qt Creator != Qt. They install Qt Creator
https://forum.qt.io/topic/84198/no-valid-kits-found
* Some users don't realize they need to install a compiler separately.
https://forum.qt.io/topic/79532/msvc2015-64bit-compiler-
======================================
1. Amalgamate and compress all metadata into one file (or at least one
file per "group").
2. Cache metadata locally and use a hash to identify them; avoid
re-downloading metadata that's already available (Mitch Curtis
suggested this at QTIFW-975)
3. Avoid downloading metadata for archived/advanced packages by
default (Iikka Eklund said this is planned in QTIFW-975)
4a. Remember the which Repositories the user has deselected before,
and ignore them for future sessions.
4b. Let the user choose broad "groups" that they are interested in,
and remember this choice. For example, there is no point getting
metadata for Android/UWP packages or showing these packages in the
"Selection Tree" if I'm only interested in Desktop development.
5. Add a "Select/Deselect All" button to the Repositories page.
6. Allow retry/resume if the metadata download fails halfway.
7. Allow users to manually pick a mirror for binary download.
8a. Before the user is asked to "Select the components to install",
show a short page that to explain the difference between Qt and Qt
Creator and explain that a compiler must be installed separately
unless MinGW is used.
8b. Before the user is asked to "Select the components to install",
have a small wizard to ask a new user some questions -- Which
version(s): Latest version, LTS version, or older version? Which
target platforms? Which compiler? Or do they not care/know and want us
to suggest a good default? Use the answers to pre-fill the "Selection
Tree" and remind the user to download an external compiler if
necessary.
9. If no Qt version is selected (or if too many are selected), pop-up
a confirmation dialog before installing.
10. Expand the documentation at http://doc.qt.io/qt-5/
gettingstarted.html1. Amalgamate and compress all metadata into one file (or at least one
file per "group").
2. Cache metadata locally and use a hash to identify them; avoid
re-downloading metadata that's already available (Mitch Curtis
suggested this at QTIFW-975)
3. Avoid downloading metadata for archived/advanced packages by
default (Iikka Eklund said this is planned in QTIFW-975)
4a. Remember the which Repositories the user has deselected before,
and ignore them for future sessions.
4b. Let the user choose broad "groups" that they are interested in,
and remember this choice. For example, there is no point getting
metadata for Android/UWP packages or showing these packages in the
"Selection Tree" if I'm only interested in Desktop development.
5. Add a "Select/Deselect All" button to the Repositories page.
6. Allow retry/resume if the metadata download fails halfway.
7. Allow users to manually pick a mirror for binary download.
8a. Before the user is asked to "Select the components to install",
show a short page that to explain the difference between Qt and Qt
Creator and explain that a compiler must be installed separately
unless MinGW is used.
8b. Before the user is asked to "Select the components to install",
have a small wizard to ask a new user some questions -- Which
version(s): Latest version, LTS version, or older version? Which
target platforms? Which compiler? Or do they not care/know and want us
to suggest a good default? Use the answers to pre-fill the "Selection
Tree" and remind the user to download an external compiler if
necessary.
9. If no Qt version is selected (or if too many are selected), pop-up
a confirmation dialog before installing.
10. Expand the documentation at http://doc.qt.io/qt-5/
Since (3) is already being planned, please consider (4) which is a
generalization of (3).
It would be fantastic to see a holistic approach that addresses (A) +
(B) + (C). For example, (8b) helps the user make the right selection
at the first try. At the same time, users' answers in (8b) feed into
(4b) to download fewer metadata files and trim the "Selection Tree".
This is further sped up by (1) + (2): Each "group" has its own
amalgamated metadata file, and these files are cached locally to avoid
re-downloading in the future. Once the selection is complete, (7)
ensures that the use can get binaries in a timely manner even if the
auto-selected mirror is no good.
Regards,
Sze-Howe
_______________________________________________
Development mailing list
http://lists.qt-project.org/mailman/listinfo/development
_______________________________________________generalization of (3).
It would be fantastic to see a holistic approach that addresses (A) +
(B) + (C). For example, (8b) helps the user make the right selection
at the first try. At the same time, users' answers in (8b) feed into
(4b) to download fewer metadata files and trim the "Selection Tree".
This is further sped up by (1) + (2): Each "group" has its own
amalgamated metadata file, and these files are cached locally to avoid
re-downloading in the future. Once the selection is complete, (7)
ensures that the use can get binaries in a timely manner even if the
auto-selected mirror is no good.
Regards,
Sze-Howe
_______________________________________________
Development mailing list
http://lists.qt-project.org/mailman/listinfo/development
Development mailing list
http://lists.qt-project.org/mailman/listinfo/development