get_unique_filepath not get_unique_filename!
[mediagoblin.git] / docs / softwarestack.rst
CommitLineData
8736b05d
WKG
1=======
2 Stack
3=======
4
5The software stack for this project might change over time, but this
6is what we're thinking right now.
7
8There's some explanation of design decisions in the
9:ref:`design-decisions-chapter`.
10
11
12Python
13======
14
15* http://python.org/
16
17The core team does a lot of work in Python and it's the language we're
18most likely to do a project like this in.
19
20
21MongoDB
22=======
23
24* http://www.mongodb.org/
25
26A "document database". Because it's extremely flexible and scales up
27well, but I guess not down well.
28
29
30MongoKit
31========
32
33* http://namlook.github.com/mongokit/
34
35A lightweight ORM for mongodb. Helps us define our structures better,
36does schema validation, schema evolution, and helps make things more
37fun and pythonic.
38
39
40Jinja2
41======
42
43* http://jinja.pocoo.org/docs/
44
45For templating. Pretty much django templates++ but allows us to pass
46arguments into method calls instead of writing custom tags.
47
48
49WTForms
50=======
51
52* http://wtforms.simplecodes.com/
53
54For form handling, validation, abstraction. Almost just like Django's
55templates.
56
57
58WebOb
59=====
60
61* http://pythonpaste.org/webob/
62
63Gives nice request/response objects (also somewhat Django-ish).
64
65
66Paste Deploy and Paste Script
67=============================
68
69* http://pythonpaste.org/deploy/
70* http://pythonpaste.org/script/
71
72This will be the default way of configuring and launching the
73application. Since GNU MediaGoblin will be fairly WSGI minimalist though,
74you can probably use other ways to launch it, though this will be the
75default.
76
77
78Routes
79======
80
81* http://routes.groovie.org/
82
83For URL Routing. It works well enough.
84
85
86JQuery
87======
88
89* http://jquery.com/
90
91For all sorts of things on the JavaScript end of things, for all sorts
92of reasons.
93
94
95Beaker
96======
97
98* http://beaker.groovie.org/
99
100For sessions, because that seems like it's generally considered the
101way to go I guess.
102
103
104Nose
105====
106
107* http://somethingaboutorange.com/mrl/projects/nose/1.0.0/
108
109For unit tests because it makes testing a bit nicer.
110
111
112Celery
113======
114
115* http://celeryproject.org/
116
117For task queueing (resizing images, encoding video, ...).
118
119
120RabbitMQ
121========
122
123* http://www.rabbitmq.com/
124
125For sending tasks to celery, because I guess that's what most people
126do. Might be optional, might also let people use MongoDB for this if
127they want.