(Of a part-time Indie Developer)
I have used this WordPress blog sporadically over the years, talking about things that interest me. I’ve not used it for software since I stopped writing commercial software a decade or so ago. I reduced my working hours for my employer a year ago and also gave up my IT Manager position and dropped to a Software Developer role after a serious illness made me take stock of my life. Now I have more free time to do more of what I love, creating software for myself and others without any restrictions.
The point of the above is to give an insight into how I came to have fun and games with WordPress last night. It’s not a criticism of WordPress or Google but an observation into problems that can occur when all I wanted to do is make a piece of software available, for free.
I mostly write cross platform software for Windows, macOS and sometimes Linux, and also in the past iOS and Android. This particular software, CholTERM, is macOS only. So in addition to writing the app in the first place I needed to do the following:
1. Get an Apple Developer ID
2. Write a script to send the app to Apple to have it Signed and Notarised
3. Host it so that users can download it.
Number 3 is where I ran into unexpected problems.
Firstly, I needed to create a form to allow people to download a software license. In the past I’ve used WPForms and I installed this plugin and attempted to add a form object to the page. The object failed to initialise … I asked Google for advice and was told it might be because I already had a forms facility in Jetpack which I already use on the site for other purposes, such as stats.
If I already have a form facility in jetpack why bother to use WPForms? So I deactivated and deleted it and setup the form in Jetpack. The functionality seems basic but was fine for what I needed. I do however need to change the button text as it currently reads ‘SUBSCRIBE’ and that’s not what I’m using it for. That then made me realise that if people think they are subscribing then they need a way of unsubscribing which then led me to realise I also need to consider GDPR etc. This issue is for another day!
Onto actually hosting the app. Initially I uploaded the DMG file (standard macOS distribution format) to the WordPress Media Library, well, I would have done except that WordPress doesn’t support DMG files. However, it does support Zip files (I’m not sure why Zip is allowed and DMG isn’t, but – whatever!) so I created a Zip file and put a link to this on the CholTERM page. All is good with the world 🙂
Except it wasn’t. I use Chrome as my primary browser, as does a large proportion of computer users and Chrome treats files that haven’t been downloaded often (which is the case for all new applications) as ‘suspicious’. The app is Signed and Notarised by Apple which means it contains my Developer ID which links back to my (paid) Apple account, nevertheless because Google hadn’t seen it often it pauses the download and tells the users the download is ‘suspicious’.
At the stage it was the early hours of the morning and I was tired and frustrated. I added a note to the CholTERM page saying ‘Click here if you have problems downloading’. I pointed the link to this page which I had just created.
This would work and I tested it and it did, but I knew it didn’t inspire confidence and was the wrong thing to do. I googled for solutions that would allow me to host a DMG file, and there are a few options. Having reviewed the choices I decided to go with DropBox (as I have had an account for a couple of decades or so, and use it daily) and provide a direct link to the file (with the ?dl=1 parameter added to the URL) so that a click in WordPress on the ‘Download’ link will result in an immediate prompt for a download location and a successful download a couple of seconds later.
That’s how it stands at the moment. We’ll see how it goes I guess 🙂
Additional observations on coming back to indie software development (compared to corporate software development) are:
1. Updates. You haven’t got a server on the network with Group Policy and other tailored updating facilities. So you have to create one, and it needs to work across multiple operating systems.
2. Licensing. Even for a free app you ideally want to know how many people are downloading your software, so you need to ask for at least their name and email address. You need a mechanism that encourages them to get a license without excessive nag screens or feature restrictions. So you need to write (ideally) a public / private key mechanism to generate a secure license. You then need to write the code to decode that license and it has to be ported to work in all the languages you use. For me at the moment I need it to work in Python, Swift and Xojo, I chose a solution based around Libsodium.
After having done all that, (and I still need to do this before I market this app to the targeted community) you then need to write a pipeline to automatically send out those licenses, and for that to work you need to hook SMTP to WordPress in order to send out those licenses, or somehow get the form submission data from WordPress and into a form you have access to and control. The boring but necessary bits 🙂