Monthly Archives: February 2010

The darker side of Pinax

I really like the concept of Pinax, but I’m beginning to see the darker sides of the project. Here’s the fundamental issue:

Pinax does a completely kick ass job of making a combined and base project that pulls together a lot of pretty darn good re-usable django “applications” into a single project. What it doesn’t do well is manage any of the dependencies in that tree, or make it easy to use only a portion of some app. If you want to use Pinax the way Pinax is already developed, you’re rockin’. If not, you’re re-working quite a bit of code. And the worst part is that code is almost all opaque to you and hidden in the pinax framework.

The application I wanted to pull in to my basic “pinax” project was “photos” – some simple photo uploading. Yeah, cool – uses photologue under the covers. What’s not clear is that photos also has dependencies on grouping and tagging, and if you review the dependencies documentation, it looks like there’s circular dependencies embedded in there.

What I ended up doing was to take the “photos” application from the Pinax project directly, fork that, and drop it into my project. Then I had to do a shit-load of renaming and stripping because “photos” is built in to Pinax as a default – so “photos” in my app became “photo” and I was scrambling through code to remove the bindings into commenting, threaded commenting, grouping, and so forth.

I did get it working, and really all told I spent less time stripping out stuff than I would have putting it together from scratch. But the only reason I was able to do it that efficiently is because I’ve already been through the pinax project’s source, had it on my laptop, and was a fairly comfortable and competent Django programmer. Any newcomer hitting this would have been toast, and badly confused.

When I asked around the Seattle Django user’s group related to Pinax, several of them said they’d been shying away from something like Pinax because it was easier for them to simply including the good open-source django apps into their work already. At the time, I thought “Well, maybe that just makes Pinax easier and more effective for newbies into Django.” Now I’m reconsidering.

I don’t have a good answer to the problem, and I’m sure I’ll continue to use Pinax and maybe even dig deeper and see what can be done to resolve this kind of issue. I think the idea of the Pinax project is fantastic, I just wish it was a little less “tightly coupled” under the covers and provided more transparency into it’s depths.

collaborating on GitHub

No secret, I prefer Mercurial, and I think pretty highly of BitBucket too, but a whole lotta folks are using GitHub, and the platform is pretty damn good for general project collaboration, especially for open source projects.

The only problem, in my opinion, with GitHub is having to use git! I find it darned confusing, and I’m pretty confident and effective with source control tools. Not that I don’t appreciate it’s power, I’m just not in favor of that particular level of complexity/ease-of-use tradeoff.

Anyway, while I’m not great with it, I can figure it out. And since I did, I wrote it up. The example is available for the GitHub project letters if you’re interested. It should be really easy to translate into any other project on GitHub, and has the basics for collaborating, including getting code from anyone’s fork of the project and pull it into your own.

http://github.com/ccgus/letters/blob/master/README-CONTRIB.markdown

Hope it’s useful… I’ll be doing another one of these at some point for BitBucket and mercurial…

tagcloud

I was reading through back-links that I’ve shoved into Delicious over the past few years, doing some “where was that…?” sorts of things. I realized that I had about 1500 entries stashed into my delicious links, so I thought I’d see what the tag-cloud looked like. Pretty darn representative of my interests in computing. Probably more so than my blog actually.