ajaxorg/cloud9 — pull request #2120 by lennartcl (2012-08-29 10:55:52+00:00)
Title: [Liskov] Revamp extension manager

This revamps the extension manager to make it usable with external plugins:
* External plugins are now accepted and supported in core/ext
* They can use require.js with relative paths (e.g., `require("./dependency")`)
* They can use CORS or wrap resources in JavaScript ([like so](https://github.com/lennartcl/cloud9-hello-plugin/blob/master/dependency.txt.js))
* They can be hosted using GitHub

And improves the UX:
* If you do anything wrong in the extension manager, it will try to correct your input or tell you
* You get visual feedback when it tries to load an extension

Examples (just enter these URLs directly in the extension manager):
* https://github.com/lennartcl/cloud9-hello-plugin
* https://github.com/lennartcl/cloud9-scratchpad (third-party extension with some APF UI)

Caveats:
* GitHub only allows CORS for their API; the above works around that, but alternatively we could use a proxy, or make a wrapper around the API that does Base64-decoding
* Chrome gives a console-only warning for raw.github.com about MIME type text/plain
* We need a plugin signing or white listing system at some point

@ajaxorg/liskov

/cc @javruben @zefhemel