I'm voting for this, but I also think there is an opportunity to do a little more while digging into the refactor that this would take. I've looked into doing this in a plugin, and it's been pretty messy.
- Allow us to re-order tasks
- Allow us to enable/disable steps without deleting them (some take a lot of configuration, and deleting in order to disable for just one build is a hassle)
- Nice to have - allow us to add a step more than once. Some plugins are not architected to perform itself multiple times even though it would make sense. In other words, rather than each plugin having to handle adding multiple instances of it's own configuration, it would be easier for plugin developers to simply provide a flag saying whether or not that plugin should be allowed to be added to the job multiple times, and Jenkins does the rest for them.
- Nice to have - free style project could get even free-er by allowing us to perform build steps and then post-build steps, and then some more build steps, etc. I know we could do multiple jobs, but if we have a job that could (for example), run maven, then ftp, then a batch command, and then ftp again...