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

Started by manx, August 24, 2016, 07:18:29

Previous topic - Next topic

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







































Win32old
Win64old
Win32
Win64
CPU support
works on CPUs without SSE2 instructions
yes
n/a
no
n/a
works on CPUs without 64bit support
yes
no
yes
no
optimal performance on CPUs with SSE2 instructions
no
yes
yes
yes
performance when using mostly 32bit VST plugins
good
bad
good
bad
performance when using mostly 64bit VST plugins
bad
good
bad
good
.
Win32old
Win64old
Win32
Win64
Windows users
minimum Windows Version
Windows XP
Windows XP x64
Windows 7
Windows 7
built-in MO3 module loading
(can otherwise use Un4seen unmo3.dll as fallback)
requires libmpg123
built-in
requires libmpg123
built-in
built-in
built-in
MP3 sample import
requires libmpg123
yes
requires libmpg123
yes
yes
yes
MediaFoundation sample import (M4A, AAC, MP3, WMA, ...)
no
no
yes
yes
.
Win32old
Win64old
Win32
Win64
Wine users
minimum Wine Version
1.4 1.6
1.4 1.6
1.8
1.8
recommended Wine emulated Windows Version
Windows XP
Windows XP
Windows XP
Windows XP
built-in MO3 module loading
(can otherwise use Un4seen unmo3.dll as fallback)
requires libmpg123
built-in
requires libmpg123
built-in
requires libmpg123
built-in
requires libmpg123
built-in
MP3 sample import
requires libmpg123
yes
requires libmpg123
yes
requires libmpg123
yes
requires libmpg123
yes
MediaFoundation sample import (M4A, AAC, MP3, WMA, ...)
no
no
no
no
.
Win32old
Win64old
Win32
Win64
Windows Server users
minimum Windows Server Version
Windows Server 2003
Windows Server 2003
Windows Server 2008 R2
Windows Server 2008 R2
built-in MO3 module loading
(can otherwise use Un4seen unmo3.dll as fallback)
requires libmpg123
built-in
requires libmpg123
built-in
requires libmpg123
built-in
requires libmpg123
built-in
MP3 sample import
requires libmpg123
yes
requires libmpg123
yes
requires libmpg123
yes
requires libmpg123
yes
MediaFoundation sample import (M4A, AAC, MP3, WMA, ...)
no
no
no
no
.
Win32old
Win64old
Win32
Win64
compiler configuration (only relevant for developers)
compiler
VS2015
v140_xp
VS2015
v140_xp
VS2015
v140
VS2015
v140
minimum Windows Kernel
Windows XP
Windows XP x64
Windows Vista
Windows Vista
minimum Windows API
Windows XP
Windows XP x64
Windows 7
Windows 7
minimum CPU features
586
(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):






CPU
32bit
32bit+SSE2
64bit
Wine 0.x.x
? ? ?
? ? ?
n/a
Wine 1.0.x
Win32old
Win32old
n/a
Wine 1.1.x
Win32old
Win32old
n/a
Wine 1.2.x
Win32old
Win32old
Win32old / ? ? ?
Wine 1.3.x
Win32old
Win32old
Win32old / ? ? ?
Wine 1.4.x
Win32old
Win32
Win32 / ? ? ?
Wine 1.5.x
Win32old
Win32
Win32 / ? ? ?
Wine 1.6.x
Win32old
Win32
Win32 / Win64
Wine 1.7.x
Win32old
Win32
Win32 / Win64
Wine 1.8.x
Win32old
Win32
Win32 / Win64
Wine 1.9.x
Win32old
Win32
Win32 / Win64
Wine 2.x.x
Win32old
Win32
Win32 / Win64
Windows 95
unsupported
n/a
n/a
Windows 98
unsupported
unsupported
n/a
Windows 98SE
unsupported
unsupported
n/a
Windows ME 
unsupported
unsupported
n/a
Windows 98SE + KernelEx
Win32old
Win32old
n/a
Windows ME + KernelEx 
Win32old
Win32old
n/a
Windows 2000           
Win32old
Win32old
n/a
Windows XP             
Win32old
Win32old
n/a
Windows XP x64         
n/a
n/a
Win32old
Windows Vista         
Win32old
Win32old
Win32old
Windows 7             
Win32old
Win32
Win32 / Win64
Windows 8             
n/a
Win32
Win32 / Win64
Windows 8.1           
n/a
Win32
Win32 / Win64
Windows 10             
n/a
Win32
Win32 / Win64

Not supported.
Supported with reduced feature set and no 64bit builds.
Supported with reduced feature set.
Completely supported.

New situation (OpenMPT 1.27):






CPU
32bit
32bit+SSE2
64bit
Wine 0.x.x
unsupported
unsupported
n/a
Wine 1.0.x
unsupported
unsupported
n/a
Wine 1.1.x
unsupported
unsupported
n/a
Wine 1.2.x
unsupported
unsupported
unsupported
Wine 1.3.x
unsupported
unsupported
unsupported
Wine 1.4.x
unsupported
unsupported
unsupported
Wine 1.5.x
unsupported
unsupported
unsupported
Wine 1.6.x
Win32old
Win32old
Win32old / Win64old
Wine 1.7.x
Win32old
Win32old
Win32old / Win64old
Wine 1.8.x
Win32old
Win32
Win32 / Win64
Wine 1.9.x
Win32old
Win32
Win32 / Win64
Wine 2.x.x
Win32old
Win32
Win32 / Win64
Windows 95
unsupported
n/a
n/a
Windows 98
unsupported
unsupported
n/a
Windows 98SE
unsupported
unsupported
n/a
Windows ME 
unsupported
unsupported
n/a
Windows 98SE + KernelEx
unsupported
unsupported
n/a
Windows ME + KernelEx 
unsupported
unsupported
n/a
Windows 2000           
unsupported
unsupported
n/a
Windows XP             
Win32old
Win32old
n/a
Windows XP x64         
n/a
n/a
Win32old / Win64old
Windows Vista         
Win32old
Win32old
Win32old / Win64old
Windows 7             
Win32old
Win32
Win32 / Win64
Windows 8             
n/a
Win32
Win32 / Win64
Windows 8.1           
n/a
Win32
Win32 / Win64
Windows 10             
n/a
Win32
Win32 / 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
NexGen
Zhaoxin
VIA
Cyrix
IDT
RDC
Transmeta
DM&P
SiS
Rise

unsupported
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
» No support, bug reports, feature requests via private messages - they will not be answered. Use the forums and the issue tracker so that everyone can benefit from your post.

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.

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)

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.

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.  >:(

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. ;)

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).

Saga Musix

Just to add some more perspective to manx' post: Win32s (the 32-bit extension to Windows 3.11) support (if it ever worked, that is, I have no way to verify) and Windows 95 support were dropped probably as soon as OpenMPT was open-sourced, which was merely 9-10 years after Windows 95 was released. Nobody complained back then. Now we are dropping Windows 98 support sixteen years after it has been released, and so far the only persons complaining are people who do not actively use Windows 98. If you want to use a severely outdated operating system, then you will have to accept that you will have to use outdated software at some point too. There is almost no software being made today that still runs on Windows 98, and OpenMPT was one of very few exceptions to that - which was nice while it lasted, but it no longer makes sense to put a huge amount of effort into it.
As I said on the issue tracker, this is 2016, not 2006 - while in 2006 there were still plenty of Windows 98 users (I myself switched from 98 to XP as my main operating system in that year), today this number is practically zero, except for some retro-computing enthusiasts. I'm not claiming that there are no "real" users on those systems, but reality just shows that even without perfectly accurate statistics this number is still way lower than 1%.

QuoteJust do me a favor: make sure the last one I can use is as stable as can be gotten.
This is the case for every version, and then a year later I have a huge bug list of what was broken in the previous version. The only way to provide the most stable version ever is to wait ten years before releasing it and then only fixing bugs (not adding new features) during those ten years.

QuoteSo 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.
And nobody will stop you from using whatever the last version to support Windows XP is going to be. Unless of course you want to pay me a yearly salary to keep sure that there will be a usable, up-to-date version for whatever outdated operating system - the demands go both ways, not only from user to developer.
You will have to understand that if you want to go with the times (i.e. use the latest and greatest software), then ultimately, you cannot just go with the times in one case and stay in the past in another case - it's either both or none.

Oh, and if someone is really interested in getting OpenMPT and some other software to run on Windows 98, they can always look into extending KernelEx - but even the developer of KernelEx seems to have lost interest in this project years ago, probably also because there was no real use for it anymore.

QuoteJust call it what it is: it's inconvenient for you and YOU want to stay with the latest builder.
If we just wanted to use the latest fad, we'd rewrite OpenMPT in pure JavaScript instead of C++11. ;) We're not even targetting the latest C++ standard, which would be C++14 and would remove support for even more compilers (but wouldn't make a difference in supported operating systems for OpenMPT, only for libopenmpt it would actually matter). OpenMPT/libopenmpt is a very extensive spare-time project for both manx and me, and as such everything that can help relieving unnecessary burden from us will help bringing OpenMPT forward.
» No support, bug reports, feature requests via private messages - they will not be answered. Use the forums and the issue tracker so that everyone can benefit from your post.

manx

Since r6999 (that number was pure coincidence :D) (2016-08-27, OpenMPT 1.27.00.07), OpenMPT and libopenmpt test builds are now made with VS2015.

manx

Added OpenMPT build variant comparison table to the original post.

manx

As already stated, ModPlug Tracker / OpenMPT had already dropped support for older systems multiple times in the past. OpenMPT had also switched to a more modern default compiler multiple times.

Note that OpenMPT skipped compiler versions in the past, thereby prolonging support for older systems:

  • Visual Studio 6 (1998)
  • Visual Studio .NET (2002) (skipped)
  • Visual Studio .NET 2003
  • Visual Studio 2005 (skipped)
  • Visual Studio 2008
  • Visual Studio 2010
  • Visual Studio 2012 (skipped)
  • Visual Studio 2013 (skipped)
  • Visual Studio 2015
  • Visual Studio 2017
For the first time now, OpenMPT skips 2 major compiler versions.

The following table tries to list the supported Windows Versions for each epoch of ModPlug Tracker / OpenMPT releases to the best of my knowledge.
This is based on historical documentation only (and in some places even guesses only), and has not been verified on actual systems.






























Version
1.00-1.16
MPT Wild!
1.17
1.18
1.19
1.20-1.22
1.23-1.24
1.25
1.26
1.27-...
Timeframe
1998-2004
2004
2004-2009
2010
2011
2012-2013
2014-2015
2015
2016-2017
2017-____
Primary Compiler
Secondary Compiler
VS6
VS2003
VS2003
VS2003
VS2008
VS2008
VS2008
VS2010
VS2010
VS2008
VS2010
VS2008
VS2015
Other Compilers
VS6
VS2008
VS2010
VS2010
VS2012
VS2013
VS2015
VS2012
VS2013
VS2015
VS2017
Version
1.00-1.16
MPT Wild!
1.17
1.18
1.19
1.20-1.22
1.23-1.24
1.25
1.26
1.27-...
MS-DOS 6 (1993-1995)
no
no
no
no
no
no
no
no
no
no
Windows 3.11 (1993-1995)
no
no
no
no
no
no
no
no
no
no
Windows 3.11 + Win32s (1995-1996)
maybe
no
no
no
no
no
no
no
no
no
Version
1.00-1.16
MPT Wild!
1.17
1.18
1.19
1.20-1.22
1.23-1.24
1.25
1.26
1.27-...
Windows 95 (1995-2001)
yes
no
no
no
no
no
no
no
no
no
Windows 98 (1998-1999)
yes
maybe
maybe
maybe
no
no
no
no
no
no
Windows 98 SE (1999-2006)
yes
yes
yes
yes
no
no
no
no
no
no
Windows ME (2000-2006)
yes
yes
yes
yes
no
no
no
no
no
no
Windows 98 SE + KernelEx (2009-2013)
maybe
maybe
maybe
maybe
yes
yes
yes
yes
yes
no
Windows ME + KernelEx (2009-2013)
maybe
maybe
maybe
maybe
yes
yes
yes
yes
yes
no
Version
1.00-1.16
MPT Wild!
1.17
1.18
1.19
1.20-1.22
1.23-1.24
1.25
1.26
1.27-...
Windows NT 3.5 (1994-2001)
no
no
no
no
no
no
no
no
no
no
Windows NT 3.51 (1995-2001)
maybe
no
no
no
no
no
no
no
no
no
Windows NT4 (1996-2004)
yes
maybe
maybe
maybe
no
no
no
no
no
no
Windows 2000 (2000-2010)
yes
yes
yes
yes
yes
yes
yes
yes
yes
no
Windows XP (2001-2014)
yes
yes
yes
yes
yes
yes
yes
yes
yes
yes
Windows Vista (2006-2017)
maybe
maybe
yes
yes
yes
yes
yes
yes
yes
yes
Windows 7 (2009-2020)
maybe
maybe
yes
yes
yes
yes
yes
yes
yes
yes
Windows 8 (2012-2016)
maybe
maybe
maybe
maybe
maybe
yes
yes
yes
yes
yes
Windows 8.1 (2013-2023)
maybe
maybe
maybe
maybe
maybe
yes
yes
yes
yes
yes
Windows 10 (2015-____)
maybe
maybe
maybe
maybe
maybe
maybe
maybe
maybe
yes
yes
Version
1.00-1.16
MPT Wild!
1.17
1.18
1.19
1.20-1.22
1.23-1.24
1.25
1.26
1.27-...

Harbinger

I think the best argument made for going forward was manx' assertion:
Quote
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.

This answers my concerns on many levels.
1. If no one is filing complaints on these systems, that means either no ModPlug users are on Win98 OR there is a stable enough version of OpenMPT that works for those old systems.
2. That you help your determination on "moving past" certain OSes by gauging complaints from those OSes, addresses my biggest concern  — that one day I'll be left behind. If i'm still on XP in 2020 or 2030 still filing bug problems or Feature Requests on Issue Tracker for my OS, then hopefully the devs then will know there's at least ONE avid user on an ancient OS and will hopefully hold off.
3. If I DO move on to a more up-to-date Windows OS, and i'm the last ModPlug user to do so (in some probability sense), i will still be moving up to more of the new features that hopefully by then will be added. So it's a win-win.

Thanks for hearing me out, and explaining how carefully you considered the move.  8)

I'm confidant in your decision and i for one will support your move.

Now maybe we can get some new technologies with this old tracker!  ;D

manx

Updated statistics as of 2016-09-03:

      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   55 %   ###################################################################################
            Wine    3 %   #####

      wine-1.6.1    3 %   ######
      wine-1.6.2   36 %   ######################################################
     wine-1.7.25    2 %   ###
     wine-1.7.55    2 %   ###
      wine-1.8.0    2 %   ###
      wine-1.8.2    2 %   ###
      wine-1.8.3    8 %   #############
      wine-1.9.7    2 %   ###
      wine-1.9.9    2 %   ###
     wine-1.9.13    3 %   ######
     wine-1.9.15    2 %   ###
     wine-1.9.16    8 %   #############
     wine-1.9.17   25 %   #######################################
    wine-unknown    3 %   ######

The numbers are rounded half up, and the bars are rounded up (thus even a single user will always display a tiny bar).

Overall, things have not changed that much since the original statistics were posted.
The one single Windows 98 SE + KernelEx user was myself verifying that 1.26 still works there.
We now actually have seen a user on Windows 2000.

manx

Updated statistics as of 2016-10-02:

Windows versions:

      Windows 98    0 %   #
      Windows ME    0 %   

     Windows NT4    0 %   

    Windows 2000    0 %   #

      Windows XP    3 %   #####
  Windows XP x64    0 %   #

   Windows Vista    1 %   #

       Windows 7   30 %   #############################################
       Windows 8    1 %   ##
     Windows 8.1    8 %   ############

      Windows 10   55 %   ##################################################################################


            Wine    3 %   ######

Wine versions broken down:

    wine-unknown    1 %   ###

        wine-1.4    1 %   ##

      wine-1.6.1    7 %   ###########
      wine-1.6.2   36 %   ######################################################

     wine-1.7.24    1 %   ##
     wine-1.7.25    1 %   ##
     wine-1.7.38    1 %   ##
     wine-1.7.55    1 %   ##

        wine-1.8    2 %   ####
      wine-1.8.2    1 %   ##
      wine-1.8.3    6 %   #########
      wine-1.8.4    3 %   #####

      wine-1.9.0    1 %   ##
      wine-1.9.6    1 %   ##
      wine-1.9.7    1 %   ##
      wine-1.9.9    1 %   ###
     wine-1.9.13    1 %   ###
     wine-1.9.15    1 %   ##
     wine-1.9.16    4 %   #######
     wine-1.9.17    7 %   ############
     wine-1.9.18   13 %   #####################
     wine-1.9.19    9 %   ##############


The numbers are rounded half up, and the bars are rounded up (thus even a single user will always display a tiny bar).
Statistics account for systems we have seen over the last 3 month period.

Overall, things have not changed that much since the last statistics were posted.

manx

Updated statistics as of 2017-01-06:

Windows versions:

      Windows 98    0 %   #
      Windows ME    0 %   

     Windows NT4    0 %   

    Windows 2000    0 %   #
      Windows XP    3 %   #####
  Windows XP x64    0 %   #

   Windows Vista    1 %   #
       Windows 7   31 %   ###############################################
       Windows 8    1 %   ##
     Windows 8.1    7 %   ############

      Windows 10   54 %   #################################################################################

            Wine    4 %   ######

Wine versions broken down:

    wine-unknown    2 %   ###

      wine-1.0.0    0 %   #

      wine-1.4.0    0 %   #

     wine-1.5.28    0 %   #
      wine-1.6.1    2 %   ####
      wine-1.6.2   33 %   ##################################################

     wine-1.7.24    0 %   #
     wine-1.7.37    1 %   ##
     wine-1.7.39    0 %   #
     wine-1.7.52    0 %   #
     wine-1.7.55    2 %   ###
      wine-1.8.0    4 %   #######
      wine-1.8.1    0 %   #
      wine-1.8.3    2 %   ###
      wine-1.8.4    4 %   #######
      wine-1.8.5    5 %   #########

      wine-1.9.0    0 %   #
      wine-1.9.6    0 %   #
      wine-1.9.7    0 %   #
      wine-1.9.8    0 %   #
     wine-1.9.11    0 %   #
     wine-1.9.16    0 %   #
     wine-1.9.17    0 %   #
     wine-1.9.18    3 %   #####
     wine-1.9.19    3 %   ####
     wine-1.9.20    3 %   #####
     wine-1.9.21    4 %   #######
     wine-1.9.22    4 %   ######
     wine-1.9.23   10 %   ###############
     wine-1.9.24    4 %   ######
     wine-2.0-rc    0 %   #
      wine-2.0.0    8 %   #############

The numbers are rounded half up, and the bars are rounded up (thus even a single user will always display a tiny bar).
Statistics account for systems we have seen over the last 3 month period.

j7n

I will go to Preferences and click Check for Updates every now and then to add a point to the statistics for WinXP. The first thing I do in any software is defeat updates. Even if there are bugs, I can usually deal with known ones just fine.

Time moves on. Windows 98 probably has virtually no practical application now, aside from playing games, and maybe work with OPL sound cards. Other software that attempted to retain compatibility with it has made NT users suffer. I'm thinking of Irfan without Unicode filenames...

What causes me to facepalm is that half of Windows users have switched over to Windows 10, despite the complaints from several angles, about the forced updates, poor performance of Metro, security issues and the unreadable flat design. At least one of those flaws should have been reason enough to reject this system, which makes even Vista seem great in comparison. I get that every latest nonsense from Microsoft is what adds to the difficulty of maintaining compatibility. So if there was no Windows 10...

Enough rambling. I appreciate the considerable effort that has gone into explaining the transition in this thread.

Exhale

Hey guys, I can understand this completely, and do not use those systems to track in, but - even though technically unaffected I would like to suggest you keep a copy of the code before this change aside and have it online with old downloadable working versions of modplug so these people can still use the software as it is at the moment and dont loose the software - if there are or arent any of them out there it is fine, I just like the archiving and providing for everyone we can idea of it. If you have already planned this, ie, way ahead of me, then I will remove this comment ;)
___________________
No longer helping. Do not expect replies.