Hey all —

I've been doing a little bit of thinking lately about how Pinax handles 
requirements. I think what we have today is fairly decent. However, in practice 
I am finding some issues that I'd like to see us address. These thoughts have 
not only come from my work with Pinax as a user, but use cases I've seen others 
run into.

Thoughts:

* pinax-boot.py should not directly install Django let the requirements file 
handle it.

* pinax-admin should no longer require Django to run (to support the above).

* pinax-admin --release (default) will continue to install all dependencies by 
default with a new option to not install them. Of course the new option will 
require an Internet connection at some point. 

* project-level requirements.txt should be moved to new file (don't have a name 
yet) leaving an empty file that simply uses --requirement=unnamedfile and adds 
some comments about the usage of the file (this is used for additional 
project-level requirements).

* pinax-admin clone_project is replaced by a new command called pinax-admin 
setup_project. This new command will perform clone_project behavior + install 
the requirements.txt file of the project. clone_project behavior can continue 
to be emulated with setup_project --no-deps (not thrilled with this, but see 
scenarios below).

The goal I am trying to accomplish here is that we enable external projects as 
more of a first class citizen, but also make pinax-boot.py an optional part of 
installation. Keep in mind that pinax-boot.py does solve a very real use case 
and it should still remain a part of Pinax (even as the default installation 
method). The use case being providing a full environment bootstrap. Here are 
the possible ways to install Pinax with my proposal implemented:

SCENARIOS

pinax-boot.py pinax-env
source pinax-env/bin/activate
pinax-admin setup_project --no-deps basic_project
python manage.py syncdb

pinax-boot.py --no-deps pinax-env
source pinax-env/bin/activate
pinax-admin setup_project basic_project
python manage.py syncdb

virtualenv pinax-env
source pinax-env/bin/activate
pip install Pinax
pinax-admin setup_project basic_project
python manage.py syncdb

virtualenv pinax-env
source pinax-env/bin/activate
pip install Pinax
pinax-admin setup_project --no-deps basic_project
... tweak requirements to your liking ...
pip install -r requirements.txt
python manage.py syncdb

As I've previous said I am not particularly sold on using --no-deps in the 
default case (first scenario). Suggestions are welcome. When it comes to 
--development mode I think the above will still apply (only pinax-boot 
scenarios), but we will have specific directions for contributors as we do now.

With my changes in place I think Pinax becomes more natural to use for those 
who already deal with installation of pip and virtualenv outside of Pinax 
without sacrificing the use case that pinax-boot.py solves for us too. I also 
wonder if this might help with buildout users? Jannis and myself have discussed 
pip bundles as being something Pinax installation process can use. However, I 
can't ever see them being used in the default case, but rather as supplement 
material. We could distribute them as a way to install only project 
requirements without an Internet connection, but would obviously assume the 
user has pip already installed.

At this point I am in the thoughts gather phase. If we come to some consensus 
I'd like to see about starting on some of this pre-PyCon, but not entirely sure 
if that will happen.

Jannis: since this work falls in your one of your categories of work on Pinax I 
wouldn't mind working with you in accomplishing any of this based upon your 
thoughts.

Brian Rosner
http://oebfare.com
http://twitter.com/brosner

-- 
You received this message because you are subscribed to the Google Groups 
"Pinax Core Development" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/pinax-core-dev?hl=en.

Reply via email to