DigiRite

Here are the steps you can take to build DigiRite from the source using Microsoft’s Visual Studio on Windows 10. If you need help, your grandson or granddaughter can probably do this. They’re all supposed to learn to code these days, right?

DigiRite uses a small fraction of the original WSJT-X source code: decoding FT4/FT8, and translation to/from 77-bit messages using modified WSJT-X codes. But for everything else, DigiRite implements its own user interface, message sequencing, etc. For rig control, logging QSOs, contest dupe and multiplier checking (and only for those three functions), DigiRite delegates to an abstract interface it publishes. One implementation of that interface is provided in its source that, in turn, delegates to the Writelog API. Such an interaction between “free software” using “non-free software” (using the terms as defined by the Free Software Foundation, the authors of the GPLV3) is allowed under the license. DigiRite can just as well use any logger that supports its published logging and rig control interfaces. TrivialAdifLogger is a second example. DigiRite can even run in the absence of any logger implementation, but in that case it won’t log any QSOs nor control a rig.

Frequently asked questions:

  • Why is the installer no longer available? K1JT claims when run in combination, DigiRite with WriteLog violate the GPLv3 terms of WSJT-X. He is incorrect, and does not accept that we did exactly as intended by the GPLv3 (which is the license he chose, not us). We took the original, improved it, and offered it to all, including the source code. From the GPLv3 Preamble:

    …the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program–to make sure it remains free software for all its users.

  • May I still run the DigiRite I already have? You have our permission.
  • What features of DigiRite did Joe not like? a) Automated QSOing b) multi-stream mode
  • Can I build binaries? The GPLv3 license for WSJT-X, which is also applied to DigiRite as required by the terms of all GPLv3 works, allows for that, as long as you require the GPLv3 if you “convey” them.
  • Has Joe or the FSF, or anyone else threatened or brought legal action. Yes. We can’t say more. The installers are not here, and you must build from source code, but that is only to make it even more obvious that DigiRite is its own program, based on WSJT-X, licensed under GPLV3, has the source published, and is independent of WriteLog.

How does the GPL’s “one program” versus “separate programs” discussion apply to DigiRite?

The GPL’s own answer to this question is somewhat vague, and assumes some knowledge of software development terminology and software architecture. I attempt to spell this out in layman’s terms as follows. The GPL FAQ says, in part:

Where’s the line between two separate programs, and one program with two parts? This is a legal question, which ultimately judges will decide. We believe that a proper criterion depends both on the mechanism of communication (exec, pipes, rpc, function calls within a shared address space, etc.) and the semantics of the communication (what kinds of information are interchanged).

If the modules are included in the same executable file, they are definitely combined in one program. If modules are designed to run linked together in a shared address space, that almost surely means combining them into one program.

By contrast, pipes, sockets and command-line arguments are communication mechanisms normally used between two separate programs. So when they are used for communication, the modules normally are separate programs. But if the semantics of the communication are intimate enough, exchanging complex internal data structures, that too could be a basis to consider the two parts as combined into a larger program.

DigiRite’s use of the WSJT-X FT4/8 decode and 77 bit message translation clearly fall into the clause “included in the same executable file.” No one disputes the GPLv3 on WSJT-X, and DigiRite’s use and modification of its source code, requires DigiRite be licensed under the GPLv3, which it is.

However, DigiRite’s interactions with WriteLog for rig control and logging QSOs, clearly fall into the category of “communication mechanisms normally used between two separate programs.” For both rig control and logbook operations, WriteLog has, for more than a decade, supported what Windows software developers know as automation interfaces. Automation is an analog to what the GPL calls “pipes, sockets, and command-line arguments” that are UNIX idioms not widely used in Windows software. All Microsoft Office applications, for example, support automation interfaces to enable end users to write scripts and macros that extend them. K1JT’s claim that DigiRite plus WriteLog constitute “one program” which, in turn, requires the release of WriteLog’s source code is just silly. Extend DigiRite to invoke Microsoft Excel’s automation interfaces to create a logbook spreadsheet, a day’s work for someone familiar with Excel, then K1JT’s reasoning would claim the result yet another “one program” that suddenly exposes Microsoft to the requirement that Excel be licensed under GPLv3.