2010/05/25 - media%20server
I have been hard at work the last few days on the Monolithic Media Server. There is an array of new features that makes programming more functionality in to the media server easier than ever.
Drupal and modular coding
Drupal has a lot of great benefits such as modular coding. What this means is ‘modules’ can be loaded in to the system by a click of a button. All the functionality of this module is dynamically loaded, other modules may depend on the functionality of other modules, but it can be removed at any time and the core system will still remain completely functional. Essentially, every extension can be view as a module, including themes and different ways of viewing data through a cell phone or Andriod App. All that supporting functionality is a feature of modular coding.
I have adapted this paradigm throughout the entire site. The more work I put in to it, the more stable the site as a whole becomes. I can make a single correction to the code and suddenly the entire site works as intended. This has always been my intention for the site.
A great feature of Drupal and my media server is its dependency support. Modules can now depend on each other and provide code for detecting libraries. When these libraries are missing, the module is disabled and the site can continue to function properly. I have created a status page for displaying information about such dependencies. Modules simply need to implement the status_ function and it can print out information to the status page.
Settings are another excellent new feature. In some cases, the module can act differently, based on the setup you are using, but you don’t necessarily want the end user to be able to decide how a module works. Therefore, modules can implement the configure_ function for displaying all of a module’s settings. Setting_ functions are used to validate setting input and set the defaults.
One nice feature about this is it makes it easy to install. Since all of the default settings are available, the administrator only has to view and set the settings they care about.
Easy module creation
This new API has made module creation extremely productive and easy. I have completed a large set of modules already, and there are plans in place for a dozen more. If you would like to contribute, please get in touch with me as I could really use the help. I’d like to finish by talked about some of the great new modules in the works!
The administrator will now be able to choose whether to use the default session manager, or a database session manager. The database session manager will support the load balancer, as well as provide quick and easy access for site administrators.
This module allows the administrator to set up additional mirrored servers for even faster and more efficient media access. One of my goals for this site is to make it completely scalable. The load balancer will redirect users to other mirrored setups for faster encoding, more efficient database access, and localized content. Redirects can take place based on any set of criteria. The balancer uses a waterfall effect, transferring the user to the last server (most matched criteria).
I am in the process of building a WebDav module that will allow access to all the media files loaded in to the database. It will use the database as a virtual file system, and will even allow an additional portal to user contributed content, practically replacing the upload module.
There is a vast array of tools out there. It is my goal to provide all the functionality of popular music organization programs such as Tag & Rename within the website interface. I plan to port over all the functionality of MythTV’s Jamu, TMDB, and TVDB scripts. All this functionality will be available to administrators. I plan on providing a Synchronization plug-in that will allow administrators to synchronize multiple media servers together, merging and selecting media files intelligently, and optionally, based on the musicbrainz.org database.