I am a big advocate of client side code and using the client-side API in SP2013 / SP Online. For me, it's really important that my solutions can be deployed to the cloud as well as on-prem. And thus i try not to create farm-solutions.
I'm a bit torn on the subject of deployment though. Say for instance you want to use the Social-API and show the mentions-count of the current user. Using JSOM, it's easy to extract this from SP and display it on the page by embedding it as a script part. However, i want to display it up on the top by the settings-cog and help-icon. With no delegate controls in the cloud and no app-solution available, it'll have to be packaged as a .JS-file and triggered on the page.
The question then comes to packaging and deployment. I can either add code to a script-webpart or modify the masterpage. These are very manual steps however and will require instructions.
What's your opinion on the best way to package and deploy solutions that are based on JS but not apps?