D-RATS from Python2 to Python3

What is D-RATS?

D-rats is a multi-protocol GUI communications package for Ham Radio.

While d-rats was inspired by D-Star, pretty much nothing in D-Rats requires D-Star.
D=Rats knows how to convert D-Star icon codes to APRS icon codes.

D-Rats will work over any radio link that can transfer 8 bit data over a serial port, and also over the Internet when a connection is available.

D=Rats has connections for Serial, APRS, TNCs, and WinLink.

https://github.com/ham-radio-software/D-Rats

D-Rats on Python2:


Developed on Linux for Linux by Dan Smith.

Ported and packaged for Microsoft Windows by one or more users of D-rats.

Running on Linux:  Only possible on older Linux systems that are very out of date.

Running on Windows: Older version is installed as a single file so still works.   It is unknown if there are any exploitable security vulnerabilities that may have been fixed on other platforms.

Maintenance on Windows: No longer practical, all dependent components are deprecated.

Known bugs:

  • Systems with Big Endian, such as Solaris, and older Mac-OS can not exchange files with Little Endian systems such as Linux and Windows.
  • Randomly will drop characters and packets over the radio links due to bug in XON/XOFF handling.
  • On Windows platforms infinite loops seen on some ratflector disconnects.

D-Rats on Python3:

Ported on Linux by John Malmberg.

Challenges for updating for Linux / Mac OS.

  • Python2 no longer available on current Linux platforms but available on older systems so initially could run the python 2 version for testing interoperability.
  • Routine upgrades to the Linux development environment removed the ability to run the Python2 version after the port was mostly complete.
  • Python programming standards and practices have changed.
  • Python3 not 100% backwards compatible with Python2
  • GTK2 deprecated in favor of GTK 3, GTK 3 not backward compatible.
  • GTK reorganized their site, almost all links from Stack Overflow and other forums are broken.
  • Lots of GTK3 methods in tutorials deprecated in favor of ones that are not well documented.
  • The libxml library deprecated.   Need to move to the lxml library.   Anything using XML needs a compete rewrite.  This is used in several important parts of D-Rats.
  • Some GTK3 routines do not work on some platforms and need workarounds.
  • All graphics drawing routines need a complete rewrite, again with minimal documentation.
  • Pretty much no documentation for how the program works internally.

Challenges for updating for Windows:

  • Prebuilt Python is a minimal implementation.
  • Additional needed packages need to be installed from PyPi repository.
  • PyPi repository does not provide signed packages for verification.
  • Packages installed from PyPi generally requires Visual Studio or equivalent code development package installed.
  • No GTK3 prebuilt packages found for Microsoft Windows.
  • PyPi can not build GTK3 with Visual Studio.
  • During the port Microsoft dropped all support for versions older than Windows 10, and the upstream libraries used by Msys2 also made changes that prevent using D-Rats on Msys2 on systems older than Windows 10.

Windows need to use Linux emulation layer.

  • Windows Subsystem for Linux - No serial / USB support in mainstream.
  • Cygwin, install a bit complicated to script.
  • Msys2 seems to be most common, but again complicated to script.
    • Users did not like separate step of installing and setting up Msys2.
    • Msys2 does not provide guidance for packaging a pre-setup Msys2.
    • Not practical for D-Rats maintainers to maintain a pre-setup Msys2 as must track all security updates and release new package every time a security fix for a component is found.
  • MobaXterm contains imbedded Cygwin environment with a scriptable installer and has a totally free version.

General Challenges:

  • Testing.   A lot of local testing, but nothing beats field testing by community volunteers.  https://github.com/orgs/ham-radio-software/teams/contributers.
  • Documentation.   Documentation is always lagging behind what is needed.  https://github.com/ham-radio-software/D-Rats/wiki
  • Separate package for lzhuf compression needed for Winlink
    https://github.com/ham-radio-software/lzhuf

Comments

Popular posts from this blog

OpenVMS 9.2-2 Community Edition setup on KVM on Fedora/41

OpenVMS 9.2-3 Community Edition setup on KVM on Fedora/41