-
Hello, Am wondering on the motivation for creating this new project for bindings for libssh rather than using ssh-python which covers all of the libssh API up to latest version - 0.9.5. It also provides binary wheels for manylinux, OS X and Windows (64-bit) for Python 2.7 and 3.5-3.9, as well as having automated integration tests, good test coverage and has been used in real-world applications for a few years now. This project seems to duplicate what is provided by ssh-python for only a subset of the libssh API. Was there something needed missing in ssh-python that is provided by this project? Disclaimer - author of said bindings. |
Beta Was this translation helpful? Give feedback.
Replies: 4 comments 20 replies
-
The Ansible use case required a subset of libssh client API's and with this goal, we had done a POC using the |
Beta Was this translation helpful? Give feedback.
-
Panos, those assertions reflect my assessment of https://github.com/ParallelSSH/ssh-python/ in March and October 2019 when I looked at it and tried to use it as Paramiko's replacement for Ansible use-cases, with the latest upstream libssh, as well as libssh version in Fedora. Being able to integrate both with the latest versions of libssh for upstream development, and with older versions for cross-OS testing was critical, and at that time, both the technical issues we've hit (and filed), and your explicit stance in ParallelSSH/ssh-python#5
gave the impression that iterating on the latest bits would be hard with ssh-python. That's why I recommended the Ansible team to go with new lean binding catering to Ansible's use-case over the more generic ssh-python. It's good to see that the project is back alive and stable but as Sviatoslav explained, the team had to make a decision and it now needs to go with it for foreseeable future. That does not mean that other options aren't possible in the more distant future. Especially if (at least a proof of concept of) Paramiko-compatible interface to ssh-python existed, it would make moving to it easier and not just for Ansible. Disclaimer: I'm not part of the Ansible team/effort, I was consulted on the options back in 2019 and I showed that the minimal bindings for the use-case are possible. |
Beta Was this translation helpful? Give feedback.
-
Work can start at any time and have targeted master branch of libssh in the past. It is, however, more time consuming and personally do not have the resources for it. If keeping up to date with latest libssh master is important to a vendor, that vendor will need to work on the tooling around that, eg automatically build and test with latest master and make what changes are needed to bindings so can release bindings shortly after. Bindings release should only target released versions of libssh for obvious reasons (should not release with a version of libssh that has not been released). The concern with this work is that a lot more time and resources is still required to get it ready, as I suspect will be the case. At which point cost analysis may need to be re-done. |
Beta Was this translation helpful? Give feedback.
-
I am happy it works for you, though I suspect there are still much more resources needed. |
Beta Was this translation helpful? Give feedback.
The Ansible use case required a subset of libssh client API's and with this goal, we had done a POC using the
ssh-python
library in early 2019 and had hit a couple of roadblocks for which issue/PR's were raised by @adelton can be referred here. At that time it seemed the project was not actively maintained and lacked the required traction that we were hoping for, which is the main reason why we choose to implement an opinionated and minimalistic extension library to serve the Ansible network-specific use case.