Software is never done. Even though MediaCore CE 0.10 is not yet released I want to plan which features should be included in the next version. Ideally I want to publish a new version of MediaCore every 4-6 months and each release should improve one or two major use cases so there is a clear story for each release.
While paying customers will have the highest influence on my schedule I want to reach out for the second most important "resource": you (also known as "The Community"). I'd like to gather your priorities on some commonly requested features. Now MediaCore CE is an open source project so I can't dictate who should work on which tasks but at least I can set my own priorities and maybe the outcome of this list will rally up some additional volunteers (or customers) which will help a lot.
If you are a company/organization and you see some important features in the list below please do not assume a feature will be implemented just because it was listed. Some of them are just here because I think they would be fun to implement. If you have a budget (or developer time) please contact me, that is the best way to get a well-maintained MediaCore. To be honest I the biggest risk to me in this survey is that potential customers will wait "just a little longer" because "others will surely pay for it".
When you read the feature list I assume many people will say "I want all of that". Unfortunately that's not how project management works. Please pick at max three features. A "feature" is defined by its heading (e.g. "Improve the JSON API"). If you are only interested in some parts of a feature, feel free to mention that.
Please note that there is no point in cheating/multiple fake submissions: After all the final ranking is just one factor for my personal priority list.
Implement the the cloud (mediacore.com) upload API. This will allow using the mcoreuploader Python library to implement a batch media import and eases the MediaCore CE integration with other software.
Also the current JSON API would be rewritten to match the MediaCore(.com) API. This means some minor API changes but most notably the use of HTTP Basic AUTH (integrated with our permission system) instead of a single API key. That also means the API access would honor our new access restriction framework.
FlowPlayer and JW Player recently released new major versions which have much better HTML5 support. MediaCore should include the latest versions for both players. Ideally I'd like to rewrite the integration so that we don't use Google Closure for that anymore but jQuery. That would also ease integration with external plugins.
The current MediaCore CE layout is not optimized for mobile devices. The layout should adapt better to different screen sizes (responsive design?). Currently we have a huge base.css. By using something like SASS and compass we should be able to get modern (and maintainable) stylesheets. Also Gumby looks pretty interesting.
Publish a basic plugin with a phone-optimized touch UI (based on jQuery mobile).
MediaCore CE should work better as a community platform. That means we provide a registration page so users can create new accounts without any assistence from a MediaCore CE operator. We must provide sufficient hooks to fight spam registrations. Plugins should be able to inject captchas and other anti-spam methods. Also "double opt-in" (aka "confirmed opt-in") must be supported.
A user should have at least a basic "profile" page where he can change his password and he must be able to reset his password.
Currently each template modification needs either a custom plugin or modification of the MediaCore source directory while replacing a template should be as easy as creating a new one in the right location. We could use a new folder in the "data" directory for that.
We should implement a JS-based upload both for the backend and the public upload. Unfortunately this means also we should rip out as much of mootools as possible and use a combination of jQuery, jQuery UI and some other plugins.
Currently it's hard to manage a MediaCore instance on the command line if you don't want to manipulate the database directly. Especially if you manage a couple of MediaCore instances on one server there is currently very little help to automate common tasks.
We could publish a plugin to perform some common/simple tasks like "create a user", "set password", "change a setting", "enable/disable a player". Ideally other plugins could also contribute more commands.
The "number of views" for a media should reflect the actual video views by humans while search engines should not increase the view count. Views from the embedded player should be counted as well of course.
The view count should be increased after a significant portion of the video was watched (e.g. 30%). - this requires common MediaCore JS Player callbacks - we should replace Google Closure with jQuery before (see "Current FlowPlayer/JW Player) - this could also ease scalability because the media view page can be cached more easily
One of the really great (but undervalued) things in MediaCore CE is its plugin interface. With some more marketing/tech support I hope to draw more attention to plugins (and possibly also develop a bigger 3rd-party developer ecosystem).
We could have a basic "plugin directory" which should list public plugins with some meta data and install instructions.
Create "How To"-like documentation to help plugin writers solving certain tasks (e.g. how to add extra fields to a form, how to add custom JS to certain pages, how to exchange the explore page with a custom version).
Maybe we could even have a web-based plugin install mechanism.
MySQL's "fulltext" search has many shortcomings (e.g. no search results for short inputs) and can not be used on shared hosts because users typically don't have MySQL root access. Instead I'd like to implement a plugin interface for "search" and publish a SOLR-based search plugin.
MediaCore CE depends on several other libraries (some of which must be compiled). Also for new users it might be hard to deploy MediaCore correctly.
We could also create a web-based installer but that seems to be a lot of work even though it would for sure help many users.
Currently MediaCore CE uses direct Flash-based embeds for many players (e.g. FlowPlayer). We should use the player's native embedding API (as it is done for JW Player already). Ideally we would remove Google Closure and reimplement the functionality in jQuery.
Also we currently start the player whenever the page is rendered. Flash-based players are quite expensive to initialize (that is especially noticable when you have multiple videos e.g. in an embedding page). For FlowPlayer we should only render a thumbnail image and launch the player only when the user actually wants to watch the video.
Implement a client-side player fallback so that you can have a HTML5 fallback even the player does not explicitely support that (and you don't have to create a custom plugin which binds both players together).
This is about improving MediaCore CE architecture so that it will be easier to build high-quality plugins.
Store all date/time-related data with time zone information and display the time according to the configured time zone.
Currently MediaCore's language is configured in the admin and applies to all users. Ideally each user would see MediaCore in his preferred language (assuming we have a proper translation).
Also MediaCore operators should be able to add/change translations without modifying the MediaCore instance itself. That would help changing the translation style (e.g. more formal language) or changing specific terms.
MediaCore Inc. already wrote plugins for WordPress, Moodle, ... - let's make them work for MediaCore CE as well (if possible). Mostly we need to improve our JSON API for that (see "Improve the JSON API").
A plugin could provide local transcoding using ffmpeg (or utilize a transcoding web service different from Panda).
The goal is that users should be able to upload thumbnails and manage their own videos, possibly with additional information/metadata.
Ideally a user has a custom page where he sees all his videos. Later on we could think about self-management of videos (similar to what is possible in the current MediaCore CE admin interface).
I suspect that a lot of functionality in MediaCore CE is not obvious to many users/developers so we could focus on exposing the existing functionality. This could include blog posts and screencasts.
I have one more request to you: Please describe how you currently use (or plan on using) MediaCore CE. This will give me a bit more background on which niche MediaCore CE is currently best. Please indicate which of the following scenarios describe your usage best. You can also mention multiple scenarios e.g. if you operate multiple MediaCore instances.
You run a YouTube-like platform where end-users can watch videos without significant restrictions.
You develop custom feature/plugins so that MediaCore can satisfy your requirements.
Internal Video Platform for an Organization
MediaCore CE hosts videos mainly for an organization (e.g. university).
Access-restricted Platform ("Video on Demand")
On your platform media is usually not available to all users but only to certain groups. For example you could run a video on demand platform where a user has only access to videos he payed for.
Personal Video Gallery
You publish a personal video gallery with content for your friends and family.
To submit your vote please post a message in the "user survey" thread until May 18 2013 (2013-05-12). Alternatively you can also send a private email to me (firstname.lastname@example.org). If have another feature in mind which is not listed above, you can also submit that of course.
I can't promise that I will implement the most popular feature but I will consider your votes seriously. If the outcome of this user survey is positive in general (e.g. more community involvement, maybe even additional developers or customers) I will send out a new survey for the 0.12 release.