An Evening in the Life


(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 🙂

Software Licensing & Piracy: Part 2

Part one of this article finished with the following question:

What is it fair to expect your customer to do to license their copy of your product, and so help protect your product, your sales, your livelihood and the future investment and development in a product that is important to both you ?

I believe that it is fair to expect the customer to do something to help the software developer protect their product, after all if the developer doesn’t stay in business then the product doesn’t have a future and the customer could be left high and dry.

That’s not to say the customer can be expected to jump through any hoops … the emphasis is on the developer to provide a method of licensing their product that can be done quickly and easily and thus encourage the customer to purchase and use a legitimate copy of the software rather than paying a visit to insert name of dodgy virus ridden download sites here or similar.

My opinion is that if I, as a user, purchase a piece of software for my own use, then I should be entitled to copy it onto my PC and my Mac and my Laptop for use whenever I like. I should also be able to copy it onto a USB Drive, connect the drive to a friends computer and use the product there also. I should not however copy the software to my friends computer thereby giving them the ability to use it in my absence. I expect to have to follow a documented procedure to identify to the software that I am the legitimate owner. This should be a simple and one off process.

I believe the previous paragraph is fair to both the customer and the software developer. I believe most people are honest and do not mind paying a reasonable price for a quality product. The software industry has in some ways become its own worse enemy with some companies having complex and unworkable, illogical and unfair licensing practices. ‘We need the customer more than they need us’ is something developers should be bearing in mind.

Offer a choice of license types and schemes that not only give the user choice, but also offer additional discounts for worthy establishments, education and charities for example.

The different types of software license that are necessary in order to give the customer the choice they require, can also bring additional and unwanted complexity. In order to also give the customer the licensing choice as well as the simplicity they desire then maybe cost additional license types at N * x. N is the Single User Standard Price, and x is the multiplier?

UPDATE IN DECEMBER 2023: Is this still an issue? It seems software companies have over the last few years decided to adopt the subscription mechanism for almost everything. This makes sense for some categories of software, but for many others it is just an unnecessary inconvenience and expense for the customer. We’ll see if this model is sustainable over the long term…

Software Licensing & Piracy: Part 1

This is an article I wrote in 2014 and which was later published in Better Software Magazine, September / October 2014 edition.

Your favourite piece of software was created by someone, or many someones, who used their time and hard won expertise to build something useful or enjoyable, or both. With the exception of Free Software or Open Source Software, that someone is entitled to, expects and deserves to be rewarded for their efforts.

If a price is attached to the software and you use the software without paying the price that is asked, then that is Software Piracy. Many would argue that it amounts to nothing less than theft.

If I sell physical products, lets say Widgets, then if I have 10 and you take 10 without paying for them, then I now have 0, you have 10 and hopefully a guilty conscience as well. That is theft. If however you use my software without paying for it then I am not directly affected by it. I still have it. Would you have bought it if you couldn’t have obtained a pirate copy ? Maybe. Maybe Not. In my opinion that is why Software Piracy differs from traditional theft. What you have actually done is taken away my chance of receiving income from you for that software sometime in the future. It just isn’t clear cut either way, with laws, policies and attitudes being firmly rooted in the ‘pre digital media’ 20th century.

Having established that there is a cost to producing software and that the developer does deserve to be rewarded for their time and efforts, it stands to reason that we have to have a mechanism in place that makes this possible. That mechanism is generally known as Software Licensing.

I’ve been developing software for financial reward for nearly as long as I’ve been using computers, well over thirty years, and I have never wavered in my belief that whatever form of licensing you use, you should never punish the genuine, fee paying customer for the actions of the Software Pirate.

Seriously, I have bought software in the past that had licensing schemes so restricting or complex or time consuming (or just plain ridiculous), that I have saved time and effort by downloading a cracked copy of the software and using that instead, all the time cursing the software developers for making me waste my time and effort. In effect punishing me for my honesty. As a Software Developer or Software Publisher that’s not an experience you want for your customers.

Whatever Software Licensing mechanism is used, there will always be some who do not like it and resent it being used. If as a developer you have done your best to minimise the impact on the genuine customer, whilst making some effort to thwart the Software Pirate, then you have done all you can and any customer who is going kick up a fuss about your licensing mechanism is unlikely to be a customer you actually want. Most customers would actually like you to stay in business and realise that to do that, it is necessary to be paid for the work you do, and / or the products you sell. Sacking your customer can sometimes be a good thing. But that’s a subject for another blog post 🙂

So what is a fair software license, for both the supplier and the customer ? What is it fair to expect your customer to do to license their copy of your product, and so help protect your product, your sales, your livelihood and the future investment and development in a product that is important to both you ?

I’ll continue this in the next post.