manipulate in most languages and can be directly loaded in Python, Perl, and Java, we'll have a very low barrier to entry with regards to their use by others. They're also easy to generate, meaning that regardless of how new or old the target build platform is, there won't be issues creating them. Finally, they're also in a format that can be easily hand-crafted. Even if your organization has yet to institute production builds or if developers are manually crafting builds, this file format is easy to create. Plus, it prepares us for a worst-case, lightweight release process.
Knowing precisely what went out the door is a big part of releasing software—especially enterprise software. The steps described above definitely help, but having a lightweight release process based on our distribution, takes it a step further. I'll stress that the process I'm going to outline is not an "ideal" release process; rather, it is a lightweight one. The important part is the reliance on centralized distribution, which ensures that nothing can leave the building without at least some amount of tracking.
Lightly releasing when following the notions of centralized distribution is a three-step process:
- Copy the full release (including sub-parts, such as the cut) into the release tree within the centralized distribution service, using a distinct versioning system.
- Make a tag in the revision control system.
- Let everyone know that Elvis has left the building.
Maintaining a single tree of releases within the centralized distribution server achieves the same benefits with regards to releases. There will never be a question regarding release location, release contents, or which release is correct. The tag in revision control helps others in the future find the original source. While the properties file from above will contain that information, developers are more attuned to searching revision control rather than a server tree.
Finally, your Elvis email. Releases are the best part of developing software. Sharing the joy is a great thing! Inform the expanded team, and let them know where they can pick up the release.
Ultimately, the software release process becomes an automated process. At the end of the day, we're going to want to have checksums, code signing, and many other things. But, for now, we've achieved lightweight distribution with minimal impact to the development process.