Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dropped support for OpenSSL 1.1, MariaDB and Pre MySQL 8.4 LTS versions #29960

Open
wants to merge 5 commits into
base: master
Choose a base branch
from

Conversation

Ovahlord
Copy link
Contributor

@Ovahlord Ovahlord commented May 5, 2024

Controversal changes, might not get approved, however, someone may eventually resurrect the PR if it shouldn't get merged. At least I tried :)

Changes proposed:

  • The time for MySQL 5.7 has come to an end with MySQL 8.4 being the first long term support version of MySQL 8. This marks the point where we will start using MySQL 8 as default version since this is the version that has gotten rid of many functions that have been marked as deprecated for quite some time.

  • Since MariaDB is still using MySQL 5.7 functions, it is no longer compatible with MySQL 8.4. Following this update, the support for MariaDB has been removed as a result of incompatability

  • OpenSSL 3 is now default shipped alongside MySQL 8 and is also now the required version for users to install for consistency reasons. The backwards compatability has been removed from the core. This means that OpenSSL 1.1 has been put to rest and can no longer be used.

Tests performed:

  • built, tested, no regressions

Known issues and TODO list: (add/remove lines as needed)

  • validate if MySQLWorkaround.h is still needed or if it can be safely removed
  • tank the shitstorm of angry MariaDB and old MySQL DB users
  • Maybe keep support for older MySQL 8 versions though there is no reason to do so as not even Oracle cares about them anymore and is now focusing on 8.4 as first maintained version
  • depending on if there will be something like 8.4.1 we may add some wildcard support for subversions

MySQL 8.4 is the first long term support version of MySQL 8 which means this this version will be maintained and updated for a longer period of time which means there is no point for us to keep the older versions around as this version is gonna be the go-to standard for the time being.
OpenSSL 1.1 has been deprecated for quite some time now so it is time to put it to rest. Please upgrade to OpenSSL 3.x
…sql_stmt_bind_named_param

* MySQL 8.4 has removed the deprecated function and consequently we are no longer using it. This removes support for MariaDB since it uses MySQL 5.7 functions which partially no longer available for MySQL 8.4
… to 8.4 and removed remaining traces of the deprecated MariaDB support layer
@acidmanifesto
Copy link
Contributor

acidmanifesto commented May 5, 2024

Just some fyi. Openssl 1.1.x is no longer provided currently due to security exploits and has been dropped by infavor for openssl 3.x.x
The link to the openssl dependiences on the tc wiki only provides openssl 3.x.x.
As for mysql, there are alot of wide changes that will make future queries backwards not compatible with earlier versions of mysql, we already seen some queries not being compatible withing 5.6 and 5.7 variation.
Mariadb should be dropped full due to the incompatibility that is growing between the two sql giants.
I for one favor the idea of this pr and hope it will move forward.

@CraftedRO
Copy link
Contributor

just logged in to wish this will not be merged to 3.3.5 at least, you had your preservation thing compatible with mysql 5.1 till almost died (has been archived) I don't see the concern about this in TC.

@danielsreichenbach
Copy link

Not an active contributor, just a user. Would like to suggest to treat any external dependency just like compiler support.

Minimum version should be the versions available in the supported Linux distributions without having to add external repositories.

Effectively that means MariaDB 10.6 or newer, and for Windows one might support MySQL. I don't really know what's the issue with MariaDB but I do know that any stable non Windows system by default does not support MySQL but MariaDB. So if supporting Linux for the project is a primary object, so should being able to use MariaDB.

I do agree with dropping OpenSSL < 3.0 though since that's basically gone from any Linux distro that is considered stable.

Generally I get the sentiment of "just add external repository and get the new stuff" but it's in reality for Linux systems a huge source of frustration and problems since external repositories tend to get fucked up or dropped or ship broken packages.

So I would advise against "use the newest, cool stuff" and suggest a pragmatic approach: use what's is considered stable on the platform, and supported by default. Anything else is bad practice IMHO.

@Ovahlord
Copy link
Contributor Author

Ovahlord commented May 6, 2024

Not an active contributor, just a user. Would like to suggest to treat any external dependency just like compiler support.

Minimum version should be the versions available in the supported Linux distributions without having to add external repositories.

Effectively that means MariaDB 10.6 or newer, and for Windows one might support MySQL. I don't really know what's the issue with MariaDB but I do know that any stable non Windows system by default does not support MySQL but MariaDB. So if supporting Linux for the project is a primary object, so should being able to use MariaDB.

I do agree with dropping OpenSSL < 3.0 though since that's basically gone from any Linux distro that is considered stable.

Generally I get the sentiment of "just add external repository and get the new stuff" but it's in reality for Linux systems a huge source of frustration and problems since external repositories tend to get fucked up or dropped or ship broken packages.

So I would advise against "use the newest, cool stuff" and suggest a pragmatic approach: use what's is considered stable on the platform, and supported by default. Anything else is bad practice IMHO.

As MariaDB is likely never going to adapt the MySQL 8 functions and is gonna stick with 5.7, which is pretty much deprecated at this point, the end of support is inevitable. TrinityCore uses MySQL, not MariaDB. The sparse support for MariaDB was a result of it being close enough to MySQL. This has changed. MySQL 8.4 and going forward is going to deprecate and remove more and more 5.7 functionality which will lead to incompatability. In a sense, it already is to some degree.

@danielsreichenbach
Copy link

Then I would suggest to consider something like Postgres instead unless you want to make it super painful for Linux folks out there. Highly doubt MySQL will return to Linux distros.

@Fabi
Copy link
Contributor

Fabi commented May 6, 2024

Finally.
Openssl 1 is eol, mysql 5.7 is eol and mariadb was never supported. So updating those to it's latest parts and dropping support for the others should have been done a long time ago.

And for linux users it is VERY common to use other repos, especially official repos for specific versions. People who say otherwise are stuck in their bubble of never using up2date software and only what an OS provides (basically very bad company like thoughts).

So basically everything that goes eol should be updated as requirement before it's eol and that is due a long time now. Do it faster :D

Update: Also be sure to also update newer versions in future. not only LTS versions

@Ovahlord
Copy link
Contributor Author

Ovahlord commented May 6, 2024

Finally. Openssl 1 is eol, mysql 5.7 is eol and mariadb was never supported. So updating those to it's latest parts and dropping support for the others should have been done a long time ago.

And for linux users it is VERY common to use other repos, especially official repos for specific versions. People who say otherwise are stuck in their bubble of never using up2date software and only what an OS provides (basically very bad company like thoughts).

So basically everything that goes eol should be updated as requirement before it's eol and that is due a long time now. Do it faster :D

Well, there is one particular thing for master at least and that's the legacy openssl provider. Master is currently forced to load it because of the outdated warden implementation which uses RC4 stuff, that has long been deprecated. And as long as we don't know what the new warden uses, we can't replace it. On top of one certain individual wanting to reduce differences between branches (bc 335 uses RC4 everywhere) so Arc4 is kinda stuck to stay

@jackpoz
Copy link
Member

jackpoz commented May 7, 2024

Then I would suggest to consider something like Postgres instead unless you want to make it super painful for Linux folks out there. Highly doubt MySQL will return to Linux distros.

https://trinitycore.info/install/requirements/linux our wiki already includes steps on how to install MySQL and we support only setups that follow our wiki instructions.

You are free to use a different DBMS and maintain any code change required by that DBMS. If you guarantee you will take care of the support, we might even accept that as a PR, but you will have to verify not just that it compiles but that any MySQL feature is supported and behaves in the same way.

Please note that MariaDB developers say that MariaDB is not 100% compatible with MySQL at https://mariadb.com/kb/en/mariadb-vs-mysql-compatibility/#incompatibilities-between-currently-maintained-mariadb-versions-and-mysql , ask them to provide 100% compatibility and we will then support both.

@Krutok
Copy link

Krutok commented Jun 12, 2024

Then I would suggest to consider something like Postgres instead unless you want to make it super painful for Linux folks out there. Highly doubt MySQL will return to Linux distros.

Yes, that will piss off a lot of Linux users. It would be the same as if I developed a game and said that only Nvidia graphics cards are supported, so if you want to play my game, buy one.

@jackpoz
Copy link
Member

jackpoz commented Jun 13, 2024

Considering the news about private equities being in the process of buying MariaDB https://www.theregister.com/2024/05/21/private_equity_offer_for_mariadb/ , linux users will be pissed anyway.

MySQL is not a paid product, so your example doesn't really fit. We also don't support a lot of other DBMS, like PostgreSQL, SQL Server, CosmosDB, MongoDB, JackpozDB (sad it's not supported :( ) . We cannot support every fork that MySQL has in addition to MySQL itself, we will support MariaDB when and if we will decide to switch to that, test TC, migrate all users (which will piss off the other half that is fine with MySQL).

On the other end, all the people who like MariaDB could step up and volunteer to test all the sql queries used by TC, verify that they are compatible with each new MariaDB release and fix any incompatibility without TC devs having to do that. We don't have the time to do that.

@Krutok
Copy link

Krutok commented Jun 13, 2024

Just because a few shares are bought doesn't mean that MariaDB won't be developed further. Microsoft also wants to buy Blizzard or has sealed the purchase.

On January 18, 2022, Microsoft announced its intention to take over Activision Blizzard for $68.7 billion. The purchase was finally sealed on October 13, 2023. It is the largest takeover in the history of video games.

And will anything change for the players? No, not much, there will still be add-ons and other things, and it will be the same with MariaDB. Whether someone buys any shares or sells MariaDB is of no interest to any normal mortal user as long as it continues to be developed.

Every VPS hoster or smaller hoster installs MariaDB because it is considered standard and since Debian 9 https://mariadb.com/resources/blog/mariadb-server-default-in-debian-9/ MariaDB is considered standard and not your MySQL. And no one who runs an active web server with full users will install a second MySQL server because of an application or even migrate to MySQL 8 - no one will do that.

Furthermore, I use VPS with Plesk, for example, and it comes pre-installed with MariaDB, and switching from MariaDB to MySQL is very risky: https://talk.plesk.com/threads/switch-from-mysql-to-mariadb.364111/ and installing another MySQL server is also out of the question.

@Ovahlord
Copy link
Contributor Author

Only because it's a default shipped software doesn't mean we need to use it. Trinity explicitetly uses MySQL and says so in the install instructions. That's - again - user laziness because fun fact: windows does not ship any database solution at all, and you know what? Nobody is complaining about having to install it in the first place. Linux default installations are not a reference point. MariaDB solely exists on Linux because it's open source. That's it.

@Krutok
Copy link

Krutok commented Jun 13, 2024

Only because it's a default shipped software doesn't mean we need to use it. Trinity explicitetly uses MySQL and says so in the install instructions. That's - again - user laziness because fun fact: windows does not ship any database solution at all, and you know what? Nobody is complaining about having to install it in the first place. Linux default installations are not a reference point. MariaDB solely exists on Linux because it's open source. That's it.

@Ovahlord

It is the developers' laziness to support both versions, because every application supports both variants. TC is too lazy to use both versions. The shitstorm will come and a patch will come that will simply reinsert the mariadb queries as they are made here and everything will work as before.

You can see which files have been changed, then these are undone by the few files here and it will work again.

And the fact that MariaDB only exists under Linux is a lie. This just goes to show that you have no idea

https://mariadb.com/kb/en/installing-mariadb-msi-packages-on-windows/
https://www.mariadbtutorial.com/getting-started/install-mariadb/
https://repo.relution.io/docs/5.7/relution-installguide/native_installation/WindowsServer_MariaDB.html

Download MariaDB for Windows:
https://mariadb.org/download/?t=mariadb&p=mariadb&r=11.4.2&os=windows&cpu=x86_64&pkg=msi&mirror=agdsn

Google searches for a minute, so don't talk nonsense like it's only available on Linux.

@Jinnaix
Copy link
Contributor

Jinnaix commented Jun 13, 2024

Update your reading skills please, not a single word from ovahlord tells that mariadb is ONLY AVAILABLE ON LINUX.

@Krutok
Copy link

Krutok commented Jun 13, 2024

@Jinnaix

Update your reading skills please, not a single word from ovahlord tells that mariadb is ONLY AVAILABLE ON LINUX.

Since you can read German....

MariaDB solely exists on Linux because it's open source. That's it.
Translated to German: MariaDB existiert ausschließlich auf Linux, weil es Open Source ist. Das war's. 

Und ausschließlich heißt sowie wie only.

Now activate your reading skills and learn that exclusively and only the same thing is just written differently.

@Jinnaix
Copy link
Contributor

Jinnaix commented Jun 13, 2024

Use another translator then, since that's absolutely not the meaning of that sentence in that context.

@Krutok
Copy link

Krutok commented Jun 13, 2024

Use another translator then, since that's absolutely not the meaning of that sentence in that context.

@Jinnaix
I don't need a translator, this is a 1:1 translation from me. And here is a translator who also translates it 1:1.

https://www.deepl.com/de/translator
Screenshot 2024-06-13 111101

And even my friend who is from England and speaks German translates it the same way, so don't give me any nonsense about it being translated incorrectly. The fact is that people are just too lazy to support both versions.

@Jinnaix
Copy link
Contributor

Jinnaix commented Jun 13, 2024

Why do you have to be this stubborn all the time?
Where does it say that it only exists for Linux? The reason why Linux is using mariadb in favor over everything else is because mariadb is open source. So it compliments the general basic of Linux. That doesn't mean it's good software.
If you care so much about mariadb, maintain its compability for TrinityCore then for the upcoming years.

@Krutok
Copy link

Krutok commented Jun 13, 2024

Why do you have to be this stubborn all the time?
Where does it say that it only exists for Linux? The reason why Linux is using mariadb in favor over everything else is because mariadb is open source. So it compliments the general basic of Linux. That doesn't mean it's good software.
If you care so much about mariadb, maintain its compability for TrinityCore then for the upcoming years.

I'm supposed to be stubborn?

I don't think so, but the developers who cling to something for which there is no reason and which is only done out of convenience.

You piss off hundreds, maybe even thousands of users, because you want to get your way and I call that stubbornness. The software works flawlessly on all applications and is even better in terms of performance.

The fact is that MariaDB runs just as well on Windows as it does on Linux, but you're stubborn and have rose-tinted glasses on and want to get your way. And there's a reason why Debian switched to MariaDB off-target.

@Jinnaix
Copy link
Contributor

Jinnaix commented Jun 13, 2024

convenience is a valid and fair reason to come to a decision in an open source project.
convenience is also the only valid argument you have against using MySQL since it's not pleasant for you to install MySQL on Linux.
Truth is - manpower is a limiting factor. So the maintainers decide what dependencies and external software get used and supported.

TrinityCore can't satisfy every user and his personal preferences.
TrinityCore supports and requires a certain software state.
That does not mean that it does not or will not work with other software. But as in any open source project, it's up to the potential user to take a step away from the official supported way and try and test for themselves.

I personally don't give a duck about Linux at all. And a very big portion of the people who uses Linux for TrinityCore don't do it because of "performance" but because of money. Since using windows comes with additional license cost when you rent a server.

@Krutok
Copy link

Krutok commented Jun 13, 2024

convenience is also the only valid argument you have against using MySQL since it's not pleasant for you to install MySQL on Linux.

Wrong, I have been using Linux exclusively for servers for years because it simply runs more stable.

At the time, Suse Linux and later Debian. I recently got my mini PC out of the moth box and deleted Windows from it and set up a Debian system which I use 90% as a data repository and backup server and also to run various programs there which I can then use on the network side, e.g. on my other mini PC or my laptop. I also installed a wow server with TC there alongside openmediavault and of course MariaDB and that's how I synchronize the databases and files between my VPS and my local server, because the response time locally is faster than always shoveling large files over the internet.

So now I can develop locally and then synchronize it with my VPS once. And if the provider's internet goes down, which can happen, I can still continue to develop my project.

I could have installed MySQL 8 locally, but I didn't because MariaDB offers me the same convenience and is even better in some ways.

@jackpoz
Copy link
Member

jackpoz commented Jun 13, 2024

Just because a few shares are bought doesn't mean that MariaDB won't be developed further.

The whole reason MariaDB project started was because MySQL was bought by Oracle: https://web.archive.org/web/20130331001143/https://www2.computerworld.com.au/article/457551/dead_database_walking_mysql_creator_why_future_belongs_mariadb/

The day the Sun purchase was announced, Widenius responded in the tried and true open source fashion — he forked MySQL, launching MariaDB, and took a swathe of MySQL developers with him.
"Many of the original MySQL core developers, including me, didn't believe that Oracle would be a good owner of MySQL and we wanted to ensure that the MySQL code base would be free forever," Widenius explains.

It's also not "a few shares", it's a takeover. It's in the first sentence of the article I sent

MariaDB shareholders have backed a private equity takeover offer for the troubled database vendor.

So I expect JesusDB project to start as a child of MariaDB as soon as the private equity company finalizes buying MariaDB. Then all linux distros will switch to JesusDB and we will have to support 3 databases.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

8 participants