{% trans %} Once you know the basics, these guides will help you with intermediate to advanced extension development topics. {% endtrans %}

{{ _('Best Practices') }}

{{ _('Respecting the JavaScript Global Namespace') }}

{% trans %} In this blog post, Mark Ziesemer explains how to prevevent global namespace pollution by wrapping your extension's variables. {% endtrans %}

{{ _("Editor's Pick:") }} {{ _('Security Best Practices in Extensions') }}

{% trans %} Every extension developer should know and follow the security best practices outlined in this document to keep users safe. {% endtrans %}

{{ _('Localizing an Extension') }}

{% trans %} This article explains how to localize an extension, including XUL and JavaScript strings. {% endtrans %}

{{ _('Responsible First-run Usage') }}

{% trans %} This blog post describes what a bad first-run experience means for users, and gives tips for improving that experience. {% endtrans %}

{{ _('Security') }}

{{ _('Evaluating Code with Restricted Privileges') }}

{% trans %} This article describes the use of Components.utils.evalInSandbox, which is a way to evaluate code "such as remote code" without chrome privileges. {% endtrans %}

{{ _('Creating Sandboxed HTTP Connections') }}

{% trans %} This article explains how to created sandboxed HTTP connections which don't affect the user's cookies. {% endtrans %}

{{ _('Displaying Web Content in an Extension') }}

{% trans %} Learn how to display web content in an extension without security issues. {% endtrans %}

{{ _('Five Wrong Reasons to Use eval in an Extension') }}

{% trans %} In this blog post, Wladimir Palant gives five wrong ways to evaluate code in an extension. {% endtrans %}

{{ _('Localization') }}

{{ _('Localizing Extension Descriptions') }}

{% trans %} Learn how to localize the names and descriptions in extension install manifests. {% endtrans %}

{{ _('Localization and Plurals') }}

{% trans %} This article explains how to properly localize strings with plurals. {% endtrans %}

{{ _('BabelZilla overview') }}

{% trans %} Learn how the BabelZilla localization community works. {% endtrans %}

{{ _('Advanced Topics') }}

{{ _("Video:") }} {{ _('Stupid/Awesome Extension Development Hacks') }}

{% trans %} In this video, Jono Xia explains how to go further in extension development using XPCOM, overlays, XHRs, DOM manipulation, etc. in order to make Firefox do things you might have never thought possible. {% endtrans %}

{{ _('JavaScript Code Modules') }}

{% trans %} JavaScript code modules let multiple privileged JavaScript scopes share code. For example, a module could be used by Firefox itself as well as by extensions, in order to avoid code duplication. {% endtrans %}

{{ _('Creating Custom Firefox Extensions with the Mozilla Build System') }}

{% trans %} This article describes how to set up the development environment for a large, complex Firefox extension with a need for high-performance, use of third-party libraries in C/C++, or interfaces not exposed via XPCOM. {% endtrans %}

{{ _('Multiple Item Packaging') }}

{% trans %} This article explains how to create an extension package with multiple items "extensions". {% endtrans %}

{{ _('Extension Documentation Index') }}

{% trans %} If you can't find what you're looking for in the above articles, try the Mozilla Developer Center's Extensions landing page. {% endtrans %}