{"id":1480,"date":"2010-03-31T14:33:57","date_gmt":"2010-03-31T21:33:57","guid":{"rendered":"http:\/\/blog.mozilla.org\/addons\/?p=1480"},"modified":"2010-03-31T14:40:18","modified_gmt":"2010-03-31T21:40:18","slug":"introducing-xul-school-tutorial","status":"publish","type":"post","link":"https:\/\/blog.mozilla.org\/addons\/2010\/03\/31\/introducing-xul-school-tutorial\/","title":{"rendered":"Introducing the XUL School Tutorial"},"content":{"rendered":"<p>Before I go into story-telling mode, I&#8217;ll save most of you the time and just link to the <a href=\"https:\/\/developer.mozilla.org\/en\/XUL_School\">XUL School Tutorial<\/a>. You&#8217;re welcome ;).<\/p>\n<p>And now, our feature story.<\/p>\n<p>I learned about XUL and extension development from the <a href=\"https:\/\/developer.mozilla.org\/en\/XUL_Tutorial\">XUL Tutorial<\/a>, back then hosted on the now dead <a href=\"http:\/\/www.xulplanet.com\/\">XULPlanet<\/a>. Those were good times.<\/p>\n<p>But they were difficult times as well. Other than the tutorial, little information was there to be found. XUL is full of quirks, and figuring them out has always been a daunting task. Back then it took a lot of googling around to find a solution to a problem, if any. Now we have a voluminous <a href=\"https:\/\/developer.mozilla.org\">MDC<\/a>, with an updated XUL Tutorial and a myriad of articles on the Mozilla platform and add-on development. The documentation landscape has improved a lot.<\/p>\n<p>However, a couple of years ago I still thought that an important piece of documentation was missing. The XUL Tutorial served very well as a reference to XUL as a language, but I felt it fell short as an add-on development tutorial. I thought there was room for a tutorial aimed at getting add-on developers set up and coding right away, leaving lengthy specs as references and focusing on getting things done.<\/p>\n<p>At the time I was working at Glaxstar (now Appcoast), and I was in charge of training new hires and turning them into professional Firefox extension developers. Producing this tutorial fit perfectly under that plan, so a few coworkers and I set off to basically dump all of our combined experiences into it. The XUL School tutorial was born.<\/p>\n<p>We loved the outcome and thought it would be great to somehow make this available to developers everywhere. But as it often happens, other tasks took priority and the tutorial was kept for internal use only.<\/p>\n<p>Fast forward to a few months ago, when I was just getting started with Mozilla. Getting XUL School on MDC became a high priority for me, so I contacted Appcoast about it. They were more than happy to donate the material. Now it was just a matter of porting it to MDC. That took while mostly because I was too busy trying to get the review queues under control. Luckily, the editors have been doing an extraordinary job lately (also thanks to Appcoast!) and I&#8217;ve been able to spare some cycles porting the material and updating it.<\/p>\n<p>So now it&#8217;s done, and I hope everybody can benefit from it. Whether you&#8217;re a seasoned developer or just getting started with extension developer, please take some time to go through the <strong><a href=\"https:\/\/developer.mozilla.org\/en\/XUL_School\">XUL School Tutorial<\/a><\/strong>. I would really appreciate your input and corrections.<\/p>\n<p>Finally, I&#8217;d like to extend my sincere gratitude to Glaxstar\/Appcoast, who have always been outstanding community members, and to all the people who helped me produce this tutorial.<\/p>\n<h3>Localizers: do your thing<\/h3>\n<p>You can contact me directly (jorge AT mozilla.com) for anything you need. Thanks!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Before I go into story-telling mode, I&#8217;ll save most of you the time and just link to the XUL School Tutorial. You&#8217;re welcome ;). And now, our feature story. I &hellip; <a class=\"go\" href=\"https:\/\/blog.mozilla.org\/addons\/2010\/03\/31\/introducing-xul-school-tutorial\/\">Read more<\/a><\/p>\n","protected":false},"author":173,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[44,295,227],"tags":[278873,278876,121,199,278875,543,852],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Introducing the XUL School Tutorial - Mozilla Add-ons Community Blog<\/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\/addons\/2010\/03\/31\/introducing-xul-school-tutorial\/\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jorge Villalobos\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.mozilla.org\/addons\/2010\/03\/31\/introducing-xul-school-tutorial\/\",\"url\":\"https:\/\/blog.mozilla.org\/addons\/2010\/03\/31\/introducing-xul-school-tutorial\/\",\"name\":\"Introducing the XUL School Tutorial - Mozilla Add-ons Community Blog\",\"isPartOf\":{\"@id\":\"https:\/\/blog.mozilla.org\/addons\/#website\"},\"datePublished\":\"2010-03-31T21:33:57+00:00\",\"dateModified\":\"2010-03-31T21:40:18+00:00\",\"author\":{\"@id\":\"https:\/\/blog.mozilla.org\/addons\/#\/schema\/person\/a098261b4b5510d408ff31f492606925\"},\"breadcrumb\":{\"@id\":\"https:\/\/blog.mozilla.org\/addons\/2010\/03\/31\/introducing-xul-school-tutorial\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.mozilla.org\/addons\/2010\/03\/31\/introducing-xul-school-tutorial\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.mozilla.org\/addons\/2010\/03\/31\/introducing-xul-school-tutorial\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/blog.mozilla.org\/addons\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Introducing the XUL School Tutorial\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.mozilla.org\/addons\/#website\",\"url\":\"https:\/\/blog.mozilla.org\/addons\/\",\"name\":\"Mozilla Add-ons Community Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.mozilla.org\/addons\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.mozilla.org\/addons\/#\/schema\/person\/a098261b4b5510d408ff31f492606925\",\"name\":\"Jorge Villalobos\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.mozilla.org\/addons\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/6d1966118f16e4b99a6e3ad07883be33?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/6d1966118f16e4b99a6e3ad07883be33?s=96&d=mm&r=g\",\"caption\":\"Jorge Villalobos\"},\"description\":\"Jorge is the Product Manager for addons.mozilla.org\",\"url\":\"https:\/\/blog.mozilla.org\/addons\/author\/jvillalobosmozilla-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Introducing the XUL School Tutorial - Mozilla Add-ons Community Blog","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\/addons\/2010\/03\/31\/introducing-xul-school-tutorial\/","twitter_misc":{"Written by":"Jorge Villalobos","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/blog.mozilla.org\/addons\/2010\/03\/31\/introducing-xul-school-tutorial\/","url":"https:\/\/blog.mozilla.org\/addons\/2010\/03\/31\/introducing-xul-school-tutorial\/","name":"Introducing the XUL School Tutorial - Mozilla Add-ons Community Blog","isPartOf":{"@id":"https:\/\/blog.mozilla.org\/addons\/#website"},"datePublished":"2010-03-31T21:33:57+00:00","dateModified":"2010-03-31T21:40:18+00:00","author":{"@id":"https:\/\/blog.mozilla.org\/addons\/#\/schema\/person\/a098261b4b5510d408ff31f492606925"},"breadcrumb":{"@id":"https:\/\/blog.mozilla.org\/addons\/2010\/03\/31\/introducing-xul-school-tutorial\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.mozilla.org\/addons\/2010\/03\/31\/introducing-xul-school-tutorial\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/blog.mozilla.org\/addons\/2010\/03\/31\/introducing-xul-school-tutorial\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blog.mozilla.org\/addons\/"},{"@type":"ListItem","position":2,"name":"Introducing the XUL School Tutorial"}]},{"@type":"WebSite","@id":"https:\/\/blog.mozilla.org\/addons\/#website","url":"https:\/\/blog.mozilla.org\/addons\/","name":"Mozilla Add-ons Community Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.mozilla.org\/addons\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/blog.mozilla.org\/addons\/#\/schema\/person\/a098261b4b5510d408ff31f492606925","name":"Jorge Villalobos","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.mozilla.org\/addons\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/6d1966118f16e4b99a6e3ad07883be33?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6d1966118f16e4b99a6e3ad07883be33?s=96&d=mm&r=g","caption":"Jorge Villalobos"},"description":"Jorge is the Product Manager for addons.mozilla.org","url":"https:\/\/blog.mozilla.org\/addons\/author\/jvillalobosmozilla-com\/"}]}},"_links":{"self":[{"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/posts\/1480"}],"collection":[{"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/users\/173"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/comments?post=1480"}],"version-history":[{"count":0,"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/posts\/1480\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/media?parent=1480"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/categories?post=1480"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/tags?post=1480"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}