<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>EntwineEntwine | Knowledge in Motion</title>
	<atom:link href="http://entwinemedia.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://entwinemedia.com</link>
	<description>Knowledge in Motion</description>
	<lastBuildDate>Wed, 10 Apr 2013 05:51:19 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Annotating Academic Video Tool &#8211; Open Source</title>
		<link>http://entwinemedia.com/2013/annotations-tool/</link>
		<comments>http://entwinemedia.com/2013/annotations-tool/#comments</comments>
		<pubDate>Mon, 08 Apr 2013 17:50:54 +0000</pubDate>
		<dc:creator>Xavier Butty</dc:creator>
				<category><![CDATA[Annotations]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Lecture Capture]]></category>
		<category><![CDATA[Opencast Matterhorn]]></category>
		<category><![CDATA[academic video]]></category>
		<category><![CDATA[annotations]]></category>
		<category><![CDATA[LMS]]></category>
		<category><![CDATA[MOOC]]></category>
		<category><![CDATA[Open Education]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[structured annotations]]></category>
		<category><![CDATA[video note taking]]></category>

		<guid isPermaLink="false">http://entwinemedia.com/?p=1794</guid>
		<description><![CDATA[Abstract As tools like Opencast Matterhorn continue to reduce the barriers to entry for capturing and distributing lectures, it is important to recognize that the availability of video alone is not sufficient to improve educational outcomes. Since January 2012, Entwine has collaborated with SWITCH on the Annotating Academic Video (AAV) project with the goal of creating a [...]]]></description>
				<content:encoded><![CDATA[<h2 id="BlogpostonAnnotationtool-Abstract">Abstract</h2>
<p>As tools like <a title="Opencast Matterhorn" href="http://opencastproject.org/matterhorn">Opencast Matterhorn</a> continue to reduce the barriers to entry for capturing and distributing lectures, it is important to recognize that the availability of video alone is not sufficient to improve educational outcomes. Since January 2012, Entwine has collaborated with <a title="SWITCH" href="http://www.switch.ch">SWITCH</a> on the <a title="Annotating Academic Video" href="https://github.com/entwinemedia/annotations/wiki" target="_blank">Annotating Academic Video (AAV)</a> project with the goal of creating a standardized, open and flexible tool/framework to enable Swiss University faculty, staff and students to annotate video across a mix of platforms including players, video management and learning management systems.</p>
<p>This post provides a first look at the features, architecture and our progress to date with the AAV project.</p>
<h2 id="BlogpostonAnnotationtool-Whyweneedannotationsinvideomanagementsystems?">Why we need annotations in video management systems?</h2>
<p>For the past decade, higher education institutions have been adopting lecture capture technologies to improve the academic experience. Although these technologies are proficient at capturing and distributing media to learners, they perpetuate an outdated and passive learning experience by not providing tools for students to enrich, enhance and share media with classmates.</p>
<p>The most common method for teachers and learners to interact with video is via note taking and discussions. The majority of education based video services do not take advantage of the annotations tools that YouTube delivered to the masses a few years ago. Taking into account that today learners and teachers are becoming less and less physically connected, this void is particularly painful as it means that there is not a simple method to comment on educational videos, such as lecture recordings. Simple interaction between learners and teachers through comments is not the only pedagogical benefit of an annotations tool. Most students take private notes during a lecture. The ability to annotate a video lecture has the potential to enrich notes by adding object and timing references to them. Sharing enhanced notes will help other learners and improve relevant information about search results.  AAV can also be used for assessment. For example, instructors can evaluate the annotations produced by a student to gauge concept mastery.</p>
<p><span id="more-1794"></span></p>
<h2 id="BlogpostonAnnotationtool-AcademicAnnotationvideoproject">Academic Annotation Video Project</h2>
<p><a href="http://entwinemedia.com/wp-content/uploads/2013/04/annotations_screenshot.png"><img class=" wp-image-1814 alignnone" alt="annotations_screenshot" src="http://entwinemedia.com/wp-content/uploads/2013/04/annotations_screenshot-300x172.png" width="210" height="120" /></a></p>
<p><em>Screenshot of the current version </em></p>
<h3 id="BlogpostonAnnotationtool-Goal">Goals</h3>
<p>A technical goal is to deliver an open source tool that is extensible enough to be used in a variety of educational settings in conjunction with different technologies relevant to the academic use of video, i.e. video players, video management systems and learning management systems. The result is an application that can be used with different lecture capture and delivery systems such as Opencast Matterhorn and with different players such as the Engage player from Matterhorn.</p>
<p>As for the non-technical goals and benefits, the annotations tool has to make video a full-fledged learning object in that it provides learners with adequate tools to actively capture content: Note-taking, highlighting, structuring, establishing relations or extracting excerpts. Most of what the learning process encompasses today is not possible with video &#8211; yet.</p>
<h3 id="BlogpostonAnnotationtool-Benefits">Benefits</h3>
<h3 id="BlogpostonAnnotationtool-AsaPedagogicalTool">As a pedagogical tool</h3>
<p>In the first part of this blog, the lack of student interaction with video content was clearly expressed. This tool bridges the gap by introducing a toolset that allows users to easily annotate video. Learners can finally interact with video and enrich it with their own personal content. Furthermore, this service does not rely on a specific back end system or player. Being generic, this tool with its benefits can be integrated in any system as long as the interfaces for it are implemented.</p>
<h3 id="BlogpostonAnnotationtool-AsMatterhornthird-partytool">As an Opencast Matterhorn third-party tool</h3>
<p>The upcoming release of <a title="Opencast Matterhorn" href="http://opencastproject.org/matterhorn">Opencast Matterhorn</a>, 1.4, will come with another solution to annotate video. This one is directly integrated in the engage player and therefore strongly dependent on it. What are the benefits of another annotations tool if Matterhorn already has a solution?</p>
<p>First, the annotations tool makes annotations a the focus. The user interface is designed so its focus is on creating and visualizing annotations. Annotations are not just an afterthought, they are the main focal point. The tool allows end users to annotate video quickly and easily and view existing annotations. Secondly, as the tool is not dependent on the engage player, it can be used with any other player, like a native HTML5 player and introduces the option of using an iPad or other mobile device.</p>
<h3 id="BlogpostonAnnotationtool-Features"><strong>Features</strong></h3>
<p>The tool can be used to view and write annotations.</p>
<p><strong>View</strong></p>
<ul>
<li>Display annotations in two synchronized views: a timeline and a horizontal annotations list</li>
<li>Highlight annotations in current playhead range</li>
<li>Filter annotations and tracks</li>
<li>Jump to annotations start time by selecting an annotation in a list</li>
<li>Change tool layout</li>
<li>Print annotations</li>
<li>Export annotations as CSV file for statistic usage</li>
</ul>
<p><strong>Add/Edit</strong></p>
<ul>
<li>Insert unstructured text annotations.</li>
<li>Add new tracks.</li>
<li>Edit fully the annotations in list</li>
<li>Auto-pause mode: Video stops automatically during typing and continues after annotations insertion.</li>
<li>In/Out buttons: Set the start/end timepoint of an annotation with the current playhead</li>
<li>Define visibility of tracks and annotations (public/private)</li>
<li>Change duration and move annotation by dragging on timeline</li>
<li>Comment annotation</li>
</ul>
<h4 id="BlogpostonAnnotationtool-Structuredannotations">Structured annotations</h4>
<p>Structured annotations are based on a set of defined labels divided in different categories. The categories can be created and filled by the teacher to give a limited set of labels to annotate a video.</p>
<p>For example, a video could show a patient being interviewed by a doctor. The categories and labels could be:</p>
<ul>
<li>Feelings
<ul>
<li>fear</li>
<li>anxiety</li>
<li>curiosity</li>
<li>happiness</li>
<li>confidence</li>
</ul>
</li>
<li>Reaction
<ul>
<li>Positive</li>
<li>Negative</li>
<li>Neutral</li>
</ul>
</li>
</ul>
<p>Now the students would have to annotate the interview with this given set of categories.</p>
<p>The structured categories can also have a scale to add more information to the labels. With the example above, a scale for the reaction category could be numeral scale, with value from 1 to 5, indicating how positive or negative the reaction is.</p>
<p>Students can also create categories and labels that can be shared using the export/import functions.</p>
<p><strong>Features related to structured annotations:</strong></p>
<ul>
<li>Create and edit category, label and scale</li>
<li>Annotate with label and scale</li>
<li>Present an annotation with labels on the timeline and table with their color and value</li>
<li>Export/import categories</li>
<li>Can be used in parallel with unstructured text annotations</li>
<li>Structured annotations can be enabled/disabled</li>
</ul>
<h3 id="BlogpostonAnnotationtool-Architecture">Architecture</h3>
<p>Because the tool has to work with different lecture capture systems, players and learning management systems, the tool architecture is decoupled in three parts to make it as scalable as possible.These parts are illustrated in the diagram below:</p>
<p><img alt="" src="http://confluence.entwinemedia.com/download/thumbnails/1966111/AnnotationTool.png?version=5&amp;modificationDate=1350307350000&amp;api=v2" width="300" data-image-src="/download/attachments/1966111/AnnotationTool.png?version=5&amp;modificationDate=1350307350000&amp;api=v2" /></p>
<p><em>Annotation tool architecture with an HTML5 player and Matterhorn as backend system. </em></p>
<h4 id="BlogpostonAnnotationtool-Theplayeradapter">The player adapter</h4>
<p>Any kind of web video player can be used with the annotations tool as long as it has its own player adapter and implements all the methods from the <a href="https://github.com/entwinemedia/annotations/wiki/Player-adapter-API" rel="nofollow">player adapter API</a>. The annotations tool will communicate with the player through the player adapter.</p>
<h4 id="BlogpostonAnnotationtool-Theannotationtool">The annotation tool</h4>
<p>This is the core of the tool. It retrieves the annotations from the backend and allows one to create/edit annotations and synchronise them back. It communicates with the player and gets all types of events from it. It facilitates the synchronisation between the playhead, the timeline and the annotations table. The tool communicates with the backend through Rest Endpoints to get the existing annotations and maintains the new or modified one.</p>
<h4 id="BlogpostonAnnotationtool-Thebackend(lecturecapturesystem)">The backend (lecture capture system)</h4>
<p>The tool is made to work with any kind of lecture capture system. It requires the implementation of <a href="http://confluence.entwinemedia.com/display/drafts/Blog+post+on+Annotation+tool">this API</a> and the related Rest Endpoint. This part is required to ensure the persistence of the data but for demo the tool can also works with the HTML5 localStorage.</p>
<h3 id="BlogpostonAnnotationtool-Possibleprojectextension">Possible project extensions</h3>
<p>A future project could be the use of the <a href="http://www.openannotation.org/" rel="nofollow">open annotation</a> standard as a data model for this annotation tool. Although it would require an important refactoring. A good solution could be the use of this standard for the import/export format. The use of a standard is always a good practice to ensure interoperability between tools. Even if this young standardis not used in relevant tools now, the situation should change in the near futur.</p>
<p>The integration of social media is also an option that should be considered. Teachers and learners could share a video or annotation on a social media network or add comments/images as annotation content.</p>
<p>Annotations content could be extended to more than text. In the future annotations could consist of images or additional video clips.</p>
<p>Matterhorn integration could be refined. Currently the annotations integration only grabs episode from Matterhorn but does enhance the metadata when annotations are made. A deeper integration would mean a bidirectional communication with Matterhorn. The created annotations could for example be added to the search indexes to help users find relevant content.</p>
<h3 id="BlogpostonAnnotationtool-Moreinformationabouttheproject">More information about the project</h3>
<p>As an open-source project, all the project&#8217;s resources are available on <a href="https://github.com/entwinemedia/annotations/wiki" rel="nofollow">https://github.com/entwinemedia/annotations/</a>. A follow up post is on its way presenting the technology stack used for it developement.</p>
<p>Additional informations is available on <a href="https://github.com/entwinemedia/annotations/wiki" rel="nofollow">https://github.com/entwinemedia/annotations/wiki</a>.</p>
<h3 id="BlogpostonAnnotationtool-Moreinformationabouttheproject">Project Funding</h3>
<p>Provided by <a title="AAA/Switch" href="http://www.switch.ch/aaa/">AAA/SWITCH</a></p>]]></content:encoded>
			<wfw:commentRss>http://entwinemedia.com/2013/annotations-tool/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Matterhorn Audio Leveling Service</title>
		<link>http://entwinemedia.com/2013/matterhorn-audio-leveling-service/</link>
		<comments>http://entwinemedia.com/2013/matterhorn-audio-leveling-service/#comments</comments>
		<pubDate>Thu, 21 Mar 2013 06:32:05 +0000</pubDate>
		<dc:creator>Lukas Rohner</dc:creator>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Lecture Capture]]></category>
		<category><![CDATA[Opencast Matterhorn]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[flac]]></category>
		<category><![CDATA[lecture capture]]></category>
		<category><![CDATA[leveling]]></category>
		<category><![CDATA[normalization]]></category>
		<category><![CDATA[opencast matterhorn]]></category>
		<category><![CDATA[sox]]></category>
		<category><![CDATA[University Cape Town]]></category>

		<guid isPermaLink="false">http://entwinemedia.com/?p=1779</guid>
		<description><![CDATA[Many institutions have captured lecture recordings with varying levels of audio in their Opencast Matterhorn system. A common request is the for the ability to review audio levels on the server side and adjust the levels so they more closely match. Unfortunately, this isn&#8217;t possible with currently installed ffmpeg and we couldn&#8217;t just expand the composer [...]]]></description>
				<content:encoded><![CDATA[<p>Many institutions have captured lecture recordings with varying levels of audio in their <a title="Opencast Matterhorn" href="http://opencast.org/matterhorn/" target="_blank">Opencast Matterhorn</a> system. A common request is the for the ability to review audio levels on the server side and adjust the levels so they more closely match. Unfortunately, this isn&#8217;t possible with currently installed ffmpeg and we couldn&#8217;t just expand the composer service to do audio normalization. Recently the <a title="University of Cape Town" href="https://www.uct.ac.za" target="_blank">University of Cape Town</a> contracted with Entwine to create a new service for audio leveling. Because they already had experience with <a href="http://sox.sourceforge.net/" rel="nofollow">SoX</a>, a free command-line multi-track audio editor/processor, a new audio analysis and leveling service has been implemented based on Sox, along with an audio normalization and analysis workflow operation.</p>
<p>Once the service implementation and documentation have passed the community review, the new functionality will be added to the next version of Matterhorn 1.4.x.</p>
<p><span id="more-1779"></span></p>
<h3 id="Blog-AudioNormalization-SoxService">Sox Service</h3>
<p>The new SoX service, &#8220;matterhorn-sox&#8221;, is dedicated to run on a worker node and therefore is accompanies by a remote service implementation to enable audio analysis and leveling in a distributed environment.</p>
<p>Instead of just implementing audio normalization which first requires an analysis step we decided to expand the analysis step to an independent operation as well. After analyzing, three key values are being written to the media package&#8217;s audio metadata: &#8220;RMS Lev dB&#8221;, &#8220;Peak Lev dB&#8221; and &#8220;RMS peak dB&#8221;. The values can be obtained manually by executing the following commandline:</p>
<p>sox audio.flac -n remix &#8211; stats</p>
<p>The implemented normalization operation then uses the &#8220;RMS Lev dB&#8221; value and increases or decreases it to a target decibel value as requested by the operator. The resulting normalized audio file is then analyzed again and stores the same values as the analyzing operation to the media package&#8217;s audio metadata. This is done via the following SoX command:</p>
<p>sox source.flac normalized.flac remix &#8211; gain -5.4 stats  // decrease<br />
sox source.flac normalized.flac remix &#8211; gain -l 3.4 stats // increase</p>
<p>This is at the moment all we need for an audio leveling service. SoX offers a lot more things to do with audio files (e.g. silence detection), so in the future it&#8217;s easily possible to extend the service with this kind of functionality.</p>
<p><strong>Endpoint</strong></p>
<p>The service&#8217;s REST endpoint is reachable under /sox/docs with the following two methods for analyzing and normalizing an audio track:</p>
<div>
<table>
<tbody>
<tr>
<td>POST</td>
<td>/sox/analyze</td>
<td>sourceAudioTrack</td>
<td>200 Ok: Analyze job created,  400 Bad request: If required parameters aren&#8217;t set or if sourceAudioTrack isn&#8217;t from the type Track</td>
</tr>
<tr>
<td colspan="1">POST</td>
<td colspan="1">/sox/normalize</td>
<td colspan="1">sourceAudioTrack, targetRmsLevDb</td>
<td colspan="1">200 Ok: Normalize job created,  400 Bad request: If required parameters aren&#8217;t set or if sourceAudioTrack isn&#8217;t from the type Track</td>
</tr>
</tbody>
</table>
</div>
<p><strong>Links<br />
</strong></p>
<p>Opencast Ticket -<a href="http://opencast.jira.com/browse/MH-6386" rel="nofollow"> http://opencast.jira.com/browse/MH-6386</a></p>
<p>SoX Website - <a href="http://sox.sourceforge.net/" rel="nofollow">http://sox.sourceforge.net/</a></p>]]></content:encoded>
			<wfw:commentRss>http://entwinemedia.com/2013/matterhorn-audio-leveling-service/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Matterhorn + Apache SSL Configuration</title>
		<link>http://entwinemedia.com/2013/matterhorn-apache-ssl-configuration/</link>
		<comments>http://entwinemedia.com/2013/matterhorn-apache-ssl-configuration/#comments</comments>
		<pubDate>Wed, 23 Jan 2013 06:12:48 +0000</pubDate>
		<dc:creator>Tobias Wunden</dc:creator>
				<category><![CDATA[Opencast Matterhorn]]></category>
		<category><![CDATA[Operations]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[https]]></category>
		<category><![CDATA[matterhorn]]></category>
		<category><![CDATA[ssl configuration]]></category>

		<guid isPermaLink="false">http://entwinemedia.com/?p=1769</guid>
		<description><![CDATA[I added a page on the Opencast wiki describing Matterhorn + Apache SSL Configuration. In SSL configuration, a way is described to configure Matterhorn to listen for and answer HTTPS requests. Instead of having to set up Matterhorn with SSL certificates, there is also the option of keeping it on HTTP and put Apache (or [...]]]></description>
				<content:encoded><![CDATA[<p>I added a page on the Opencast wiki describing Matterhorn + Apache SSL Configuration.</p>
<p>In SSL configuration, a way is described to configure Matterhorn to listen for and answer HTTPS requests. Instead of having to set up Matterhorn with SSL certificates, there is also the option of keeping it on HTTP and put Apache (or any other HTTP server) in front of it, handling the HTTPS requests and passing them on to Matterhorn through HTTP.</p>
<h3>Configuring Apache Httpd</h3>
<p>There is plenty of documentation available on how to set up Apache HTTPd with support for HTTPS. Enabling Apache as a frontend to Matterhorn is achieved by installing an SSL certificate and properly configuring HTTPS using these certificates, as well as enabling request forwarding with a little twist, as detailed in the two sections below:</p>
<h3>Enabling Support for SSL</h3>
<p>Again, enough has been written on this topic so it should be easy enough to find documentation on how to do this on your platform. Using the search engine of your choice, look for &#8220;Apache Httpd&#8221; and &#8220;mod_ssl&#8221; to get started. It eventually comes down to installing mod_ssl, creating a certificate request, having that request be signed by a certification authority (or create a self-signed certificate) and adding the certificate, the private key used to create it as well as the signer&#8217;s root certificate into the proper locations in the Apache HTTPd configuration file.</p>
<p>Then, after some tweaking and testing, Apache will be listening on port 443, which is used for https:// urls. For the rest of this document, we assume that a virtual host is being used to gather the requests for Matterhorn under the url http(s)://matterhorn.institution.edu.</p>
<p><a title="Opencast Wiki" href="http://opencast.jira.com/wiki/pages/viewpage.action?pageId=28901499" target="_blank">Read more here.</a></p>]]></content:encoded>
			<wfw:commentRss>http://entwinemedia.com/2013/matterhorn-apache-ssl-configuration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Migrate Podcast Producer to Matterhorn: Part 1 &#8211; Nomenclature</title>
		<link>http://entwinemedia.com/2013/migrate-podcast-producer-to-matterhorn-part-1-nomenclature/</link>
		<comments>http://entwinemedia.com/2013/migrate-podcast-producer-to-matterhorn-part-1-nomenclature/#comments</comments>
		<pubDate>Wed, 16 Jan 2013 03:33:53 +0000</pubDate>
		<dc:creator>Jaime Gago</dc:creator>
				<category><![CDATA[Lecture Capture]]></category>
		<category><![CDATA[Migration]]></category>
		<category><![CDATA[Podcast Producer]]></category>
		<category><![CDATA[migrate]]></category>
		<category><![CDATA[opencast matterhorn]]></category>
		<category><![CDATA[podcast producer]]></category>

		<guid isPermaLink="false">http://entwinemedia.com/?p=1727</guid>
		<description><![CDATA[As a follow up to our first post, Podcast Producer to Opencast Matterhorn Migration, Entwine has decided to write a series of articles related to migrating from Podcast Producer (PcP) to Opencast Matterhorn (MH). The posts will address questions/issues from the perspective of an organization running Podcast Producer and investigating Matterhorn as a potential replacement.  We will [...]]]></description>
				<content:encoded><![CDATA[<p>As a follow up to our first post, <a href="http://entwinemedia.com/2012/podcast-producer-to-opencast-matterhorn/" rel="nofollow">Podcast Producer to Opencast Matterhorn Migration</a>, Entwine has decided to write a series of articles related to migrating from Podcast Producer (PcP) to Opencast Matterhorn (MH). The posts will address questions/issues from the perspective of an organization running Podcast Producer and investigating Matterhorn as a potential replacement.  We will also explore possible migration paths for those who have made the transition decision and are looking for ideas and/or next steps. The series topics will include nomenclature (current post), technical comparisons and migration strategies (hardware and software). If you have other topics you would like us to cover, please add your ideas to the comments section.</p>
<p><span id="more-1727"></span></p>
<p>We will first examine PcP technologies and the Matterhorn equivalent. Although architected around the same concept of highly customizable automated media processing platform, Matterhorn and PcP have a very different technology stack, thus the term &#8220;equivalent&#8221; throughout the article must not be taken literally. For example, while the MH Service Registry serves a purpose similar to what Xgrid provides to a PcP deployment, one can not be strictly replaced by the other, moreover even though they both provide load distribution they do not operate in the same fashion. The technical details will covered in an upcoming technical comparisons post.</p>
<h1 id="BlogPost-MigratePodcastProducertoMatterhorn:Part1-Nomenclature-1)PodcastProducerNomenclature">1) Podcast Producer Nomenclature</h1>
<p>In this table we cover the main concepts and technologies of Podcast Producer and, when it exists, the equivalent in the “Matterhorn world”.<strong><br />
</strong></p>
<div>
<div>
<table>
<colgroup>
<col />
<col />
<col /></colgroup>
<tbody>
<tr>
<td align="left" valign="top"><strong>PcP Concept/Technology</strong></td>
<td align="left" valign="top"><strong>Description</strong></td>
<td align="left" valign="top"><strong>Matterhorn Equivalent</strong></td>
</tr>
<tr>
<td align="left" valign="top">Xgrid</td>
<td align="left" valign="top">The software layer allowing a PcPinstallation to process media in a distributed computing fashion.</td>
<td align="left" valign="top">Service Registry</td>
</tr>
<tr>
<td align="left" valign="top">Xsan</td>
<td align="left" valign="top">The storage techonology recommended for demanding PcP installation</td>
<td align="left" valign="top">Any File System. Support for hard links is recommended to improve performance and lower storage requirements, e.g. NFS)</td>
</tr>
<tr>
<td align="left" valign="top">Workflows</td>
<td align="left" valign="top">Configuration capabilities of PcP allowing granular customization of automated media processing.</td>
<td align="left" valign="top">Matterhorn Workflows and Encoding properties</td>
</tr>
<tr>
<td align="left" valign="top">Podcast Library</td>
<td align="left" valign="top">A repository that stores everything that goes through the Podcast Producer server.</td>
<td align="left" valign="top">There is no strict equivalent to the Podcast Library as it is dispatched in several core services and features that provides Matterhorn with the same functionalities.</td>
</tr>
<tr>
<td align="left" valign="top">Podcast Composer</td>
<td align="left" valign="top">A Graphical User Interface (GUI) used to create PcP workflows</td>
<td align="left" valign="top">N.A</td>
</tr>
<tr>
<td align="left" valign="top">Comand Line Interfaces (CLI) (pcastaction, pcast, xgridctl,&#8230;)</td>
<td align="left" valign="top">PcP ships with several command line tools to interact with all its components.</td>
<td align="left" valign="top">Matterhorn offers a RESTful API for all of its services and allows for customization of worfklows through Java code in the form of workflow operation handlers.</td>
</tr>
<tr>
<td align="left" valign="top">Quartz Composer</td>
<td align="left" valign="top">An image composition framework for image manipulation that can be leveraged within PcP workflows</td>
<td align="left" valign="top">N.A</td>
</tr>
<tr>
<td align="left" valign="top">Podcast Capture</td>
<td align="left" valign="top">The application to control media recording</td>
<td align="left" valign="top">Capture Agent, Admin UI and REST Endpoints</td>
</tr>
<tr>
<td align="left" valign="top">QuickTime</td>
<td align="left" valign="top">The encoding software at the core of PcP customized media processing</td>
<td align="left" valign="top">FFMpeg and Media Info</td>
</tr>
</tbody>
</table>
</div>
<p>&nbsp;</p>
</div>
<h2 id="BlogPost-MigratePodcastProducertoMatterhorn:Part1-Nomenclature-2)MatterhornNomenclature">2) Matterhorn Nomenclature</h2>
<div>
<table>
<colgroup>
<col />
<col />
<col />
<col /></colgroup>
<tbody>
<tr>
<td align="left" valign="top" width="183"><strong>MH Concept/Technology</strong></td>
<td align="left" valign="top" width="390"><strong>Description</strong></td>
<td align="left" valign="top" width="283"><strong>Podcast Producer Equivalent</strong></td>
</tr>
<tr>
<td align="left" valign="top">MediaPackage</td>
<td align="left" valign="top">“A Bundle that encompasses all the files that make up a recording. In Matterhorn, it is an XML document that includes simple metadata (i.e. an identifier, a title, contributors etc.) and a list of package elements, including:<br />
- Media tracks &#8211; A track represents audiovisual media assets.<br />
- Metadata catalogs &#8211; metadata that either describes the media package as a whole or refer to a certain track or attachment inside the package.<br />
- Attachments &#8211; represents any kind of document that can be added to the media package, typically slide images.”<br />
<br />
Reference: <a href="http://opencast.jira.com/wiki/display/MHDOC/Entities" rel="nofollow">MediaPackage Entities</a></td>
<td align="left" valign="top">Podcast Library</td>
</tr>
<tr>
<td align="left" valign="top" height="56">Service Registry</td>
<td align="left" valign="top">The part of MH that manages the other services, the hosts, load accross them  and the  job distribution.<br />
<br />
Reference:<br />
<a href="http://opencast.jira.com/wiki/display/MHDOC/Server+and+Service+Topologies">Server and Service Topologies</a><br />
<a href="http://opencast.jira.com/wiki/display/MHDOC/Job+Dispatching" rel="nofollow">Job Dispatching</a></td>
<td align="left" valign="top">Xgrid,Podcast Library</td>
</tr>
<tr>
<td align="left" valign="top">REST Endpoints</td>
<td align="left" valign="top">Matterhorn architecture is built around RESTful services that can be accessed externally.<br />
<br />
Reference: <a href="http://opencast.jira.com/wiki/display/MHDOC/Architecture" rel="nofollow">Matterhorn Architecture</a></td>
<td align="left" valign="top">CLI</td>
</tr>
<tr>
<td align="left" valign="top">Capture Agent (CA)</td>
<td align="left" valign="top">Sometimes used to refer to the Open source Software layer only but usually it is a device that includes both the MH compliant software and capturing hardware. While building your own CA is possible, several hardware vendors with proprietary solutions but compatible with the Matterhorn Capture Agent API (scheduling, state management and ingest) exist.<br />
<br />
References:<br />
<a href="http://opencast.jira.com/wiki/display/MHTRUNK/Capture+Agent" rel="nofollow">Capture Agents</a><br />
<a href="http://opencast.jira.com/wiki/display/MHDOC/Capture+Agent+Job+Sequence" rel="nofollow">Capture Agent Job Sequence</a><br />
<a href="http://opencast.jira.com/wiki/display/MHDOC/Ingest+Overview" rel="nofollow">Ingest Overview</a></td>
<td align="left" valign="top">Podcast Capture  and/or Capture Hardware layer feeding media to PcP backend</td>
</tr>
<tr>
<td align="left" valign="top">Workflows+Workflow Operation Handler<br />
+Encoding Properties (FFMpeg)</td>
<td align="left" valign="top">Similar to PcP, MH Workflows and the associated operation handlers and encoding properties enable complex automated media processing through granular configuration.<br />
<br />
Reference: <a href="http://opencast.jira.com/wiki/display/MHTRUNK/Workflow+Operation+handler" rel="nofollow">Create a Custom Workflow Operation Handler</a></td>
<td align="left" valign="top">CLI (pcastation in particular), workflows,Quicktime Encoding</td>
</tr>
<tr>
<td align="left" valign="top">Media Analysis</td>
<td align="left" valign="top">MH ships with education oriented media analysis capablities both on the back end (using tesseract and FFMpeg) and on the front end via the Engage player. Such analysis features enables thumbnail navigation based on automated video segmentation, metadata extraction, etc.<br />
<br />
Reference:<br />
<a href="http://opencast.jira.com/wiki/display/MHDOC/Video+Segmentation" rel="nofollow">Video Segmentation</a><br />
<a href="http://opencast.jira.com/wiki/display/MH/Text+Analysis" rel="nofollow">Text Analysis</a><br />
<a href="http://opencast.jira.com/wiki/display/MH/Speech+Transcription" rel="nofollow">Speech Transcription</a></td>
<td align="left" valign="top">PcP by itself does not include advanced media analysis, it is however possible thanks to its highly customizable nature to integrate media anlaysis tools such as tesseract for instance leveraging pcastaction shell</td>
</tr>
<tr>
<td align="left" valign="top">Engage</td>
<td align="left" valign="top">Player and corresponding UI in which users view and interact with video and related video metadata.<br />
<br />
Reference: <a href="http://opencast.jira.com/wiki/display/MHDOC/Engage+Media+Player" rel="nofollow">Engage Media Player</a></td>
<td align="left" valign="top">N.A</td>
</tr>
</tbody>
</table>
</div>]]></content:encoded>
			<wfw:commentRss>http://entwinemedia.com/2013/migrate-podcast-producer-to-matterhorn-part-1-nomenclature/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>UNINETT Community Contributions</title>
		<link>http://entwinemedia.com/2013/uninett-community-contributions-2012/</link>
		<comments>http://entwinemedia.com/2013/uninett-community-contributions-2012/#comments</comments>
		<pubDate>Mon, 07 Jan 2013 14:14:55 +0000</pubDate>
		<dc:creator>Andy Wasklewicz</dc:creator>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Opencast Matterhorn]]></category>
		<category><![CDATA[1.4]]></category>
		<category><![CDATA[matterhorn]]></category>
		<category><![CDATA[multi-tenancy]]></category>
		<category><![CDATA[UNINETT]]></category>

		<guid isPermaLink="false">http://entwinemedia.com/?p=1707</guid>
		<description><![CDATA[Entwine partnered with UNINETT, an organization in Norway providing IT infrastructure services for Norwegian universities, to deploy a centralized Opencast Matterhorn lecture capture system prototype. Entwine&#8217;s development work for Uninett resulted in a significant contribution to the Matterhorn platform. Much of the work has been merged back to the community and will be part of the much anticipated [...]]]></description>
				<content:encoded><![CDATA[<p>Entwine partnered with <a href="https://www.uninett.no/en" target="_blank" rel="nofollow">UNINETT</a>, an organization in Norway providing IT infrastructure services for Norwegian universities, to deploy a centralized <a title="Matterhorn" href="http://opencastproject.org/matterhorn">Opencast Matterhorn</a> lecture capture system prototype. Entwine&#8217;s development work for Uninett resulted in a significant contribution to the Matterhorn platform. Much of the work has been merged back to the community and will be part of the much anticipated Matterhorn 1.4 release. A big thank you to UNINETT for their generous support of the Matterhorn project.</p>
<h1 id="BlogPost-UNINETTwork-Features">Contributed Features</h1>
<ul>
<li>User groups<br />
<em>Users can be grouped and groups can have access rights.</em></li>
<li>Access control list management
<ul>
<li>ACL scheduling<br />
<em>Apply ACLs in a time based manner.</em></li>
<li>ACL management<br />
<em>Predefine ACLs per organization and give them names.</em></li>
<li>ACLs on a per episode basis<br />
<em>ACLs can now be set on the episode level in addition to the series level to provide fine grained access control.</em></li>
</ul>
</li>
<li>Ingest from CloudStor service<br />
<em>Service is a cloud file store. Matterhorn polls this service and ingests any uploaded media packages.</em></li>
<li>Integration with Shibboleth authentication and authorization service</li>
<li>RPM based deployment on a distributed setup</li>
<li>Archive metrics (1.4)<br />
<em>Monitor free and total space via JMX.</em></li>
<li><a href="http://graylog2.org/" rel="nofollow">Graylog2</a> integration<br />
<em>Graylog2 is a tool for centralized logging.</em></li>
<li>Branding for Engage based on the tenant</li>
<li>Browse Engage by series</li>
</ul>
<h1 id="BlogPost-UNINETTwork-Fixes">Contributed Fixes</h1>
<ul>
<li>Several fixes for distributed and multi-tenant MH setups (everything 1.4)
<ul>
<li>Event handler synchronization<br />
<em>Several concurrency issues caused handlers to interfere with services and each other.</em></li>
<li>Digest authentication</li>
<li>Media inspection property setting<br />
<em>Properties in class CommonMetadata could not be set.</em></li>
<li>Workspace lock file synchronization</li>
<li>SearchServiceRemoteImpl forwarded only a small subset of query parameters</li>
<li>User propagation between stub and remote service</li>
<li>RemoteBase fix<br />
<em>Could not handle 404 from series service.</em></li>
<li>Tenant config<br />
<em>To support multi-tenant setups some config keys have been moved from the global config.properties to the organization config.</em></li>
</ul>
</li>
<li>Miscellaneous fixes
<ul>
<li>Tiff encoding of ffmpeg caused tesseract issues (1.4)</li>
<li>Default workflow did not archive metadata catalogs (1.4)</li>
</ul>
</li>
</ul>
<p>Feel free to <a href="mailto:info@entwinemedia.com">contact us</a> if you have questions about our work with Uninett or the new Matterhorn 1.4 features.</p>]]></content:encoded>
			<wfw:commentRss>http://entwinemedia.com/2013/uninett-community-contributions-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Matterhorn MediaPackage Converter</title>
		<link>http://entwinemedia.com/2012/matterhorn-mediapackage-converter/</link>
		<comments>http://entwinemedia.com/2012/matterhorn-mediapackage-converter/#comments</comments>
		<pubDate>Fri, 14 Dec 2012 03:37:46 +0000</pubDate>
		<dc:creator>Christoph Driessen</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Opencast Matterhorn]]></category>
		<category><![CDATA[converter]]></category>
		<category><![CDATA[mediapackage]]></category>
		<category><![CDATA[opencast matterhorn]]></category>
		<category><![CDATA[scala]]></category>

		<guid isPermaLink="false">http://entwinemedia.com/?p=1682</guid>
		<description><![CDATA[Matterhorn 1.4.x fixes a major bug with namespaces in XML documents. See Opencast ticket MH-8958 for details. Because of this a media package from a previous release can&#8217;t be ingested directly into 1.4 without fixing the manifest. The MpConverter remedies this situation and in addition allows for building 1.4 compliant media packages from scratch, i.e. from media files, metadata [...]]]></description>
				<content:encoded><![CDATA[<p id="Blogpostaboutmediapackageconverter-MediaPackageConverter">Matterhorn 1.4.x fixes a major bug with namespaces in XML documents. See <a href="http://opencast.jira.com/browse/MH-8958" rel="nofollow">Opencast ticket MH-8958</a> for details.</p>
<p>Because of this a media package from a previous release can&#8217;t be ingested directly into 1.4 without fixing the manifest. The <em>MpConverter</em> remedies this situation and in addition allows for building 1.4 compliant media packages from scratch, i.e. from media files, metadata catalogs and attachments. It is a command line tool that runs without interaction when applied to packages <em>with</em> a manifest and provides an interactive editing shell when building a new package from content files.</p>
<h2 id="Blogpostaboutmediapackageconverter-FixingDublinCoreCatalogs">Fixing DublinCore Catalogs</h2>
<p>In addition the converter fixes some malformed metadata fields. DublinCore catalogs need to have dates encoded according to <a href="http://www.w3.org/TR/NOTE-datetime" rel="nofollow">W3C-DTF</a> in order to be accepted. Capture agents have been seen to write these fields in a different format. Currently the following fixes are supported:</p>
<table cellpadding="3" align="left">
<tbody>
<tr>
<td><strong>Field</strong></td>
<td><strong>Malformed Value</strong></td>
<td><strong>Notes</strong></td>
</tr>
<tr>
<td>&lt;dcterms:created/&gt;<br />
&lt;dcterms:date/&gt;</td>
<td>2012-02-01 09:46:16</td>
<td>Converts to UTC according to the machine&#8217;s time zone.</td>
</tr>
<tr>
<td>&lt;dcterms:created/&gt;<br />
&lt;dcterms:date/&gt;</td>
<td>1355401482506</td>
<td>Value in milliseconds. Converts to UTC according to the machine&#8217;s time zone.</td>
</tr>
</tbody>
</table>
<p>Support for other fields has been prepared but is not yet implemented. If you encounter a different format let us know so we can incorporate a fix for it.<span id="more-1682"></span></p>
<h2 id="Blogpostaboutmediapackageconverter-BuildingMediaPackagesFromScratch">Building MediaPackages From Scratch</h2>
<p>Assume you have some tracks and metadata in a directory structure like below but no manifest file. To create a valid media package run the converter with the root directory as argument. The converter helps with building the package by highlighting fully defined elements and provides tab completion support for providing missing information.</p>
<pre>|- track-0/video.mp4
|- catalog-0/dublincore.xml
|- catalog-1/dublincore.xml</pre>
<h2 id="Blogpostaboutmediapackageconverter-WhereToFind">Where To Find</h2>
<p>Find the converter at github <a href="https://github.com/entwinemedia/mpconverter" rel="nofollow">https://github.com/entwinemedia/mpconverter</a> included is the source code and a precompiled binary to get you started quickly.</p>
<h2 id="Blogpostaboutmediapackageconverter-BatchConverting">Batch Converting</h2>
<p>For batch converting simply wrap the converter in a loop.</p>
<div>
<div id="highlighter_381355">
<pre> $ for m in $(find . -type d -maxdepth 1); do mpconv.sh $m; done</pre>
</div>
</div>
<h2 id="Blogpostaboutmediapackageconverter-WhatElse?">What Else?</h2>
<p>This little project is also a nice demonstration of how to use the Matterhorn libraries from another JVM based language, here <a href="http://www.scala-lang.org/" rel="nofollow">Scala</a>. If you like to learn something new and don&#8217;t want to play with the big boys (Haskell) give Scala a try! It&#8217;s very much worth it. And remember, it&#8217;s also from Switzerland <img alt="(wink)" src="http://confluence.entwinemedia.com/s/en_GB-418945332/4020/400023a0f5fc074464540c8c8db3164c2d05daa9.9/_/images/icons/emoticons/wink.png" data-emoticon-name="wink" />.</p>
<p>Hope you&#8217;ll find it useful. Happy converting!</p>]]></content:encoded>
			<wfw:commentRss>http://entwinemedia.com/2012/matterhorn-mediapackage-converter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Graylog2 &amp; Matterhorn: Centralized Log Management</title>
		<link>http://entwinemedia.com/2012/graylog2-matterhorn-centralized-log-management/</link>
		<comments>http://entwinemedia.com/2012/graylog2-matterhorn-centralized-log-management/#comments</comments>
		<pubDate>Mon, 10 Dec 2012 05:28:26 +0000</pubDate>
		<dc:creator>Jaime Gago</dc:creator>
				<category><![CDATA[Opencast Matterhorn]]></category>
		<category><![CDATA[Operations]]></category>
		<category><![CDATA[GELF]]></category>
		<category><![CDATA[Graylog2]]></category>
		<category><![CDATA[log4j]]></category>
		<category><![CDATA[logs]]></category>
		<category><![CDATA[matterhorn]]></category>
		<category><![CDATA[opencast]]></category>
		<category><![CDATA[OSGI]]></category>

		<guid isPermaLink="false">http://entwinemedia.com/?p=1624</guid>
		<description><![CDATA[With the management of distributed applications comes the question of log management; not only in terms of centralization of the logs themselves (which typically are distributed on the different application hosts) but also in terms of finding the relevant information amongst the vast amount of data recorded in the logs. On it&#8217;s own, the open [...]]]></description>
				<content:encoded><![CDATA[<div id="main-header">
<p>With the management of distributed applications comes the question of log management; not only in terms of centralization of the logs themselves (which typically are distributed on the different application hosts) but also in terms of finding the relevant information amongst the vast amount of data recorded in the logs. On it&#8217;s own, the open source lecture capture system <a title="Matterhorn" href="http://opencastproject.org/matterhorn" target="_blank">Matterhorn</a> does not address such challenges therefore Entwine recommends the integration of an external product/services.</p>
<p>While proprietary services such as <a title="Splunk" href="http://www.splunk.com" target="_blank">Splunk</a> or <a title="Loggly" href="http://loggly.com" target="_blank">Loggly</a> are available, Entwine investigated open source solutions such as <a title="Logstash" href="http://logstash.net" target="_blank">Logstash</a> paired with <a title="Kibana" href="http://kibana.org" target="_blank">Kibana</a> or <a title="Syslog-ng" href="http://www.balabit.com/network-security/syslog-ng" target="_blank">Syslog-ng</a> and ultimately chose <a title="Graylog2" href="http://www.graylog2.org" target="_blank">Graylog2</a>. An advantage of Graylog2 is its simple integration with JAVA application using Log4j as its logging facility via readily available appenders.</p>
<p><span id="more-1624"></span></p>
<p>To install Graylog2 on RHEL/CentOS/SL 6 <a href="http://blog.milford.io/2012/03/installing-graylog2-0-9-6-elasticsearch-0-18-7-mongodb-2-0-3-on-centos-5-with-rvm/">the step by step by Nathan Milford</a> has proved to be the most functional.</p>
<p>In order to ship Matterhorn logs to Graylog2 , Entwine leverages the Graylog Extended Log Format (GELF) which is the ideal way of sending JAVA logs as it can deal with multi-line JAVA stack traces.</p>
<p>Since Matterhorn uses <a href="http://logging.apache.org/log4j/2.x" rel="nofollow">Log4j</a> as its logging facility, it requires the use of a GELF appender for Log4j, while some GELF Log4j appenders exist, none of those tested functioned with the particular OSGi Matterhorn architecture and the <a href="http://felix.apache.org/site/index.html" rel="nofollow">Apache Felix framework</a>. Entwine modified the <a href="https://github.com/t0xa/gelfj" rel="nofollow">GELF appender from Anton Yakimov</a> to turn it into an OSGi bundle that attaches as a fragment to Pax Logging, thus making Matterhorn &#8220;Graylog2 ready&#8221;. You can find the pom to build the gelf4j GELF appender that will work with Matterhorn in the <a href="https://github.com/entwinemedia/gelf4j-matterhorn">Entwine Matterhorn-Gelfj github repository</a> ,  also included in the binary itself built from Anton&#8217;s source code using the included pom.xml</p>
<p>Don&#8217;t forget that you still need to make the GELF appender available to Matterhorn and Log4j, for <a href="http://entwinemedia.com/2012/rpm-based-matterhorn-deployment/">Entwine RPM based</a> deployment it means including the gelfj binary in the package and adding the path to the GELF Log4j appender to all the profiles for felix to load the module at start level 1.</p>
<p>Once the GELF Log4j appender has been loaded by Felix Log4j needs to be configured to use it via $MATTERHORN_HOME/services/org.ops4j.pax.logging.properties</p>
<p>Here are the details of the Log4j configuration for Matterhorn:</p>
<p>Include &#8220;graylog2&#8243; to log4j.rootLogger key e.g. :</p>
<p>log4j.rootLogger=ERROR,graylog2,stdout,file</p>
<p>Add the required keys for graylog2 appender as per <a href="https://github.com/t0xa/gelfj/blob/master/README.md" rel="nofollow">Anton Yakimov gelfj documentation</a> e.g. :</p>
<p>log4j.appender.graylog2=org.graylog2.log.GelfAppender<br />
log4j.appender.graylog2.graylogHost=GRAYLOG2_SERVER_URL<br />
log4j.appender.graylog2.originHost=HOSTNAME<br />
log4j.appender.graylog2.facility=matterhorn-graylog2<br />
log4j.appender.graylog2.layout=org.apache.log4j.PatternLayout<br />
log4j.appender.graylog2.extractStacktrace=true<br />
log4j.appender.graylog2.addExtendedInformation=true<br />
log4j.appender.graylog2.additionalFields={&#8216;environment&#8217;: &#8216;DEV&#8217;, &#8216;application&#8217;: &#8216;Matterhorn&#8217;}</p>
</div>]]></content:encoded>
			<wfw:commentRss>http://entwinemedia.com/2012/graylog2-matterhorn-centralized-log-management/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Matterhorn Groups: Role-Based Accessed Control</title>
		<link>http://entwinemedia.com/2012/matterhorn-groups-role-based-accessed-control/</link>
		<comments>http://entwinemedia.com/2012/matterhorn-groups-role-based-accessed-control/#comments</comments>
		<pubDate>Thu, 06 Dec 2012 15:02:43 +0000</pubDate>
		<dc:creator>Lukas Rohner</dc:creator>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Lecture Capture]]></category>
		<category><![CDATA[Opencast Matterhorn]]></category>
		<category><![CDATA[1.5]]></category>
		<category><![CDATA[groups]]></category>
		<category><![CDATA[opencast matterhorn]]></category>
		<category><![CDATA[permissions]]></category>
		<category><![CDATA[role based access control]]></category>
		<category><![CDATA[roles]]></category>

		<guid isPermaLink="false">http://entwinemedia.com/?p=1649</guid>
		<description><![CDATA[Overview For many institutions, deploying a lecture capture system is a difficult task to manage as it involves many shared resources that staff, faculty and students, potentially across multiple campuses, must all share access to. The task is more difficult if there is no integration with directory services listing available users, or if the users are [...]]]></description>
				<content:encoded><![CDATA[<h2 id="Blog-GroupRoleconcept-GettingStarted">Overview</h2>
<p>For many institutions, deploying a lecture capture system is a difficult task to manage as it involves many shared resources that staff, faculty and students, potentially across multiple campuses, must all share access to. The task is more difficult if there is no integration with directory services listing available users, or if the users are not grouped inside that directory in ways that are meaningful to the administration or consumption of lecture capture recordings.</p>
<div title="Page 9">
<p>Even if the directory service offers grouping of staff members or students, there is always that situation where a recording needs to be available to a subset of a given group only, or individuals, that are not part of the directory need to be included in the group of viewers. Allowing broad access to a recording comes with the risk of intentional or unintentional changes to the system and its data which could compromise confidentiality or the availability of the recordings themselves.</p>
<div title="Page 10">
<div>
<div>
<p>Thanks to the support of <a title="UNINETT" href="https://www.uninett.no/en">UNINETT</a> and as part of a country-wide pilot installation of <a title="Opencast Matterhorn" href="http://opencastproject.org/matterhorn">Opencast Matterhorn</a> for higher education institutions in Norway, Entwine has enhanced and extended role-based access control in Matterhorn with the introduction of &#8220;groups&#8221;. An administrator is now able to create a group and invite an arbitrary number of people to it, then use the group when managing permissions on series and individual recordings, thereby granting those permissions to each of the group members.</p>
<p>This development involved a significant effort to refactor and implement due to the fact that rights management affects almost the entire code base and the limitations of the existing codebase. Entwine and UNINETT believe this work will greatly enhance Matterhorn and provides users more granularity when it comes to managing the appropriate level of access to recordings in Matterhorn.</p>
<p><span id="more-1649"></span></p>
<h2 id="Blog-GroupRoleconcept-GettingStarted">Getting Started</h2>
</div>
</div>
</div>
</div>
<p>As a newcomer, a role-based approach may seem confusing but it&#8217;s actually quite simple once you understand how it works.  This model allows an administrator to assign access privileges according to the &#8220;role&#8221; of a user or group. For example:</p>
<div title="Page 9">
<div>
<div>
<ol>
<li>A role is created in the system that usually aligns with a user type (administrator, student, faculty)</li>
<li>Grant permissions to recordings based on roles</li>
<li>Assign roles to users <strong>or</strong></li>
<li>Assign roles to groups, then add users to the groups</li>
</ol>
</div>
</div>
</div>
<p>This means once a user logs in, the determination as to whether or not he/she has access to execute specific tasks (e.g. create a workflow, change metadata, watch video), is granted based on the set of role(s) a user is assigned, where the set is compiled of roles that have been assigned to that user individually and of roles assigned to groups that the user is in. The group based approach to roles and permissions management is more flexible and powerful than relying on (usually sparse) information in existing institutional directories or managing roles on a per user basis.</p>
<p>In order to complete the picture, here are several basic concepts to help you better understand the association between user, groups, roles and permissions:</p>
<ul>
<li>There are <strong>users</strong> and each user optionally belongs to any number of <strong>groups</strong>.</li>
<li>A <strong>group </strong>is the holder of one or multiple<strong> roles.</strong></li>
<li>A <strong>role</strong> is the method for assigning <strong>permissions</strong> to a <strong>resource</strong> such as a recording<strong>.</strong></li>
<li>A <strong>permission</strong> gives a specific right to do something with that <strong>resource</strong> within Matterhorn</li>
</ul>
<div>It&#8217;s important to remember that:</div>
<div></div>
<ul>
<li>A <strong>user</strong> can have multiple <strong>roles</strong>.</li>
<li>A <strong>role</strong> can be assigned to multiple <strong>users </strong>or<strong> groups</strong>.</li>
<li>A <strong>role</strong> can be associated with many <strong>permissions</strong>.</li>
<li>A <strong>permission</strong> can be assigned to many <strong>roles</strong>.</li>
</ul>
<h2 id="Blog-GroupRoleconcept-OurWork">Our Work</h2>
<p>There have been significant changes and additions made to the codebase in order to add the group functionality, including:</p>
<ol>
<li>A new REST endpoint for the creation and management of groups.</li>
<li>The REST endpoints for organization, users and roles was completely revised and now returns full object representations instead of just &#8220;mh_default_org&#8221; for an organizations but rather id, name, adminRole, anonymousRole, config properties, etc.</li>
<li>Previously the users and roles endpoint returned content from Matterhorn&#8217;s internal users and role database only. The revised endpoints now return all the users and roles from all registered user and role providers (e.g. internal ones as well as an external LDAP database).</li>
</ol>
<p>The work on the backend led to a complete database refactoring with several new tables, as previously, many of the objects had only been kept in memory. Finally, as seen below, there is a proposal and implementation for a new &#8220;Security&#8221; section in the Matterhorn administrative UI for creating, editing and deleting the groups as well as managing group roles and memebership:</p>
<p><a href="http://entwinemedia.com/wp-content/uploads/2012/12/Bildschirmfoto-2012-11-16-um-09.26.41.png"><img class="alignleft size-medium wp-image-1618" title="Bildschirmfoto 2012-11-16 um 09.26.41" src="http://entwinemedia.com/wp-content/uploads/2012/12/Bildschirmfoto-2012-11-16-um-09.26.41-300x222.png" alt="Bildschirmfoto 2012-11-16 um 09.26.41" width="300" height="222" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Entwine will discuss this topic further at the upcoming <a title="Opencast Unconference" href="http://unconference.opencast.org">Opencast conference</a> at UC San Diego, we hope to see you there.</p>]]></content:encoded>
			<wfw:commentRss>http://entwinemedia.com/2012/matterhorn-groups-role-based-accessed-control/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>November Opencast Matterhorn Community Work Sponsorship</title>
		<link>http://entwinemedia.com/2012/november-opencast-matterhorn-community-work-sponsorship/</link>
		<comments>http://entwinemedia.com/2012/november-opencast-matterhorn-community-work-sponsorship/#comments</comments>
		<pubDate>Mon, 03 Dec 2012 22:18:58 +0000</pubDate>
		<dc:creator>Andy Wasklewicz</dc:creator>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[1.4]]></category>
		<category><![CDATA[1.5]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[matterhorn]]></category>
		<category><![CDATA[patches]]></category>

		<guid isPermaLink="false">http://entwinemedia.com/?p=1607</guid>
		<description><![CDATA[Thanks to Harvard University Digital Video Services for funding the following Matterhorn community patches in November: MH-9316 - SearchServiceRemoteImpl#getSearchUrl does not use all query parameters. MH-9315 - getForAdministrative methods do not check for the organization admin role. MH-9290 - Services Documentation links aren&#8217;t linked to the right tenant in a multi tenant distributed environment MH-9259 - Scheduling UI: if missing or invalid data [...]]]></description>
				<content:encoded><![CDATA[<p>Thanks to <a title="Harvard University" href="http://video.uis.harvard.edu" target="_blank">Harvard University Digital Video Services</a> for funding the following <a title="Opencast Matterhorn" href="http://opencastproject.org/matterhorn" target="_blank">Matterhorn</a> community patches in November:</p>
<p><a title="Opencast Jira" href="http://opencast.jira.com/browse/MH-9316">MH-9316</a> - SearchServiceRemoteImpl#getSearchUrl does not use all query parameters.<br />
<a title="Opencast Jira 9315" href="http://opencast.jira.com/browse/MH-9315">MH-9315</a> - getForAdministrative methods do not check for the organization admin role.<br />
<a title="Opencast Jira 9290" href="http://opencast.jira.com/browse/MH-9290">MH-9290</a> - Services Documentation links aren&#8217;t linked to the right tenant in a multi tenant distributed environment<br />
<a title="Opencast Jira 9259" href="http://opencast.jira.com/browse/MH-9259">MH-9259</a> - Scheduling UI: if missing or invalid data when user submits, can&#8217;t see error message unless scroll to top<br />
<a title="Opencast Jira" href="http://opencast.jira.com/browse/MH-9253">MH-9253</a> - The mediapackage metadata editor does not listen to window resize events</p>
<p>and to <a title="UNINETT" href="https://www.uninett.no/en">UNINETT</a> for funding these patches:</p>
<p><a title="Opencast Jira" href="http://opencast.jira.com/browse/MH-9274">MH-9274</a> - Encode, Analyze, and Distribute&#8221; configuration panel script does not work if loaded inside a dialog.<br />
<a title="Opencast Jira Patch 9250" href="http://opencast.jira.com/browse/MH-9250">MH-9250</a> - EpisodesPermissionsUpdateEventHandler creates too much new version during updating</p>
<p>Please contact us if you are interested in putting Entwine to work on Opencast Matterhorn patches in December. Our goal is to help the community release 1.4 by the end of December and any support helps. We have exciting ideas and features we are working on for 1.5 which we will be discussing in a future post.</p>]]></content:encoded>
			<wfw:commentRss>http://entwinemedia.com/2012/november-opencast-matterhorn-community-work-sponsorship/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>October Opencast Matterhorn Community Work Sponsorship</title>
		<link>http://entwinemedia.com/2012/october-opencast-matterhorn-community-work-sponsor/</link>
		<comments>http://entwinemedia.com/2012/october-opencast-matterhorn-community-work-sponsor/#comments</comments>
		<pubDate>Fri, 02 Nov 2012 21:09:09 +0000</pubDate>
		<dc:creator>Andy Wasklewicz</dc:creator>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[1.4]]></category>
		<category><![CDATA[1.5]]></category>
		<category><![CDATA[bugs]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[opencast matterhorn]]></category>
		<category><![CDATA[patches]]></category>
		<category><![CDATA[sponsor]]></category>

		<guid isPermaLink="false">http://entwinemedia.com/?p=1587</guid>
		<description><![CDATA[Thanks to Harvard University Digital Video Services for funding the following Matterhorn community patches in October: MH-9213 - Metadata used in integration tests lacks title MH-9214 - MimeType parser does not honor multiple extensions defined in mimetypes.xml config MH-9216 - StreamHelper sometimes throws NPE due to use of wrong logger object Please contact us if you are interested in putting Entwine to [...]]]></description>
				<content:encoded><![CDATA[<p>Thanks to <a title="Harvard University" href="http://video.uis.harvard.edu" target="_blank">Harvard University Digital Video Services</a> for funding the following <a title="Opencast Matterhorn" href="http://opencastproject.org/matterhorn" target="_blank">Matterhorn</a> community patches in October:</p>
<p><a title="Opencast Jira" href="http://opencast.jira.com/browse/MH-9213" target="_blank">MH-9213</a> - Metadata used in integration tests lacks title<br />
<a title="Opencast Jira" href="http://opencast.jira.com/browse/MH-9214" target="_blank">MH-9214</a> - MimeType parser does not honor multiple extensions defined in mimetypes.xml config<br />
<a title="Opencast Jira" href="http://opencast.jira.com/browse/MH-9216" target="_blank">MH-9216</a> - StreamHelper sometimes throws NPE due to use of wrong logger object</p>
<p>Please contact us if you are interested in putting Entwine to work on Opencast Matterhorn patches in November. Our goal is to help the community release 1.4 by the end of December and any support helps. We have exciting ideas and features we are working on for 1.5 which we will be discussing in a future post.</p>]]></content:encoded>
			<wfw:commentRss>http://entwinemedia.com/2012/october-opencast-matterhorn-community-work-sponsor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
