diff options
Diffstat (limited to 'ProjectHome.md')
-rw-r--r-- | ProjectHome.md | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/ProjectHome.md b/ProjectHome.md new file mode 100644 index 0000000..2e85eaf --- /dev/null +++ b/ProjectHome.md @@ -0,0 +1,43 @@ +libproxy is a library that provides automatic proxy configuration management. + +# The Problem # + +**Problem statement**: _Applications suck at correctly and consistently supporting proxy configuration._ + +Proxy configuration is problematic for a number of reasons: + 1. There are a variety of places to get configuration information + 1. There are a variety of proxy types + 1. Proxy auto-configuration (PAC) requires Javascript (which most applications don't have) + 1. Automatically determining PAC location requires an implementation of the WPAD protocol + +These issues make programming with support for proxies _hard_. Application developers only want to answer the question: **Given a network resource, how do I reach it?** +Because this is their concern, most applications just give up and try to read the proxy from an environment variable. This is problematic because: + 1. Given the increased use of mobile computing, network switching frequently occurs during the lifetime of an application + 1. Each application is required to implement the (non-trivial) WPAD and PAC protocols, including a Javascript engine + 1. It prevents a network administrator from locking down settings on a particular host or user + 1. In most cases, the environmental variable is almost never correct by default + +# The Solution # +libproxy exists to answer the question: **Given a network resource, how do I reach it?** It handles all the details, enabling you to get back to programming. + +GNOME? KDE? Command line? WPAD? PAC? Network changed? It doesn't matter! Just [ask libproxy what proxy to use](HowTo.md): you get simple code and your users get correct, consistant behavior and broad infrastructure compatibility. + +# Why use libproxy? # +libproxy offers the following features: + * support for all major platforms: Windows, Mac and Linux/UNIX (see upcoming 0.4 release) + * extremely small core footprint + * no external dependencies within libproxy core (libproxy plugins may have dependencies) + * only 3 functions in the stable-ish external API (1.0 will offer full stability) + * dynamic adjustment to changing network topology + * a standard way of dealing with proxy settings across all scenarios + * a sublime sense of joy and accomplishment + +# Frequently Asked Questions # + * [What features does libproxy currently provide? Future plans?](Features.md) + * [Does libproxy support proxy authentication?](Features.md) + * [Which plugins get used in which order?](Features.md) + * [How do I use libproxy in my application?](HowTo.md) + * [What programs currently use libproxy?](Applications.md) + * [How can I help?](GetInvolved.md) + * [How can I donate?](https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business=nathaniel%40natemccallum%2ecom&item_name=libproxy&no_shipping=1&cn=Thanks&tax=0¤cy_code=USD&lc=US&bn=PP%2dDonationsBF&charset=UTF%2d8) + * [How can I contact you?](Contact.md)
\ No newline at end of file |