Confirmed users
438
edits
(21 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
<big><big>'''The Janus proxy experiment has ended. | |||
The code remains on [https://github.com/mozilla/node-janus github], but we are no longer actively developing it.'''</big></big> | |||
== Overview == | == Overview == | ||
'''Janus is a compression and privacy proxy ''' with the goal to provide more secure and efficient mobile browsing. | '''Janus is a compression and privacy proxy ''' with the goal to provide more secure and efficient mobile browsing. | ||
Line 24: | Line 39: | ||
Currently (August 2014), the supported Firefox versions are served on the [https://www.mozilla.org/en-US/firefox/channel/#aurora Aurora] or [http://nightly.mozilla.org Nightly] channels. | Currently (August 2014), the supported Firefox versions are served on the [https://www.mozilla.org/en-US/firefox/channel/#aurora Aurora] or [http://nightly.mozilla.org Nightly] channels. | ||
Required '''features''' that Janus | Required or desired '''features''' that Janus could utilize are tracked here | ||
* {{bug|378637}} - Add support for connecting to HTTP proxy over HTTPS | * {{bug|378637}} - Add support for connecting to HTTP proxy over HTTPS | ||
* {{bug|366559}} - Firefox/Gecko should support LZMA as an HTTP transfer-encoding method | * {{bug|366559}} - Firefox/Gecko should support LZMA as an HTTP transfer-encoding method | ||
* {{bug|1010068}} - Disable OCSP on Firefox for Android | * {{bug|1010068}} - Disable OCSP on Firefox for Android | ||
* {{Bug| | * {{Bug|944117}} - Implement support for WebM Alpha | ||
Known '''issues''' affecting Janus are tracked here | Known '''issues''' affecting Janus are tracked here | ||
Line 57: | Line 72: | ||
== Features == | == Features == | ||
To achieve the [https://wiki.mozilla.org/index.php?title=Mobile/Janus#Goals goals], we discuss the features of the Janus Proxy and their implementation statuses in this section. | To achieve the [https://wiki.mozilla.org/index.php?title=Mobile/Janus#Goals goals], we discuss the features of the Janus Proxy and their implementation statuses in this section. | ||
=== Status === | |||
{| class="wikitable" | |||
|- | |||
! Feature !! colspan="5"|Status !! Version !! See also | |||
|- | |||
| [[Mobile/Janus#Transmission_Protocol|SPDY]] || {{JanusFeatureStatus|i|Proxy}} || {{JanusFeatureStatus|i|Add-on}} || {{JanusFeatureStatus|i|Fennec}} || {{JanusFeatureStatus|i|Desktop}} || {{JanusFeatureStatus|ni|B2G}} || 0.1 || {{bug|378637}} [http://www.chromium.org/spdy/spdy-whitepaper spec] | |||
|- | |||
| [[Mobile/Janus#Transmission_Protocol|HTTP/2]] || {{JanusFeatureStatus|ni|Proxy}} || {{JanusFeatureStatus|ni|Add-on}} || {{JanusFeatureStatus|i|Fennec}} || {{JanusFeatureStatus|i|Desktop}} || {{JanusFeatureStatus|ni|B2G}} || || [http://tools.ietf.org/html/draft-ietf-httpbis-http2-14 spec] | |||
|- | |||
| [[Mobile/Janus#Text_Compression|Text compression / gzip]] || {{JanusFeatureStatus|i|Proxy}} || {{JanusFeatureStatus|i|Add-on}} || {{JanusFeatureStatus|i|Fennec}} || {{JanusFeatureStatus|i|Desktop}} || {{JanusFeatureStatus|ni|B2G}} || 0.2 || | |||
|- | |||
| [[Mobile/Janus#Text_Compression|Text compression / xz]] || {{JanusFeatureStatus|off|Proxy}} || {{JanusFeatureStatus|ni|Add-on}} || {{JanusFeatureStatus|ni|Fennec}} || {{JanusFeatureStatus|ni|Desktop}} || {{JanusFeatureStatus|ni|B2G}} || 0.3 || {{bug|366559}} {{gh|mozilla|node-janus|13}} | |||
|- | |||
| [[Mobile/Janus#Image_Compression|Image compression / libjpeg-turbo]] || {{JanusFeatureStatus|i|Proxy}} || {{JanusFeatureStatus|i|Add-on}} || || || || 0.4 || | |||
|- | |||
| [[Mobile/Janus#Image_Compression|Image compression / mozjpeg]] || {{JanusFeatureStatus|off|Proxy}} || {{JanusFeatureStatus|i|Add-on}} || || || || 0.2 || {{Bug|500500}} {{gh|mozilla|node-janus|34}} | |||
|- | |||
| [[Mobile/Janus#Image_Compression|Image compression / pngquant]] || {{JanusFeatureStatus|i|Proxy}} || {{JanusFeatureStatus|i|Add-on}} || || || || 0.4 || | |||
|- | |||
| [[GIF to video]] || {{JanusFeatureStatus|i|Proxy}} ||{{JanusFeatureStatus|off|Add-on}} || {{JanusFeatureStatus|i|Fennec}} || {{JanusFeatureStatus|i|Desktop}} || {{JanusFeatureStatus|ni|B2G}} || 0.2 || {{gh|mozilla|node-janus|16}} | |||
|- | |||
| [[Video compression / H.264]] || {{JanusFeatureStatus|i|Proxy}} || {{JanusFeatureStatus|ni|Add-on}} || || || || 0.4 || {{gh|mozilla|node-janus|48}} {{gh|mozilla|node-janus|49}} | |||
|- | |||
| [[Adblock]] || {{JanusFeatureStatus|i|Proxy}} || {{JanusFeatureStatus|off|Add-on}} || || || || 0.2 || | |||
|- | |||
| [[Mobile/Janus#Caching|Caching]] || {{JanusFeatureStatus|off|Proxy}} ||{{JanusFeatureStatus|off|Add-on}} || || || || 0.2 || {{gh|mozilla|node-janus|42}} {{gh|mozilla|node-janus|3}} | |||
|- | |||
| [[Safe Browsing]] || {{JanusFeatureStatus|ni|Proxy}} || {{JanusFeatureStatus|ni|Add-on}} || || || || || | |||
|- | |||
| [[Dynamic compression rate ]] || {{JanusFeatureStatus|ni|Proxy}} ||{{JanusFeatureStatus|ni|Add-on}} || || || || || | |||
|- | |||
| [[Mobile/Janus#Metrics|Metrics]] || {{JanusFeatureStatus|i|Proxy}} || || || || || 0.3 || {{gh|mozilla|node-janus|45}} {{gh|mozilla|node-janus|32}} {{gh|mozilla|node-janus|30}} {{gh|mozilla|node-janus|28}} {{gh|mozilla|node-janus|24}} {{gh|mozilla|node-janus|12}} [https://github.com/mozilla/statsd-console-backend statsd-console-backend] | |||
|- | |||
| [[Mobile/Janus#Metrics|Metrics / memory and GC]] || {{JanusFeatureStatus|i|Proxy}} || || || || || 0.4 || {{gh|mozilla|node-janus|52}} | |||
|- | |||
| [[Mobile/Janus#Tests|Tests / performance]] || {{JanusFeatureStatus|i|Proxy}} || || || || || || {{gh|mozilla|node-janus|53}} | |||
|- | |||
| [[Mobile/Janus#Bug_Reports|Bug reports]] || {{JanusFeatureStatus|i|Proxy}} || {{JanusFeatureStatus|i|Add-on}} || || || || 0.3 || {{gh|mozilla|node-janus|38}} | |||
|} | |||
<!-- | |||
{{gh|mozilla|node-janus|}} | |||
{{JanusFeatureStatus|STATUS|PLATFORM}} | |||
STATUS = np | i | ni | off | |||
PLATFORM = Proxy | Desktop | Android | B2G | |||
--> | |||
=== Open Issues (suitable for contributors) === | |||
If you want to contribute to the project and don't know where to start, this list should give you an idea of what we are currently working on or planning to. | |||
Alternatively, you may also directly pick a [[Mobile/Janus#Feature|feature]] to improve or an [https://github.com/mozilla/node-janus/issues issue] to attack. | |||
{| class="wikitable" | |||
|- | |||
! Issue !! Description !! Mentors !! See also | |||
|- | |||
| HTTP/2 || Migrate to HTTP/2, adjust handling, test for regressions || snorp, esawin || {{gh|mozilla|node-janus|15}} [https://github.com/molnarg/node-http2 node-http2] | |||
|- | |||
| Add-on || Update to HTTPS PAC, fix/remove scrollbar on Linux, add quality control settings || snorp, esawin || {{gh|mozilla|node-janus|67}} [https://github.com/mozilla/janus-addon janus-addon] | |||
|- | |||
| Image worker || Fix image-worker issues, rewrite to TCP/HTTP interface, enable per-request settings || sylvain, esawin || {{gh|mozilla|janus-image-worker|2}} | |||
|} | |||
=== Transmission Protocol === | === Transmission Protocol === | ||
Line 75: | Line 153: | ||
=== Other === | === Other === | ||
Other crazy stuff we could do: | Other '''crazy''' stuff we could (technically) do: | ||
* Man-in-the-middle HTTPS traffic only for images (so they get recompressed) with user consent | * Man-in-the-middle HTTPS traffic only for images (so they get recompressed) with user consent | ||
* Convert animated GIF to H264/WebM/whatever. gfycat.com does this now with apparently good results | * Convert animated GIF to H264/WebM/whatever. gfycat.com does this now with apparently good results | ||
* Pre-Shumwayize Flash content | * Pre-Shumwayize Flash content | ||
* Automatic readability mode for some sites | * Automatic readability mode for some sites | ||
* Add support for adaptive streaming (MPEG-DASH) for servers that don't support it. Transcode to lower bitrates. | * Add support for adaptive streaming (MPEG-DASH) for servers that don't support it. Transcode to lower bitrates. | ||
** Proxy HLS sites as MPEG-DASH | ** Proxy HLS sites as MPEG-DASH | ||
Line 257: | Line 331: | ||
* [http://www.ietf.org/rfc/rfc2187.txt Application of Internet Cache Protocol (ICP)] | * [http://www.ietf.org/rfc/rfc2187.txt Application of Internet Cache Protocol (ICP)] | ||
* [http://tools.ietf.org/html/rfc2616 HTTP/1.1] | * [http://tools.ietf.org/html/rfc2616 HTTP/1.1] | ||
* [http://tools.ietf.org/html/draft-ietf-httpbis-http2- | * [http://www.chromium.org/spdy/spdy-whitepaper SPDY] | ||
* [http://tools.ietf.org/html/draft-ietf-httpbis-http2-14 HTTP/2] | |||
* [http://tools.ietf.org/id/draft-agl-tls-nextprotoneg-00.txt Transport Layer Security (TLS) Next Protocol Negotiation Extension (NPN)] | * [http://tools.ietf.org/id/draft-agl-tls-nextprotoneg-00.txt Transport Layer Security (TLS) Next Protocol Negotiation Extension (NPN)] | ||
* [http://www.chromium.org/spdy/spdy-proxy Chromium SPDY Proxy] | * [http://www.chromium.org/spdy/spdy-proxy Chromium SPDY Proxy] |