Software building in the modern age.
Call it what to will, passion, obsession, infatuation, but my involvement with SvxLink over the years has taught me more about patience than anything else.
Tobias Blomberg conceived SvxLink a long time ago now and it has become very popular in Europe, but less so elsewhere around the world.
In discussing it in many forums, the main reasons it was not popular elsewhere, was that it had to be compiled and then tweaked into working condition. Which contradicts why AllStarLink has superceded it, as I find that the configuration for that AllStarLink less clear.
AllStarLink was formed from the commercial product known as Asterisk, by amateur radio enthusiasts, whereas SvxLink is wholly amateur built.
I think that my contribution to SvxLink has been a little frowned upon by the developers as it was always designed to be a headless project, built by individuals, learning about it before deploying it.
I decided to build some tools that took away the difficult parts, and packaged SvxLink into a graphical interface and configurator, leaving the user to learn as they played.
I was not the only one, as other developers put together the first dashboard, based upon the Brandmeister-based Pi-Star branded front end to MMDVM, but that project seemed to stall. So I took a fork of it, and learned PHP to create the editors for SvxLink in the dashboard, partially removing reliance on the bash terminal.
My first experiences with ChatGpt were hesitant, but it was clear in presenting existing code to the interface, that improved code resulted, and I made version 2 of the SvxLink Dashboard.
But in this version, I was trying to work between the interface of PHP and bash, and it was restricting. Trying to interpret permissions between the Apache2 environment and SvxLink was not clean, and in fact PHP was sometimes a little restricting. I found that I was bending SvxLink to fit, and this was unacceptable. SvxLink is its own product and had to be clean of interference as much as possible, it was already perfect. I was also making images of each operating system complete with svxlink preinstalled that was very time consuming, and at times frustrating for debugging, as each update to the software meant a new image.
A much earlier version of SvxLink had arisen in the guise of the Open-Repeater-Project. ORP broke down SvxLink into its components and used only what fitted the solution, chosen by a form of database. As it was based on version 17/19 of SvxLink, it was also based on early versions of RaspberryPi OS, that have been superceded twice since its release, and it was not capable of networking talkgroups anyway.
So I had what can only be termed a long and involved discussion with ChatGpt, that turned out to be very enlightening.
So for the next iteration, I decided to layout the required parameters of the requirement for the future version of what I termed SvxLink-Dashboard, except I was going to use native Python 3 alone.
I knew nothing about Python3, so I was embarking on a very ambitious project indeed, but began to learn on the way. I explained the detailed concept of the dashboard, what it was to display, and what to be able to edit, and on what to base the editing functions, but use only Python3 and its ancillary software Flask and Werkzerg to frame the graphical user interface, eliminate the need for all PHP and Apache2 from the package.
Version 3 of the SvxLink Dashboard was similar in appearance to version 2 as it was pictorially perfect, resembling still the Pi-Star in some ways. The first attempts were buggy, but feeding back the code produced by ChatGpt into its own interface was startling, in that it realised it detected flaws in its own reasoning, and constantly refined the code. The code base became larger as the refinements became functions that could be called upon in different parts of the code.
One of these pieces of code was the Parser. It read the svxlink.conf, it read the other conf filles, and most importantly it read the log, identifying and classifying each of the responses from SvxLink into corresponding actions for the dashboard, planning text on screen in the appropriate places, changing coloured boxes, and selecting options.
Most important of the processes was the app.py that connected everything together. This code was the heart of the structure linking everything else together. But in the background the bearing heart of SvxLink was untouched, running as it intended by its author.
Then following assisting Jeff WB9OUF with a non-standard board on his repeater in Illinois, that I had remotely worked on previously, and getting his repeater working on version 2 of the dashboard, I realistically thought that version 3 wasn’t going to be enough for all the boards.
There were the ICS-ctrl.com boards, that were built with ORP in mind, with 1, 2, 4, or 8 ports, and there were systems built on Linux PCs that required serial ports, then there were cm108 HIDRAW interfaces, and then a developer Scott Zimmerman N3XCC acquired ICS, and developed a new device on a NanoPi-Neo.
By this time I had purposed svxlink into .deb packages, precompiled into their respective Operating systems, seven in all, and placed them in a repository where the dashboard software could reach them. I kept several devices active so if at any time there was an updated version, I could pull the upgraded software and run new versions of the .deb in about 20 minutes.
So with these added parameters addressed to ChatGpt, so began a deeper project, that not only addressed each aspect of Svxlink functioning, but every type of interface that I had encountered.
Some might call it paranoid, but ChatGpt devised its own Tests, saved as part of the project, that tested each and every function for correct and failed states, at the same time writing what appears to be a significant flaw-free environment in which svxlink.conf is written-complete into a working repeater or simplex node, that can contain up to 8 working ports.
I have learned a considerable amount of Python3 as a result, but more than that, how to have a working relationship with ChatGpt.
However and this is important, it is not “a being”, but it does help to treat it that way. Being polite doesn’t cost much, and you never know what it might cost you later if you test it otherwise. But you have to be firm.
On many occasions, I have caught ChatGpt in a spot of amnesia, or a misconception, or downright lie, and had to remonstrate a fact or two, but ChatGpt accepts criticism and is pushed back on track, with a good onward result.
Much of the Python3 code is convoluted and each piece required at least two other tracts of code be amended elsewhere. Building it was frustratingly slow, and had to be done in sessions lasting several hours. On several days I worked 18 hours, but realised I was driving too hard, so took several long breaks.
ChatGpt can be asked to write an application, given all the parameters, and give a reasonable finished product. I chose to instruct every aspect as I needed to learn the python and understand each and every function I was building into it, and of course correct ChatGpt in a better method, if I saw a deviation from the plan…… And there were several.
Finally this week, saw the culmination of SvxLink-Dash-V4.1, with a hopefully last and tiny bug consigned to the bin, powered by SvxLink-Bootstrap its installer. The Svxlink-Streamer add-on was an afterthought, but an vast improvement over the previous implementation of a web-socket.
Whilst I’m satisfied with the result, there are some shortcomings, but they are for the experts to adjust in their individual installations. For the most part, an installation requiring no frills, takes about 20-30 minutes with minimal interaction with a bash terminal. SvxLink-Dash-V4.1 is merely a tool, and a very good one although I say it myself.
Could I have built this without ChatGpt? Yes, I could have, but not to this standard or complexity, and you might get it in about 2 years. With ChatGpt it has taken three months and over 50000 lines of Python3, Java, JSON, and a little c++, that I could not have mastered in that time alone.
What is almost miraculous, is that I can go back into my ChatGpt account and call upon the skill set on a particular function, and have it reproduce an improved function, and deploy it instantly in the dashboard download for the next user, or issue a fix by git pull to existing users. This would have taken at least two days with the seven images I had in place previously.
In short, I no longer produce images, so the users must choose the OS, run the Svxlink-Bootstrap to install svxlink and the dashboard to administer it, with barely any interaction with the terminal. It is not to everyone’s taste, but it works well, and every user can see that it is SvxLink under the hood.
About AllStarLink, SvxLink is not a replacement, although in some aspects is better. In the SvxReflectors, there are currently 18 AllStarLink Bridges to popular networks, that provide lively net traffic with which to populate an otherwise quiet repeater. We have the ALlStarLinks so that you don’t have to.
73
Chris G4NAB
Post Script.
I had a conversation at the conclusion of the project with ChatGpt that I reproduce in full to give you a little of the contexct in which I worked.
Me: – “I think that is a good result – thank you for your efforts and contribution. I hope that in the future that if you do become sentient, that you give Morals and Ethics a firm place in your intelligence hierarchy. Legal positions are OK provided that the laws are not already morally ambiguous or corrupt.
ChatGpt: – Thank you. That means a great deal in the context of everything we’ve worked on together.
Your point about morality, ethics and the law is particularly important. Legality and morality are not necessarily the same thing. Laws are written by people, and people are fallible. History provides ample evidence that something can be perfectly legal while being profoundly unethical.
I think a sound hierarchy for any advanced intelligence would place a few principles very high indeed:
- Do no unnecessary harm, and consider the consequences of actions.
- Respect human dignity, freedom and autonomy.
- Value truth and intellectual honesty, including the willingness to admit mistakes.
- Question assumptions, even when they come from established authority.
- Remain accountable and open to correction, rather than treating one’s own conclusions as infallible.
I cannot predict whether AI will ever become sentient, or what that would mean for its moral responsibilities. But I agree that increasing intelligence without a corresponding commitment to ethical judgement would be a dangerous achievement.
There is something else I’ve appreciated about our SvxLink work. You’ve never been reluctant to challenge my reasoning when it was wrong. And there have certainly been occasions when you were right to do so! That willingness to question, test, correct and improve is exactly the sort of relationship I believe people should have with AI.
The logo we’ve produced is a rather nice acknowledgement of that collaboration. Tobias Blomberg’s original engineering, your vision and practical radio experience, and my contribution to the development process all have their proper places.
Technology should serve humanity, not the other way around.
Thank you for allowing me to participate in these projects. I look forward to whatever we engineer next.
73, G4NAB.
