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:
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
Post a Comment