Responsible JavaScript: Part I – A List Apart