This blog is about my experience on installing and using Mediagoblin, which is a free software media sharing application.
Note: This is not a step by step tutorial and for that I would point you to the well written ones
What is Mediagoblin?
Quoting the official site,
MediaGoblin is a free software media publishing platform that anyone can run. You can think of it as a decentralized alternative to Flickr, YouTube, SoundCloud, etc.
- free software - anyone can use, share, modify the software to suit their needs
- decentralized - you can host your own instance of Mediagoblin or connect to other instances running around the world
Issues faced during installation
I was always wondering if there was free software alternative to YouTube, Vimeo, etc., to share media. When I heard about Mediagoblin I got so much excited like a kid and wanted to get it up and running on my machine ASAP. That was my issue - need something so fast but without patience is not good and I messed up the installation the first time.
But, after taking my time to get through the code, configurations and understanding how things came by was a real eye opener. I was able to fix them and got an up and running instance of Mediagoblin. So, I would suggest people who would like to install be patient while going through the installation instructions and don't let the excitement ruin it.
While installation I faced issues ranging from dependencies to permissions and I have listed them out below,
Virtual environment issues
The mediagoblin installation comes with an in-house virtualenv were a local python environment (directory named "bin") is created in the root of mediagoblin directory to install all the dependencies. This might seem useful at first but once you want to remove mediagoblin and reinstall again, you would have to install those dependencies again. So, I would suggest using virtualenv or virtualenvwrapper to handle the environments.
Python dependency issues
Mediagoblin uses easy_install for installing all the python dependencies into the virtual environment. While doing so, I ran into the error
raise DistributionNotFound(req) pkg_resources.DistributionNotFound: sqlalchemy
Here "sqlalchemy" is the dependency that couldn't be found by installer. So, after looking at the trace I found out that while trying to install "sqlalchemy_migrate", it was dependent on "sqlalchemy". So, I was wondering what could go wrong with that, since we used to install them all the time like "pip install some_package". But, it looked like the format in the requirements given in the egg package was incorrect or at least I thought it to be. For example, I edited the requires.txt from the "sqlalchemy_migrate" egg package,
Media type dependency issues
For audio and video media types, you need to have all the necessary libraries installed. During installation you won't find any issue and when you start adding media exceptions will be thrown. This is briefly mentioned in the official blog here.
Issues running MedigaGoblin with Nginx
Initially, I had the mediagoblin directory in /var/www or /srv/ directories which didn't give any issues when accessing it from nginx. But, I usually have the projects in my home directory and I thought of doing the setup there and giving a symbolic link to the above directories. But, I failed to have the necessary permission to the directories and got permission denied errors while launching. So, make sure necessary folder & file permissions are set.
These are some of the issues I faced during installation.
Experience using MedidaGoblin
I used mediagoblin for sometime and I should say that it is something different. It provides the ability to upload media types like Video, Audio, Raw image, Ascii art, STL/3d models, PDF and Document.
I would say I like it just because of the fact that it is free software. We have the choice to improve the way it looks and way it operates. Though mediagoblin doesn't attract me much because I am so much used YouTube, but in terms of philosophy it definitely got me thinking otherwise. Hope people would use it and try to contribute and making it better.
Autostart scripts for MediaGoblin
The default scripts assumes that the python environment is in the directory where mediagoblin is installed and will be used as the python path. So, I modified the script to add a new variable that would point to the path where you can specify the python environment location. The script would use it if its present or fallback to the default configuration. You can find the github repo here.