Top five tips for releasing software
By Steve Crouch.
You've put in the hard work, developed your software masterpiece and it's finally ready. How should you go about releasing it into the wild? In the rush to release your software it's easy to forget a few things. A few very important things! Let's take a look at five things you should consider prior to release...
1. Always release software with a licence
Your hard work in developing your software is just that: it's yours. Without specifying the rights you want to convey to your users, and under what conditions, they could do whatever they want with it - including making a tidy sum by selling it! And without being clear on liability, users could pursue you for damages if something goes wrong when they use it. The onus is on you to protect your interests and the rights to your software.
For an introduction to copyright and licencing, see our guide on adopting an open-source licence.
2. Don't wait until the software is perfect before releasing
Whilst it's important to make sure your software is ready for release, it's easy to get caught up in making the software perfect, which can unnecessarily delay the release.
It's a harsh truth to accept, but your software will never be perfect. There will always be parts of it that need a little tweaking or lack the ability to do that extra something. The key here is in expectation management: be clear about what the software can and cannot do, and what still needs to be done. The clear advantage to this approach is that you can get early feedback on your software. You may even find that the extra something isn't that important after all, or perhaps is better implemented in a different way.
In general, the reasons to publish your code are plentiful. There is a very good article in Nature by Nick Barnes, the director of the Climate Code Foundation, which gives a host of reasons to overcome the resistance to release.
3. Software releases should be versioned
You can run into problems with user expectations and make it difficult to track issues if you release your software without versioning information.
If you aren't clear that a release is a beta, then users may assume the software is ready for proper use and end up upset when it doesn't work. And things get very complicated if a user encounters an issue but - due to your multiple, unversioned releases - it's not clear which release is affected.
You can manage expectations for the scale of changes by adopting a consistent (and publicised!) use of major and minor release version numbers, e.g. going from 2.0 to 3.0 should convey the software has changed substantially, whilst changing from 2.0 to 2.0.1 shows that only small fixes and enhancements have been made.
4. Provide contact information
Users may want to get in contact with you for any number of reasons. Perhaps they've encountered a problem, want to report a bug or need further information. It's not all bad - they might want to collaborate with you, provide code enhancements, or congratulate you on creating such wonderful software. Of course, they need to know how to contact you, so providing a website address and an email address in your software, on your website, and in your documentation is strongly recommended.
5. Download and test your release yourself
In the rush to release it's easy to miss a key step and - just like that - the release doesn't work. This is a frustration that can be easily avoided by downloading the new release and going through the process of building, installing and testing it. This way, you make sure that the download links work and the software is usable. Even if you could have a great piece of software to show the world, no one will ever find out about it if your software cannot be installed due to an avoidable mistake.
If you want to know more about releasing software, take a look at our handy guide on releasing software.
Posted by SteveCrouch on Wednesday 16 May 2012.

It's a good point that you
It's a good point that you should decide a licence before releasing software.
I don't actually think it is true that people automatically gain unrestricted rights if you don't set a licence. Publishing something does not renounce copyright. Nevertheless, the basic point is correct.
If the development has involved several different institutions, then the moment of release may be too late for this discussion. It will involve IP officers and lawyers, and they may not feel a strong obligation to conclude the discussion in good time, if no framework was set earlier.
In my experience, the right time for intellectual property discussions is while preparing the proposal for funding. At that time, there is a clear incentive to come to agreement, and most possible agreements offer benefit to everyone, namely some funding.
A major force on the licence is the continuation plan, and there may be more than one option. So you might want to indicate a range of alternative licences. What you really have to agree before work starts is the "Contributor Licence Agreement", which defines which rights the developers are giving when they contribute code. If you have a good CLA, then later discussions on the product licence are constrained in way that allows them to succeed.
Post new comment