-
Epic
-
Resolution: Done
-
Major
-
4.5
-
MOODLE_405_STABLE
-
MOODLE_500_STABLE
-
Drop Oracle Support
A PHP RFC which is currently under vote is expected to see pdo_oci and ext/oci8 unbundled from PHP in version 8.4.
The proposal in the above RFC is:
- to remove these extensions from the core distribution and put them into PECL (unbundle them)
- to perform an initial release in PECL
- to hand them over to their 'maintainers'
Unfortunately the only 'maintenance' that has been performed on Oracle by its current maintainer (Christoph M. Becker cmbecker69@gmx.de - https://github.com/cjbj) over the past few years is the removal of tests, removing support for Oracle 10.1, and to fix one segfault 2 years ago. Therefore I suspect that it will sit, and eventually just die when some breaking change is made to PHP and it doesn't get updated.
You can see the rationale for [this RFC suggestion here: https://wiki.php.net/rfc/unbundle_imap_pspell_oci8#extoci8_and_extpdo_oci
I think we therefore need to take a look at whether we continue to support Oracle in the future.
Now it could be that Oracle step up under pressure from their customers if and when this happens, but we have absolutely no control over this and if we don't think about how to handle this now then we may end up with our own customers who are unable to upgrade. We may also end up in a position like we were when adding support for PHP 7.0 where we could not fully declare support for a number of years due to missing extensions.
What does this mean? Options?
I feel there are a number of options available to us:
Option A
- Do nothing. The PECL library will still work. Maybe one day it breaks, but we can cross that bridge when we come to it. That's what support contracts are for, right?
I'll call this the YOLO option
Option B
- stop testing against Oracle, but not to remove the current support for it
- accept patches for Oracle, but state that we will not test them.
- warn in environment checks that Oracle is unsupported and that they are running an unrecommended configuration
- point people at Partners for help in transitioning away
- warn that the DB layer may be removed in the future unless Oracle do start to maintain the PECL library
- If the PECL library does become adequately maintained then we may consider adding it back into core. Ideally it would be nice if Oracle sponsored any efforts to this.
Option C
Similar to Option B, we:
- stop testing against Oracle, but not remove the current support for it
- warn in environment checks that Oracle is unsupported and that they are running an unrecommended configuration
- point people at Partners for help in transitioning away
- DO NOT Accept any patches for it. If someone wants to maintain it, they can do so in their own fork. Some features in core will eventually as people use incompatible SQL
Option D
Option C is the most drastic, and would be to:
- remove the Oracle libraries from core
- remove all Oracle-specific code from core
Summary
I propose that we declare that Moodle 4.5 LTS will be the last version of Moodle to offically support Oracle. After that time one of the above options will apply.
I would suggest that we:
- inform the community of this RFC and the ramifications
- state that our intent is to maintain Oracle support during the lifetime of Moodle 4.5 LTS
- state that after the release of Moodle 4.5 LTS, future versions of Moodle will not be support Oracle
- suggest that our Oracle users out there make use of their service contracts with Oracle ASAP if they want us to continue supporting Oracle
Personally I would opt for Option B, but I'm open to discussion on this.
Current maintenance
The current maintainer, who is based in Melbourne, is https://github.com/cjbj
He does make occasional commits and changes to the extension, but they are relatively few and there are a number of longer standing bugs which have not been addressed, including https://bugs.php.net/bug.php?id=49803 - raised 11 years ago. This issue is one of our biggest problems with Oracle as it massively impacts our testing and development with it. Oracle unit tests take 3-5 times longer than MySQL or Postgres, and this makes it very difficult to develop and test against Oracle. Furthermore there is no Oracle ARM support, making it harder for some developers to developer and test against it.
Why Moodle 4.5 as the last release?
Moodle 4.5 is due out in April 2024 with support until April 2027.
Moodle 5.0 is due out in October 2024 with support until April 2026.
PHP 8.4 is due out in November 2024.
So why should we drop support for Oracle in Moodle 4.5, and not Moodle 5.0? Technically Moodle 5.0 will still support PHP 8.3 as its highest PHP version, and Oracle will therefore still be a part of the distribution.
However I would suggest that it is better to make this change and to inform people of our intent to do so before an LTS release which has at least 3 years of support, rather than have some of them upgrade to Moodle 5.0 where there will only be 18 months of support (finishing 12 months before 4.5 LTS is out of support).
But I'm an Oracle user and this will impact me!!
Great! We need you to contact Oracle via your support contract and get them to engage with the PHP community, and to start maintaining the PECL library. If you don't do this, then we will have no choice but to drop support for Oracle completely. If you are not able to do this, then you should consider moving to another database - we can help you to engage a partner to assist with this and tooling already exists in Moodle core to make this transition.