[PATCH] docs/about: Update the support statement for Windows

Thomas Huth posted 1 patch 2 years ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20220505074841.406185-1-thuth@redhat.com
There is a newer version of this series
docs/about/build-platforms.rst | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
[PATCH] docs/about: Update the support statement for Windows
Posted by Thomas Huth 2 years ago
Our support statement for Windows currently talks about "Vista / Server
2008" - which is related to the API of Windows, and this is not easy
to understand for the non-technical users. It might also not be quite
true anymore, since we only compile-test QEMU with recent toolchains.

Thus I'm suggesting to change the support statement here to something
similar that we use on Linux: Only support the very latest major release,
with support for the previous major release being dropped after two years
of overlap.

And since we're nowadays also compile-testing QEMU with MSYS2 on Windows
itself, I think we could also mention this build environment here.

Resolves: https://gitlab.com/qemu-project/qemu/-/issues/880
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 docs/about/build-platforms.rst | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/docs/about/build-platforms.rst b/docs/about/build-platforms.rst
index e9163ba556..a0ebc1acb4 100644
--- a/docs/about/build-platforms.rst
+++ b/docs/about/build-platforms.rst
@@ -86,11 +86,12 @@ similar versions.
 Windows
 -------
 
-The project supports building with current versions of the MinGW toolchain,
-hosted on Linux (Debian/Fedora).
+The project aims to support the most recent major version of Windows. Support
+for the previous major version will be dropped 2 years after the new major
+version is released.
 
-The version of the Windows API that's currently targeted is Vista / Server
-2008.
+The project supports building QEMU with current versions of the MinGW
+toolchain, either hosted on Linux (Debian/Fedora) or via MSYS2 on Windows.
 
 .. _Homebrew: https://brew.sh/
 .. _MacPorts: https://www.macports.org/
-- 
2.27.0
Re: [PATCH] docs/about: Update the support statement for Windows
Posted by Peter Maydell 2 years ago
Ccing Stefan Weil, since we're talking about clarifying what
our supported Windows host set is...

On Thu, 5 May 2022 at 08:54, Thomas Huth <thuth@redhat.com> wrote:
>
> Our support statement for Windows currently talks about "Vista / Server
> 2008" - which is related to the API of Windows, and this is not easy
> to understand for the non-technical users. It might also not be quite
> true anymore, since we only compile-test QEMU with recent toolchains.
>
> Thus I'm suggesting to change the support statement here to something
> similar that we use on Linux: Only support the very latest major release,
> with support for the previous major release being dropped after two years
> of overlap.
>
> And since we're nowadays also compile-testing QEMU with MSYS2 on Windows
> itself, I think we could also mention this build environment here.
>
> Resolves: https://gitlab.com/qemu-project/qemu/-/issues/880
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
>  docs/about/build-platforms.rst | 9 +++++----
>  1 file changed, 5 insertions(+), 4 deletions(-)
>
> diff --git a/docs/about/build-platforms.rst b/docs/about/build-platforms.rst
> index e9163ba556..a0ebc1acb4 100644
> --- a/docs/about/build-platforms.rst
> +++ b/docs/about/build-platforms.rst
> @@ -86,11 +86,12 @@ similar versions.
>  Windows
>  -------
>
> -The project supports building with current versions of the MinGW toolchain,
> -hosted on Linux (Debian/Fedora).
> +The project aims to support the most recent major version of Windows. Support
> +for the previous major version will be dropped 2 years after the new major
> +version is released.
>
> -The version of the Windows API that's currently targeted is Vista / Server
> -2008.
> +The project supports building QEMU with current versions of the MinGW
> +toolchain, either hosted on Linux (Debian/Fedora) or via MSYS2 on Windows.
>
>  .. _Homebrew: https://brew.sh/
>  .. _MacPorts: https://www.macports.org/
> --
> 2.27.0

-- PMM
Re: [PATCH] docs/about: Update the support statement for Windows
Posted by Stefan Weil via 2 years ago
Am 05.05.22 um 10:27 schrieb Peter Maydell:
> Ccing Stefan Weil, since we're talking about clarifying what
> our supported Windows host set is...
>
> On Thu, 5 May 2022 at 08:54, Thomas Huth <thuth@redhat.com> wrote:
>> Our support statement for Windows currently talks about "Vista / Server
>> 2008" - which is related to the API of Windows, and this is not easy
>> to understand for the non-technical users. It might also not be quite
>> true anymore, since we only compile-test QEMU with recent toolchains.
>>
>> Thus I'm suggesting to change the support statement here to something
>> similar that we use on Linux: Only support the very latest major release,
>> with support for the previous major release being dropped after two years
>> of overlap.
>>
>> And since we're nowadays also compile-testing QEMU with MSYS2 on Windows
>> itself, I think we could also mention this build environment here.
>>
>> Resolves: https://gitlab.com/qemu-project/qemu/-/issues/880
>> Signed-off-by: Thomas Huth <thuth@redhat.com>
>> ---
>>   docs/about/build-platforms.rst | 9 +++++----
>>   1 file changed, 5 insertions(+), 4 deletions(-)
>>
>> diff --git a/docs/about/build-platforms.rst b/docs/about/build-platforms.rst
>> index e9163ba556..a0ebc1acb4 100644
>> --- a/docs/about/build-platforms.rst
>> +++ b/docs/about/build-platforms.rst
>> @@ -86,11 +86,12 @@ similar versions.
>>   Windows
>>   -------
>>
>> -The project supports building with current versions of the MinGW toolchain,
>> -hosted on Linux (Debian/Fedora).
>> +The project aims to support the most recent major version of Windows. Support
>> +for the previous major version will be dropped 2 years after the new major
>> +version is released.
>>
>> -The version of the Windows API that's currently targeted is Vista / Server
>> -2008.
>> +The project supports building QEMU with current versions of the MinGW
>> +toolchain, either hosted on Linux (Debian/Fedora) or via MSYS2 on Windows.
>>
>>   .. _Homebrew: https://brew.sh/
>>   .. _MacPorts: https://www.macports.org/
>> --
>> 2.27.0
> -- PMM
Re: [PATCH] docs/about: Update the support statement for Windows
Posted by Daniel P. Berrangé 2 years ago
On Thu, May 05, 2022 at 09:48:41AM +0200, Thomas Huth wrote:
> Our support statement for Windows currently talks about "Vista / Server
> 2008" - which is related to the API of Windows, and this is not easy
> to understand for the non-technical users. It might also not be quite
> true anymore, since we only compile-test QEMU with recent toolchains.

We documented Vista / Server 2008 because that is what our code is
declaring it wants in terms of Windows public APIs:

In osdep.h we have:

  #ifdef _WIN32
  /* as defined in sdkddkver.h */
  #ifndef _WIN32_WINNT
  #define _WIN32_WINNT 0x0600 /* Vista */
  #endif

which tells Mingw / MSys not to expose windows header file declarations
that post-date Vista.


With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|
Re: [PATCH] docs/about: Update the support statement for Windows
Posted by Daniel P. Berrangé 2 years ago
On Thu, May 05, 2022 at 09:14:57AM +0100, Daniel P. Berrangé wrote:
> On Thu, May 05, 2022 at 09:48:41AM +0200, Thomas Huth wrote:
> > Our support statement for Windows currently talks about "Vista / Server
> > 2008" - which is related to the API of Windows, and this is not easy
> > to understand for the non-technical users. It might also not be quite
> > true anymore, since we only compile-test QEMU with recent toolchains.
> 
> We documented Vista / Server 2008 because that is what our code is
> declaring it wants in terms of Windows public APIs:
> 
> In osdep.h we have:
> 
>   #ifdef _WIN32
>   /* as defined in sdkddkver.h */
>   #ifndef _WIN32_WINNT
>   #define _WIN32_WINNT 0x0600 /* Vista */
>   #endif
> 
> which tells Mingw / MSys not to expose windows header file declarations
> that post-date Vista.

Of course we rely on 3rd party libraries and in particular GLib2 is
mandatory, and it also set _WIN32_WINNT. So our constraint is the
newer of the _WIN32_WINNT constraint set by QEMU and whatever version
of GLib2 being compiled against.

QEMU sets a min GLib of 2.56, and that version of GLib sets 0x0601
which means Windows >= 7.  So even though QEMU only asks for Vista,
in practice our minimum is 7.

Given that we should increase QEMU's own _WIN32_WINNT value to 0x601
too, since its impossible to build with older GLib than 2.56.

Next time we bump GLib min version, we should remember to check
their _WIN32_WINNT value.

With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|


Re: [PATCH] docs/about: Update the support statement for Windows
Posted by Thomas Huth 2 years ago
On 05/05/2022 13.55, Daniel P. Berrangé wrote:
> On Thu, May 05, 2022 at 09:14:57AM +0100, Daniel P. Berrangé wrote:
>> On Thu, May 05, 2022 at 09:48:41AM +0200, Thomas Huth wrote:
>>> Our support statement for Windows currently talks about "Vista / Server
>>> 2008" - which is related to the API of Windows, and this is not easy
>>> to understand for the non-technical users. It might also not be quite
>>> true anymore, since we only compile-test QEMU with recent toolchains.
>>
>> We documented Vista / Server 2008 because that is what our code is
>> declaring it wants in terms of Windows public APIs:
>>
>> In osdep.h we have:
>>
>>    #ifdef _WIN32
>>    /* as defined in sdkddkver.h */
>>    #ifndef _WIN32_WINNT
>>    #define _WIN32_WINNT 0x0600 /* Vista */
>>    #endif
>>
>> which tells Mingw / MSys not to expose windows header file declarations
>> that post-date Vista.
> 
> Of course we rely on 3rd party libraries and in particular GLib2 is
> mandatory, and it also set _WIN32_WINNT. So our constraint is the
> newer of the _WIN32_WINNT constraint set by QEMU and whatever version
> of GLib2 being compiled against.
> 
> QEMU sets a min GLib of 2.56, and that version of GLib sets 0x0601
> which means Windows >= 7.  So even though QEMU only asks for Vista,
> in practice our minimum is 7.

Windows 7 does not receive any security updates since 2020 anymore, so I'd 
rather would bump it to the level of Windows 8.1 directly instead. Or 
directly go for Windows 10 to mimic the behavior that we have with most of 
the Linux distros (max. two major releases at a time).

  Thomas



Re: [PATCH] docs/about: Update the support statement for Windows
Posted by Daniel P. Berrangé 2 years ago
On Thu, May 05, 2022 at 04:12:11PM +0200, Thomas Huth wrote:
> On 05/05/2022 13.55, Daniel P. Berrangé wrote:
> > On Thu, May 05, 2022 at 09:14:57AM +0100, Daniel P. Berrangé wrote:
> > > On Thu, May 05, 2022 at 09:48:41AM +0200, Thomas Huth wrote:
> > > > Our support statement for Windows currently talks about "Vista / Server
> > > > 2008" - which is related to the API of Windows, and this is not easy
> > > > to understand for the non-technical users. It might also not be quite
> > > > true anymore, since we only compile-test QEMU with recent toolchains.
> > > 
> > > We documented Vista / Server 2008 because that is what our code is
> > > declaring it wants in terms of Windows public APIs:
> > > 
> > > In osdep.h we have:
> > > 
> > >    #ifdef _WIN32
> > >    /* as defined in sdkddkver.h */
> > >    #ifndef _WIN32_WINNT
> > >    #define _WIN32_WINNT 0x0600 /* Vista */
> > >    #endif
> > > 
> > > which tells Mingw / MSys not to expose windows header file declarations
> > > that post-date Vista.
> > 
> > Of course we rely on 3rd party libraries and in particular GLib2 is
> > mandatory, and it also set _WIN32_WINNT. So our constraint is the
> > newer of the _WIN32_WINNT constraint set by QEMU and whatever version
> > of GLib2 being compiled against.
> > 
> > QEMU sets a min GLib of 2.56, and that version of GLib sets 0x0601
> > which means Windows >= 7.  So even though QEMU only asks for Vista,
> > in practice our minimum is 7.
> 
> Windows 7 does not receive any security updates since 2020 anymore, so I'd
> rather would bump it to the level of Windows 8.1 directly instead. Or
> directly go for Windows 10 to mimic the behavior that we have with most of
> the Linux distros (max. two major releases at a time).

I like the simplicity of having the same rule everywhere.

I'm a little wary of people being stuck on old versions, when I see
current articles like this showing 20% of people still on Win7, way
more than Win8 surprisingly.

https://www.statista.com/statistics/993868/worldwide-windows-operating-system-market-share/


The thing with bumping the _WIN32_WINNT version higher though is that
we're not really doing it for any compelling technical reasons. Usually
when we bump min glib, it lets us cut out compatibility hacks and/or
get access to new APIs.

Bumping _WIN32_WINNT can do that, but the interesting place where that's
useful is mostly in GLib. I'm not sure what we'd make use of in the QEMU
side from setting a newer _WIN32_WINNT. Hence my suggestion that we just
let min GLib drive our min _WIN32_WINNT setting. If someone can point
to stuff we can improve in QEMU though, thanks to new _WIN32_WINNT that
could top the balance.

With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|


Re: [PATCH] docs/about: Update the support statement for Windows
Posted by Thomas Huth 1 year, 12 months ago
On 05/05/2022 17.09, Daniel P. Berrangé wrote:
> On Thu, May 05, 2022 at 04:12:11PM +0200, Thomas Huth wrote:
>> On 05/05/2022 13.55, Daniel P. Berrangé wrote:
>>> On Thu, May 05, 2022 at 09:14:57AM +0100, Daniel P. Berrangé wrote:
>>>> On Thu, May 05, 2022 at 09:48:41AM +0200, Thomas Huth wrote:
>>>>> Our support statement for Windows currently talks about "Vista / Server
>>>>> 2008" - which is related to the API of Windows, and this is not easy
>>>>> to understand for the non-technical users. It might also not be quite
>>>>> true anymore, since we only compile-test QEMU with recent toolchains.
>>>>
>>>> We documented Vista / Server 2008 because that is what our code is
>>>> declaring it wants in terms of Windows public APIs:
>>>>
>>>> In osdep.h we have:
>>>>
>>>>     #ifdef _WIN32
>>>>     /* as defined in sdkddkver.h */
>>>>     #ifndef _WIN32_WINNT
>>>>     #define _WIN32_WINNT 0x0600 /* Vista */
>>>>     #endif
>>>>
>>>> which tells Mingw / MSys not to expose windows header file declarations
>>>> that post-date Vista.
>>>
>>> Of course we rely on 3rd party libraries and in particular GLib2 is
>>> mandatory, and it also set _WIN32_WINNT. So our constraint is the
>>> newer of the _WIN32_WINNT constraint set by QEMU and whatever version
>>> of GLib2 being compiled against.
>>>
>>> QEMU sets a min GLib of 2.56, and that version of GLib sets 0x0601
>>> which means Windows >= 7.  So even though QEMU only asks for Vista,
>>> in practice our minimum is 7.
>>
>> Windows 7 does not receive any security updates since 2020 anymore, so I'd
>> rather would bump it to the level of Windows 8.1 directly instead. Or
>> directly go for Windows 10 to mimic the behavior that we have with most of
>> the Linux distros (max. two major releases at a time).
> 
> I like the simplicity of having the same rule everywhere.
> 
> I'm a little wary of people being stuck on old versions, when I see
> current articles like this showing 20% of people still on Win7, way
> more than Win8 surprisingly.
> 
> https://www.statista.com/statistics/993868/worldwide-windows-operating-system-market-share/

I still think it would be better to not provide QEMU to people who fail to 
make sure that their host system is up to date with security patches...

> The thing with bumping the _WIN32_WINNT version higher though is that
> we're not really doing it for any compelling technical reasons. Usually
> when we bump min glib, it lets us cut out compatibility hacks and/or
> get access to new APIs.
> 
> Bumping _WIN32_WINNT can do that, but the interesting place where that's
> useful is mostly in GLib. I'm not sure what we'd make use of in the QEMU
> side from setting a newer _WIN32_WINNT. Hence my suggestion that we just
> let min GLib drive our min _WIN32_WINNT setting.

Ok, fair point. So let's raise the WIN32_WINNT setting to the same level as 
glib - but I think our support statement in our docs could be independent 
from that... I'll try to come up with a different phrasing in v2 of this patch.

  Thomas