
use, what their function is, and urls for library documentation * adds a forward chapter which talks about the documentation * adds an installation stub * adds a software stack chapter that covers what libraries are in * adds a design decisions chapter which covers why we chose the libraries and architecture
128 lines
2.2 KiB
ReStructuredText
128 lines
2.2 KiB
ReStructuredText
=======
|
|
Stack
|
|
=======
|
|
|
|
The software stack for this project might change over time, but this
|
|
is what we're thinking right now.
|
|
|
|
There's some explanation of design decisions in the
|
|
:ref:`design-decisions-chapter`.
|
|
|
|
|
|
Python
|
|
======
|
|
|
|
* http://python.org/
|
|
|
|
The core team does a lot of work in Python and it's the language we're
|
|
most likely to do a project like this in.
|
|
|
|
|
|
MongoDB
|
|
=======
|
|
|
|
* http://www.mongodb.org/
|
|
|
|
A "document database". Because it's extremely flexible and scales up
|
|
well, but I guess not down well.
|
|
|
|
|
|
MongoKit
|
|
========
|
|
|
|
* http://namlook.github.com/mongokit/
|
|
|
|
A lightweight ORM for mongodb. Helps us define our structures better,
|
|
does schema validation, schema evolution, and helps make things more
|
|
fun and pythonic.
|
|
|
|
|
|
Jinja2
|
|
======
|
|
|
|
* http://jinja.pocoo.org/docs/
|
|
|
|
For templating. Pretty much django templates++ but allows us to pass
|
|
arguments into method calls instead of writing custom tags.
|
|
|
|
|
|
WTForms
|
|
=======
|
|
|
|
* http://wtforms.simplecodes.com/
|
|
|
|
For form handling, validation, abstraction. Almost just like Django's
|
|
templates.
|
|
|
|
|
|
WebOb
|
|
=====
|
|
|
|
* http://pythonpaste.org/webob/
|
|
|
|
Gives nice request/response objects (also somewhat Django-ish).
|
|
|
|
|
|
Paste Deploy and Paste Script
|
|
=============================
|
|
|
|
* http://pythonpaste.org/deploy/
|
|
* http://pythonpaste.org/script/
|
|
|
|
This will be the default way of configuring and launching the
|
|
application. Since GNU MediaGoblin will be fairly WSGI minimalist though,
|
|
you can probably use other ways to launch it, though this will be the
|
|
default.
|
|
|
|
|
|
Routes
|
|
======
|
|
|
|
* http://routes.groovie.org/
|
|
|
|
For URL Routing. It works well enough.
|
|
|
|
|
|
JQuery
|
|
======
|
|
|
|
* http://jquery.com/
|
|
|
|
For all sorts of things on the JavaScript end of things, for all sorts
|
|
of reasons.
|
|
|
|
|
|
Beaker
|
|
======
|
|
|
|
* http://beaker.groovie.org/
|
|
|
|
For sessions, because that seems like it's generally considered the
|
|
way to go I guess.
|
|
|
|
|
|
Nose
|
|
====
|
|
|
|
* http://somethingaboutorange.com/mrl/projects/nose/1.0.0/
|
|
|
|
For unit tests because it makes testing a bit nicer.
|
|
|
|
|
|
Celery
|
|
======
|
|
|
|
* http://celeryproject.org/
|
|
|
|
For task queueing (resizing images, encoding video, ...).
|
|
|
|
|
|
RabbitMQ
|
|
========
|
|
|
|
* http://www.rabbitmq.com/
|
|
|
|
For sending tasks to celery, because I guess that's what most people
|
|
do. Might be optional, might also let people use MongoDB for this if
|
|
they want.
|