Juerd / Net-MQTT-Simple

Net::MQTT::Simple - Minimal MQTT version 3 publisher
10 stars 8 forks source link

fixes https://github.com/mrdvt92/perl-Net-MQTT-Simple-One_Shot_Loader… #23

Open mrdvt92 opened 1 year ago

mrdvt92 commented 1 year ago

This pull request should fix the issue logged on my queue https://github.com/mrdvt92/perl-Net-MQTT-Simple-One_Shot_Loader/issues/1 by https://github.com/eserte

Juerd commented 1 year ago

You're right that the requirement is missing. However, this bug is intentional, and the reason for it kinda sucks. I apologize if you disagree.

Many people will install Net::MQTT::Simple with cpan rather than a binary package manager, and depending on IO::Socket::SSL means that to install Net::MQTT::Simple, you need to have a full C build environment, which many computers don't have and some people will want to avoid on servers. And that's where I think it's not reasonable to require that, if Net::MQTT::Simple without ::SSL will work perfectly without it, and most users of the module probably use it without SSL anyway.

In my humble opinion, the nicest solution would be if IO::Socket::SSL would be included with Perl itself, just like IO::Socket::IP. (I think you maybe added that for completeness, but it's been part of Perl core for almost a decade now.) Another solution could be to separate Net::MQTT::Simple::SSL into a separate distribution, but that would break existing automated installations where people are using a package list.

So I'm not a big fan of fixing this bug, although I do acknowledge that it is a bug, because fixing it has consequences that I think could be worse than the missing metadata. I'm hoping for Perl to include IO::Socket::SSL in the nearby future. But that's not necessarily going to happen either, see https://github.com/Perl/perl5/pull/20739