Bill, I appreciate some of what is in this as between what you and Joe have presented here as it provides a base for me and many others to sift through to obtain some clarity.
My apologies if for whatever reason some posts ended up in wrong places. Due to disabilities I work primarily off email feeds. My interest here, having disabilities myself, is to support other Amateurs that I and others work with in making this software accessible to their needs. Sometimes it requires customisation. Many here are very competent; others vary in degrees. I have formerly been teaching this sort of stuff – based on systems programming - for over 30 years in both high and low level Academic and Technical Environments. I had problems interpreting some responses. I was not alone, and some responses since my initial posts echo this observation. The purpose here is that AR is for private learning and advancement – for helping others. HAM – Help All Mankind. Please refer to the private email that I have sent as some of what is in this email is far from appropriate in an open developers’ forum – especially when AR needs to unify and rally around central leaders (as many here in this group are). 73 and thanks to you both so far, though further constructive comments and guidance would be appreciated. Stephen Ireland VK3VM / VK3SIR Sent from Mail<https://go.microsoft.com/fwlink/?LinkId=550986> for Windows 10 ________________________________ From: Bill Somerville <g4...@classdesign.com> Sent: Saturday, December 8, 2018 3:32:30 AM To: wsjt-devel@lists.sourceforge.net Subject: Re: [wsjt-devel] Clear guidance - Development Environment Stephen, comments in line below. On 07/12/2018 10:32, Stephen Ireland wrote: Joe, A couple of weeks back I put a post in here requesting details of how the environment for compiling and developing WSJT-X releases was constructed. I received responses that many have commented as being unhelpful and lacking guidance back. Please remember WSJT-X is an open source project, requests for information about development tools are fine but demands will get little response. Collaboration in the Open Source community is largely based on contribution and individuals usually earn their status proving their interest and capabilities by making direct contributions. Even then the contributions must be in line with where the project leader(s) want to go, after all it is their project and they drive it forward, usually by giving huge amounts of their time and experience free of charge to the user community. >From comments passing it appeared that Greg Beam’s brilliant JTSDK was not >being used as the central environ; with great difficulty I also gathered from >responses that base development is performed under Linux and that Windows >versions are cross-compiled from Linux. Likewise I drew conclusions that >development from XCode was based upon Linux-lines. Can this please be >confirmed? While not detracting in any way from Greg's excellent work with the JT-SDK, it is a wrapper around the pre-existing tasks and tools that any competent developer would know how to do and acquire or at least be able to work out for themselves. The need for the JT-SDK comes from the large community of users who are not software developers but are keen to build the very latest development sources even before they are deemed ready for release by the core team. This fills a need but by no means is the best environment for a developer who is making changes to the source on a daily basis. The JT-SDK is largely biased towards building the sources without any changes with a single aim of producing an executable to go and try out on the bands. Apart from the fact that the JT-SDK is heavily MS Windows focused (yes I know it has a Linux variant, but more about building WSJT-X for Linux below), it is actually inconvenient for a developer who is working on multiple projects that share the same tool sets as those used by WSJT-X. Having the tools bundled up with a WSJT-X focus in not workable for a developer in such a position. The bottom line is that the JT-SDK is a tool for end users that want to build WSJT-X from sources on Windows with an aim to run the product an with no intention of doing any development work on the project. I am sure one could use the JT-SDK as a developer but once the initial set up of a development machine is complete, the day to day tasks of software development are more easily done with the underlying tools that the project uses, e.g. CMake. There has been a number of comments in separate posts eluding to this same request that I am making. I haven't seen those, perhaps you are referring to posts where Linux users are trying to build from sources because the binary installer packages we provide are not suitable for their particular Linux distribution or versions. These cases are almost always due to some lack of knowledge of the packaging system for their Linux distribution or of Linux development in general. We are more than happy to help these individuals on a case by case basis, which it almost always is because their experience level vary greatly and the variants of Linux vary equally each requiring slightly different recipes for building a complex package like WSJT-X. So that we are all on the same page, pending the “General Availability” release of WSJT-X 2.0 and the concept racing into a brave new world, can the development/production environ and versions of software used (i.e. Qt versions, Linux environs if used etc.) please be confirmed? If Greg Bream’s scripts etc. are not used can the environment and its setup/deployment please be clearly documented (in an evolving document ?) so that everyone working across WSJT-X and is advancement can be completely on the same page? The tool and library versions are not fixed, there are certain constraints determined by the source code itself and also by production restrictions. Largely we use the latest versions of all dependencies but those latest versions are gated by requirements to support older operating system versions. Individual users need not be constrained so strictly if they wish to build from sources since they only have to produce executables that run on their individual system. With v2.0.0 GA the basic constraints are: MS Windows: * We use the MinGW variant of the MS Windows Qt development package as we have no need or interest in using the proprietary tool chain for the MSVC++ variant of the Qt development package. * Qt v5.5 (last version that supports Windows XP) we will drop XP and Vista support in an upcoming version which will allow us to make production builds with a newer Qt version nevertheless users may build with any newer Qt version right now, although Qt v5.12 (released yesterday) is not yet tested to my knowledge. * The compilers used are those that are packaged with the Qt MinGW package, this is non-optional as the C++ ABI is not guaranteed compatible between compiler versions let alone compiler vendors. As MinGW is a native port of the full GNU GCC compiler suite, it provides us with a C, Fortran, and C++ toolchain which is all that WSJT-X needs. * Other dependent packages are whatever is the latest, they are all stable and the latest version is as good as any recent version. This includes fftw3, the MS DirectShow SDK, and the Omni-Rig server (optional). * For Hamlib we use the latest master branch (actually from a forked repo but the branch used tracks the Hamlib master branch extremely closely) and always build it ourselves, this may change in the future but for now the WSJT-X team and other WSJT-X contributors provide a lot of upstream patches for Hamlib and we include them into WSJT-X by using their latest master branch which is ahead of their official releases. Hamlib is a vanilla C library and can be built without issue using the MinGW toolchain that comes with the Qt package. * Hamlib has an optional dependency on the libusb project, this library is available ported to MS windows and we use the latest official binary release. Linux: * On Linux the dependent packages and tool chains are determined by distribution and version of the development system, the WSJT-X sources will build on any Desktop Linux distribution and version that provides at least Qt v5.5. This last restriction is because we have source code that will not build with Qt versions older than v5.5. The actual version and patch level of Qt and the other dependent packages (fftw3, libusb) along with the compiler toolchains are all whatever that Linux distribution and version have in their repo. Bottom line is if the toolchains can build Qt then they are fine for WSJT-X. macOS: * On Macs, like on MS Windows, we would like to use the latest versions of Qt and related tool chains but are constrained by operating system version compatibility. Up to WSJT-X v2.0.0 we used Qt v5.8 for production releases. At v2.0.0 that has change to Qt v5.9 because several users have suffered a defect in Qt when they use a proxy Internet connection (or a VPN), this defect was exposed by code in WSJT-X that download online help and support files directly. The defect is fixed in Qt v5.9 but that version doesn't support OS X version 10.9 so this Qt upgrade has forced us to drop support for OS X 10.9 (which is pretty old and out of support with Apple). * In general the Apple development methodology allows applications built on the latest o/s version and with the latest tools and SDK but flagged to be compatible back to a specified macOS/OS X version. This means that using the latest compilers and system MacOS SDK is fine so long at the correct options to set the oldest supported version are used. * The other dependencies on Mac, i.e. the ones not provided by the system MacOS SDK and standard system libraries can be provided from several sources, the most commonly used ones are MacPorts and HomeBrew. Personally I use MacPorts but either is fine. These projects provide native MacOS binary packages of Open Source projects and include most of the packages you might find in a typical Linux distribution repository. * The compiler tool chains we use on Mac are the command line tools clang and clang++, these are the Apple variants of these tools which are available as the command line tools bundled with Xcode (the Apple developer IDE). Because Apple do not have a Fortran compiler we use the GNU GCC gfortran compiler that is available via MacPorts or HomeBrew or similar. I realise that some fear that "releasing the rabbits” can cause damage. Likewise this is not supposed to be a forum for “rabbits”. There no rabbits nor hats to produce them from. This is an Open Source project, the only thing that is scarce is developer time. What there are in abundance are users who just want something they can install in minutes that works. This is fine and there will always be a massive ratio of users to core developers in any successful software project. The big difference with an Open Source project is that there are usually only developers and users. Support is down to the developers although the community's more experienced users make a huge contribution here and elsewhere which is welcome and can take a big load off the core development team who only have to chip in when deeper technical details or complex application behaviour needs more explanation or clarification. There have been instances where the generosity of the core development team has been taken advantage of by others who think they can do a better job but neglected to take the key step of developing their own product, instead cloning the WSJT-X sources for their own purposes. This is fine for personal use, also fine if the intent is to contribute back to the parent project but becomes annoying when it crosses the line of passing off our work as theirs without full credit to the original authors and copyright holders. We have had to spend a lot of time (less so recently as R&D is now not done in the public domain) reminding these freeloaders of their responsibilities endowed on them by the GPL licence we release the WSJT-X suite under. The last paragraph also should make it clear that the JT-SDK is now somewhat redundant as the public source repository no longer contains pre-release code so there is nothing to be gained by building from sources compared to the latest official release be it a beta candidate release or a full general availability release. In most regulatory dominions it is stated that AR is provides a license for self-experimentation and hence advancement. Inquisition is the forerunner to experimentation. There is a lot that we can all learn from guidance that you and the other key developers can provide. There is no greater utility/legacy than to leave ideas imprinted on others. It's all there in the public domain. We give you access to everything that makes up a release of WSJT-X. This is far more than you get for the transceiver on your shack desk, maybe the station logging application you use, maybe the operating system you run your shack software on. I find it incredulous that you cite the WSJT-X project for not being open with their innovations. Lastly, addressing some misinformation you have been given from sources outside of the development team. Core development can be done on any of the supported platforms, use your favourite it makes almost no difference although when making GUI layout changes it helps to have all three main platforms available to check renderings are working well on all. This last point is because where possible the Qt GUI classes use the native style and often native controls which can render differently on different operating systems or window managers. Builds are native on all platforms. I doubt a project using Qt could be built on a Linux hosted Windows development environment but if it could it would still be native. Hamlib could easily be built for Windows on Linux (as I state that is still a native build) and the Hamlib team do exactly that for their official Windows binary packages and snapshots. We don't simply because we are using a Windows system to build and test the rest of WSJT-X so there is no point building Hamlib elsewhere. On macOS Xcode must be installed but only because that is the only way (nowadays) to install the masOS development SDK and the command line tools we need, Xcode itself is not required to build WSJT-X. That is why I ask. So to summarize, IMHO anyone who is likely to be able to contribute to the WSJT-X project source code should already be reasonably competent in setting up a suitable environment on their favoured operating system and any shortfalls in knowledge could be made up by specific questions here or simply by working it out for themselves. Frankly if they can't do that then understanding and writing code for the project is going to be out of their reach. For those users that can't wait for the polished releases from the development team, the vast bulk of which are MS Windows users, there is a leg up via the JT-SDK which is handy as MS Windows is by far the most complex platform to get set up for any sort of cross platform project, but because of actions by a very small minority of freeloaders that no longer wins them anything. For the Linux users on distributions that have no package maintainer for WSJT-X we provide a basic recipe and a convenient source tarball that combines building and installing from sources of both Hamlib and WSJT-X, which makes Linux by far the easiest platform to build WSJT-X from sources. The same dual source tarball is also a resource for package maintainers who want to contribute by making WSJT-X available across versions of some Linux distribution. Lastly, please follow normal netequette practice on email lists by starting a new thread when opening a new topic. Replying to an existing message on another thread and changing the subject line is both poor practice and inconvenient for subscribers that use a threaded email client which will potentially bury your new topic email into a closed or ignored thread. If you don't understand that then here is a screen shot from my Thunderbird email client: [cid:part1.87539CC0.7EDEB058@classdesign.com] Note your new topic is linked to the message that you replied to with a different and unrelated subject. If I had marked that thread as ignored, which is likely due to it being answered by Joe, before your post arrived I would simply not have seen your post. It is laziness to not press the "Write" (new email) or "New Topic" button just to save you having to type in the list address again. Reply means reply to the message, not ask a different unrelated question. 73 Steve I VK3VM / VK3SIR 73 Bill G4WJS.
_______________________________________________ wsjt-devel mailing list wsjt-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wsjt-devel