Make Telnet an external library

Author: pekkaklarckCreated Apr 3, 2020Updated Sep 15, 2026
Labelspriority: highbackwards incompatible

tl;dr; summary

The Telnet library should be made an external library. Once that is done, the standard library Telnet can be removed.

Background

When Robot Framework was developed at Nokia Networks, having a library for communicating with telnet servers was very valuable when testing different network elements. Back then installing Python packages was pain (pip or even easy_install didn't exist) so it made sense to include the Telnet library as one of the Robot Framework standard libraries. Initially it didn't have any external dependencies either (Python's standard telnetlib was enough).

Current situation

Nowadays installing Python packages with pip is easy and libraries don't benefit much from being standard libraries. It is actually a problem as it means fixes need to wait for Robot Framework releases and that major changes can only occur with major Robot Framework versions which are pretty rare. External libraries can have their own release schedules.

The Telnet library now also has an optional (but very useful) dependency to the pyte module, which needs to be installed separately anyway. If the Telnet library was an external library, it could have pyte as a dependency and installing the whole thing wouldn't be any more complicated as it is now.

A major problem is that I personally don't have much knowledge about telnet in general and thus I'm not a good person to fix problems with the Telnet library or even to review pull requests. Because of that there are several open issues and PRs here related to it.

telnetlib removal

Python 3.13 removed the standard telnetlib module that Telnet uses internally. It exists as a telnetlib-313-and-up module, but that needs to be installed separately. Python 3.13+ users thus need to anyway install a dependency to get Telnet working and installing the whole library wouldn't be any more complicated.

Proposal

We should make the Telnet library an external library. In practice that means creating a new project at MarketSquare and copying related code and tests there. The name of the new library should probably be TelnetLibrary, not Telnet, to make it possible to use that and not the current standard library.

I can create the new project and release 1.0 version with the current code. I don't have much interest (or knowledge) maintaining the project after that, so we also need to start looking for interested maintainers. Comment this issue if you are one of them!

Once we have the new project in place and 1.0 version released, we can deprecate the current Telnet library and then later remove it.

Update

Telnet is deprecated in RF 7.5 (#5786) and will be removed in RF 8.0. The core team can help with creating an external TelnetLibrary project, but is not going to do further maintenance.

Source: robotframework/robotframework