libproxy as external dependency



Hi,

I'd like to propose libproxy (LGPL 2.1+; http://code.google.com/p/libproxy/) as a blessed external dependency for GNOME 2.26. libproxy is currently used by vlc and neon and libsoup and webkit are considering adopting it.

libproxy is a library for handling all aspects of proxy configuration and evaluation. Currently, GNOME stores proxy configuration in gconf and expects each application to read settings from there and evaluate them in some manner (i.e. exceptions, WPAD, PAC). This doesn't really scale because things like exceptions, WPAD and PAC are non-trivial, which leads to inconsistent and impartial implementations.

For instance, if a user specifies to use "auto-configure" and does not specify a PAC file, auto-configure does not work for any GNOME application (that I know of). Even if a PAC file is specified, only those applications that provide javascript will actually use it.

Applications developers really only have one question when it comes to proxies: Given a network resource, how do I reach it?

libproxy answers this question in a simple, consistent, performant and spec-compliant way. There are currently three functions in the (stable) external API. Two of these functions instantantiate/destantiate the a ProxyFactory object. This object provides caching for WPAD/PAC, allowing for increased speed when dealing with these mechanisms. The third function is the get_proxies(char *url) function. Just call the function for each url that you want to fetch and you are guaranteed a spec compliant proxy configuration evaluation. Version 0.3, to be released before GNOME 2.26, will also contain two more functions for getting and setting proxy credentials.

Currently we support using mozjs or webkit (javascriptcore), detectable at runtime. We also can determine proxy information on a per-session basis. In other words, if you run a GNOME app in KDE (and it uses libproxy) it will respect KDE's proxy settings (and vice versa).

libproxy has no external dependencies in its core. Support for GNOME, KDE, NetworkManager, WebKit, Firefox/mozjs, etc are implemented via plugins.

For more detailed information, please see the website listed above. I am also glad to answer any questions you might have.

Nathaniel


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]