OpenMPT 1.27 and libopenmpt 0.3.0 remove support for old Windows and Wine systems and old C++ compilersThis 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 explanationA 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 (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 OpenMPTOld 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.
|
Intel | AMD 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.
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 (http://forum.openmpt.org/index.php?topic=5701.0)).
Current (as of 2016-08-24) test builds at https://buildbot.openmpt.org/builds/ (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)
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
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. ;)
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 (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).
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.
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.
Added OpenMPT build variant comparison table to the original post.
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-... |
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
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.
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.
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.
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.
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 ;)
1) Old OpenMPT versions are always archived at https://download.openmpt.org/archive/openmpt/
2) We use version control (like any self-respecting software developer) so it is always possible go back to any previous version of the code and re-compile it. Since we are working on OpenMPT 1.27 and 1.26 in parallel (the latter only gets maintenance updates until OpenMPT 1.27 is released), it's even very easy to find this version, because it's stored in a separate branch: https://source.openmpt.org/browse/openmpt/branches/OpenMPT-1.26/
Quote from: Saga Musix on February 02, 2017, 00:03:28
1) Old OpenMPT versions are always archived at https://download.openmpt.org/archive/openmpt/
2) We use version control (like any self-respecting software developer) so it is always possible go back to any previous version of the code and re-compile it. Since we are working on OpenMPT 1.27 and 1.26 in parallel (the latter only gets maintenance updates until OpenMPT 1.27 is released), it's even very easy to find this version, because it's stored in a separate branch: https://source.openmpt.org/browse/openmpt/branches/1.26-maintenance/
Great to know, and having the links here, I think, will be ideal for this thread. I am no programmer, so I didn't know the systems used for those things, I just imagined myself in a situation of loosing my modplug and saw ominous black clouds of despair. Whatsapp just recently dropped support for my phone, so that whole nonsense spurred the vision.
As OpenMPT 1.27 and libopenmpt 0.3.0 will still take some time until the release is ready, I am contemplating to drop even more compiler support than originally planned.
Visual Studio 2017 will be released before OpenMPT 1.27, thus we can drop VS2013 support in 1.27 and still have 2 supported Visual Studio versions.
Debian 9 will also very probably be released before libopenmpt 0.3.0, and thus we can drop GCC 4.6 and GCC 4.7 and still have the latest 2 Debian releases supported. The latest 2 Ubuntu LTS releases are also covered when requiring GCC 4.8.
Thus, the required compiler versions might very well end up being:
- MSVC >= 2015
- GCC >= 4.8
- Clang >= 3.2
Testing on an ancient Ubuntu 12.04 system with Wine 1.4 revealed that binaries compiled with Visual Studio 2015 actually do not work on Wine 1.4. Thus, contrary to the original plan, OpenMPT 1.27 will also remove support for Wine 1.4 and Wine 1.5.
The original post has been modified accordingly.
It's worth mentioning that most relevant Linux desktop distributions ship with Wine 1.6 these days, and the Wine project also offers their own, always up-to-date repository for many distributions.
Updated statistics as of 2017-02-21:
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 7 % ###########
Windows 10 55 % ##################################################################################
Wine 3 % ######
Wine versions broken down:
wine-unknown 2 % ####
wine-1.0.0 0 % #
wine-1.4.0 0 % #
wine-1.6.1 2 % ###
wine-1.6.2 34 % ####################################################
wine-1.7.0 0 % #
wine-1.7.37 1 % ##
wine-1.7.39 0 % #
wine-1.7.46 0 % #
wine-1.7.49 0 % #
wine-1.7.52 0 % #
wine-1.7.55 1 % ##
wine-1.8.0 4 % #######
wine-1.8.1 0 % #
wine-1.8.3 1 % ##
wine-1.8.4 2 % ####
wine-1.8.5 4 % #######
wine-1.8.6 4 % ######
wine-1.9.0 0 % #
wine-1.9.11 0 % #
wine-1.9.16 1 % ##
wine-1.9.17 0 % #
wine-1.9.18 2 % ####
wine-1.9.19 0 % #
wine-1.9.20 2 % ###
wine-1.9.21 2 % ####
wine-1.9.22 1 % ##
wine-1.9.23 5 % #########
wine-1.9.24 4 % #######
wine-2.0-rc 0 % #
wine-2.0-rc4 0 % #
wine-2.0 0 % #
wine-2.0.0 19 % #############################
wine-2.1.0 3 % #####
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.
Original post updated: VS2017 added.
As of today, 2017-03-20 (r7824), libopenmpt Windows test builds are built with VS2017 instead of VS2015.
Updated statistics as of 2017-04-03:
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 7 % ###########
Windows 10 55 % ###################################################################################
Wine 3 % ######
Wine versions broken down:
wine-unknown 3 % ####
wine-1.1.44 0 % #
wine-1.6.1 1 % ##
wine-1.6.2 31 % ###############################################
wine-1.7.0 0 % #
wine-1.7.25 0 % #
wine-1.7.37 1 % ##
wine-1.7.39 0 % #
wine-1.7.46 0 % #
wine-1.7.49 0 % #
wine-1.7.55 0 % #
wine-1.8 0 % #
wine-1.8.0 3 % #####
wine-1.8.1 0 % #
wine-1.8.3 1 % ##
wine-1.8.4 1 % #
wine-1.8.5 5 % ########
wine-1.8.6 4 % #######
wine-1.8.7 0 % #
wine-1.9.0 0 % #
wine-1.9.11 0 % #
wine-1.9.15 0 % #
wine-1.9.16 0 % #
wine-1.9.17 0 % #
wine-1.9.18 2 % ###
wine-1.9.19 0 % #
wine-1.9.20 2 % ###
wine-1.9.21 2 % ####
wine-1.9.22 0 % #
wine-1.9.23 1 % ##
wine-1.9.24 1 % ##
wine-2.0-rc 0 % #
wine-2.0-rc4 0 % #
wine-2.0 0 % #
wine-2.0.0 18 % ###########################
wine-2.1.0 4 % ######
wine-2.2.0 4 % ######
wine-2.3.0 5 % ########
wine-2.4 0 % #
wine-2.4.0 3 % #####
wine-2.5.0 1 % #
Wine host OS:
macOS 13 % #######
Linux 88 % ############################################
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.
The minimum compiler versions will almost certainly be:
- MSVC >= 2015
- GCC >= 4.8
- Clang >= 3.4
Original post has been updated accordingly.
OpenMPT 1.27 will include libmpg123, thus no external download of libmpg123 will be required in any case for MP3 sample import or built-in MO3 loading.
Build variant comparison table in original post has been updated accordingly.
In case you wonder why we finally include an MP3 decoder right in the tracker: MP3 finally became patent-free and codecs no longer need to be licensed: https://madfileformatscience.garymcgath.com/2017/04/20/mp3-april-23/
Updated statistics as of 2017-08-15:
Windows versions:
Windows 98 0 % #
Windows ME 0 %
Windows NT4 0 %
Windows 2000 0 % #
Windows XP 2 % ####
Windows XP x64 0 % #
Windows Vista 0 % #
Windows 7 29 % ###########################################
Windows 8 1 % ##
Windows 8.1 7 % ###########
Windows 10 57 % #######################################################################################
Wine 3 % #####
Wine stable vs. development series:
stable 58 % ##############################
development 41 % #####################
unknown 0 % #
Wine versions broken down by series (current development, stable, old development):
wine-unknown 0 % #
wine-1.3 0 % #
wine-1.4 0 % #
wine-1.5 0 % #
wine-1.6 30 % ##############################
wine-1.7 2 % ###
wine-1.8 13 % #############
wine-1.9 2 % ###
wine-2.0 16 % ################
wine-2.x 36 % #####################################
Wine host OS:
macOS 17 % #########
Linux 83 % ##########################################
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.
Wine versions used on Linux and Wine versions used on macOS.
Wine on Linux
wine-1.3 0 % #
wine-1.4 0 %
wine-1.5 0 % #
wine-1.6 33 % #################################
wine-1.7 1 % #
wine-1.8 12 % ############
wine-1.9 1 % #
wine-2.0 11 % ############
wine-2.x 41 % #########################################
Wine on macOS
wine-1.6 3 % ###
wine-1.7 10 % ##########
wine-1.8 23 % #######################
wine-1.9 3 % ###
wine-2.0 48 % ################################################
wine-2.x 15 % ###############
There are a couple of noteworthy observations to be made here:
- really ancient Wine versions are not used on macOS
- macOS users prefer stable Wine releases, while on Linux both, stable and development versions tend to get used
- obsolete old development versions are not used on Linux, only the latest development versions tend to get used
- Wine 1.6 is mainly only used on Linux still (this is very likely due to the fact that Ubuntu 16.04 LTS still shipped Wine 1.6 by default)
libopenmpt compiler support vs. compiler release date:
msvc gcc clang
2005 2005 4.0.0
+-------+
2006 | 4.1.0 |
| |
2007 | 4.2.0 |
+------+ |
2008 2008 4.3.0 |
|
2009 4.4.0 |
|
2010 2010 4.5.0 | 2.8
| +----+- libopenmpt 0.2
2011 4.6.0 | 2.9+3.0
+----+
2012 2012 4.7.0 3.1-3.2
+-------+
2013 2013 | 4.8.0 | 3.3
| +---------+- libopenmpt 0.3
2014 | 4.9.0 3.4-3.5
+------+
2015 2015 5.1 3.6-3.7
2016 6.1 3.8-3.9
2017 2017 7.1 4.0