architecture

You are currently browsing articles tagged architecture.

I’ve been hard at work on an almost complete re-write of the DJ Edna codebase. The original version of DJ Edna was written mainly as a way to learn Django and to scratch an itch of mine that I’ve had for as long as there have been MP3s — to create my own jukebox to securely access my entire music collection from any browser in the world. It wasn’t until I was almost done with that personal project that I hit upon the idea of opening up the code and using it to build digital music distribution sites for artists. Although I was able to finagle the code to work well for this new use, there were some ugly kluges and late decisions that necessitated a rewrite of the core package, djedna.catalog. Thus, my work on djedna.catalog2 began.

Here is a tag cloud that I created from the djedna.catalog2.models file using the very cool website, wordle:

djedna.catalog2.models tagcloud

Yes, that’s from the actual source code and yes, I’m a big geek. So, what do all these occurrences of “self” and “path” and “relative” get us? Here’s a list of new features that catalog2 will bring to the table when completed:

  • Artist interface (to go along with the existing Fan and Admin interfaces) to allow track uploads, simplified meta-information editing, and music e-commerce workflows.
  • Django Sites support to allow record labels to administer many individual artist sites from a single interface.
  • The ability to add arbitrary “digital assets” like images, PDFs, or any other file to downloads. Downloads in the previous version would only contain the tracks.
  • Support for WAV files in addition to MP3 including the ability to attach multiple versions to a Track.
  • Amazon S3 support for storing and serving media.
  • Full separation of functionality from presentation in order to make DJ Edna a fully plugable Django application.
  • Brand new default interface/design (or “theme”) called Marlowe.

That list of improvements is just off the top of my head. There’s a lot of little improvements going into this re-write that I’m sure I’m overlooking.

That’s the good news. There’s a boatload of new, highly requested features

The bad news is it’s taking much longer than I had anticipated (apologies to those that are waiting patiently for me to complete this before starting on their implementations under the djedna.com umbrella — you know who you are). This shouldn’t come as a surprise to anyone with development experience. Coding always takes longer than you think — even when you think it’ll take longer than you think. Yes, that’s recursion and yes, I’m a big geek.

Although I’ve completed most of the low level coding for the re-write (with some exceptions), I’ve been avoiding starting on Marlowe, the new default “theme”. That’s because HTML/CSS design is not my strong suit. If it’s your cup of tea and you’d be interested in helping out (Django experience/knowledge is not required), send an e-mail to thomas@djedna.org.

Back to the code…

Tags: ,

Development Updates

It’s been a while since I updated everyone on the status of the DJ Edna project source. I’ve been working on significantly streamlining the installation process and performing a refactoring that will make it easier to incorporate DJ Edna functionality into existing Django sites. I’ve also been working on adding Satchmo integration to provide e-commerce functionality for digital products and physical merchandise. One of the great things about the Satchmo Project is that it comes out of the box with rich support for selling physical items (e.g. t-shirts) including shipping and tax calculations, invoices, shipping labels, product variations (e.g t-shirt sizes/colors), multiple payment processors, gift certificates, and discount codes. I only had to add support for purchasing DJ Edna digital access permits (i.e. the access you currently get when you redeem a code) which, after a couple of weeks of digging through the Satchmo source code, was easier than I thought it would be.

But e-commerce integration isn’t complete yet. While modifying the default Satchmo templates to allow for “Permit Products,” it became clear that the existing DJ Edna views and templates were getting a little long in the tooth. So, like any over-ambitious software architect, I’ve begun a brand new set of views and templates that will correct many of the deficiencies and properly separate the core functionality of the DJ Edna catalog system from presentation-level functionality. This should make creating custom DJ Edna installs even easier.

Finally, when this work is complete, I’ll begin a refactoring of the core catalog models paying special attention to breaking out expensive operations (i.e. scanning a catalog for new tracks) into non-web processes connected to the webapp via a persistent work queue. This should pave the way for a simplified track upload process.

Once all that work is complete, I’ll be tempted to tag a 1.0 release and move on to some more exciting functionality focused around creating and keeping True Fans. More on that in a future post as the current refactoring projects come to a close.

Tags: ,