{"id":2035,"date":"2011-10-11T10:09:34","date_gmt":"2011-10-11T18:09:34","guid":{"rendered":"http:\/\/blog.mozilla.org\/webdev\/?p=2035"},"modified":"2011-10-10T12:10:50","modified_gmt":"2011-10-10T20:10:50","slug":"what-is-shipyard","status":"publish","type":"post","link":"https:\/\/blog.mozilla.org\/webdev\/2011\/10\/11\/what-is-shipyard\/","title":{"rendered":"What is Shipyard?"},"content":{"rendered":"<div>\n<p>At our recent Mozilla All Hands, I shared <a href=\"https:\/\/docs.google.com\/present\/edit?id=0AbkIbW9hDUKXZGRwMnpuaHNfNmNyenNyNmhx&amp;hl=en_US\">some slides about Shipyard<\/a>, a JavaScript MVC framework that is making it\u2019s way into <a href=\"https:\/\/builder.addons.mozilla.org\/\">Add-on Builder<\/a>. It\u2019s not finished, but since I shared it there, it felt appropriate to share what there currently is here.<\/p>\n<h3>Summary<\/h3>\n<p>Shipyard is an application framework that covers all the common things any JavaScript application would need to deal with: interacting with a server, storing data, rendering said data in the browser, and responding to user actions. An application built on Shipyard should only have to write the parts to pull all those things together.<\/p>\n<p>If you\u2019re application is going to have 1000 lines of JavaScript, would you rather write all those yourself, or have 900 of them be in a framework that is tested and used by others?<\/p>\n<p>When starting a web application, you would reach for Django, or CakePHP, or Rails; never would you decide to use just the language itself. Why shouldn\u2019t you do the same when the target language is JavaScript?<\/p>\n<h3>Framework-wide Goals<\/h3>\n<ol>\n<li>Be able to declare dependencies inside the code, and not be bothered with managing them during development or deployment.<\/li>\n<li>Be easily testable, using a node test runner.<\/li>\n<li>Not reliant on any other language. Build scripts will use JavaScript. The End.<\/li>\n<\/ol>\n<h3>More<\/h3>\n<p>It\u2019s heavily influenced by <a href=\"http:\/\/mootools.net\">MooTools<\/a>, since they have an excellent modular design, but turned into CommonJS modules while Moo 2.0 figures itself out. There\u2019s <a href=\"https:\/\/docs.google.com\/present\/edit?id=0AbkIbW9hDUKXZGRwMnpuaHNfNmNyenNyNmhx&amp;hl=en_US\">slides<\/a>, and the <a href=\"https:\/\/github.com\/seanmonstar\/Shipyard\">repository<\/a>, again. You could even discuss what true <a href=\"https:\/\/github.com\/seanmonstar\/Shipyard\/issues\/1\">Controllers should do<\/a>.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>At our recent Mozilla All Hands, I shared some slides about Shipyard, a JavaScript MVC framework that is making it\u2019s way into Add-on Builder. It\u2019s not finished, but since I shared it there, it felt appropriate to share what there &hellip; <a class=\"go\" href=\"https:\/\/blog.mozilla.org\/webdev\/2011\/10\/11\/what-is-shipyard\/\">Continue reading<\/a><\/p>\n","protected":false},"author":361,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4713,288],"tags":[4734,128,4728,4729],"coauthors":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>What is Shipyard? - Mozilla Web Development<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.mozilla.org\/webdev\/2011\/10\/11\/what-is-shipyard\/\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Sean McArthur\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.mozilla.org\/webdev\/2011\/10\/11\/what-is-shipyard\/\",\"url\":\"https:\/\/blog.mozilla.org\/webdev\/2011\/10\/11\/what-is-shipyard\/\",\"name\":\"What is Shipyard? - Mozilla Web Development\",\"isPartOf\":{\"@id\":\"https:\/\/blog.mozilla.org\/webdev\/#website\"},\"datePublished\":\"2011-10-11T18:09:34+00:00\",\"dateModified\":\"2011-10-10T20:10:50+00:00\",\"author\":{\"@id\":\"https:\/\/blog.mozilla.org\/webdev\/#\/schema\/person\/58fa4e204da505a27bd05c6d1a8e136b\"},\"breadcrumb\":{\"@id\":\"https:\/\/blog.mozilla.org\/webdev\/2011\/10\/11\/what-is-shipyard\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.mozilla.org\/webdev\/2011\/10\/11\/what-is-shipyard\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.mozilla.org\/webdev\/2011\/10\/11\/what-is-shipyard\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/blog.mozilla.org\/webdev\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"What is Shipyard?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.mozilla.org\/webdev\/#website\",\"url\":\"https:\/\/blog.mozilla.org\/webdev\/\",\"name\":\"Mozilla Web Development\",\"description\":\"For make benefit of glorious tubes\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.mozilla.org\/webdev\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.mozilla.org\/webdev\/#\/schema\/person\/58fa4e204da505a27bd05c6d1a8e136b\",\"name\":\"Sean McArthur\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.mozilla.org\/webdev\/#\/schema\/person\/image\/13058397abb3f081f682b09906e1e67b\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/47107cb40fe9e6c3bf631eecb79fd98c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/47107cb40fe9e6c3bf631eecb79fd98c?s=96&d=mm&r=g\",\"caption\":\"Sean McArthur\"},\"description\":\"Sean McArthur is an engineer for the Add-on Builder. He also blogs and tweets.\",\"sameAs\":[\"http:\/\/seanmonstar.com\"],\"url\":\"https:\/\/blog.mozilla.org\/webdev\/author\/smcarthurmozilla-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"What is Shipyard? - Mozilla Web Development","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.mozilla.org\/webdev\/2011\/10\/11\/what-is-shipyard\/","twitter_misc":{"Written by":"Sean McArthur","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/blog.mozilla.org\/webdev\/2011\/10\/11\/what-is-shipyard\/","url":"https:\/\/blog.mozilla.org\/webdev\/2011\/10\/11\/what-is-shipyard\/","name":"What is Shipyard? - Mozilla Web Development","isPartOf":{"@id":"https:\/\/blog.mozilla.org\/webdev\/#website"},"datePublished":"2011-10-11T18:09:34+00:00","dateModified":"2011-10-10T20:10:50+00:00","author":{"@id":"https:\/\/blog.mozilla.org\/webdev\/#\/schema\/person\/58fa4e204da505a27bd05c6d1a8e136b"},"breadcrumb":{"@id":"https:\/\/blog.mozilla.org\/webdev\/2011\/10\/11\/what-is-shipyard\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.mozilla.org\/webdev\/2011\/10\/11\/what-is-shipyard\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/blog.mozilla.org\/webdev\/2011\/10\/11\/what-is-shipyard\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blog.mozilla.org\/webdev\/"},{"@type":"ListItem","position":2,"name":"What is Shipyard?"}]},{"@type":"WebSite","@id":"https:\/\/blog.mozilla.org\/webdev\/#website","url":"https:\/\/blog.mozilla.org\/webdev\/","name":"Mozilla Web Development","description":"For make benefit of glorious tubes","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.mozilla.org\/webdev\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/blog.mozilla.org\/webdev\/#\/schema\/person\/58fa4e204da505a27bd05c6d1a8e136b","name":"Sean McArthur","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.mozilla.org\/webdev\/#\/schema\/person\/image\/13058397abb3f081f682b09906e1e67b","url":"https:\/\/secure.gravatar.com\/avatar\/47107cb40fe9e6c3bf631eecb79fd98c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/47107cb40fe9e6c3bf631eecb79fd98c?s=96&d=mm&r=g","caption":"Sean McArthur"},"description":"Sean McArthur is an engineer for the Add-on Builder. He also blogs and tweets.","sameAs":["http:\/\/seanmonstar.com"],"url":"https:\/\/blog.mozilla.org\/webdev\/author\/smcarthurmozilla-com\/"}]}},"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/blog.mozilla.org\/webdev\/wp-json\/wp\/v2\/posts\/2035"}],"collection":[{"href":"https:\/\/blog.mozilla.org\/webdev\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.mozilla.org\/webdev\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/webdev\/wp-json\/wp\/v2\/users\/361"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/webdev\/wp-json\/wp\/v2\/comments?post=2035"}],"version-history":[{"count":0,"href":"https:\/\/blog.mozilla.org\/webdev\/wp-json\/wp\/v2\/posts\/2035\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.mozilla.org\/webdev\/wp-json\/wp\/v2\/media?parent=2035"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.mozilla.org\/webdev\/wp-json\/wp\/v2\/categories?post=2035"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.mozilla.org\/webdev\/wp-json\/wp\/v2\/tags?post=2035"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/blog.mozilla.org\/webdev\/wp-json\/wp\/v2\/coauthors?post=2035"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}