Popcorn distribution

We encourage users to post events happening in the community to the community events group on https://www.drupal.org.
btopro's picture

Any thoughts on a popcorn distribution, even just as a proof of concept, to show whats possible with the popcorn modules out there? I can't for the life of me assemble them into anything usable and I build distros all day so maybe an example would be a good place to start in getting greater adoption. I'd love to roll popcorn aspects into https://drupal.org/project/icor which sees some love as I get free-time.

What would go into a popcorn distribution? What's missing currently? Fix media module or find a way on without it / supporting other projects that render remote URIs in iframes like youtube/vimeo. All questions and I'm sure there are more.

Comments

A Player with a Timeline?

socialtechno's picture

I hadn't thought of a distro, so much as an architecture which could be implemented across a series of modules, and that played well with Drupal's theme engine.

My (over) simplified model of Popcorn.js is

  1. An HTML DOM;
  2. A player with a timeline (could be NullPlayer);
  3. Events injecting stuff into targets in the DOM;
  4. CSS styling.

I see Drupal as very good at 1 and 3, but 2 is giving me a hard time. Drupal seems to loosely couple players and clips, I haven't yet found a happy solution to declaring mp4/webm/ogg for different browsers. Also, the way Drupal handles sites like YouTube, Vimeo, Soundcloud and Slideshare leaves me groping for a polite word that combines 'orthogonal' with 'clusterf*ck'.

So, if anybody can help me out, calm me down, or just laugh at my jokes, I'm your pal.

so the way I attack these

btopro's picture

so the way I attack these types of solutions is what lead me to the distro proposition. You'll find a cluster-f* type of module template to get this working in a site. You'll forget it for the next site, or the feature will be super coupled and cause lots of module bloat on the new instance. Drupal 8 will come out and you'll go "crap... all those modules need updated" or "but now I want to use this in wordpress / any other system".

That's where the distro approach can come in handy; we build a stand alone, popcorn.js type of interactive plater generation repository. You create your interactive experiences there, and then use iframes / other methods to embed that interactive player into other systems (or no system at all as static html). This approach has longer legs over the next 10 years as opposed to the next 10 weeks/months.

Here's a quicky video I rigged up of popcorn in icor using some of the built in entity iframe capabilities to render the popcorn player out as if it were being displayed in an iframe -- https://www.youtube.com/watch?v=29b-bl4jOYQ . The simplicity of the data generated can then easily be embedded in a 100% width iframe in content somewhere else. These 100%'s combined with fitvids (http://fitvidsjs.com/) concept of intrinsic ratios can all for fully responsive popcorn players (again, just this chapters one as an example).

As for timelines, I'm messing with https://drupal.org/project/views_timelinejs which is crazy impressive from my limited tinkering with it (here's a feature that creates a content type that can build its own mini-timelines based on entity references https://drupal.org/node/1975062). Granted this is not popcorn.js integrated / aware, but it would seem easy enough to have them displayed at the same time and jump to points in the timeline.

A distro could also be basing all of its content types around the concept of building different popcorn style players such as adding the chapters content type in the video or the timeline one you are suggesting. I think these could then be packaged as features individually so others could try using them in their own sites if they wanted but it would plant a flag in the ground showcasing what popcorn is and how you can quickly get up and running using it. kreynen could get many of the libraries of popcorn js whitelisted so they could be auto included or the make files to help streamline development could be a good step in the right direction.

If Drupal/Popcorn integration

kreynen's picture

If Drupal/Popcorn integration was already stable, I'd roll it into https://drupal.org/project/cm_starterkit_easy. That's the distribution we're using to build sites like http://okv.se/ and http://www.retn.org/. These sites leverage feed driven VOD. While we can get it work, just getting the basic VOD to display well still requires a lot of work. Adding Popcorn on top of that... well that's just crazy talk.

I did a lot of the early work to get media_[provider] modules working for Vimeo, BlipTV, Archive, etc, but the core media framework provided by the Media module has always been a moving target and I just gave up and found an approach that worked for the organization we work w/... and I wasn't alone. The failure to move forward with Media is what led to the creation and increase usage of Video, Scala, Asset, etc.

I'll post more about why we need to build Popcorn support on low level, stream wrapper style URI vs. embed code or what I call the iframe hall of mirrors approach, but it has to do with Open Education Resources (OER) and my belief URLs that can be exchanged ARE important.

During Media 1.x, I did get a chance to work w/ @slashrsm on his Google Summer of Code project. Technically I was his mentor that summer, but he really didn't need any direction from me on https://drupal.org/project/media_derivatives. His project was basically a much better foundation for similar functionality found in https://drupal.org/project/media_mover. During the project we look at the changes made to Feeds from the old https://drupal.org/project/feedapi. @slashrsm did something similar creating a framework to run independent "engines" similar to Feeds parser framework.

@slashrsm did some amazing work to take media_derivatives as far as he did with Media 1.x and tried to address as many of the issues with the foundation as possible in the 2.x branch of Media and File Entity.

Now @slashrsm has started to focus on D8. The conversations he started in Prague are driving a restructuring of everything media in D8 starting with the terminology https://groups.drupal.org/node/327768. There are similar to the conversions we had back in 2009. Back then, Jon Stacey was working on his GSoC project. His work is largely responsible for PHP Stream Wrapper support in D7 core... as well as WordPress. Being a really smart guy, Jon realized he could just do a similar project a second summer and build the same type of PHP Stream Wrapper support for WordPress.

Watching the difference between what has happened with media handling in Drupal vs. WordPress is really frustrating.

http://make.wordpress.org/core/2013/04/08/audio-video-support-in-core/

Most people aren't close enough to how the sausage is made to see these problems, but it's hard to stay motivated when you are.

Following @slashrsm's media thread for D8 is really exciting. It reminds me of the process @aaron drove before D7. @slashrsm is getting feedback from people with a lot of different use cases and the developers who gave up on media and went their own way.

@btopro already knows that I'm basically running https://drupal.org/project/drupalorg_whitelist on my own these days. The whitelist is what allows external libraries to be packaged w/ a Drupal distribution. It's what allows the Fitvids library to be included in a distribution https://drupal.org/node/1941804#comment-7208606

Helping to managing the whitelist only requires a basic understanding of open source licensing to deal with issue like https://drupal.org/node/1941804 and the ability to copy regular expression patterns. You don't even have to know PHP, javascript, SQL, Drupal hooks, etc, etc... yet with even that low of a bar, we don't have enough people helping out.

Without the whitelist, distribution packaging on Drupal.org we can't even use .make files to capture the point in time working versions like @btopro is suggesting.

But instead of offers to help, I get requests for easy to install demos :(

I'm sorry, but I'm already stretched a mile wide and at this point I'm less than an inch deep. I've been involved in most projects related to media, Creative Commons, MediaRSS, media metadata and distribution packaging in Drupal. The list of projects at https://drupal.org/user/48877 is insanity.

I'm 100% sure that sharing what I've done w/ Drupal and Popcorn.js wouldn't improve my life or your sites at this point because of the state the framework I've built on is in.

Specifically...

While I hate the fact that even when people submit code, I don't have time to review it (@sunnydeveloper, I did see https://drupal.org/node/2103441), what I hate it even more when that happen to me. Issues like [Meta] Generic entity processor that get absolutely no attention from the project's maintainers after 2 years and contributions from a dozen developers drive me crazy and impact https://drupal.org/project/media_event

Working w/ Media Events (Popcorn triggers) isn't possible without a system to import entities. Codewise, we have everything we need now to do something like captions w/ Media and Popcorn (https://drupal.org/node/1179196#comment-6064044). I have working demos of deep linking (Chapters) and timeline commenting using Popcorn I'll try to clean up, make public, and record more screencasts.

If you want to help move this forward, test the Entity support for Feeds or the patches in any of the media_[provider] modules like media_vimeo and media_archive. Sign up to get emails about new issues in https://drupal.org/project/issues/drupalorg_whitelist?categories=All and check the size and license of the request or even give existing requests a bump with a second look.

I've always thought a Popcorn enabled player would be enough of a carrot to make the complicated backend configuration Drupal requires for javascript libraries and media worth it. I still think that, but need help stabling the framework.

ok, it was a "an example

btopro's picture

ok, it was a "an example would help" not a demand. I'll be adding popcorn type of support into ICOR in the coming months, just was wondering if there were any click-n-go examples out there. The media vs iframe approach is irrelevant in my mind, I implement via my house of mirrors approach but obviously all the stuff to get there can be included in a site of its own or "mirror house"-ized :).

That aside, and the obvious venting I can also unleash for similar impossible project load, I need some help getting the basic concept down here (popcorn / media / events) that you are driving.

Is the notion you are driving at that there is an entity that supplies the time-points when something would happen and another that's the actual media. Then, "types" of those media_event items would start to provide the framework for adding things like a "pop up" type which is a bundle of the media_event entity. So we could have something supply the definition of what "type" it is and then we basically need a player to handle the events and stitch them together into an area that the actual media lives?

Also, with how incredible https://popcorn.webmaker.org is, what advantage could we generate that would provide a better experience then this other then the ability to host internally?

So many brilliant thoughts -

sunnydeveloper's picture

So many brilliant thoughts - I can't add anything that would be of value, except that I do get being overloaded with contribution demands, and I know how hard it is when you're doing all you can to enable people to help but it just doesn't come. I hope that changes, I wish I could step up more :(

I do think this is an excellent question:

Also, with how incredible https://popcorn.webmaker.org is, what advantage could we generate that would provide a better experience then this other then the ability to host internally?

Making it work for the sake of making it work - might not be as valuable as accessing what would be missing in various use-cases. Some of those use cases might mean leveraging popcorn.js modules that don't come by default with Pocpron Maker like web-page embed (although there is a plugin for that), and Drupal content - might be easier to write a popcorn.js plugin for that - and run a local copy of Popcorn Maker than invent the experience in Drupal. Devil's advocate.

(@kevin I didn't realize you mantained CC, don't worry about the patch I submitted, it was tiny - just submitted for others more than anything).

Thank You, Kevin

socialtechno's picture

Breakfast time in the UK - I really appreciated @kreynen's post. Drupal / Popcorn integration isn't stable, and now that I've been shown a glimpse of how the sausage gets made, it is very frustrating, but I feel hope.

Popcorn is a new paradigm for integrating video and audio streams with images, database, text and metadata, and designing paths readers can take through rich and complex subject matter. Like this Dutch Open Images example: http://www.openimages.eu/blog/2012/01/13/open-images-videos-enriched-wit... I want to use Drupal to build sites like that one.

I understand @btopro's interest in demos and distros. I've been working on demos myself, but I haven't shared them with the Drupal community because I know they are kludges, and I don't want to distract folks from the kind of foundational work that Kevin talks about, to get a decent architecture for wrapping streams and exposing them to a Popcorn event-handling engine.

I am not a programmer (Eighties mainframe CICS COBOL DL/I doesn't count any more) but I'm a competent site builder. I'm a business analyst and a social anthropologist; so when I trawl through Download and Extend / New Modules, I see use cases that somebody understood well enough to code. I'm more than willing to contribute to any kind of work that evangelises Popcorn and Drupal, explores use cases and articulates functional requirements that developers might want to get their teeth into.

Finally, I just read the Drupal 8 Media Sprint Report at https://groups.drupal.org/node/327768 It seems like there is a window for us to suggest for some things that would support Popcorn, and key Popcorm use cases, in D8. Can we think about that - what would be a realistic and constructive contribution to make?