summaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md54
1 files changed, 54 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..768248a
--- /dev/null
+++ b/README.md
@@ -0,0 +1,54 @@
+![build](https://github.com/libproxy/libproxy/actions/workflows/build.yml/badge.svg)
+[![codecov](https://github.com/libproxy/libproxy/libproxy2/branch/main/graph/badge.svg?token=LS7B1CZKMY)](https://app.codecov.io/github/libproxy/libproxy)
+[![Coverity](https://github.com/libproxy/libproxy/actions/workflows/coverity.yml/badge.svg)](https://scan.coverity.com/projects/libproxy)
+
+# Libproxy
+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:
+
+- There are a variety of places to get configuration information
+- There are a variety of proxy types
+- Proxy auto-configuration (PAC) requires Javascript (which most applications don't have)
+- 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:
+
+- Given the increased use of mobile computing, network switching frequently occurs during the lifetime of an application
+- Each application is required to implement the (non-trivial) WPAD and PAC protocols, including a Javascript engine
+- It prevents a network administrator from locking down settings on a particular host or user
+- 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: 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
+- extremely small core footprint
+- minimal dependencies within libproxy core
+- only 4 functions in the stable-ish external API
+- dynamic adjustment to changing network topology
+- a standard way of dealing with proxy settings across all scenarios
+- a sublime sense of joy and accomplishment
+
+## Repology
+
+[![Arch package](https://repology.org/badge/version-for-repo/arch/libproxy.svg)](https://repology.org/project/libproxy/versions)
+[![Debian 12 package](https://repology.org/badge/version-for-repo/debian_12/libproxy.svg)](https://repology.org/project/libproxy/versions)
+[![Fedora 37 package](https://repology.org/badge/version-for-repo/fedora_37/libproxy.svg)](https://repology.org/project/libproxy/versions)
+[![Fedora Rawhide package](https://repology.org/badge/version-for-repo/fedora_rawhide/libproxy.svg)](https://repology.org/project/libproxy/versions)
+[![FreeBSD port](https://repology.org/badge/version-for-repo/freebsd/libproxy.svg)](https://repology.org/project/libproxy/versions)
+[![Gentoo package](https://repology.org/badge/version-for-repo/gentoo/libproxy.svg)](https://repology.org/project/libproxy/versions)
+[![Homebrew package](https://repology.org/badge/version-for-repo/homebrew/libproxy.svg)](https://repology.org/project/libproxy/versions)
+[![Manjaro Stable package](https://repology.org/badge/version-for-repo/manjaro_stable/libproxy.svg)](https://repology.org/project/libproxy/versions)
+[![MSYS2 mingw package](https://repology.org/badge/version-for-repo/msys2_mingw/libproxy.svg)](https://repology.org/project/libproxy/versions)
+[![openSUSE Leap 15.5 package](https://repology.org/badge/version-for-repo/opensuse_leap_15_5/libproxy.svg)](https://repology.org/project/libproxy/versions)
+[![openSUSE Tumbleweed package](https://repology.org/badge/version-for-repo/opensuse_tumbleweed/libproxy.svg)](https://repology.org/project/libproxy/versions)
+[![Ubuntu 23.04 package](https://repology.org/badge/version-for-repo/ubuntu_23_04/libproxy.svg)](https://repology.org/project/libproxy/versions)
+