On 2018-07-22 13:35, Jérémy Lal wrote:
Forwarded: https://github.com/nodejs/node/issues/21897
Yup, I've read through this as well.
I agree there is a problem. I disagree the problem is only on the
distributor side.
I also agree that the problem isn't only on the distributor side, *but*
I think it's easiest to push an effective short-term fix on the
distributor side :)
I think the "correct" solution is to encourage node upstream to not
bundle openssl symbols as part of their ABI, and to make an SSL API/ABI
available as a separate, versioned, installable package (like how
python-cryptography works). However, that sort of change is ABI-breaking
and wouldn't be feasible until at least node 12.x, assuming that
upstream devs accept this suggestion.
The bug is reported upstream (see forwarded url above).
Complaining that the distributor is not doing the right thing is a
wrong approach to the problem.
You should instead try to understand more deeply the situation and see
what other languages do about that.
I am one of the manylinux maintainers as a member of the Python
Packaging Authority, so I actually have a lot of experience with setting
standards and writing software to ensure compatible native extensions on
Linux! I have thought about this pretty deeply and can explain my
reasoning below.
TLDR; the pratical solution is to promote compilation of addons - which
is *straightforward* on debian/ubuntu/fedora and derivatives
(you just need to explain which development packages must be
installed).
This is fair suggestion, but I think that there is significantly more
lift to put this into motion. To accomplish this, I believe we'd have to
go through the following steps:
1) Convince developers (upstream or downstream) to package their native
dependencies for Debian
2) Sponsor native dep uploads to Debian
3) Convince end users to install and depend on the version in Debian
3) is going to be tough, because many folks who use Debian for
development do not necessarily target a Debian production environment.
As another alternative solution, the way we do this in the Python world
is:
1) Set a standard for the generic ABI ("manylinux"), while allowing for
the development of downstream distro ABIs if desired
2) Convince developers to adopt the standard and provide tools to make
it easy for them to build to the standard
3) Patch packaging tools (pip, for Python) to support the standard and
detect the correct ABI for target installs
Either one of these options requires much more work by downstream Debian
devs, upstream, *and* users versus just ensuring Debian's node ABI is
consistent with upstream's.
This is why I advocate keeping Debian's ABI as closely matching upstream
as possible, to reduce the overhead for Debian in maintaining a
separate, incompatible ABI, and the extra development work and user
education that will come along with that.
Ubuntu Bionic will need to patch their builddeps downstream to use the
right version of openssl, and I'm going to comment on their bug along
those lines. This is also an option for us in Debian, but given that
we want to drop openssl 1.0.2 in buster, I'd suggest we could also fix
this bug by upgrading node to 10.x, available in experimental, which
depends on openssl 1.1.0 upstream.
Agreed ! As the main nodejs maintainer the only reason it is not
already the case is because i did not have time to handle it.
I do that on free time, and it's a rare thing these days...
I totally understand, as a slammed maintainer myself. It would be great
if we could recruit more folks to help you out with this.
As long as the plan in Debian is to upgrade to Node 10.x, when 10.x gets
uploaded to unstable I'd consider this fixed. I marked this as
"important" and not "serious" to reflect that I think it's important to
get fixed by the next release but it doesn't need to be addressed
immediately :) The biggest surface area is in Ubuntu, which I am trying
to tackle with them directly.
- e