Mobile/Janus: Difference between revisions

4,806 bytes added ,  15 January 2015
 
(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 depends on are tracked here
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|500500}} - (JPEG-XR) Add support for JPEG-XR/HD Photo
* {{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
* Ad blocking
** Only obnoxious ads?
** Replace with our own?
** Only block ones that track?
* 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-13 HTTP/2]
* [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]
Confirmed users
438

edits