The software engineering industry is a bit of an ugly duckling when it comes to release cycles. For reasons of traceability, validation, verification, and marketing, most software packages are built to a certain level of completeness and then released with much fanfare. But is this how we should do things in the future?
Software development streams - the natural evolution of our business
The embedded software engineering industry is a bit of an ugly duckling when it comes to release cycles. For reasons of traceability, validation, verification, and marketing, most software packages are built to a certain level of completeness and then released with much fanfare. We version number the software so users and observers can attach some notion of age and features to it. Of course, along with each version comes tuition, documentation, and a learning curve over the preceding version. Other practical reasons for releasing software in major versions have been based on the delivery mechanism (high-speed, unlimited Internet access is, after all, a relatively recent thing).
When I think of this, it actually seems archaic to me, lagging many other IP-based industries.
When you have a physical product to sell - such as a car - it makes sense that you have a version (or in that case, year model).
But think about music, one of the more mature IP-based industries. In the earlier years of the recording business, there were similar practical reasons for a band recording a whole album of ten or so tracks - namely the vinyl and cassette delivery mechanisms of the time. They would record and master enough new material to warrant a tour, and fans would spend money on the concert after purchasing the album, or attend the concert and be impressed enough to then buy the whole album. Either way, the musicians had two products to make money with, and they were easily cross-promoted.
With the development of high quality perceptual compression (i.e. MP3/4, FLAC etc.) and the Internet available to all at high speed, the natural step for the music business was to allow listeners to cherry-pick the songs they like and download them as required and as preferred, listening directly to them using the device that also stores them. This iTunes / Rhapsody / CD-Baby phenomenon is now mature - so it seems bizarre to me that the software industry, and especially the electronics design software industry, which provides this very system of acquiring and using a product in a streamlined way, is only now catching up with this concept.
These days, musicians and bands tend to release songs as they are written and recorded online. The commercial mechanism supports this - it’s easy to create and keep market momentum this way, as a band that releases singles fairly regularly is going to stay more in the forefront of the minds of their fans. There is still a place of course for complete albums, and most musicians do still “release an album”. But the market no longer consumes them the same way.
In the same way, it’s high time electronics manufacturers were able to break free of the need to withhold features, functions and fixes in their products while waiting for a large enough bundle of them to be gathered to call it a “new release”. There may be larger, more profound changes in the software that indicate new ways of thinking about and solving problems using it, and these would constitute an update to the platform or base version on which all the other capabilities - let’s call them plug-ins - reside. And, the plug-ins that add the extra features and functions, as well as bug fixes, are in a continuous software engineering cycle.
If software engineering produces continuous development and improvement, and the delivery mechanism of the software supports continuous updates, there’s no good reason to hold back on delivering the upgrades as they are developed.
There’s a lot of commercial sensibility to this - because for the user of the product its value is in what it does for them, and this can easily be changed and upgraded with software. Software they are willing to pay for.
With prolific high-speed, essentially unlimited internet access, there is no longer a barrier in the delivery mechanism for installed applications.
PC-based applications can also be updated continuously. While there may be larger changes to the underlying platform of the software, i.e. Altium Designer, these would constitute a new revision of the platform. Previously this would have been called a “service pack”. There is absolutely no good reason why users should not be able to have it downloaded in the background, and transparently installed by the software itself (with the user’s permission of course).
Likewise, other additional plug-ins, such as support packages for a specific FPGA device family or a manufacturer’s component library, should be available for download the moment they are made ready. Users should not have to wait for a major release.
The new Altium Designer installer introduces this continuous release of updates, along with the separation of the platform and extra plug-ins and content.
As a wise man once said, “Do not withhold good from those who deserve it, when it is in your power to do so.” And so I think it should be in software development.
Check out our flagship software.
About the Author
Ben is a Computer Systems and PCB Engineer with over 20 years of experience in embedded systems, FPGA, and PCB design. He is an avid tinkerer and is passionate about the creation of electronic devices of all kinds. Ben holds a Bachelor of Engineering (CompSysEng) with First Class Honors from the University of Southern Queensland and is currently Director of Community Tools and Content.More Content by Ben Jordan