diff options
Diffstat (limited to 'docs/softwarestack.rst')
-rw-r--r-- | docs/softwarestack.rst | 127 |
1 files changed, 127 insertions, 0 deletions
diff --git a/docs/softwarestack.rst b/docs/softwarestack.rst new file mode 100644 index 00000000..024f0d5d --- /dev/null +++ b/docs/softwarestack.rst @@ -0,0 +1,127 @@ +======= + 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. |