Skip to content

Commit af5474f

Browse files
committed
Merge pull request #3539 from tomchristie/funding
Funding
2 parents 84e9013 + eeff5a1 commit af5474f

File tree

3 files changed

+313
-0
lines changed

3 files changed

+313
-0
lines changed

docs/index.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,7 @@ General guides to using REST framework.
204204
* [3.2 Announcement][3.2-announcement]
205205
* [3.3 Announcement][3.3-announcement]
206206
* [Kickstarter Announcement][kickstarter-announcement]
207+
* [Funding][funding]
207208
* [Release Notes][release-notes]
208209

209210
## Development
@@ -319,6 +320,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
319320
[3.2-announcement]: topics/3.2-announcement.md
320321
[3.3-announcement]: topics/3.3-announcement.md
321322
[kickstarter-announcement]: topics/kickstarter-announcement.md
323+
[funding]: topics/funding.md
322324
[release-notes]: topics/release-notes.md
323325

324326
[tox]: http://testrun.org/tox/latest/

docs/topics/funding.md

Lines changed: 310 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,310 @@
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&nbsp;improve.
122+
123+
If you are using REST framework as an full-time employee, consider recommending that your company takes out a [corporate&nbsp;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&nbsp;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&nbsp;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.

mkdocs.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,4 +59,5 @@ pages:
5959
- '3.2 Announcement': 'topics/3.2-announcement.md'
6060
- '3.3 Announcement': 'topics/3.3-announcement.md'
6161
- 'Kickstarter Announcement': 'topics/kickstarter-announcement.md'
62+
- 'Funding': 'topics/funding.md'
6263
- 'Release Notes': 'topics/release-notes.md'

0 commit comments

Comments
 (0)