OpenMPT > Technical Documents

OpenMPT 1.27 and libopenmpt 0.3.0 remove support for old systems and compilers

(1/6) > >>

manx:
OpenMPT 1.27 and libopenmpt 0.3.0 remove support for old Windows and Wine systems and old C++ compilers

This post will be updated and clarified as needed. For each update, a short reply summarizing the update will be made in order to notify topic subscribers.


Upcoming OpenMPT 1.27 and libopenmpt 0.3.0 will very likely remove support for old Windows and Wine systems and old C++ compilers.


tl;dr:
If you are running OpenMPT Win32 or Win64 on Windows 7 (or later) or Wine 1.8 (or later), the changes will not affect you.
If you are running OpenMPT Wind32old on Windows XP (or later) or Wine 1.4 1.6 (or later), the changes will not affect you.
If you are compiling libopenmpt with a C++11 compiler (MSVC >= 2013 2015, GCC >= 4.7 4.8, Clang >= 3.3 3.4, Android NDK >= 12 11, Emscripten >= 1.31.0), the changes will not affect you.
Otherwise, read on.


Long explanation

A considerable amount of development time is lost by working around problems with older compilers and/or older Windows and Wine versions. In order to save time and to allow focusing on more important features rather than working around buggy old software, we decided to remove support for the oldest supported platforms and compilers.

In order to actually gain us anything at all with respect to development efficiency, we need to remove support for all C++ compilers which are not C++11 (the C++ language standard which had been finalized in 2011) compatbile (see https://bugs.openmpt.org/view.php?id=836).

This includes (for both OpenMPT and libopenmpt):

* MSVC 2008, MSVC 2010, MSVC 2012, MSVC 2013 (for OpenMPT and libopenmpt)
* GCC 4.1, GCC 4.2, GCC 4.3, GCC 4.4, GCC 4.5, GCC 4.6, GCC 4.7 (for libopenmpt)
* Clang 3.0, Clang 3.1, Clang 3.2, Clang 3.3 (for libopenmpt)
* Android NDK 9, Android NDK 10, Android NDK 11 (for libopenmpt)
* Emscriptem < 1.31.0 (for libopenmpt)Still supporting (for both OpenMPT and libopenmpt):

* MSVC 2013, MSVC 2015, MSVC 2017, ... (for OpenMPT and libopenmpt)
* GCC 4.6, GCC 4.7, GCC 4.8, GCC 4.9, GCC 5.x, GCC 6.x, ... (for libopenmpt)
* Clang 3.2, Clang 3.3, Clang 3.4, Clang 3.5, Clang 3.6, Clang 3.7, Clang 3.8, Clang 3.9, Clang 4, ... (for libopenmpt)
* Android NDK 11, Android NDK 12, Android NDK 13, Android NDK 14, ... (for libopenmpt)
* Emscripten >= 1.31.0, ... (for libopenmpt)
For OpenMPT, this means we can only still support Windows versions which are supported by MSVC 2013, MSVC 2015 and/or MSVC 2017. The minimum Operating System versions in this case are:

* Windows XP (for 32bit) (removing Windows 98 SE + KernelEx, Windows ME + KernelEx, Windows 2000)
* Windows XP x64 (for 64bit) (not removing anything and instead actually providing 64bit builds for Windows XP x64 and Windows Vista again)
* Wine 1.4 1.6 (removing Wine 1.0, Wine 1.1, Wine 1.2, Wine 1.3, Wine 1.4, Wine 1.5)For libopenmpt, this will bump the minimum required Operating System versions (when using the respective default compiler; you may still compile libopenmpt if you have some newer compiler available):

* Windows XP (removing Windows 98 SE + KernelEx, Windows ME + KernelEx, Windows 2000)
* Debian 7, Debian 8 (removing Debian 4, Debian 5, Debian 6, Debian 7)
* Ubuntu 14.04 (removing Ubuntu 8.04, Ubuntu 10.04, Ubuntu 12.04)
* FreeBSD 10 (removing FreeBSD 7, FreeBSD 8, FreeBSD 9)
* CentOS 7 (removing CentOS 5, CentOS 6)Note that all of these common Operating Systems have already stable Long Term Support releases (which we will continue to support) out since more than 2 years now. For Windows, Long Term Support for Windows 2000 even expired more than 5 years ago by now.

Why?

As already stated above, a lot of development time is wasted on these old platforms.
If you are not a developer yourself, consider the following:
When still supporting Windows 98SE + KernelEx, we are forced to use Visual Studio 2008 because newer versions do not allow targetting Windows 98 at all. Now, Visual Studio 2008 is a 8 year old compiler, implementing a 13 year old bugfix (C++03) to a 18 year old programming language (C++98), implementing partially another 11 year old update (C++03 TR1), in order to target a 17 year old bugfix (Windows 98 SE) to basically a 21 year old Operating System (Windows 95) for which the latest security update expired 10 years ago, and requiring a 5 year old update (KernelEx 4.5) to an unofficial 7 year old patch (KernelEx 4) in order to emulate a 16 year old Operating System (Windows 2000) which itself expired 6 years ago, in order to be able to run OpenMPT at all. Even only 5 years is a very long time period in software development.
There have been multiple updates to the programming language (C++) that OpenMPT uses since then: C++03 TR1, C++11, C++14, and, by the time OpenMPT 1.27 will be released, probably even C++17. Programming in completely outdated versions of a programming language is no fun at all and working around the respective problems in old compilers or on old systems is cumbersome at best. It wastes considerable amounts of development time that would better be spent on other, more important aspects. And we are not talking about some minutes per month here, but instead multiple hours, often even days per month. Depending on the area being worked on, supporting these old platform can require more than 50% of the development time.
Sticking to old versions of C++ also actively hinders support for newer systems, makes the code harder to maintain and discourages outside contributors.

We are fully aware of the fact that a big aspect of OpenMPT is the support for ancient module formats, and we can see some utility in also supporting ancient (albeit still way newer than some module formats) systems with kind of the same mindset. However, there needs to be a border drawn somewhere. Practically all other software projects that are still being developed had already dropped support for pre Windows XP systems years ago, and many are considering dropping pre Windows Vista systems right now. OpenMPT will still be doing better in that regard than the average of the industry.

On the libopenmpt side, things are a little different. Libopenmpt-only code had already been written in a very C++11-ish way from the start (but still being compatible with C++98). Hadn't the OpenMPT code itself supported MSVC 2008, libopenmpt probably would not have gotten any pre C++11 support at all in the first place. However, compared to supporting MSVC 2008, additionally supporting old versions of GCC did not impose any significant additional burden. Now, when the MSVC 2008 support requirement goes away, that burden would increase significantly compared to also removing older GCC and similar compilers, because only removing compiler support in OpenMPT will not gain us much at all as about 50% of all code is shared between OpenMPT and libopenmpt.


Statistics (OpenMPT)

Starting with OpenMPT 1.26.04.00, we collected statistics about the Operating System used by our users via the built-in update mechanism (this had been mentioned in the release announcement and in History.txt).

The results (as of 2016-08-23) are the following:

Windows versions:

     Windows NT4    0 %   
      Windows 98    0 %   
      Windows ME    0 %   
    Windows 2000    0 %   
      Windows XP    4 %   #########
  Windows XP x64    0 %   #
   Windows Vista    1 %   ##
       Windows 7   29 %   ###########################################################
       Windows 8    1 %   ###
     Windows 8.1    8 %   ################
      Windows 10   54 %   #############################################################################################################
            Wine    3 %   ######

Wine versions broken down:

      wine-1.6.2   41 %   ##################################################################################
     wine-1.7.44    4 %   ########
     wine-1.7.55    4 %   ########
      wine-1.8.3   11 %   #######################
     wine-1.9.15    4 %   ########
     wine-1.9.16   30 %   ############################################################
    wine-unknown    7 %   ###############

There are updated statistics posted later in this thread. The original summary analysis is still mostly valid though.

Summary:
About 50% of OpenMPT users are running Windows 10, followed by 25% on Windows 7, roughly 10% on Windows 8.1 and 5% on Windows XP as well as 5% on some version of Wine.
About 50% of our Wine users are running a development (1.odd.x) version of Wine, and most of them are running the latest. The other 50% are running the latest stable (1.even.x) Wine version provided by their distribution.
As we had already guessed beforehand, we actually do not have any user (using the OpenMPT update mechanism) at all, who will be affected by this change, which makes us confident that this is the right decision.
Less than 3% of our users will be affected at all by the change in system support, and all of those being users on Wine where the difference between Win32/Win64 and Win32old/Win64old build variants is mostly negligable anyway (MediaFoundation, which OpenMPT uses in Win32 and Win64 build variants for compressed sample import, is not avilable on Wine).
No known users at all will not be able to run OpenMPT 1.27 on their system.


FAQ

* Q: OpenMPT suggests upgrading from Win32old/Win64old to Win32/Win64 variants on every startup. Can that be disabled?
A: Yes. Set the advanced setting [Update]SuggestDifferentBuildVariant to 0.

* Q: Can the check that causes OpenMPT to warn about an unsupported Windows or Wine version on startup be disabled?
A: Yes. Start OpenMPT via mptrack.exe /noSysCheck.

* Q: Can the check that causes OpenMPT to exit on incompatible hardware be disabled?
A: Yes. Start OpenMPT via mptrack.exe /noSysCheck.
Feel free to ask any further questions.


OpenMPT 1.27 build variant comparison

Win32oldWin64oldWin32Win64CPU supportworks on CPUs without SSE2 instructionsyesn/anon/aworks on CPUs without 64bit supportyesnoyesnooptimal performance on CPUs with SSE2 instructionsnoyesyesyesperformance when using mostly 32bit VST pluginsgoodbadgoodbadperformance when using mostly 64bit VST pluginsbadgoodbadgood.Win32oldWin64oldWin32Win64Windows usersminimum Windows VersionWindows XPWindows XP x64Windows 7Windows 7built-in MO3 module loading
(can otherwise use Un4seen unmo3.dll as fallback)requires libmpg123
built-inrequires libmpg123
built-inbuilt-inbuilt-inMP3 sample importrequires libmpg123
yesrequires libmpg123
yesyesyesMediaFoundation sample import (M4A, AAC, MP3, WMA, ...)nonoyesyes.Win32oldWin64oldWin32Win64Wine usersminimum Wine Version1.4 1.61.4 1.61.81.8recommended Wine emulated Windows VersionWindows XPWindows XPWindows XPWindows XPbuilt-in MO3 module loading
(can otherwise use Un4seen unmo3.dll as fallback)requires libmpg123
built-inrequires libmpg123
built-inrequires libmpg123
built-inrequires libmpg123
built-inMP3 sample importrequires libmpg123
yesrequires libmpg123
yesrequires libmpg123
yesrequires libmpg123
yesMediaFoundation sample import (M4A, AAC, MP3, WMA, ...)nononono.Win32oldWin64oldWin32Win64Windows Server usersminimum Windows Server VersionWindows Server 2003Windows Server 2003Windows Server 2008 R2Windows Server 2008 R2built-in MO3 module loading
(can otherwise use Un4seen unmo3.dll as fallback)requires libmpg123
built-inrequires libmpg123
built-inrequires libmpg123
built-inrequires libmpg123
built-inMP3 sample importrequires libmpg123
yesrequires libmpg123
yesrequires libmpg123
yesrequires libmpg123
yesMediaFoundation sample import (M4A, AAC, MP3, WMA, ...)nononono.Win32oldWin64oldWin32Win64compiler configuration (only relevant for developers)compilerVS2015
v140_xpVS2015
v140_xpVS2015
v140VS2015
v140minimum Windows KernelWindows XPWindows XP x64Windows VistaWindows Vistaminimum Windows APIWindows XPWindows XP x64Windows 7Windows 7minimum CPU features586
(cpuid fpu cx8)amd64
(cpuid cx8 tsc
cmov sse sse2
x86-64)686+sse2
(cpuid fpu cx8 tsc
cmov sse sse2)amd64
(cpuid cx8 tsc
cmov sse sse2
x86-64)

System and CPU support matrix for OpenMPT

Old situation (OpenMPT 1.26):

CPU32bit32bit+SSE264bitWine 0.x.x? ? ?? ? ?n/aWine 1.0.xWin32oldWin32oldn/aWine 1.1.xWin32oldWin32oldn/aWine 1.2.xWin32oldWin32oldWin32old / ? ? ?Wine 1.3.xWin32oldWin32oldWin32old / ? ? ?Wine 1.4.xWin32oldWin32Win32 / ? ? ?Wine 1.5.xWin32oldWin32Win32 / ? ? ?Wine 1.6.xWin32oldWin32Win32 / Win64Wine 1.7.xWin32oldWin32Win32 / Win64Wine 1.8.xWin32oldWin32Win32 / Win64Wine 1.9.xWin32oldWin32Win32 / Win64Wine 2.x.xWin32oldWin32Win32 / Win64Windows 95unsupportedn/an/aWindows 98unsupportedunsupportedn/aWindows 98SEunsupportedunsupportedn/aWindows ME  unsupportedunsupportedn/aWindows 98SE + KernelExWin32oldWin32oldn/aWindows ME + KernelEx  Win32oldWin32oldn/aWindows 2000           Win32oldWin32oldn/aWindows XP             Win32oldWin32oldn/aWindows XP x64         n/an/aWin32oldWindows Vista          Win32oldWin32oldWin32oldWindows 7              Win32oldWin32Win32 / Win64Windows 8              n/aWin32Win32 / Win64Windows 8.1            n/aWin32Win32 / Win64Windows 10             n/aWin32Win32 / Win64
Not supported.
Supported with reduced feature set and no 64bit builds.
Supported with reduced feature set.
Completely supported.

New situation (OpenMPT 1.27):

CPU32bit32bit+SSE264bitWine 0.x.xunsupportedunsupportedn/aWine 1.0.xunsupportedunsupportedn/aWine 1.1.xunsupportedunsupportedn/aWine 1.2.xunsupportedunsupportedunsupportedWine 1.3.xunsupportedunsupportedunsupportedWine 1.4.xunsupportedunsupportedunsupportedWine 1.5.xunsupportedunsupportedunsupportedWine 1.6.xWin32oldWin32oldWin32old / Win64oldWine 1.7.xWin32oldWin32oldWin32old / Win64oldWine 1.8.xWin32oldWin32Win32 / Win64Wine 1.9.xWin32oldWin32Win32 / Win64Wine 2.x.xWin32oldWin32Win32 / Win64Windows 95unsupportedn/an/aWindows 98unsupportedunsupportedn/aWindows 98SEunsupportedunsupportedn/aWindows ME  unsupportedunsupportedn/aWindows 98SE + KernelExunsupportedunsupportedn/aWindows ME + KernelEx  unsupportedunsupportedn/aWindows 2000           unsupportedunsupportedn/aWindows XP             Win32oldWin32oldn/aWindows XP x64         n/an/aWin32old / Win64oldWindows Vista          Win32oldWin32oldWin32old / Win64oldWindows 7              Win32oldWin32Win32 / Win64Windows 8              n/aWin32Win32 / Win64Windows 8.1            n/aWin32Win32 / Win64Windows 10             n/aWin32Win32 / Win64
Not supported.
Not supported anymore (worse than before, OpenMPT 1.26 was supported).
Supported with reduced feature set (worse than before, OpenMPT 1.26 was completely supported).
Supported with reduced feature set.
Supported with reduced feature set (better than before, OpenMPT 1.26 had no 64bit builds).
Completely supported.


Unofficial CPU support matrix for OpenMPT:

This matrix contains mostly Mainstream Desktop CPUs and some SoCs only (Budget Desktop CPUs (Intel Celeron, AMD Duron, AMD Sempron, ...) as well as Workstation and Server CPUs (Intel Xeon, AMD Opteron, AMD Phenom, ...) have similar features as the Desktop CPUs of the same generation, Mobile CPUs in general lag 1 generation behind, embedded SoCs sometimes even more).
The Win32old and Win64 variants of OpenMPT are compiled with a compiler which supports Windows down to and including Windows XP. This means the compiler is free to assume that the CPU has all features that Windows XP depends on. Thus, any CPU that is not supported by Windows XP is also not supported by OpenMPT.
Windows 8 requires a CPU with support for SSE2 instructions. Thus, if you are using Windows 8 or later, your CPU definately supports SSE2.
Most modern Linux distributions require at least a 686 compatible CPU. Thus, OpenMPT will almost certainly work on Wine on any modern Linux distribution.

The following table lists the supported CPUs for each individual build variant. The table is for the most part based on documentation only and has not been verified on actual hardware.

IntelAMD
NSC
NexGenZhaoxin
VIA
Cyrix
IDTRDC
Transmeta
DM&P
SiS
Riseunsupported
32 Bit, 486, no FPU
32 Bit, 486
32 Bit, 586, LOCK bug

Intel 80486SX (1989)
Intel 80486DX (1989)
Intel Quark (2013)

AMD Am486 SX (1993)
AMD Am486 DX (1993)
NexGen Nx586 (1994)
AMD Am5x86 (1995)
NexGen Nx586-PF (1995)

Cyrix Cx486S (1993)
Cyrix Cx486DX (1993)
Cyrix 5x86 (1995)
Cyrix MediaGX (1997)

DM&P Vortex86SX (2008)
DM&P Vortex86DX (2008)
DM&P Vortex86MX (2008)
unsupported as of 1.27
32 Bit, 586, no CMPXCHG8B
32 Bit, 586, optional CPUID
32 Bit, 586, optional CMPXCHG8B

- none

- none

Cyrix 6x86 (1996)
Cyrix 6x86L (1996)
IDT WinChip C6 (MMX) (1997)
IDT WinChip 2 (3dNow) (1998)

Rise mP6 (MMX) (1998)
Win32old
32 Bit, 586
32 Bit, 686, CMOV
(MMX)
(3dNow (incl. MMX))
(3dNowExt (incl. 3dNow))
(SSE1 (incl. MMX))
(3dNowPro (incl. 3dNowExt, SSE1))

Intel Pentium (1993)
Intel Pentium Pro (1995)
Intel Pentium MMX (MMX) (1996)
Intel Pentium 2 (MMX) (1997)
Intel Pentium 3 (SSE1) (1999)

AMD K5 (1996)
AMD K6 (MMX) (1997)
AMD K6-2 (3dNow) (1998)
AMD K6-III (3dNow) (1999)
AMD Athlon (K7) (3dNowExt) (1999)
NSC Geode GX1 (MMX) (2000)
AMD Athlon XP (3dNowPro) (2001)
NSC Geode GX2 (3dNow) (2002)
AMD Geode GX (3dNow) (2002)
AMD Geode LX (3dNow) (2003)
AMD Geode NX (3dNowPro) (2004)

Cyrix 6x86MX (MMX) (1997)
Cyrix MII (MMX) (1998)
Cyrix MediaGXm (MMX) (1998)
VIA Cyrix III (3dNow) (2000)
VIA C3 (SSE1) (2001)

Transmeta Crusoe (MMX) (2000)
SiS 55x (MMX) (2001)
DM&P Vortex86 (MMX) (2001)
RDC IAD 100 (2009)
Win32 / Win32old
32 Bit, SSE2

Intel Pentium 4 (2000)
Intel Pentium M (2003)
Intel Core (2006)
Intel Atom N2xx (2008)
Intel Atom Zxxx (2008)
Intel Atom Z2xxx (2012)

- none

VIA C7 (2005)

Transmeta Efficeon (2004)
Win64 / Win32 / Win64old / Win32old
32 Bit, SSE2, 64 Bit

Intel Pentium D (2005)
Intel Core 2 (2006)
Intel Atom cores (2008)
Intel Core cores (2008)
anything (since 2013)

AMD Athlon 64 (3dNowPro) (2003)
AMD Athlon (K10) (3dNowPro) (2007)
AMD Athlon II (3dNowPro) (2009)
AMD Bulldozer cores (2011)
AMD Bobcat cores (2011)
AMD Zen cores (2017)
anything (since 2005)

VIA Nano (2008)
VIA Nano X2 (2011)
VIA QuadCore (2015)
Zhaoxin Kaixian ZX-A
Zhaoxin Kaixian ZX-C
Zhaoxin Kaixian ZX-C+
Zhaoxin Kaisheng ZX-C+

- none

OpenMPT 1.27 removes support for the Rise mP6, very likely also for the Cyrix 6x86, and likely also the Cyrix 6x86L, IDT Winchip C6 and IDT Winchip 2.


This post will be updated and clarified as needed. For each update, a short reply summarizing the update will be made in order to notify topic subscribers.

Please, feel free to ask any questions in this thread.

manx:
As we already ran into yet another compiler bug in MSVC 2008 in revision 6940 (2016-08-20) which I have no motivation any more to investigate, we had already stopped providing test builds which run on Windows 2000, Windows ME + KernelEx or Windows 98 SE + KernelEx (see http://forum.openmpt.org/index.php?topic=5701.0).
Current (as of 2016-08-24) test builds at https://buildbot.openmpt.org/builds/ are still made with MSVC 2010 (thus they still run on the older Wine systems), however that will also change soon.(edit 2016-08-27)

Saga Musix:
Note that if you still want to run some of the last additions made to OpenMPT 1.27 on pre-XP systems, the last working version is https://buildbot.openmpt.org/builds/auto/openmpt-win32old/openmpt-win32old-1.27.00.04-r6924.7z

Harbinger:
As I've mentioned elsewhere, I came to Modplug on Windows 98 which was actually being emulated on my Mac 8.1 with VirtualPC. This was back in 2005. In 2008 I switched from Apple to Windows XP because of the sheer amount of software available (as a matter of fact, there's a world of good software I'm still finding). I still have the same computer and I have no intention of moving up from XP, because it does enough, and I don't wish to be on the internet at home.

The reason I respond to this thread with serious concern is that one day, probably sooner than I'd like, I will also be on this list of ModPlug moving away from me because I see no need to stay with the latest-and-greatest OS. Fortunately, because I'm not on the internet, I don't run into the problems that other Windows users have. And the limitations of XP haven't touched me. I don't foresee any great technology that I'm gonna need in the future that I can't do without, and so I will stay with the last version of Modplug when it moves beyond me someday soon. :(

Just do me a favor: make sure the last one I can use is as stable as can be gotten. So even though you'll have to drop support because the rest of the world is at Windows 2020, I can still get my compositions done while I stay on XP.  8)

One other thing: I wouldn't believe your magical update system — there are a lot of people who don't let you know what computer they're using, all for their own reasons. You have ZERO way of determining or even speculating how many computers are actually using ModPlug, and because of lack of accountability as well as randomity, Statistical Analysis is useless. It's the same problem with the internet as a whole — you don't know what's on the other end of the feed.
Your other reasons for letting go of the older-OS users may be valid, but it's not because of how many end-users are using what OS. Just call it what it is: it's inconvenient for you and YOU want to stay with the latest builder.  >:(

As long as you allow users to open files of any age, which you've stated is your mission, I think your justifications are valid. ;)

manx:

--- Quote from: Harbinger on August 25, 2016, 17:02:36 ---As I've mentioned elsewhere, I came to Modplug on Windows 98 which was actually being emulated on my Mac 8.1 with VirtualPC. This was back in 2005. In 2008 I switched from Apple to Windows XP because of the sheer amount of software available (as a matter of fact, there's a world of good software I'm still finding). I still have the same computer and I have no intention of moving up from XP, because it does enough, and I don't wish to be on the internet at home.

The reason I respond to this thread with serious concern is that one day, probably sooner than I'd like, I will also be on this list of ModPlug moving away from me because I see no need to stay with the latest-and-greatest OS.

--- End quote ---

As already stated in the issue tracker, we have no intention at all to remove Windows XP support anytime soon.



--- Quote from: Harbinger on August 25, 2016, 17:02:36 ---Just do me a favor: make sure the last one I can use is as stable as can be gotten. So even though you'll have to drop support because the rest of the world is at Windows 2020, I can still get my compositions done while I stay on XP.  8)

--- End quote ---

This decision would have to be made when, in some speculative future time, dropping Windwos XP support would actually be on the table. Whether that would be feasable could depend on a whole lot of things, none of which anyone can predict right now.
With respect to the current case, we do not have any intention to continue providing further bug fixes for OpenMPT 1.26 once 1.27 is released.



--- Quote from: Harbinger on August 25, 2016, 17:02:36 ---One other thing: I wouldn't believe your magical update system — there are a lot of people who don't let you know what computer they're using, all for their own reasons. You have ZERO way of determining or even speculating how many computers are actually using ModPlug, and because of lack of accountability as well as randomity, Statistical Analysis is useless. It's the same problem with the internet as a whole — you don't know what's on the other end of the feed.

--- End quote ---

You are correct that we cannot reliably estimate the total number of OpenMPT users or their respective frequency of use.
However, in order to make any descision whatsoever at all, we must base that decision on the best available data that we have. Otherwise it would just be guessing everything.
You are guessing that the percentage of users not using the update mechanism is bigger on older systems than on newer systems. I do not question that, in fact I am expecting the same thing.
That question could be answered by collecting browser statistics on the openmpt.org download page (and mapping them to system versions), and correlating those with the statistics we see in OpenMPT installations using the update checker. However, as far as I know (Saga Musix may correct me on this), we are not collecting these.
I'm not even sure if we are collecting download count statistics at all. However, even if we did, this would not allow us to correlate this number to the percentage of users not enabling the update checker, because people might download OpenMPT from download sites other than openmpt.org itself. Downloading OpenMPT from other sites is totally fine by the OpenMPT license and we can neither actually change or prohibit that, nor do we want to do that.
Thus, we are left with what we have available, which is the count of OpenMPT installations having enabled the update checker as well as anonymous statistics (which both are enabled by default for new installs). In addition to the system statistics we gather when anonymous statistics are enabled by the user, we also get to know the version and build variant that does the update check (even without anonymous statistics, as this part is essential to the way the update check is currently implemented (and has been in the past)). Thus we can somewhat estimate whether users of the Win32old build variant tend to be more reluctant to enabling statistics. We are not seeing that - in fact it's the opposite if I am reading the numbers correctly. However that may also be due to old versions which did not make a distinction between Win32 and Win32old.
Anyway, if we do not want to trust the numbers that we are collecting, we could turn to other published statistics about desktop operating system use. Wikipedia has a whole article about these at https://en.wikipedia.org/wiki/Usage_share_of_operating_systems. Leaving aside what these statistics actually measure as well as their precise methodology, they also show that even Windows 2000 fell below 0.1% share more than 5 years ago.
Since I have been working on OpenMPT (which is about 3.5 years by now, I think), as far as I can remember, there has not been even a single bug report from any user on Windows 98 SE, Windows ME or Windows 2000, or any other indication at all that we have any actual users on these systems. OpenMPT was even broken and did not run at all for about half a year because we had missed that an UnRAR update had broken OpenMPT on these systems - again, noone complained at all.
I cannot imagine any stronger indication that we could require to back up our decision than the indications we have collected so far.
Frankly, even if we did see users on 98, ME or 2000, in my opinion the benefits of dropping pre Windows XP support would still outweight the harm done to users on these systems. I cannot tell where the turning point would be, but that question is simply nothing to think about currently, as we have the strongest indication possible of having no users on these systems.



--- Quote from: Harbinger on August 25, 2016, 17:02:36 ---Your other reasons for letting go of the older-OS users may be valid, but it's not because of how many end-users are using what OS. Just call it what it is: it's inconvenient for you and YOU want to stay with the latest builder.  >:(

--- End quote ---

Let me change the perspective here a bit. You are an OpenMPT user and want the OpenMPT developers to continue supporting OpenMPT on outdated systems. However, as current development tools do not allow targeting the outdated systems, the developers are forced to use outdated development tools which are not supported anymore and do not even run on modern systems at all, which means the developers are even forced to use outdated systems themselves.
OpenMPT users deserve to get the (questionable, in my opinion) benefits of old systems support but developers must suffer because they must stay with outdated systems themselves? I honestly do not think that expectation can be called fair by any reasonable measure. (Being forced to use C++98 instead of C++11 in 2016 could be compared to having to do mixing and arranging your music with 4 track tape machines instead of a DAW or tracker, let alone constantly having to repair the tape because it constantly tends to fructure and catch fire in surprising ways (akin to working around bugs in old compilers and systems) - the analogy is probably bad in a lot of aspects, but I tried to find something in the audio field)

I think you are also missing another important point: Supporting old systems is not only inconvenient for us developers but also for the users. As already stated before, we once again ran into a bug in Visual Studio 2008 while implementing a new feature. Now, I could myself take the burden and, even though I have the strongest possible indication that noone would care anyway, try working around the problem and determine why this ancient compiler just crashes, wasting an unknown amount of hours in the process which would be lost from other work on OpenMPT; - or I could simply remove that feature again and thereby hinder progress and hurt all other users on modern system; - or, we could finally remove the cumbersome support for outdated platforms just as planned. This isn't just some theoretical hypothetical situation - it's the situation right now.



--- Quote from: Harbinger on August 25, 2016, 17:02:36 ---As long as you allow users to open files of any age, which you've stated is your mission, I think your justifications are valid. ;)

--- End quote ---

Sure, that will not change of course. It's even more important for libopenmpt (and the primary goal of libopenmpt) than it is for OpenMPT itself (not saying that it's not important for OpenMPT also).

Navigation

[0] Message Index

[#] Next page

Go to full version