Save Step Templates as Powershell instead of JSON
The current JSON style templates makes it somewhat difficult to manage updates and changes. When comparing a template exported from my Octopus server against one from the community library (or GitHub), most of the metadata properties are the same and aren't interesting. What's more interesting is comparing the actual Powershell script changes. But having the script embedded in a single line of JSON makes it extremely difficult to actually make a comparison to see what really changed.
Furthermore, in our organization, when we want to make a change for a template in our GitHub branch, pull requests are difficult for the same reasons above - the script changes are on a single line and difficult to review what actually changed.
My proposal is to reverse the current methodology: have the templates saved as powershell and instead embed the metadata as either a Powershell hashtable, or even just shove it in the comments in the header (similar to how HuBot parses the coffeescript metadata in bot scripts).
Matt Richardson commented
You may be interested in https://github.com/ASOS/OctopusStepTemplateCi - which handles most of the issues you have mentioned, and more.
Nithin Shenoy commented
Another idea would be to have templates as folders. The folder would have the script and a sibling json metadata file. This would be somewhat similar to hubot scripts or VSTS extensions. Bottom line, the scripts need to be in a format that is readable and easily reviewable by a human outside of Octopus (e.g. windiff, GitHub diffs, etc).
After attempting and giving up on solving this problem in a git repository I too would love to have an alternative to the current #yolo approach.