Hello everyone!

Thank you for the various comments and updates. And, of course, a
special thank you to Ondřej for his work and his PPA.

Brief intro: My name is Nish and I'm looking into the PHP options for
Canonical's Ubuntu Server team.

tl;dr (although, please read it!): Our most reasonable options for
Xenial are either *only* PHP5.6 in main or PHP7.0 in main (with no PHP
release in universe).

A couple of disclaimers up front:
  - My thoughts are not exhaustive, so I may have forgotten something. Please 
do not hesitate to ask as we go. And rbasak, ondrej and others, feel free to 
correct me as needed!
  - While these thoughts are wholly my own opinion, I have discussed them with 
rbasak and others, so they are considered.
  - No official decision has been reached. I would like to hear from community 
members on my thoughts, and have a reasonable discussion of what is best.

Our current status quo:
  - PHP5.6 is in the main component in Xenial
  - PHP7.0 is in the universe component in Xenial

To level-set, per https://help.ubuntu.com/community/Repositories/Ubuntu,
that means that PHP5.6 is "Officially supported software" while PHP7.0
is "Community maintained software, i.e. not officially supported
software".

Going forward, there "are" (some are far less realistic than others, but
included for completeness) the following options, as I see it. Note that
all options only apply to Xenial, the upcoming 16.04 LTS release.

1) Drop PHP5.6 and PHP7.0 from the Ubuntu repositories
  Pros:
    - No maintenance cost/formal support cost
  Cons:
    - No form of PHP in the official repositories
    - Potentially massive churn of repositories
    - No official upgrade path for PHP 5 users in Wily or Trusty.
    - Users who do wish to have PHP, must use a PPA (Ondřej's or otherwise).
  Conclusion: Not a viable option, end-users expect some release of PHP to be 
present (and "worst-case", continuity with the version present in 15.10/Wily.)

2) Promote PHP7.0 to main
  Pros:
    - Users are able to install either PHP5.6 or PHP7.0 in Xenial, as they see 
fit.
    - Users receive support for both PHP5.6 and PHP7.0.
    - Upgrade path is clear for the expected common cases:
      * Update to PHP5.6 during LTS upgrade (Trusty -> Xenial) [minimize 
likelihood of disruption on LTS]
      * Keep PHP5.6 during Wily -> Xenial [minimize likelihood of disruption on 
latest release]
      * Upgrade to PHP7.0 during Wily -> Xenial [provide latest version of PHP 
on latest release]
  Cons:
    - Cost of official support is significant, in terms of bugs and ensuring 
appropriate security updates occur to the "main" packages.
    - Active support for PHP5.6 upstream ends Dec. 31, 2016. Security support 
for PHP5.6 upstream ends Dec. 31, 2018. Xenial EOLs  in April 2021. So that 
implies at least several years of PHP5.6 security fixes, at least, needing to 
be maintained. [http://php.net/supported-versions.php].
    - Active support for PHP7.0 upstream ends Dec. 3, 2017. Security support 
for PHP7.0 upstream ends Dec. 3, 2018. Xenial EOLs  in April 2021. So that 
implies at least several years of PHP7.0 security fixes, at least, needing to 
be maintained. [http://php.net/supported-versions.php].
  Conclusion: Probably not tenable due to the support implications.

3) Keep PHP7.0 in universe [maintain status quo]
  Pros:
    - Minimize the maintenance cost while allowing either version to be 
installable. [only one supported release, PHP 5.6]
  Cons:
    - PHP7.0 will not be officially supported (meaning there can be some 
latency for security fixes, e.g.)
    - Not all end-users will consider the implications of main vs. universe, 
but will only see PHP7.0 available in the repositories and assume it is 
"supported"
      * Per rbasak something similar was experienced with MySQL and Trusty.
    - Active support for PHP5.6 upstream ends Dec. 31, 2016. Security support 
for PHP5.6 upstream ends Dec. 31, 2018. Xenial EOLs  in April 2021. So that 
implies at least several years of PHP5.6 security fixes, at least, needing to 
be maintained. [http://php.net/supported-versions.php].
  Conclusion: This option seems the nicest, but leads to confusion for 
end-users.

4) Drop PHP7.0 from universe
  Pros: No new maintenance cost in Xenial wrt. PHP. [only one supported 
release, PHP 5.6]
  Cons:
    - No PHP7.0 in a LTS release until 18.04.
    - Users who do wish to have PHP 7.0, must use a PPA (Ondřej's or otherwise).
    - Active support for PHP5.6 upstream ends Dec. 31, 2016. Security support 
for PHP5.6 upstream ends Dec. 31, 2018. Xenial EOLs  in April 2021. So that 
implies at least several years of PHP5.6 security fixes, at least, needing to 
be maintained. [http://php.net/supported-versions.php].
   Conclusion: Might be the safest option.

5) Drop PHP5.6 from main, promote PHP7.0 to main
  Pros:
    - Minimize long-term maintenance cost in Xenial wrt. PHP [only one 
supported release, PHP 7.0]
    - Get PHP 7.0 "early" in the a supported release.
  Cons:
    - No clear (obviously safe?) path for users upgrading from a PHP 5 base 
(Trusty or Wily) to PHP 7 base.
    - Users who do wish to have PHP 5, must use a PPA (Ondřej's or otherwise).
    - Active support for PHP7.0 upstream ends Dec. 3, 2017. Security support 
for PHP7.0 upstream ends Dec. 3, 2018. Xenial EOLs  in April 2021. So that 
implies at least several years of PHP7.0 security fixes, at least, needing to 
be maintained. [http://php.net/supported-versions.php].
  Conclusion: Most attractive in terms of adding PHP7.0, but carries highest 
risk.

A couple of extra thoughts not tied to any specific option:
  - Many users (my opinion) wait until at least the .1 release before upgrading 
the next LTS. So we might be able to provide a release note wrt. PHP to help 
with the transition for PHP7.0.
  - Ondřej's PPA obviously provides a fill amongst many of these options for 
whatever might be removed. But that puts a great onus of support on him, which 
is not ideal.
  - We need to consider the upgrade path(s), especially how we might leverage 
php-defaults to minimize the impact to end-users.

I am currently helping examine 5) above. I have run into some issues, but am 
working through them as quickly as I can:
  - In order to rebuild many packages to pull in PHP7.0 dependencies rather 
than PHP5.6 dependencies, phpunit must be bootstrapped. That has led to a maze 
of reverse build-dependencies, which is what I'm currently focused on (this is 
not blocking the decision, but is taking quite a bit of time).
    * As part of the bootstrap, I've been removing package build-dependencies 
on phpunit itself. This in turn means the updated packages have not yet run 
their own unit-tests. So it might be they all don't technically work, but that 
is a bridge I will only be able to cross once phpunit is bootstrapped.
  - I initially ran into some issues with symfony (which also is heavily used 
as a build-depends). But after disabling the debug extension 
(https://github.com/symfony/symfony/issues/17515), the current version (2.7.9) 
built successfully.
  - I'm currently tracking down a segmentation fault in the xdebug.so library 
that is causing pkgtools to fail consistently (which in turn is blocking 
further package building).
  - SWIG is not supported with PHP7.0 (yet) 
[https://github.com/swig/swig/issues/571]. The upstream maintainer has been 
kind enough to provide some guidance on how to proceed. Ideally, I (or someone 
else...) can help update upstream to support PHP7.0 (which will then trickle 
into Debian & Ubuntu). If we do not have swig support, at least the following 
packages would not be available in Xenial (or their php- or php7.0- equivalents)
    * php5-exactimage
    * php5-gdcm
    * php5-vtkgdcm
    * php5-geos
    * libgv-php5
    * php-kolab
    * php-kolabformat
    * php5-mapscript
    * php5-ming
    * libow-php5
    * libownet-php
    * php5-librdf
  - February 18, 2016 is the Xenial Feature Freeze. So we are already almost up 
against a hard deadline. The former point is critical to that (to ensure the 
update to swig can occur).
  - I am hopeful that once I get some of the "fundamental" (read: common) 
build-dependencies bootstrapped against the PHP7.0 base, I can automate the 
build-out of the remaining hundreds of packages in universe that have php5 
dependencies.
    * While I am aware that many users use PECL/PEAR directly, we have to be 
careful about breaking the repositories.

I do apologize for the lack of communication on my part to this point. I
have been really trying to get to a point where I can make a more
educated statement about the feasibility of 5) and have made a lot of
headway at this point. I will strive to keep the community more up-to-
date on my progress going forward.

-- 
You received this bug notification because you are a member of Ubuntu
Server Team, which is subscribed to php5 in Ubuntu.
https://bugs.launchpad.net/bugs/1522422

Title:
  Update to php 7.0

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/php5/+bug/1522422/+subscriptions

-- 
Ubuntu-server-bugs mailing list
Ubuntu-server-bugs@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-server-bugs

Reply via email to