Activity Library/Editors/Reviewing Guide

From Sugar Labs

Jump to: navigation, search
Pencil.png NOTICE:  This page is a draft in active flux...
Please contribute to these contents and discuss issues on the discussion page.



Contents

Processing Review Queues

Pending versus Nominated

When you first go to the Editor Tools area, you will start at a Pending Updates tab. You'll also see tabs for Moderated Reviews and Nominated Add-ons. As explained in the sandbox model, pending updates are new versions of add-ons that have already been made public. Nominated add-ons are new add-ons that the author has nominated to become public.

Understanding the UI

When you click on an activity to review, you'll see a review page with the following elements:

Actions

Push to Public

If you are reviewing a pending update, pushing public will cause the sandboxed version of the public activity to appear on the public side.

If you are reviewing a nominated activity, pushing public will cause both the activity and its most recent version to appear on the public side.

Your action and comments entered will be e-mailed to the author.

Retain in Sandbox

If you are reviewing a pending update, retaining in sandbox will keep the version in the sandbox. The author will have to submit another update to be reviewed again.

If you are reviewing a nominated activity, retaining in sandbox will keep the activity in the sandbox. The author is able to immediately nominate it again. If the author abuses this and does not make any changes, please flag for super review and indicate the reason.

Your action and comments entered will be e-mailed to the author.

Request Super-Review

Requesting super review will cause the activity to be flagged for administrative review, which will appear in an admin queue and dispatch an e-mail to the administrators.

Super review should be requested for the following reasons:

Your comments will appear in the item history and be e-mailed to administrators, not the author.

Comments to Author

Remember that your comments go to a *real person*, so try to be friendly.

If you are pushing the activity public, thank the author for the time and effort they have put in. Remember that they're enhancing the usefulness and the appeal of the products! Tell them which features you like the most, and mention anywhere you think they could improve.

If you are retaining in the sandbox, be polite in pointing out any problems. Provide suggestions as to what they could do or should fix before re-submitting it and encourage them to re-submit it if it could ever be public. It's also a good idea to tell the author what you liked about the extension/theme even though you've retained it.

If you think it should be translated, you can add a hint for submitting it to the Localization Team, even if it has no locale structure.

Reviewing Activities

What are we looking for when reviewing an activity?

Step 1. Decide on Testing Scope

Step 2. ASLO User & Community Feedback

Step 3. Functionality

Step 4. Security

NOTE: This section needs to be rewritten for the Sugar/Rainbow/Bitfrost context.

Does it load remote JavaScript?

<script type="text/javascript" src="http://mysite.greatsite.com/js/wow-content.js" />
where src has non-chrome URL's

Does it load remote XUL?

Does it load any non-https stuff that will run as chrome?

Is the code obfuscated?

Does it include binary components?

Does it install 3rd party software?

Some add-ons will download and install a native application. This is generally considered a bad thing. However, if the add-on is very clear about what it does in the summary, then this can be allowed.

Does it pollute an existing javascript namespace?

For Updated Addons

What to advise if you see these situations

We noticed that your add-on loads remote JavaScript or loads remote XUL, AMO's
policy does not allow the hosting of add-ons that include remote JavaScript or
remote XUL.
Please try to recode your application as follows: Generate a secure xmlhttprequest
for content and use evalInSandbox
(http://developer.mozilla.org/en/docs/Components.utils.evalInSandbox)
to execute it (not regular eval()) or use the content iframe method {Need doc
pointers}.
We require that any JS be included in the extension as including remote code
pretty much gets around any reviews we do of code. If possible, try to have the
JavaScript in the extension and have JSON or XML of the dynamic values or content
be retrieved remotely.
{More from Myk} I would either load the JS via XMLHttpRequest and then eval it in
a sandbox (f.e. with JSON data), load it into an iframe marked type="content" so
it doesn't have chrome privileges, or, if it needed chrome privileges, load it in
a content iframe and run the gauntlet of our security restrictions (which require
the script to be signed and the user to explicitly authorize the script to use
any chrome privileges it requests).
We noticed that your add-on is composed of entirely binary components. We have no
way to validate what is included in this payload and we regretfully need to deny
it from going public.

Step 5. Leak Testing

For now, refer to (unfinished) LeakTesting-How-To about the Leak Gauge tool. Contact Carsten Book (Tomcat at mozilla.com) with feedback.

Step 6. Locale Testing

This is currently in the process of being formalised. For more details, see bug 461805

Banned Add-ons

There are a set of add-ons that should be banned from AMO, these include:

Sandbox'ed Add-ons

Add-ons dealing with the following content should always be sandbox'ed and never sent public:

Note that general video downloading add-ons that happen to also work on adult sites are allowed.

Reviewing Search Engine Plugins

Search engine plugins have to be in OpenSearch format. (Not MozSearch or Sherlock format). OpenSearch is supported by Firefox 2 and 3.

Reviewing Dictionaries

A dictionary is used by Firefox for the built-in spellchecker. Firefox supports multiple dictionaries. A dictionary on AMO will be a .xpi file.

Moderating Reviews

Guidelines for in moderating reviews:

Personal tools
Namespaces
Variants
Actions
Sugar
Projects
Teams
Local Labs
Using the Wiki
Google translations