Pinax
Thanks to listening to the #ubuntu-uk PodCast - I came across this little gem.
It's a collection of reusable django apps - all designed to be reusable - together.
What this means?
This project needed a critical mass to get it off the ground. Basically the way things are referenced across all the apps need to be the same. There's no point having two reusable apps.. if they both require different ways of interfacing with the same object. They break if one has 'name' as being fullname, and ther other requires name to have two separate name fields (for firstname and lastname). You've then got to write a way of getting around this problem, which just increases as more features were added.
Well, the neat guys over @ pinax have started up a project on creating re-usalble apps that sing of the same hymnsheet - and they look awesome. Having watched a presentation on youtube, the following phrase (quoted) stood out for me:
"If you want a man to build a boat, do not send him out for wood and nails, but teach him to yearn for the wide and endless sea." -Antoine St Exupery
It's really accurate for these kind of projects - writing reusable apps off some other guys prescribed instructions doesn't fill the heart with glee - but seeing what can be achieved by doing this makes you want to contribute.
So Cloud27 was born - it's a social network, but made up of the componenets developed on pinax - meaning you get to play with what you're about to download an integrate into your own project.
It looks really good, and there's a project I've been meaning to do which has been yearning out for a kickstart - I think this may have just done it!
Jumping in.. Django+Facebook
It was easier than I thought to write my first django application, especially as I was using solely the administration interface as the front end. I didn't need to touch the view.py or forms.py to get things working the way they should. In my opinion (and my clients) that's a fantastic result.
So now, rather than let my skillset rest like that, I've decided to become a little more adventurous. I'm in the design stage of a django+facebook application. I'm wary about linking myself directly to facebook, so the application will have a 'core' element (where all the logic will sit) and a 'web' and 'fb' app, for handling the two interfaces, respectively.
This wonderful solution came from a guy called Will Larson, who blogged here. It's a great little article, on how to easily access the facebook api, using pyfacebook - but without the pyfacebook middleware. Although there may not be technical benefit in doing this, from an educational perspective I can immediately see how he accesses the API and how I can quite easily start to manipulate it myself, using FQL (Facebook Query Language).
I'm a little apprehensive, as I want to get the design right. I'm really looking forward to jumping into this project for a couple of hours a day, and seeing it evolve. I'm going to be putting all the code up on my bzr repo (football) - but I hope that in the not-so-distant future someone will poke me and ask to link it to Launchpad, so they can help too. However, this is a learning project for me, so I hope to do most of it myself, and understand all of it. I'll probably put a clause in the license that unless your code is commented enough for me to understand it.. you're-outta-here. Reckon that'll work?