-
Notifications
You must be signed in to change notification settings - Fork 7
Installers
It should be drop-dead simple to get Django running on your machine, whether you are using Mac, Windows or Linux. Right now, there are too many manual steps, which means that for some evaluators, they will lose patience and abandon trying out Django before they get to experience it's power.
The goal with creating an installer is to minimize the time it takes from someone downloading Django to getting a working app running. What's the shortest path to having a successful experience.
Now some may argue that providing these shortcuts is risky, and will set an unrealistic precedent for future experiences with Django. But I would argue that without this joyful first experience, you may never get a second chance to get these users to come back and try it a second time.
Here's what I envision the installer would include:
- Django 1.3.1
- Python 2.7
- SQLite3 (to avoid having to set up a PostgreSQL or MySQL database)
- But with instructions for how to set up PostgreSQL or MySQL later
- Whoosh (to avoid having to set up Solr to enable searching capabilities)
- Optional: PIL, lxml, etc (since they are typically hard to install)
- ipython/ipdb & Django Debug Toolbar (for making debugging easier)
- virtualenv + virtualenvwrapper (to encourage isolation of Django projects)
- pip (to make it easy to install new packages)
- yolk (to show you which eggs you have installed in your Python path)
- Sphinx (to encourage people to write documentation)
- Fabric (with example fabfile.py to demonstrate deploying to Amazon, Rackspace, etc.)
- Might also want FabulAWS, cloudservers (for Rackspace), boto (for AWS)
- paster (to be able to create new Django projects from pre-built templates)
- nose (for running tests. also include pyflakes, pylint, coverage.py?)
- django-coverage (see pydanny's slides from Djangocon)
- django-sane-testing
- South (for handling database schema migrations)
- Example project inside it's own virtualenv using --no-site-packages
- settings.py (with an example local_settings.py for local only settings)
- TEMPLATES_DIR that is not an absolute path
- themes (perhaps using the Pinax themes like Twitter Bootstrap)
- tests (example tests and docs for how to run them using nose)
- docs (example docs dir prepped for Sphinx)
- requirements.txt (with example requirements lines - packages from PyPi, Git, Bitbucket, svn)
- settings.py (with an example local_settings.py for local only settings)
- Documentation
- Django cheatsheet
- django.me
- RTFD.org
- text editor configs (example .vimrc and .emacs config files. TextMate bundles for Django)
What other things might we want to include?
Plone provides a Mac, Windows and Linux installers that contains everything you need (including a self-contained Python distribution) to run Plone. These scripts to create a UniversalInstaller (Mac and Linux) are available here and can be modified to install Django. The code to create the Windows installer is here. There's also a wrapper to create the Mac GUI from the UniversalInstaller.
Web2Py provides clickable applications to launch Web2Py on a Mac (Web2Py.app) or Windows machine (Web2Py.exe). Downloads.
The entire app is self-contained in a single downloadable file, not unlike the way Jenkins is distributed as a Java .jar file.
See the thread where the Web2Py guys talk about making standalone app installers for Mac and Windows https://groups.google.com/forum/#!searchin/web2py/mac$20installer/web2py/AISFboS2Zmk/cavBtsWP-tEJ