> Dependencies are the exact reason a plain tarball isn't good enough
If your web app needs complicated deps, it sucks. Which is kind of my point about Pinax.
It's fucking embarrassing that you can simply untar some very complicated PHP applications and they work fine right out of the box on insanely varied versions of php/httpd/db software and with something like Pinax you need to spend 3 hours chasing down bugs and asking people on IRC what the hell is going wrong.
Django was designed to make things easy, not hard.
I couldn't disagree more with the idea that it's embarrassing that PHP apps tend to run with just a simple untar and Django projects don't. For me, this highlights some of the weaknesses of PHP - that there is a lack of pre-built libraries out there, and the difficulties in reusing code.
When I first started using PHP god knows how long ago (IIRC PHP 4 was still in beta), one of the things that shocked me was that there was no equivalent to Perl's CPAN. Things are better now, but not that much, and beyond DB libraries there is still far too much reinvention of the wheel in PHP.
Django is very much in the Unix philosophy of code re-use, and anytime you re-use code there are going to be dependencies. Added to this, many apps are going to use Python, non Django-related libraries, creating more dependencies.
Any good Django app that's doing anything moderately complex should have a pretty long list of INSTALLED_APPS.
Many rails apps work with a simple untar because they include their libraries in vendor. I'm not a ruby guy, but Luke Kanies (creator of puppet) is, and wrote a great post on why this is stupid - see http://www.madstop.com/ruby/ruby_has_a_distribution_problem....
Basically what I'm saying is don't fear dependencies, embrace them.
> Many rails apps work with a simple untar because they include their libraries in vendor. I'm not a ruby guy, but Luke Kanies (creator of puppet) is, and wrote a great post on why this is stupid
Is it? Rails apps have to work on more platforms than just Debian. You can embrace apt-get and make Debian users happy but you'll piss off everybody else. I wouldn't call the decision to vendor stuff "stupid", but "necessary".
I've noticed that most users actually prefer that an app bundles its dependencies because it reduces installation hassle. Some users literally begged me to vendor a certain library because installing it themselves is too much of a pain. Only a select group of vocal Debian users care about enforcing everything through apt.
I can only assume you didn't read Luke's article, with which I wholeheartedly agree. The crux - what do you do when you need to depend on non-Ruby libraries? Include the binaries of these? What if they depend on glibc (which they probably will) - do you stick that in vendor too?
You'd be better off shipping whole virtual machine images as your 'application' if that's the route you want to take.
All modern Linux distributions - RHEL, SuSE, Ubuntu and yes Debian too have packaging formats to handle dependencies. It's up to the distributions to package the apps, as a software developer I think you should be shipping just a plain tarball, which lists its dependencies but doesn't include them.
My main point was the idea that Django apps shouldn't have dependencies is wrong. Django is awesome mainly because of the ability to easily build on other apps. Doing this creates dependencies, and there's nothing wrong with that.
I did read his article, and I don't agree. He's only considering his own world without recognizing that Rails needs to consider everybody else too.
As for native code, yes that would be a problem, one that hasn't been solved yet. But luckily most dependencies are pure Ruby, and only few libraries depend on native code. Nobody's suggesting vendoring everything all the way up to the kernel, but vendoring a reasonable amount of dependencies does not seem evil to me. I don't see any point in taking an extremist approach of vendoring absolutely nothing, it will piss off a lot of users.
Also, if distributors will package the apps anyway, then why not vendor libraries? Distributors will remove vendored libraries as they see fit anyway. With this in mind it would make more sense to me to vendor libraries, because people who grab the source tarballs are likely users of platforms with no decent package management.
> Django is very much in the Unix philosophy of code re-use
I'm very much in the philosophy of not tying myself to a particular package management system or distribution. Especially not Debian.
If a package has deps, the documentation should state explicitly what they are, what versions are required, and the best way to make the application work with said deps, not attempt to hide everything behind some bullshit "installer" and then not document anything.
I mentioned .deb only in passing. The same applies equally to RPM or any other modern packaging system.
The package explicitly specifies the dependencies. I agree custom installers are a very bad idea, but you seem to be arguing against the very idea of having dependencies, which seems crazy to me.
If your web app needs complicated deps, it sucks. Which is kind of my point about Pinax.
It's fucking embarrassing that you can simply untar some very complicated PHP applications and they work fine right out of the box on insanely varied versions of php/httpd/db software and with something like Pinax you need to spend 3 hours chasing down bugs and asking people on IRC what the hell is going wrong.
Django was designed to make things easy, not hard.