aboutsummaryrefslogtreecommitdiff
path: root/files/ru/mozilla/add-ons/index.html
blob: 817ed815ee80667bcd0b3c576164985699bc2279 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
---
title: Дополнения
slug: Mozilla/Add-ons
tags:
  - NeedsTranslation
  - TopicStub
  - Дополнения
  - Расширения
translation_of: Mozilla/Add-ons
---
<p>Дополнения добавляют новые функциональные возможности в <a href="/en-US/docs/Mozilla/Gecko">Gecko</a>-приложения, такие, как Firefox, SeaMonkey и Thunderbird. Есть два основных типа дополнений: <a href="#Extensions">расширения</a>, которые добавляют новые функции в приложение, и <a href="#Themes">темы</a>, изменяющие пользовательский интерфейс приложения.</p>

<blockquote>
<p>Для расширений и тем в Mozilla работает хранилище на <a href="https://addons.mozilla.org/">addons.mozilla.org</a>, также известное как AMO. Когда вы <a href="/en-US/Add-ons/Submitting_an_add-on_to_AMO">помещаете дополнения на AMO</a>, они рассматриваются, и после этого становятся доступны для пользователей. Вы не обязаны загружать свои дополнения в AMO, но если вы это сделаете, пользователи могут быть уверены в том, что они были предварительно проверены и будут знать, что ваше дополнение действительно полезно.</p>
</blockquote>

<p>Дополнение может существенно повлиять на поведение приложения, на которое оно устанавливается. Мы разработали <a href="/en-US/docs/Mozilla/Add-ons/Add-on_guidelines">список советов</a>, которые помогут вам удостовериться, что ваше дополнение будет приятным в использовании. Эти правила применяются для всех видов надстроек, независимо от того, размещены они на <a href="https://addons.mozilla.org/">addons.mozilla.org</a> или нет.</p>

<hr>
<h2 id="Расширения"><a name="Extensions">Расширения</a></h2>

<p>Расширения добавляют новые функции к приложениям Mozilla, например таким как Firefox и Thunderbird. С их помощью можно изменить стандартное поведение браузера, например реализовать другой способ организации и управления вкладками. Можно даже изменять содержимое отображаемого веб приложения, чтобы улучшить удобство использования или например повысить безопасность определенных сайтов.</p>

<p>Существует 3 различных способа сборки расширений: restartless-расширения на основе Add-on SDK, restartless-расширения с реализацией этого механизма вручную (manually bootstrapped restartless extensions), и расширения с использованием технологии Overlay.</p>

<ul class="card-grid">
 <li><span><a href="https://developer.mozilla.org/en-US/Add-ons/SDK">Restartless-расширения на основе Add-on SDK</a></span><br>
  Разработка restartless расширений с помощью высокоуровневого JavaScript API.</li>
 <li><span><a href="/en-US/Add-ons/Bootstrapped_extensions">Restartless-расширения с реализацией этого механизма вручную</a></span><br>
  Разработка расширений с самостоятельной реализацией механизма restartless.</li>
 <li><a href="/en-US/Add-ons/Overlay_Extensions"><span>Расширения с использованием технологии Overlay Extensions</span></a><br>
  Устаревшей способ разработки расширений, при котором требуется перезапуск браузера. Основан на механизме наложения XUL.</li>
</ul>

<div class="note">
<p><strong>Технология WebExtensions</strong></p>

<p>В данный момент мы разрабатываем систему под названием WebExtensions, которая будет новым способом разработки расширений для браузера Firefox, эта система будет гораздо более совместима с браузерами Chrome и Opera.</p>

<p>В будущем она станет наиболее предпочтительной при разработке новых проектов для браузера Firefox.</p>
В данный момент она является экспериментальной, но несмотря на это вы можете <a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions">ознакомиться с документацией</a>, если хотите ее опробовать.</div>

<p>Где это возможно, рекомендуется выбирать Add-On SDK, который использует механизм расширения без необходимости перезапуска браузера (restartless extensions), а также упрощает разработку и убирает за собой. Если Вам недостаточно возможностей комплекта средств разработки Add-on SDK для реализации ваших идей, механизм restartless Вы можете осуществить самостоятельно. Технология Overlay extensions в целом устарела и не рекомендуется при разработке новых расширений.</p>

<p>Для получения дополнительной информации о том, какой способ использовать, прочтите это <a href="/en-US/Add-ons/Comparing_Extension_Toolchains">сравнение</a>.</p>

<div class="column-container">
<div class="column-half">
<h3 id="Рекомендуемые_практики">Рекомендуемые практики</h3>

<p>Вне зависимости от того, каким способом Вы разрабатываете расширение, имеются общие рекомендации, следуя которым вы гарантируете пользователю максимально приятную работу с вашим расширением.</p>

<dl>
 <dt><a href="/en-US/Add-ons/Performance_best_practices_in_extensions">Производительность</a></dt>
 <dd>Убедитесь в том, что Ваше расширение обладает хорошей производительностью. Оно должно быть достаточно быстрым, иметь отзывчивый интерфейс и потреблять минимальный объем памяти.</dd>
 <dt><a href="/en-US/Add-ons/Security_best_practices_in_extensions">Безопасность</a></dt>
 <dd>Убедитесь в том, что Ваше приложение не подвергает пользователя опасности на вредоносных веб сайтах.</dd>
 <dt><a href="/en-US/Add-ons/Extension_etiquette">Этикет</a></dt>
 <dd>Убедитесь в том, что Ваше расширение не конфликтует с другими расширениями.</dd>
</dl>
</div>

<div class="column-half">
<h3 id="Специфика_разработки_для_различных_приложений">Специфика разработки для различных приложений</h3>

<p>Большая часть документации предполагает, что Вы разрабатываете для десктопной версии Firefox. Если Вы разрабатываете для других основанных на движке Gecko приложений, то существуют некоторые отличия, о которых Вам следует знать.</p>

<dl>
 <dt><a href="/en-US/Add-ons/Thunderbird">Thunderbird</a></dt>
 <dd>Разработка расширений для почтового клиента Thunderbird.</dd>
 <dt><a href="/en-US/Add-ons/Firefox_for_Android">Firefox для Андроид</a></dt>
 <dd>Разработка расширений для Firefox под Андроид.</dd>
 <dt><a href="/en-US/Add-ons/SeaMonkey_2">SeaMonkey</a></dt>
 <dd>Разработка расширений для <a href="http://www.seamonkey-project.org/">SeaMonkey</a>.</dd>
</dl>
</div>
</div>

<hr>
<h2 id="Темы"><a id="Themes" name="Themes">Темы</a></h2>

<p>Темы это дополнения, которые изменяют внешний вид пользовательского интерфейса.  Существуют два вида тем: легковесные темы и полные темы.</p>

<div class="column-container">
<div class="column-half">
<p><a href="https://addons.mozilla.org/en-US/developers/docs/themes">Легковесные темы</a> значительно легче создать, чем полные, но их возможности ограничены.</p>
</div>

<div class="column-half">
<p>С помощью <a href="/en-US/docs/Themes">полных тем</a> вы можете гораздо глубже менять UI приложения. Документация к полным темам устарела, но приведена здесь в качестве возможной основы для обновленной документации.</p>
</div>
</div>

<hr>
<h2 id="Другие_типы_дополнений">Другие типы дополнений</h2>

<p><a href="/en-US/docs/Creating_OpenSearch_plugins_for_Firefox">Поисковые плагины</a> являются простыми и очень специфическими типами дополнений: они добавляют новые поисковые системы для поиска в строке браузера.</p>

<p><strong><a href="/en-US/docs/Plugins">Плагины</a> </strong>(не путать с расширением и дополнением)<strong> </strong>помогают приложению понять содержание, которое не имеет встроенной поддержки. NPAPI-плагины являются устаревшей технологией и новые сайты не будут ее использовать. Как правило, такие плагины не доступны для использования на большинстве современных мобильных систем, и веб-сайты должны избегать их использования</p>

<h2 id="Смотрите_также" style="margin-bottom: 20px; line-height: 30px; font-size: 2.14285714285714rem;">Смотрите также</h2>

<ol>
 <li><a href="https://developer.mozilla.org/en-US/Add-ons/Bootstrapped_extensions" title="Restartless extensions">Restartless extensions</a></li>
 <li><a href="https://developer.mozilla.org/en-US/Add-ons/Overlay_Extensions" title="Legacy extensions">Legacy extensions</a></li>
 <li><a href="https://developer.mozilla.org/en-US/Add-ons/SDK">Дополнения на основе SDK</a></li>
 <li><a href="https://developer.mozilla.org/ru/Add-ons$edit#">Techniques</a>
  <ol>
   <li><a href="https://developer.mozilla.org/en-US/Add-ons/Techniques/Promises">Promises</a></li>
  </ol>
 </li>
 <li><a href="https://developer.mozilla.org/ru/Add-ons$edit#">Рекомендуемая практика</a>
  <ol>
   <li><a href="https://developer.mozilla.org/en-US/Add-ons/Performance_best_practices_in_extensions" title="Performance">Производительность</a></li>
   <li><a href="https://developer.mozilla.org/en-US/Add-ons/Security_best_practices_in_extensions" title="Security">Безопасность</a></li>
   <li><a href="https://developer.mozilla.org/en-US/Add-ons/Extension_etiquette" title="Etiquette">Этикет</a></li>
  </ol>
 </li>
 <li><a href="https://developer.mozilla.org/ru/Add-ons$edit#">Темы</a>
  <ol>
   <li><a href="https://developer.mozilla.org/Add-ons/Themes/Background" title="Lightweight themes">Легковесные темы</a></li>
   <li><a href="https://developer.mozilla.org/Add-ons/Themes/Background/FAQ" title="Lightweight themes FAQ">Легковесные темы FAQ</a></li>
   <li><a href="https://developer.mozilla.org/en-US/docs/Themes" title="Complete themes">Полные темы</a></li>
  </ol>
 </li>
 <li><a href="https://developer.mozilla.org/ru/Add-ons$edit#">Legacy Plugins </a>
  <ol>
   <li><a href="https://developer.mozilla.org/en-US/docs/Plugins/Guide/Plug-in_Basics">Plug-in Basics</a></li>
   <li><a href="https://developer.mozilla.org/en-US/docs/Plugins/Guide/Plug-in_Development_Overview">Plug-in Development Overview</a></li>
   <li><a href="https://developer.mozilla.org/en-US/docs/Plugins/Guide/Initialization_and_Destruction">Initialization and Destruction</a></li>
   <li><a href="https://developer.mozilla.org/en-US/docs/Plugins/Guide/Drawing_and_Event_Handling">Drawing and Event Handling</a></li>
   <li><a href="https://developer.mozilla.org/en-US/docs/Plugins/Guide/Streams">Streams</a></li>
   <li><a href="https://developer.mozilla.org/en-US/docs/Plugins/Guide/URLs">URLs</a></li>
   <li><a href="https://developer.mozilla.org/en-US/docs/Plugins/Guide/Memory">Memory</a></li>
   <li><a href="https://developer.mozilla.org/en-US/docs/Plugins/Guide/Version%2C_UI%2C_and_Status_Information">Version, UI, and Status Information</a></li>
   <li><a href="https://developer.mozilla.org/en-US/docs/Plugins/Guide/Plug-in_Side_Plug-in_API">Plug-in side Plug-in API</a>
    <ol>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPP_Destroy">NPP_Destroy</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPP_DestroyStream">NPP_DestroyStream</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPP_GetValue">NPP_GetValue</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NP_GetValue">NP_GetValue</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPP_HandleEvent">NPP_HandleEvent</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NP_Initialize">NP_Initialize</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPP_New">NPP_New</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPP_NewStream">NPP_NewStream</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPP_Print">NPP_Print</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPP_SetValue">NPP_SetValue</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPP_SetWindow">NPP_SetWindow</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NP_Shutdown">NP_Shutdown</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPP_StreamAsFile">NPP_StreamAsFile</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPP_URLNotify">NPP_URLNotify</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPP_Write">NPP_Write</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPP_WriteReady">NPP_WriteReady</a></li>
    </ol>
   </li>
   <li><a href="https://developer.mozilla.org/en-US/docs/Plugins/Guide/Browser_Side_Plug-in_API">Browser Side Plug-in API</a>
    <ol>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_DestroyStream" title="Closes and deletes a stream.">NPN_DestroyStream</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_ForceRedraw" title="Asks the plugin host to immediately (synchronously) repaint invalid areas.">NPN_ForceRedraw</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_GetAuthenticationInfo" title="The function is called by plugins to get HTTP authentication information from the browser.">NPN_GetAuthenticationInfo</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_GetURL" title="Asks the browser to create a stream for the specified URL.">NPN_GetURL</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_GetURLNotify" title="Requests creation of a new stream with the contents of the specified URL; gets notification of the result.">NPN_GetURLNotify</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_GetValue" title="Allows the plug-in to query the browser for information.">NPN_GetValue</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_GetValueForURL" title="Provides information to a plugin which is associated with a given URL, for example the cookies or preferred proxy.">NPN_GetValueForURL</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_InvalidateRect" title="Invalidates the specified portion of the plugin's drawing area, adding it to the region that needs to be redrawn when the plugin next repaints its contents.">NPN_InvalidateRect</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_InvalidateRegion" title="Invalidates the specified drawing region prior to repainting or refreshing a windowless plug-in.">NPN_InvalidateRegion</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_MemAlloc" title="Allocates memory from the browser's memory space.">NPN_MemAlloc</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_MemFlush" title="Requests that the browser free a specified amount of memory.">NPN_MemFlush</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_MemFree" title="Deallocates a block of allocated memory.">NPN_MemFree</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_NewStream" title="Requests the creation of a new data stream produced by the plug-in and consumed by the browser.">NPN_NewStream</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_PluginThreadAsyncCall" title="Thread safe way to request that the browser calls a plug-in function on the browser or plugin thread (the thread on which the plug-in was initiated).">NPN_PluginThreadAsyncCall</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_PostURL" title="Posts data to a URL.">NPN_PostURL</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference//NPN_PostURLNotify" title="Posts data to a URL, and receives notification of the result.">NPN_PostURLNotify</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_ReloadPlugins" title="Reloads all of the installed plugins.">NPN_ReloadPlugins</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_RequestRead" title="Requests a range of bytes from a seekable stream. This initiates a read operation; the actual data is received through subsequent calls to NPP_WriteReady() and NPP_Write().">NPN_RequestRead</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_SetValue" title="Implemented by browsers. This call is used to inform the browser of variable information controlled by the plugin.">NPN_SetValue</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_SetValueForURL" title="Allows a plugin to change the stored information associated with a URL, in particular its cookies. (While the API theoretically allows the preferred proxy for a given URL to be changed, doing so does not have much meaning given how proxies are configured, and is not supported.)">NPN_SetValueForURL</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_Status" title="Lets a plug-in display a message on the browser's status line.">NPN_Status</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_UserAgent" title="Returns the browser's user agent field. This can be used to handle variations in different browsers (or versions thereof) when implementing your plug-in.">NPN_UserAgent</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/docs/NPN_Version" title="Lets plugins obtain version information, both of the plug-in API and of the browser itself.">NPN_Version</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_Write" title="Pushes data into a stream produced by the plug-in and consumed by the browser.">NPN_Write</a></li>
    </ol>
   </li>
   <li><a href="https://developer.mozilla.org/en-US/docs/Plugins/Guide/Scripting_plugins">Scripting plugins</a>
    <ol>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPString">NPString</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPVariant">NPVariant</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_ReleaseVariantValue">NPN_ReleaseVariantValue</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_GetStringIdentifier">NPN_GetStringIdentifier</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_GetStringIdentifiers">NPN_GetStringIdentifiers</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_GetIntIdentifier">NPN_GetIntIdentifier</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_IdentifierIsString">NPN_IdentifierIsString</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_UTF8FromIdentifier">NPN_UTF8FromIdentifier</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_IntFromIdentifier">NPN_IntFromIdentifier</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPObject">NPObject</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_CreateObject">NPN_CreateObject</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_RetainObject">NPN_RetainObject</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_ReleaseObject">NPN_ReleaseObject</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_Invoke">NPN_Invoke</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_InvokeDefault">NPN_InvokeDefault</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_Evaluate">NPN_Evaluate</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_GetProperty">NPN_GetProperty</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_SetProperty">NPN_SetProperty</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_RemoveProperty">NPN_RemoveProperty</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_HasProperty">NPN_HasProperty</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_HasMethod">NPN_HasMethod</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPN_SetException">NPN_SetException</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/Reference/NPClass">NPClass</a></li>
    </ol>
   </li>
   <li><a href="https://developer.mozilla.org/en-US/docs/Plugins/Guide/Structures">Structures</a></li>
   <li><a href="https://developer.mozilla.org/en-US/docs/Plugins/Guide/Constants">Constants</a></li>
   <li><a href="https://developer.mozilla.org/en-US/Add-ons/Plugins/External_resources_for_plugin_creation">External Resources</a></li>
  </ol>
 </li>
 <li><a href="https://developer.mozilla.org/ru/Add-ons$edit#">Publishing add-ons</a>
  <ol>
   <li><a href="https://developer.mozilla.org/en-US/Add-ons/Distribution">Signing and distributing your add-on</a></li>
   <li><a href="https://addons.mozilla.org/developers/addon/submit/">Submit a new add-on</a></li>
   <li><a href="https://developer.mozilla.org/en-US/Add-ons/AMO/Policy">Policies</a>
    <ol>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/AMO/Policy/Agreement">Developer Agreement</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/AMO/Policy/Reviews">Review Process</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/Add-on_guidelines">Add-on guidelines</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/AMO/Policy/Featured">Featured Add-ons</a></li>
     <li><a href="https://developer.mozilla.org/en-US/Add-ons/AMO/Policy/Contact">Contacting Us</a></li>
    </ol>
   </li>
  </ol>
 </li>
 <li><a href="https://developer.mozilla.org/ru/Add-ons$edit#">Community and Support</a>
  <ol>
   <li><a href="https://blog.mozilla.org/addons">Add-ons Blog</a></li>
   <li><a href="https://forums.mozilla.org/addons">Add-on Forums</a></li>
   <li><a href="http://stackoverflow.com/questions/tagged/firefox-addon">Stack Overflow</a></li>
   <li><a href="https://groups.google.com/forum/#%21forum/mozilla.dev.extensions">Development Newsgroup</a></li>
   <li><a href="irc://irc.mozilla.org/extdev">IRC Channel</a></li>
  </ol>
 </li>
</ol>