|
| 1 | +# Marketing Plan for ruby-proxy-headers (2026 Refresh) |
| 2 | + |
| 3 | +This document restores and updates the project marketing plan with current Ruby ecosystem priorities, newer library positioning, and additional growth ideas. |
| 4 | + |
| 5 | +## Positioning |
| 6 | + |
| 7 | +`ruby-proxy-headers` helps Ruby teams send and read custom proxy headers during HTTPS `CONNECT` tunneling, with practical support for: |
| 8 | + |
| 9 | +- `Net::HTTP` (core patch/integration) |
| 10 | +- `Faraday` (via net-http adapter path) |
| 11 | +- `HTTParty` (via Net::HTTP adapter) |
| 12 | +- `Excon` (send-side CONNECT headers; response-header caveat documented) |
| 13 | + |
| 14 | +Primary user segments: |
| 15 | + |
| 16 | +1. Web scraping teams that need geotargeting and sticky sessions. |
| 17 | +2. API integrators using managed proxies in Ruby apps. |
| 18 | +3. Platform/tooling engineers building shared HTTP clients in Rails services. |
| 19 | + |
| 20 | +## Ecosystem and "Newer Libraries" Angle |
| 21 | + |
| 22 | +Use compatibility language that matches modern Ruby stacks: |
| 23 | + |
| 24 | +- Ruby 3.x-first messaging (especially 3.1-3.3 usage in CI/docs when possible). |
| 25 | +- Faraday 2.x usage examples (most teams are now on 2.x). |
| 26 | +- HTTParty recent usage patterns with explicit proxy options. |
| 27 | +- Net::HTTP as the baseline for any library that delegates to it. |
| 28 | + |
| 29 | +Keep the messaging accurate: this project should market implemented integrations clearly and avoid claiming unsupported adapters until shipped. |
| 30 | + |
| 31 | +## Core Messaging Pillars |
| 32 | + |
| 33 | +1. **Control proxy routing at CONNECT time** |
| 34 | + Set country/session/IP directives via proxy headers. |
| 35 | +2. **Observe what proxy assigned** |
| 36 | + Capture proxy CONNECT response headers for debugging and sticky-session workflows. |
| 37 | +3. **Works with mainstream Ruby HTTP workflows** |
| 38 | + Net::HTTP, Faraday, HTTParty, and Excon send-side support. |
| 39 | +4. **Practical, production-oriented docs** |
| 40 | + Copy/paste examples, troubleshooting steps, and live integration tests. |
| 41 | + |
| 42 | +## Distribution Channels |
| 43 | + |
| 44 | +## 1) Package and Registry Presence |
| 45 | + |
| 46 | +- Publish and maintain on RubyGems (`ruby_proxy_headers`). |
| 47 | +- Ensure gem metadata is complete: homepage, source code URI, changelog URI, bug tracker URI. |
| 48 | +- Keep release cadence visible with changelog updates and GitHub releases. |
| 49 | + |
| 50 | +## 2) GitHub Discoverability |
| 51 | + |
| 52 | +- Repository topics: |
| 53 | + - `ruby`, `proxy`, `https`, `connect`, `faraday`, `httparty`, `net-http`, `web-scraping` |
| 54 | +- Repository description should include: "custom proxy headers", "HTTPS CONNECT", and supported libraries. |
| 55 | +- Add issue templates for: |
| 56 | + - New integration request |
| 57 | + - Proxy compatibility report |
| 58 | + - Bug report with minimal reproducible example |
| 59 | + |
| 60 | +## 3) Documentation Footprint |
| 61 | + |
| 62 | +- Keep README short and task-oriented; move detail to `docs/`. |
| 63 | +- Add/refresh: |
| 64 | + - Compatibility matrix by Ruby version and library family. |
| 65 | + - "Choose your integration" page for Net::HTTP vs Faraday vs HTTParty vs Excon. |
| 66 | + - Troubleshooting page for CONNECT header visibility limitations. |
| 67 | + |
| 68 | +## 4) Community Placement |
| 69 | + |
| 70 | +- Submit to curated lists: |
| 71 | + - Awesome Ruby (HTTP/tooling sections) |
| 72 | + - Awesome Web Scraping (Ruby networking/proxy sections) |
| 73 | +- Share launch/update posts in: |
| 74 | + - Ruby subreddit |
| 75 | + - Web scraping communities |
| 76 | + - Ruby Discord/Slack groups |
| 77 | + |
| 78 | +## 5) Maintainer and Partner Outreach |
| 79 | + |
| 80 | +- Open documentation PRs/issues on related libraries where appropriate. |
| 81 | +- Reach out to proxy providers (including ProxyMesh ecosystem references) for potential "community integrations" listing. |
| 82 | +- Cross-link with sibling repos: |
| 83 | + - `python-proxy-headers` |
| 84 | + - `javascript-proxy-headers` |
| 85 | + - `proxy-examples` |
| 86 | + |
| 87 | +## New Growth Ideas (2026) |
| 88 | + |
| 89 | +## 1) "Recipes" Content Series |
| 90 | + |
| 91 | +Create short practical recipes and publish in repo docs + blog: |
| 92 | + |
| 93 | +- "Rotate country per request in Faraday" |
| 94 | +- "Sticky IP sessions with HTTParty" |
| 95 | +- "Debug CONNECT handshake in Net::HTTP" |
| 96 | +- "Excon send-only CONNECT headers: what to expect" |
| 97 | + |
| 98 | +## 2) CI-Verified Example Matrix |
| 99 | + |
| 100 | +Add tiny runnable examples per integration with CI smoke checks. |
| 101 | +Marketing value: "all examples are tested on every push." |
| 102 | + |
| 103 | +## 3) Migration Guides |
| 104 | + |
| 105 | +Publish "from ad-hoc proxy monkey patch to ruby-proxy-headers" guide: |
| 106 | + |
| 107 | +- Before/after snippets |
| 108 | +- risk reduction talking points |
| 109 | +- observability improvements |
| 110 | + |
| 111 | +## 4) Benchmark + Reliability Notes |
| 112 | + |
| 113 | +Provide lightweight benchmark docs (not hype): |
| 114 | + |
| 115 | +- baseline Net::HTTP vs patched path overhead |
| 116 | +- expected overhead statements with reproducible script |
| 117 | + |
| 118 | +## 5) AI/LLM Discovery Optimization |
| 119 | + |
| 120 | +Many developers now ask coding assistants first. |
| 121 | +Improve machine-readable discoverability: |
| 122 | + |
| 123 | +- FAQ section with direct Q/A phrasing. |
| 124 | +- "How do I send CONNECT headers in Ruby?" exact-match wording in README/docs. |
| 125 | +- Keep examples minimal and copy/paste ready. |
| 126 | + |
| 127 | +## 6) Integration Request Funnel |
| 128 | + |
| 129 | +Add a public roadmap issue for new adapters and let users vote with reactions. |
| 130 | +This converts interest into visible demand signals and prioritization data. |
| 131 | + |
| 132 | +## 90-Day Execution Plan |
| 133 | + |
| 134 | +### Days 1-15 (Foundation) |
| 135 | + |
| 136 | +- Restore and update marketing plan (this document). |
| 137 | +- Refresh README positioning for current supported integrations. |
| 138 | +- Confirm gem metadata and repository topics. |
| 139 | +- Prepare 2 recipe docs with runnable examples. |
| 140 | + |
| 141 | +### Days 16-45 (Visibility) |
| 142 | + |
| 143 | +- Publish gem update + GitHub release notes. |
| 144 | +- Submit 2-3 awesome-list/documentation PRs. |
| 145 | +- Publish one technical post (CONNECT headers in Ruby, practical guide). |
| 146 | +- Share to Ruby/web-scraping communities. |
| 147 | + |
| 148 | +### Days 46-90 (Compounding) |
| 149 | + |
| 150 | +- Add CI-verified example matrix badge/workflow. |
| 151 | +- Publish migration guide and troubleshooting deep dive. |
| 152 | +- Launch integration-request roadmap issue. |
| 153 | +- Track inbound issues/stars/download trend and adjust messaging. |
| 154 | + |
| 155 | +## KPIs and Targets |
| 156 | + |
| 157 | +Track monthly: |
| 158 | + |
| 159 | +- RubyGems downloads (total + monthly delta) |
| 160 | +- GitHub stars/forks/watchers |
| 161 | +- Docs page views (README + docs pages) |
| 162 | +- Referral sources (awesome lists, social, direct) |
| 163 | +- Community conversion: |
| 164 | + - issue reports from new users |
| 165 | + - successful integration confirmations |
| 166 | + |
| 167 | +Suggested 6-month directional goals: |
| 168 | + |
| 169 | +- 5k+ cumulative downloads |
| 170 | +- 100+ GitHub stars |
| 171 | +- 3-5 meaningful external references (listings, docs links, articles) |
| 172 | + |
| 173 | +## Immediate Action Checklist |
| 174 | + |
| 175 | +Actions that can be done directly in repo/GitHub: |
| 176 | + |
| 177 | +1. Keep `MARKETING_PLAN.md` current each release cycle. |
| 178 | +2. Add or verify repository topics and concise description. |
| 179 | +3. Create docs pages for compatibility matrix and recipes. |
| 180 | +4. Add issue templates for integration requests and compatibility reports. |
| 181 | +5. Publish release notes that mention supported libraries and caveats. |
| 182 | + |
| 183 | +Human-led actions: |
| 184 | + |
| 185 | +1. Community posting and engagement. |
| 186 | +2. Maintainer outreach conversations. |
| 187 | +3. Blog/newsletter placements. |
| 188 | + |
| 189 | +## Suggested Outreach Blurb |
| 190 | + |
| 191 | +Use this short form for PR descriptions, posts, or issues: |
| 192 | + |
| 193 | +> ruby-proxy-headers adds practical support for sending and reading custom proxy headers during HTTPS CONNECT in Ruby workflows (Net::HTTP, Faraday, HTTParty, Excon send-side). Useful for geotargeting, sticky sessions, and proxy observability with providers like ProxyMesh. |
| 194 | +
|
0 commit comments