|
| 1 | +<script> |
| 2 | +// Imperfect, but easier to fit in with the existing docs build. |
| 3 | +// Hyperlinks should point directly to the "fund." subdomain, but this'll |
| 4 | +// handle the nav bar links without requiring any docs build changes for the moment. |
| 5 | +if (window.location.hostname == "www.django-rest-framework.org") { |
| 6 | + window.location.replace("https://fund.django-rest-framework.org/topics/funding/"); |
| 7 | +} |
| 8 | +</script> |
| 9 | + |
| 10 | +<style> |
| 11 | +.chart { |
| 12 | + background-color: #e3e3e3; |
| 13 | + background: -webkit-linear-gradient(top, #fff 0, #e3e3e3 100%); |
| 14 | + border: 1px solid #E6E6E6; |
| 15 | + border-radius: 5px; |
| 16 | + box-shadow: 0px 0px 2px 0px rgba(181, 181, 181, 0.3); |
| 17 | + padding: 40px 0px 5px; |
| 18 | + position: relative; |
| 19 | + text-align: center; |
| 20 | + width: 97%; |
| 21 | + min-height: 255px; |
| 22 | + position: relative; |
| 23 | + top: 37px; |
| 24 | + margin-bottom: 20px} |
| 25 | +.quantity { |
| 26 | + text-align: center} |
| 27 | +.dollar { |
| 28 | + font-size: 19px; |
| 29 | + position: relative; |
| 30 | + top: -18px; |
| 31 | +} |
| 32 | +.price { |
| 33 | + font-size: 49px;} |
| 34 | +.period { |
| 35 | + font-size: 17px; |
| 36 | + position: relative; |
| 37 | + top: -8px; |
| 38 | + margin-left: 4px;} |
| 39 | +.plan-name { |
| 40 | + text-align: center; |
| 41 | + font-size: 20px; |
| 42 | + font-weight: 400; |
| 43 | + color: #777; |
| 44 | + border-bottom: 1px solid #d5d5d5; |
| 45 | + padding-bottom: 15px; |
| 46 | + width: 90%; |
| 47 | + margin: 0 auto; |
| 48 | + margin-top: 8px;} |
| 49 | +.specs { |
| 50 | + margin-top: 20px;} |
| 51 | +.specs.startup { |
| 52 | + margin-bottom: 93px} |
| 53 | +.spec { |
| 54 | + font-size: 15px; |
| 55 | + color: #474747; |
| 56 | + text-align: center; |
| 57 | + font-weight: 300; |
| 58 | + margin-bottom: 13px;} |
| 59 | +.variable { |
| 60 | + color: #1FBEE7; |
| 61 | + font-weight: 400;} |
| 62 | +form.signup { |
| 63 | + margin-top: 35px} |
| 64 | +.clear-promo { |
| 65 | + padding-top: 30px} |
| 66 | +#main-content h1:first-of-type { |
| 67 | + margin: 0 0 50px; |
| 68 | + font-size: 60px; |
| 69 | + font-weight: 200; |
| 70 | + text-align: center |
| 71 | +} |
| 72 | +#main-content { |
| 73 | + padding-top: 10px; line-height: 23px |
| 74 | +} |
| 75 | +#main-content li { |
| 76 | + line-height: 23px |
| 77 | +} |
| 78 | +</style> |
| 79 | + |
| 80 | +# Funding |
| 81 | + |
| 82 | +If you use REST framework commercially we strongly encourage you to invest in its continued development by signing up for a paid plan. |
| 83 | + |
| 84 | +**We believe that collaboratively funded software can offer outstanding returns on investment, by allowing users and clients to collectively share the cost of development.** |
| 85 | + |
| 86 | +Signing up for a paid plan will: |
| 87 | + |
| 88 | +* Directly contribute to faster releases, more features and higher quality software. |
| 89 | +* Allow more time to be invested in documentation, issue triage and community support. |
| 90 | +* Safeguard the future development of REST framework. |
| 91 | + |
| 92 | +REST framework will always be open source and permissively licensed, but we firmly believe it is in the commercial best-interest for users of the project to fund its ongoing development. |
| 93 | + |
| 94 | +--- |
| 95 | + |
| 96 | +## Making the business case |
| 97 | + |
| 98 | +Our successful Kickstarter campaign demonstrates the cost-reward ratio of shared development funding. |
| 99 | + |
| 100 | +With *typical corporate fundings of just £100-£1000 per organization* we successfully delivered: |
| 101 | + |
| 102 | +* The comprehensive 3.0 serializer redesign. |
| 103 | +* Substantial improvements to the Browsable API. |
| 104 | +* The admin interface. |
| 105 | +* A new pagination API including offset/limit and cursor pagination implementations, plus on-page controls. |
| 106 | +* A versioning API, including URL-based and header-based versioning schemes. |
| 107 | +* Support for customizable exception handling. |
| 108 | +* Support for Django's PostgreSQL HStoreField, ArrayField and JSONField. |
| 109 | +* Templated HTML form support, including HTML forms with nested list and objects. |
| 110 | +* Internationalization support for API responses, currently with 27 languages. |
| 111 | +* The metadata APIs for handling `OPTIONS` requests and schema endpoints. |
| 112 | +* Numerous minor improvements and better quality throughout the codebase. |
| 113 | +* Ongoing triage and community support, closing over 1600 tickets. |
| 114 | + |
| 115 | +This incredible level of return on investment is *only possible through collaboratively funded models*, which is why we believe that supporting our paid plans is in everyone's best interest. |
| 116 | + |
| 117 | +--- |
| 118 | + |
| 119 | +## Individual plan |
| 120 | + |
| 121 | +This subscription is recommended for freelancers and other individuals with an interest in seeing REST framework continue to improve. |
| 122 | + |
| 123 | +If you are using REST framework as an full-time employee, consider recommending that your company takes out a [corporate plan](#corporate-plans). |
| 124 | + |
| 125 | +<div class="pricing"> |
| 126 | + <div class="span4"> |
| 127 | + <div class="chart first"> |
| 128 | + <div class="quantity"> |
| 129 | + <span class="dollar">$</span> |
| 130 | + <span class="price">15</span> |
| 131 | + <span class="period">/month</span> |
| 132 | + </div> |
| 133 | + <div class="plan-name">Individual</div> |
| 134 | + <div class="specs"> |
| 135 | + <div class="spec"> |
| 136 | + Support ongoing development |
| 137 | + </div> |
| 138 | + <div class="spec"> |
| 139 | + Credited on the site |
| 140 | + </div> |
| 141 | + </div> |
| 142 | + <form class="signup" action="/signup/individual/" method="POST"> |
| 143 | + <script |
| 144 | + src="https://checkout.stripe.com/checkout.js" class="stripe-button" |
| 145 | + data-key="{{ stripe_public }}" |
| 146 | + data-amount="1500" |
| 147 | + data-name="Django REST framework" |
| 148 | + data-description="Individual" |
| 149 | + data-currency="usd" |
| 150 | + data-allow-remember-me=false |
| 151 | + data-label='Sign up' |
| 152 | + data-panel-label='Sign up - {% verbatim %}{{amount}}{% endverbatim %}/mo'> |
| 153 | + </script> |
| 154 | +</form> |
| 155 | + </div> |
| 156 | + </div> |
| 157 | + </div> |
| 158 | +<div style="clear: both; padding-top: 50px"></div> |
| 159 | + |
| 160 | +*Billing is monthly and you can cancel at any time.* |
| 161 | + |
| 162 | +--- |
| 163 | + |
| 164 | +## Corporate plans |
| 165 | + |
| 166 | +These subscriptions are recommended for companies and organizations using REST framework either publicly or privately. |
| 167 | + |
| 168 | +In exchange for funding you'll also receive advertising space on our site, allowing you to **promote your company or product to many tens of thousands of developers worldwide**. |
| 169 | + |
| 170 | +Our professional and premium plans also include **priority support**. At any time your engineers can escalate an issue or discussion group thread, and we'll ensure it gets a guaranteed response within the next working day. |
| 171 | + |
| 172 | +<div class="pricing"> |
| 173 | + <div class="span4"> |
| 174 | + <div class="chart first"> |
| 175 | + <div class="quantity"> |
| 176 | + <span class="dollar">$</span> |
| 177 | + <span class="price">50</span> |
| 178 | + <span class="period">/month</span> |
| 179 | + </div> |
| 180 | + <div class="plan-name">Basic</div> |
| 181 | + <div class="specs startup"> |
| 182 | + <div class="spec"> |
| 183 | + Support ongoing development |
| 184 | + </div> |
| 185 | + <div class="spec"> |
| 186 | + <span class="variable">Funding page</span> ad placement |
| 187 | + </div> |
| 188 | + </div> |
| 189 | + <form class="signup" action="/signup/startup/" method="POST"> |
| 190 | + <script |
| 191 | + src="https://checkout.stripe.com/checkout.js" class="stripe-button" |
| 192 | + data-key="{{ stripe_public }}" |
| 193 | + data-amount="5000" |
| 194 | + data-name="Django REST framework" |
| 195 | + data-description="Basic" |
| 196 | + data-currency="usd" |
| 197 | + data-allow-remember-me=false |
| 198 | + data-label='Sign up' |
| 199 | + data-panel-label='Sign up - {% verbatim %}{{amount}}{% endverbatim %}/mo'> |
| 200 | + </script> |
| 201 | +</form> |
| 202 | + </div> |
| 203 | + </div> |
| 204 | + <div class="span4"> |
| 205 | + <div class="chart"> |
| 206 | + <div class="quantity"> |
| 207 | + <span class="dollar">$</span> |
| 208 | + <span class="price">250</span> |
| 209 | + <span class="period">/month</span> |
| 210 | + </div> |
| 211 | + <div class="plan-name">Professional</div> |
| 212 | + <div class="specs"> |
| 213 | + <div class="spec"> |
| 214 | + Add a <span class="variable">half day per month</span> development time to the project |
| 215 | + </div> |
| 216 | + <div class="spec"> |
| 217 | + <span class="variable">Homepage</span> ad placement |
| 218 | + </div> |
| 219 | + <div class="spec"> |
| 220 | + <span class="variable">Priority support</span> for your engineers |
| 221 | + </div> |
| 222 | + </div> |
| 223 | + <form class="signup" action="/signup/professional/" method="POST"> |
| 224 | + <script |
| 225 | + src="https://checkout.stripe.com/checkout.js" class="stripe-button" |
| 226 | + data-key="{{ stripe_public }}" |
| 227 | + data-amount="25000" |
| 228 | + data-name="Django REST framework" |
| 229 | + data-description="Professional" |
| 230 | + data-currency="usd" |
| 231 | + data-allow-remember-me=false |
| 232 | + data-label='Sign up' |
| 233 | + data-panel-label='Sign up - {% verbatim %}{{amount}}{% endverbatim %}/mo'> |
| 234 | + </script> |
| 235 | +</form> |
| 236 | + </div> |
| 237 | + </div> |
| 238 | + <div class="span4"> |
| 239 | + <div class="chart last"> |
| 240 | + <div class="quantity"> |
| 241 | + <span class="dollar">$</span> |
| 242 | + <span class="price">500</span> |
| 243 | + <span class="period">/month</span> |
| 244 | + </div> |
| 245 | + <div class="plan-name">Premium</div> |
| 246 | + <div class="specs"> |
| 247 | + <div class="spec"> |
| 248 | + Add <span class="variable">one full day per month</span> development time to the project |
| 249 | + </div> |
| 250 | + <div class="spec"> |
| 251 | + <span class="variable">Full site</span> ad placement |
| 252 | + </div> |
| 253 | + <div class="spec"> |
| 254 | + <span class="variable">Priority support</span> for your engineers |
| 255 | + </div> |
| 256 | + </div> |
| 257 | + <form class="signup" action="/signup/premium/" method="POST"> |
| 258 | + <script |
| 259 | + src="https://checkout.stripe.com/checkout.js" class="stripe-button" |
| 260 | + data-key="{{ stripe_public }}" |
| 261 | + data-amount="50000" |
| 262 | + data-name="Django REST framework" |
| 263 | + data-description="Premium" |
| 264 | + data-currency="usd" |
| 265 | + data-allow-remember-me=false |
| 266 | + data-label='Sign up' |
| 267 | + data-panel-label='Sign up - {% verbatim %}{{amount}}{% endverbatim %}/mo'> |
| 268 | + </script> |
| 269 | +</form> |
| 270 | + </div> |
| 271 | + </div> |
| 272 | + </div> |
| 273 | + |
| 274 | +<div style="clear: both; padding-top: 50px"></div> |
| 275 | + |
| 276 | +*Billing is monthly and you can cancel at any time.* |
| 277 | + |
| 278 | +Once you've signed up we'll contact you via email and arrange your ad placements on the site. |
| 279 | + |
| 280 | +For further enquires please contact < a href= mailto:[email protected]> [email protected]</ a>. |
| 281 | + |
| 282 | +--- |
| 283 | + |
| 284 | +## Roadmap |
| 285 | + |
| 286 | +Although we're incredibly proud of REST framework in its current state we believe there is still huge scope for improvement. What we're aiming for here is a *highly polished, rock solid product*. This needs to backed up with impeccable documentation and a great third party ecosystem. |
| 287 | + |
| 288 | +The roadmap below is a broad indication of just some of the ongoing and future work we believe is important to REST framework. |
| 289 | + |
| 290 | +* Increasing our "bus factor" through documented organizational process & safeguards. |
| 291 | +* More time towards testing and hardening releases, with only gradual, well-documented deprecations. |
| 292 | +* A formal policy on security backports for non-current releases. |
| 293 | +* Continuing triage & community support. |
| 294 | +* Improved project documentation, including versioned & internationalized docs. |
| 295 | +* Improved third party package visibility. |
| 296 | +* Refining the admin interface, ensuring it has a fully customizable API and making it suitable as end-user facing application. |
| 297 | +* Cleaning up internal complexities including the `BrowsableAPIRenderer` and `Request` object. |
| 298 | +* Support for alternative backends such as SQLAlchemy. |
| 299 | +* Support for non-database backed services. |
| 300 | +* HTTP Caching API & support for conditional database lookups. |
| 301 | +* Benchmarking and performance improvements. |
| 302 | +* In depth documentation on advanced usage and best practices. |
| 303 | +* Documentation & support for integration with realtime systems. |
| 304 | +* Hypermedia support and client libraries. |
| 305 | +* Support for JSON schema as endpoints or `OPTIONS` responses. |
| 306 | +* API metric tools. |
| 307 | +* Debug & logging tools. |
| 308 | +* Third party GraphQL support. |
| 309 | + |
| 310 | +By taking out a paid plan you'll be directly contributing towards making these features happen. |
|
0 commit comments