These are the original concepts that were part of the first ideas toward building this system:

 

I've been thinking about how to work on a podcast system in a distributed fashion for quite some time...and now I have the necessary prodding to put my ideas down on paper. What do people think???

2 Parts to the database/webserver, one for getting feeds (front end), one for building shows (back end).


Front end
Dynamically generated RSS. This would allow for easy load balancing. Every third request could go to a backup server.

Choose your flavor RSS feeds...high bit rate, low bit rate mp3, ogg, bookmarked aac. Could these be automatically (with a script) generated from a master copy? Same for video.

Make feeds that are a mix of one or more feeds...so DB, SHP could be in one feed and SHP, SWC, SON could be another. (Automatically)

Bit torrent....this is a must if there's going to be video. We need a tracker and a seeder. Possibly also use distributed, pre-seeded seeds (use a secret feed to get some other known and good seeds going before the torrent file is put in a public feed).

Store files, show notes, etc in the database...then its easy to build sites/rss/etc from that. Some ideas for tables with some data members:

Show – date released, running time
ShowMedia – ShowID, format, file (format: mp3-hi, mp3-low, ogg-hi, ogg-low, aac, etc for audio. wmv, xvid, dvix, mp4, m4v, h264, psp etc for video)(we might need a table just for formats...there's so many and they're always being added)
ShowNotes – ShowID, format (html or text), ascii
Contributers – ShowID, UserID
Feeds – FeedID, ShowID


Back End
User must log in to get to back end features. Not everyone can get into everything...need a permission system. If I own a show, I can give others permission to edit, contribute, etc.

Allow user to create a show and upload multiple audio and/or video clips pertaining to that show. If someone else wants to edit, then can get the clips from here.

Keep all versions of the files. We want to always go back...kind of wiki like.

Allow comments and conversation amongst the authors/contributors/producers/editors.

Setup scripts that can be run remotely to do simple tasks, like join two pieces of audio or convert one format into another. Then the media wouldn't need to be downloaded to be worked with.

When a show is finished, have a form to submit it to the front end for the public to receive.

Backend Tables:
Users – Username, Real Name
ContactInfo – UserID type, string (type: e-mail, private e-mail, public e-mail, aim, msn, yahoo, skype, gizmo, phone, address, etc)
WorkShow -
WorkComment – WorkShowID, Date/Time, HTML, UserID
File – format, file
FileVersion – WorkShowID, FileID, ParentID, WorkCommentID (if joining two files, make two of these with the same FileID and different parent Ids. If splitting two FileIDs, one ParentID)
Permission – WorkShowID, UserID, PermissionLevel (Owner, Contribute, Edit, etc)
....there will be more

Open Source
If people are interested in this project, I think we should definitely open-source it. There's no good reason we should keep this to ourselves. Plus, we might get new and cool features that way :-)

I was thinking about making a project on sourceforge for it...anyone interested?

I was thinking of the name podserver :-)

 

SourceForge.net Logo