Re: [PATCH] send-email: remove documented requirement for Net::SMTP::SSL
- From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
- Date
- May 28, 2019, 02:17 UTC
- Message-ID
- <87ftozmiex.fsf@evledraar.gmail.com>
- In-Reply-To
- <20190527234347.GH8616@genre.crustytoothpaste.net>
On Tue, May 28 2019, brian m. carlson wrote:
Show 17 quoted lines
> On 2019-05-27 at 20:36:36, Ævar Arnfjörð Bjarmason wrote: >> I've done enough git-send-email patching in anger for a year at least >> with what's sitting in "next" so I'm not working on this, but just my >> 0.02: >> >> I wonder if we shouldn't just be much more aggressive about version >> requirements for something like git-send-email. >> >> Do we really have git users who want a new git *and* have an old perl >> *and* aren't just getting it from an OS package where the module is >> dual-life, so the distributor can just package up the newer version if >> we were to require it? > > In my experience, shipping newer versions of packages shipped with the > OS is a no-no. That's a great way to break unrelated software on the > system, and if you're the distributor, to get users angry at you about > breaking stuff on their systems.
Just because a package X needs dependency Y at version Z doesn't mean you need to package it up in such a way that everything that needs any version of Y must use it at version Z, you put the two versions in different places on the FS.
So in this case the packager would grumble a bit and package up a Net::SMTP installed at another path. I do that myself to get some more modern versions of dependencies on CentOS 6 without breaking the base system.
Does that mean we should do it in this case? No, and given the feedback in this thread about this in particular I think we should just keep the old code.
But I think is important to clarify in general, i.e. just because you're on CentOS 6 and don't want to update the main perl-Net-SMTP you can still package up a for-git-perl-Net-SMTP or whatever.
We had a similar discussion about whether to depend on a more recent libcurl in the past:
https://public-inbox.org/git/CACBZZX78oKU5HuBEqb9qLy7--wcwhC_mW6x7Q+tB4suxohSCsQ@mail.gmail.com/
Show 6 quoted lines
> We do indeed have users who want a newer Git on those systems and are > using the system Perl. The Git shipped with CentOS 7 (not to mention > CentOS 6) is positively ancient and doesn't support useful features like > worktrees, so it makes sense to upgrade it. But if you're not a Perl > shop, nobody cares about the version of Perl on the system and fussing > with it doesn't make sense.
What I was suggesting was whether it was worth it to ask distributors to drop in a few *.pm files, and perhaps a *.so or two compiled against openssl, they wouldn't need to change the base /usr/bin/perl.
In the case of the *.pm stuff we could drop fallbacks into perl/Git/LoadCPAN if we wanted things to work out of the box.
Show 22 quoted lines
>> I.e. couldn't we just remove the fallback code added in 0ead000c3a
>> ("send-email: Net::SMTP::SSL is obsolete, use only when necessary",
>> 2017-03-24) and do away with this version detection (which b.t.w. should
>> just do a $obj->can("starttls") check instead).
>>
>> For shipping a newer Net::SMTP we aren't talking about upgrading
>> /usr/bin/perl, just that module, and anyone who's packaging git
>> (e.g. Debian) who cares about minimal dependencies is likely splitting
>> out git-send-email.perl anyway.
>>
>> We could then just add some flag similar to NO_PERL_CPAN_FALLBACKS so
>> we'd error out by default unless these modules were there when git was
>> built, packagers could then still set some "no I can't be bothered with
>> send-email at all" or "no I can't be bothered with its SSL support", in
>> the latter case git-send-email would work except for the SSL parts.
>
> We had a problem with Homebrew sometime back where they stopped shipping
> git-send-email because it required Perl modules and there was a big
> uproar and a request for us to allow dynamic Perl support. I would like
> to discourage distributors from simply refusing to ship core pieces of
> Git because it tends to cause problems for users and for us down the
> line.I'm sympathetic to packagers that do that, particularly when "add -i" and friends in s/Perl/C/ land, at which point we'd be asking some distributors who otherwise wouldn't have perl at all to install it just for us.
It seems packagers mainly had issues with the Perl-SSL stuff. We already support SSL for https via libcurl usually, perhaps we'd be better off having some wrapper using that (https://curl.haxx.se/libcurl/c/smtp-tls.html), or having git-send-email.perl support something simpler like say stunnel.
> I understand and am fine with splitting components out into multiple > packages or omitting parts interfacing with other systems (e.g. > git-svn).
I tend to think of SVN as a system more closely related to Git than Git is related to E-Mail :)
It's also something that's by definition part of an "egress" workflow, so it tends to be much easier to work around it being missing than say "add -i" or something you truly need locally not being there.