views:

101

answers:

4

OK here is the deal. Me and some buddies are doing a Podcast(for over 4 year now) and in April we relaunched the site, that included a new Backend. Since I only had 2 weeks back then for getting everything to work, I decided to create something from scratch so everything fitted precisely our needs. The whole thing was written in Python based on mod_python.

At the moment I don't have much to do so I thought about refactoring the code(since code you write in 2 weeks isn't the cleanest one as you can imagine), I came to the idea that I could base it on a CMS.

It did take me some minutes to write up the model for the whole thing but here it is:

All

  • Create by
  • Create at
  • Edited by
  • Edited at

Users

  • Usermame
  • Password
  • Realname
  • Administrator(True/False)
  • Moderator(True/False)
  • Profile visible(True/False)
  • Profile picture
  • Profile text

Tags(belongs_to_many :posts)

  • Name

Posts(has_many :files, :comments, :tags)

  • Title
  • Feed Title
  • EpisodeNumber
  • Type(Podcast/News)
  • Date
  • Image
  • Comments(Open/Closed/Hidden)
  • State(Public/Auto/Hidden)
  • Text
  • Files
  • Tags

Files(belongs_to_many :posts)

  • File
  • Size
  • Duration(This needs libraries for determening the length of mp3/mp4/m4v files)

Comments(belongs_to :posts)

  • Post
  • User(If posted by a podcaster, so we can highlight the comment etc.)
  • Date
  • Hidden(True/False)
  • Name
  • Email
  • IP
  • Text

Pages

  • Title
  • Text

OK the stuff above is pretty simple, only the getting the duration of the mp3s etc. could be somehow troublesome.

Now comes the bigest problem, our download tracking.

This needs custom tables named Year_Month with the following format:
- rows with: fileID all, itunes, feed, other etc.

On every download we create new tables and rows as necessary. The part of getting the information back out and converting it into charts is quite complex.

Choosing...

So I took a look at Drupal, Django and Ruby on Rails. Drupal is PHP... well I have no problem with PHP the main question here is how to implement duration check for mp3s.

Django is Python since I wrote the current site in python too, many questions fall away.

Ruby on Rails seems pretty good for kickstart development (I love the Railscasts), unfortunately, trying to develop a Demo with Aptana RadRails failed epically to a 200 line stack trace. Since I didn't do anything with Ruby before I stopped there.

I hope that some of you people can help me with the choice here, since you may already have experience with Drupal/Django/Ruby on Rails that I don't have, and I really hate it to having start over after being half way though a project, only because there is some little thing that can't be implemented with technology XYZ.

A: 

Go with RoR. Simplify. In my opinion, RadRails is overkill. Use TextMate. It has a ton of helpful keyboard shortcuts that simplify and speed up development.

LymanZerga
TextMate would require a Mac.. I'm stuck with WindowsVista at the Moment :( What about directly modifying the database for the download tables, how easy is that in RoR?
Ivo Wetzel
+1  A: 

The Ruby on Rails Podcast site by Geoffrey Grosenbach is open source. That would at least give you a good starting point.

John Topley
A: 

Looking at your specs, I don't think you are talking about rocket science that would require you start over after being half way through your project. Both RoR and Django are field tested frameworks that will enable you to do what you want to accomplish, and that makes it boil down to your familiarity with them. As you have Python experience, I think Django "might" be the way to go.

shanyu
+2  A: 

Drupal is complicated and not something you easily learn to use. The thing about it, which is very nice, is that you get a lot for free. You do a lot of building with modules, settings and such, instead of coding your own stuff. In this case, with modules such as CCK, views, ffpc you would be able to generate podcasts without much work. The only thing is customizing it, is quite hard, if you don't know how drupal works. A few weeks ago, I actually made a podcasting site which needed more features than you describe and had a styled alpha version with everything ready within a week. So using Drupal can be incredibly powerful, but only once you know how to do it.

On the other hand, django is probably a bit easier for you to control. You do a lot more in the code, compared to Drupal, but when you are comfortable doing this, it shouldn't be a problem. It also seems that your break down of the site and what's required fits the Django way of thinking a lot more than the Drupal way. Drupal doesn't use objects the same way Django do and it's use of OO programming is a lot different too, since it doesn't use objects that often.

It seems to me, that for you it will be a lot to use Django, but if I should choose right now between Django and Drupal, both of which I use for different projects, Drupal would be my choice, since most of what's needed is already made, so all that's needed is setting up a few things.

Disclaimer, I haven't worked with RoR, so don't know how that would be, but from what I've heard, it's a lot like Django in many aspects.

googletorp
If you decide to use Drupal, the getid3() module for Drupal will help with finding the duration of attached MP3s: http://drupal.org/project/getid3
Garrett Albright