{"id":131,"date":"2008-03-16T21:50:04","date_gmt":"2008-03-17T02:50:04","guid":{"rendered":"http:\/\/www.jasonmorrison.net\/content\/2008\/setting-up-a-firefox-extension-development-environment\/"},"modified":"2008-03-16T21:50:04","modified_gmt":"2008-03-17T02:50:04","slug":"setting-up-a-firefox-extension-development-environment","status":"publish","type":"post","link":"http:\/\/www.jasonmorrison.net\/content\/2008\/setting-up-a-firefox-extension-development-environment\/","title":{"rendered":"Setting up a Firefox extension development environment"},"content":{"rendered":"<p><a href=\"http:\/\/www.jasonmorrison.net\/content\/photos\/photo\/2339580676\/Procrastato-a-Firefox-productivity-extension.html\" class=\"tt-flickr\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/farm3.static.flickr.com\/2172\/2339580676_c7b6c0c03c_m.jpg\" alt=\"Procrastato, a Firefox productivity extension\" align=\"right\" border=\"0\" height=\"197\" width=\"240\" \/><\/a> I have a <a href=\"http:\/\/www.jasonmorrison.net\/content\/procrastato-firefox-extension\/\">Firefox extension called Procrastato<\/a>.\u00a0 It reminds you to get back to work when you&#8217;re mindlessly surfing the web.\u00a0 Procrastato is a very simple add-on but I&#8217;ve found that getting started in developing Firefox add-ons isn&#8217;t so simple.<\/p>\n<p>Although I&#8217;ve just dipped my feet into the world of XUL and Firefox Extension development I thought I would share what I&#8217;ve been using to get up and running.<\/p>\n<p>First things first &#8211; take a look at the <a href=\"http:\/\/developer.mozilla.org\/en\/docs\/Building_an_Extension\">Building an Extension page at Mozilla.org<\/a>.\u00a0 Make sure you at least read through that page before getting started.\u00a0 It can be a little disappointing to see how much you need to have in place in order to do a simple &#8220;hello world&#8221; test extension, but it&#8217;s worth getting an overall picture before jumping in.<\/p>\n<p>Also, before getting to &#8220;hello world,&#8221; there are a couple of extensions that are useful for developing extensions:<\/p>\n<ul>\n<li>The <a href=\"http:\/\/www.getfirebug.com\/\">Firebug extension<\/a> is great for extension development and web development in general.<\/li>\n<li>There is an <a href=\"http:\/\/ted.mielczarek.org\/code\/mozilla\/extensiondev\/\">Extension Developers Extension<\/a> you can try as well.<\/li>\n<\/ul>\n<p>If you&#8217;ve used Eclipse for Java or PHP development you&#8217;ll probably want to use it for extension development with the <a href=\"http:\/\/cms.xulbooster.org\/index.php\">XulBooster plugin<\/a>.\u00a0 XulBooster is useful for two reasons:<\/p>\n<ol>\n<li>It helps with housekeeping chores like setting up your install.rdf and chrome.manifest and exporting a .xpi package.<\/li>\n<li>It give you some code coloring and syntax highlighting for those .xul files.<\/li>\n<\/ol>\n<p>Now you should be ready to go.<\/p>\n<p>A couple of notes:XulBooster will automatically include an empty &lt;em:updateURL\/&gt; element in your install.rdf.\u00a0 If you don&#8217;t have a secure URL for updates (starting with https:\/\/), you might get this warning from addons.mozilla.org when you try to upload your new version:<\/p>\n<blockquote><p>Add-ons cannot use an external updateURL. Please remove this from install.rdf and try again.<\/p><\/blockquote>\n<p>Just open the install.rdf file and deleted that line to solve the problem.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I have a Firefox extension called Procrastato.\u00a0 It reminds you to get back to work when you&#8217;re mindlessly surfing the web.\u00a0 Procrastato is a very simple add-on but I&#8217;ve found that getting started in developing Firefox add-ons isn&#8217;t so simple. Although I&#8217;ve just dipped my feet into the world of XUL and Firefox Extension development [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[19,118],"tags":[235,236,120,21,20,119,23,237],"class_list":["post-131","post","type-post","status-publish","format-standard","hentry","category-blog","category-programming","tag-add-ons","tag-development-environment","tag-eclipse","tag-extension","tag-firefox","tag-ide","tag-procrastination","tag-xul"],"aioseo_notices":[],"_links":{"self":[{"href":"http:\/\/www.jasonmorrison.net\/content\/wp-json\/wp\/v2\/posts\/131","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.jasonmorrison.net\/content\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.jasonmorrison.net\/content\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.jasonmorrison.net\/content\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.jasonmorrison.net\/content\/wp-json\/wp\/v2\/comments?post=131"}],"version-history":[{"count":0,"href":"http:\/\/www.jasonmorrison.net\/content\/wp-json\/wp\/v2\/posts\/131\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.jasonmorrison.net\/content\/wp-json\/wp\/v2\/media?parent=131"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.jasonmorrison.net\/content\/wp-json\/wp\/v2\/categories?post=131"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.jasonmorrison.net\/content\/wp-json\/wp\/v2\/tags?post=131"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}