For those wondering why the Solus team is excited about the prospect of adopting modern tools provided by the Serpent OS project instead of the old Python stuff, here's an example:
Just now @sheepman4267 ran into an issue creating a new package. This is usually handled by a simple command, which downloads the tarball (or other source) and scans it for some basic structure which is then automatically added to the initial package recipe. One of the things scanned for is whether it looks "gnomey" (actual term in the code), that is, like a typical GNOME project. It does this by detecting whether it makes use of g-ir-scanner.
So far, so good and sensible.
The problem is that it does this by taking every file with "configure" in its name up to three layers deep in the directory structure, and scanning it line by line for the text "g-ir-scanner" and "g_ir_scanner". Now, while files called "configure" might often be part of the build system they can also be, say, image files (or anything at all really). This is exactly how it was in this case.
So the script tried to look for the text "g-ir-scanner" in this:
(yes, literally in this image)
Needless to say this didn't turn out well.
Checking /home/sheepman/Solus/packages/packages/q/qlcpluus/TEMP/qlcplus-QLC-_4.13.1/resources/icons/svg/configure.svg for use of g-ir-scanner
Checking /home/sheepman/Solus/packages/packages/q/qlcpluus/TEMP/qlcplus-QLC-_4.13.1/resources/icons/png/configure.png for use of g-ir-scanner
Traceback (most recent call last):
File "/home/sheepman/Solus/packages/common/Scripts/yauto.py", line 405, in <module>
p.examine_source()
File "/home/sheepman/Solus/packages/common/Scripts/yauto.py", line 148, in examine_source
if self.check_is_gnomey(f_path):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/sheepman/Solus/packages/common/Scripts/yauto.py", line 389, in check_is_gnomey
lines = makefile.read()
^^^^^^^^^^^^^^^
File "<frozen codecs>", line 322, in decode
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x89 in position 0: invalid start byte
task: Failed to run task "new": exit status 1
To the credit of the older Python 2-based tooling it would've just silently converted the image into nonsense, which would've then been searched for the text and delivered a negative result. The newer Python 3 version is a bit more strict (boo!)
On the other hand the Python 2 tools also happily converted file names that used characters not in the limited latin-1 character set into straight-up garbage. For example this certificate file using Hungarian characters:
From: NetLock_Arany_(Class_Gold)_FÅ‘tanúsÃtvány.pem
Into: NetLock_Arany_(Class_Gold)_FőtanúsÃÂtvány.pem
So yeah, people are quite excited for the non-Python Serpent OS stuff that has been built with correctness (and lessons from Solus' experiences) in mind.