<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.mediagoblin.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Helen+Christian</id>
	<title>GNU MediaGoblin Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.mediagoblin.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Helen+Christian"/>
	<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/Special:Contributions/Helen_Christian"/>
	<updated>2026-06-07T07:06:15Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.17</generator>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=CommunityGovernance&amp;diff=1868</id>
		<title>CommunityGovernance</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=CommunityGovernance&amp;diff=1868"/>
		<updated>2016-11-26T16:13:05Z</updated>

		<summary type="html">&lt;p&gt;Helen Christian: /* MediaGoblin translation platform */ Added Fullstops.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
MediaGoblin is a community project and we everybody try to help each other. Chris Webber is our lead developer, but the project should be able to self govern so he can take a break if he needs it or when he or other contributors take deserved holidays :) &lt;br /&gt;
&lt;br /&gt;
In general, you can ask anything in the mailing list or the IRC channel and hopefully somebody will answer soon. Topics are discussed in the mailing list, IRC channel or monthly meetings (in the IRC channel).&lt;br /&gt;
&lt;br /&gt;
In this page we list several tasks or areas along with the names or nicks of MediaGoblin community members that may help on them (for example, because they have permissions to perform certain operations). Please be kind when asking for help, most of us are volunteering for MediaGoblin in our free time, so answers or problems resolution can take a while.&lt;br /&gt;
&lt;br /&gt;
Feel free to edit this page to list more tasks or sign the ones you self-assign.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
More information about this in this mailing list thread: http://lists.mediagoblin.org/pipermail/devel/XXXXX&lt;br /&gt;
&lt;br /&gt;
== MediaGoblin codebase ==&lt;br /&gt;
&lt;br /&gt;
* People with permissions to commit/merge and handle the main codebase&lt;br /&gt;
&lt;br /&gt;
* Current committers: https://savannah.gnu.org/project/memberlist.php?group=mediagoblin&lt;br /&gt;
* General stuff: breton, Elrond (via PM on IRC)&lt;br /&gt;
* Python 3 support: berkerpeksag (berker on IRC), breton&lt;br /&gt;
* Audio/Video: breton&lt;br /&gt;
* Documentation: jcampbell / j1mc&lt;br /&gt;
&lt;br /&gt;
== MediaGoblin website ==&lt;br /&gt;
&lt;br /&gt;
* People with permissions to handle website outages&lt;br /&gt;
** breton&lt;br /&gt;
** simonft&lt;br /&gt;
** Chris Webber (paroneayea on freenode)&lt;br /&gt;
&lt;br /&gt;
* Publish pages (for example new releases)&lt;br /&gt;
&lt;br /&gt;
== MediaGoblin wiki ==&lt;br /&gt;
&lt;br /&gt;
* Some Wiki administration: Elrond (via PM on IRC)&lt;br /&gt;
&lt;br /&gt;
== MediaGoblin issue tracker ==&lt;br /&gt;
&lt;br /&gt;
* Issue tracker server administration: simonft, paroneayea&lt;br /&gt;
* Help triaging bugs: R13ose&lt;br /&gt;
* People with permissions to create accounts in trac: Elrond&lt;br /&gt;
* People with permissions to delete users/issues/comments in trac: Elrond&lt;br /&gt;
* Volunteers for spam cleaning: LArjona, ayleph&lt;br /&gt;
* Talk to trac people about features and spam: R13ose&lt;br /&gt;
* Would like more access to be able to help/fix things:&lt;br /&gt;
&lt;br /&gt;
== MediaGoblin translation platform ==&lt;br /&gt;
&lt;br /&gt;
* If there is need of manual import/export files between Pootle and the MediaGoblin codebase, who can help on that.&lt;br /&gt;
* LArjona (Spanish translator) can guide new translators, reproduce problems in the translation platform, test changes, and help with Pootle quality checks. Available in the mailing list and IRC channel.&lt;br /&gt;
* breton knows how and why translations are downloaded/compiled.&lt;br /&gt;
&lt;br /&gt;
== MediaGoblin IRC channel and mailing list ==&lt;br /&gt;
&lt;br /&gt;
* Change IRC topic, channel operators&lt;br /&gt;
* Running the monthly meetings: breton&lt;br /&gt;
* Administrate the mailing list: larjona&lt;/div&gt;</summary>
		<author><name>Helen Christian</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=Feature_Ideas/Reprocessing&amp;diff=1867</id>
		<title>Feature Ideas/Reprocessing</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=Feature_Ideas/Reprocessing&amp;diff=1867"/>
		<updated>2016-11-26T16:09:15Z</updated>

		<summary type="html">&lt;p&gt;Helen Christian: /* When should we try to reprocess? */ Added Fullstop.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;See also: [[MediaTypeRefactor]]&lt;br /&gt;
&lt;br /&gt;
== Rationale ==&lt;br /&gt;
&lt;br /&gt;
In MediaGoblin, processing refers to the act of transforming an original media file in various ways to make it suitable to serve.  For example, with images, we prepare resized versions for thumbnail and gallery views.  With video, we capture a thumbnail frame, and transcode a medium-sized version for embedded viewing.&lt;br /&gt;
&lt;br /&gt;
Normally, we process media as soon as we can after it&#039;s been uploaded to the site.  Sometimes, we want to reprocess some media.  There are a couple of reasons why this might happen:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;p&amp;gt;The original processing attempt failed.  This could be for lots of reasons: maybe a transcoding process was killed by a crazed sysadmin, or the file is corrupted, or there might even be a bug in MediaGoblin (crazy, I know!).&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;Right now, when this happens, the unprocessed media lives in the database forever, a zombie.  Instead of that, we should periodically retry processing the media, when it makes sense.  Maybe we&#039;ll have better luck next time; if we do, it&#039;ll make the user happy.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Something has changed on the site such that we ought to reprocess media that has already been processed.  Maybe the administrator changed the size of thumbnail views, or in the future the MediaGoblin code will use a different audio codec.  For an event like this, we need to reprocess all the affected existing media to make sure we can effectively serve them in the new way.  These events should only take place when a site administrator requests it, and maybe when the site configuration changes to demand it.&lt;br /&gt;
&lt;br /&gt;
Brett plans to work on this.  If you want to help, get in touch!  This is [http://issues.mediagoblin.org/ticket/420 bug #420].&lt;br /&gt;
&lt;br /&gt;
== Reprocessing design ==&lt;br /&gt;
&lt;br /&gt;
=== When should we try to reprocess? ===&lt;br /&gt;
&lt;br /&gt;
If we&#039;re reprocessing media because previous attempts failed, we&#039;re likely to be more or less successful depending on &#039;&#039;why&#039;&#039; we failed.  If we failed because the machine was low on memory or disk at the time, reprocessing stands a good chance of succeeding.  If we failed because the media is corrupt, reprocessing will never work unless some code has changed in the meantime.&lt;br /&gt;
&lt;br /&gt;
TODO: We should collect known cases of when processing failed, what it looked like.  That will help us write code to determine why processing failed, and whether or not it&#039;s worthwhile to retry. (maybe this bug is a good start [http://issues.mediagoblin.org/ticket/438 bug#438] ?).&lt;br /&gt;
&lt;br /&gt;
=== When should we start reprocessing? ===&lt;br /&gt;
&lt;br /&gt;
There are two forces pushing us in different directions on this.  On the one hand, the more often we retry, the sooner the user&#039;s media will appear on the site, which makes them happy.  On the other hand, if we retry so often that not much can change between different attempts, we&#039;re just wasting computing resources to little end.  This could hurt our general site performance on deployments without resources to spare, like SheevaPlugs or Raspberry Pi systems.&lt;br /&gt;
&lt;br /&gt;
Like scheduling code in GNU/Linux, there are a million different ways we could approach this, and no one system is going to be perfect for every site.  We should instead strive to give hosts the tools they need to easily configure MediaGoblin according to their needs and their desires.&lt;br /&gt;
&lt;br /&gt;
The first piece of this puzzle is to make full use of Celery&#039;s task routing capabilities.  Each task should use an exchange that indicates at least:&lt;br /&gt;
&lt;br /&gt;
* the media type&lt;br /&gt;
* whether this processing is for&lt;br /&gt;
** a new upload&lt;br /&gt;
** retry after failed processing&lt;br /&gt;
** reprocessing at administrator request&lt;br /&gt;
&lt;br /&gt;
With this framework in place, a host has the capability to configure Celery with different worker pools for each of these exchanges depending on their needs and preferences.&lt;br /&gt;
&lt;br /&gt;
However, Celery doesn&#039;t handle scheduling of tasks outside the constraints of worker pools.  It&#039;s up to us to decide, and write in the code, issues like how long to wait between reprocessing attempts and when to give up completely.  (For version 1, I&#039;m planning an exponential backoff algorithm with a maximum wait of 1 day.  TODO: Should there be different configuration knobs for each media type?  That&#039;s a lot more complexity, but it&#039;s pretty hard to argue against the idea that expectations for processing ASCII art should be different from processing video.)  Key values should be stored in and read from the global MediaGoblin configuration.&lt;br /&gt;
&lt;br /&gt;
TODO: Discuss (at a meeting?) general priorities about how we want to balance &amp;quot;users see their media ASAP&amp;quot; vs. general site performance out of the box.  Get feedback about the version 1 scheme, and maybe get alternative proposals.&lt;br /&gt;
&lt;br /&gt;
=== cwebber&#039;s vague thoughts ===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;09:09 &amp;lt; paroneayea&amp;gt; I&#039;ve been thinking vaguely about a few things related to &lt;br /&gt;
                    that like&lt;br /&gt;
09:10 &amp;lt; paroneayea&amp;gt; &amp;quot;what if you don&#039;t have the original anymore?  Does it &lt;br /&gt;
                    reprocess it into something more lossy?&amp;quot;&lt;br /&gt;
09:11 &amp;lt; paroneayea&amp;gt; &amp;quot;Should we set it up so that things can determine &lt;br /&gt;
                    conditionally if they should be reprocessed?  Ie, if &lt;br /&gt;
                    resolutions have changed, but this one was smaller than the &lt;br /&gt;
                    new lowest resolution anyway?&amp;quot;&lt;br /&gt;
09:11 &amp;lt; paroneayea&amp;gt; I&#039;m not sure what the answer to those are but I&#039;ve only &lt;br /&gt;
                    thought vaguely about them.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Shackra said... ===&lt;br /&gt;
&lt;br /&gt;
Take in count the people using OpenStack for file storage. In case of re-encoding of audio files, for example, because MediaGoblin switched to ogg, will be impossible at least, if you deleted the original file and re-upload the new one.&lt;br /&gt;
&lt;br /&gt;
== Reprocessing implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Base Task class ===&lt;br /&gt;
&lt;br /&gt;
I think we can write a common subclass of Celery&#039;s Task that will serve as the base for all of our processing tasks.  It would provide an &amp;lt;tt&amp;gt;on_failure&amp;lt;/tt&amp;gt; method to decide whether or not a retry is appropriate, and if so, handle rewriting the exchange (to mark this as a retry), calculate the exponential backoff time, and reschedule the task.&lt;br /&gt;
&lt;br /&gt;
This class could also serve as a unifying place to collect utility functions that many processing tasks need.  There&#039;s a lot of file handling code that&#039;s repeated with minor variation throughout the processing tasks right now; that could be abstracted into methods of this class to reduce redundancy in the code.&lt;br /&gt;
&lt;br /&gt;
=== Splitting up tasks ===&lt;br /&gt;
&lt;br /&gt;
Right now, our processing tasks are monolithic beasts: one single task performs all of the transformations necessary for the media to be considered &amp;quot;processed.&amp;quot;  We could improve code readability and maintainability, site reliability, and possibly even performance by splitting tasks up appropriately.&lt;br /&gt;
&lt;br /&gt;
The basic idea here is that each processing task would, after successful completion, queue up a &amp;quot;check if finished&amp;quot; task, which would in turn do quick checks to see if all the necessary results of processing are in place.  When it finds that they are, it marks the media entry as processed, and performs clean-up jobs like removing the original queued file, so that the media shows up in the gallery and so on.&lt;br /&gt;
&lt;br /&gt;
(Alternatively, the &amp;quot;check if finished&amp;quot; task could be more stateful, keeping track of which tasks fire it off, and then performing its own work when the last task reports in.  This approach seems more fragile and error-prone, so I prefer an approach that checks whether the subtasks actually did their jobs, but that might not always be possible, so I&#039;m making a note of this.)&lt;br /&gt;
&lt;br /&gt;
As an example: image processing includes four jobs: making a thumbnail, a medium image, stashing the original file (with slight renaming as appropriate), and saving EXIF and GPS data to the database.  These four tasks could each be run individually.  They all fire a &amp;quot;check if finished&amp;quot; task that examines if the media entry has files stashed from all these tasks (in other words, it peeks at &amp;lt;tt&amp;gt;media_files_dict&amp;lt;/tt&amp;gt;).  When all the files are in place, it marks the entry as processed, and performs necessary cleanup.&lt;br /&gt;
&lt;br /&gt;
We can potentially save a lot of work with this approach.  Consider a video where transcoding succeeds but generating a thumbnail fails.  By splitting tasks up, the resource-intensive transcoding will only run once, while we retry thumbnail generation appropriately.&lt;br /&gt;
&lt;br /&gt;
== User visibility ==&lt;br /&gt;
&lt;br /&gt;
After we have reprocessing code, logged in users should be able to see information about where their entries stand in the queue: it&#039;s going to be processed, it&#039;s going to be reprocessed by such-and-such time, it failed completely.  There are already some bugs about this (TODO: collect them here).  The current panel would be a good starting point for publishing this information generally.  There are also specific places where we could conditionally show useful information: for instance, mention around the media submission page that the media might be slow to appear if processing queues are unusually large.&lt;br /&gt;
&lt;br /&gt;
This is a big enough job that it could probably justify its own feature page...&lt;/div&gt;</summary>
		<author><name>Helen Christian</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=Themes&amp;diff=1866</id>
		<title>Themes</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=Themes&amp;diff=1866"/>
		<updated>2016-11-26T16:08:13Z</updated>

		<summary type="html">&lt;p&gt;Helen Christian: Added Fullstop.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page should list a bunch of user-created themes that are publicly available.&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/pztrn/stricted-mediagoblin-theme stricted] -- A clean, light&#039;n&#039;dark mediagoblin theme ([http://media.pztrn.ru/ example site]).&lt;/div&gt;</summary>
		<author><name>Helen Christian</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=GSOC_2014&amp;diff=1865</id>
		<title>GSOC 2014</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=GSOC_2014&amp;diff=1865"/>
		<updated>2016-11-26T16:06:41Z</updated>

		<summary type="html">&lt;p&gt;Helen Christian: /* Port migrations to Alembic */ Added Fullstop&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We are hoping to participate in GSOC 2014 under the GNU umbrella.&lt;br /&gt;
&lt;br /&gt;
= Possible projects = &lt;br /&gt;
&lt;br /&gt;
== Input, processing ==&lt;br /&gt;
&lt;br /&gt;
=== Gstreamer audio/video code cleanup ===&lt;br /&gt;
&lt;br /&gt;
Investigate and fix the issues with thumbnailing in the video processing pipeline.  Investigate the rest of the gstreamer code, clean up and document.&lt;br /&gt;
&lt;br /&gt;
Show progress on gstreamer pipeline.&lt;br /&gt;
&lt;br /&gt;
=== Processing panel improvements ===&lt;br /&gt;
&lt;br /&gt;
Could be combined with the above.&lt;br /&gt;
&lt;br /&gt;
Better indication of the status of media processing.  This includes better representation of current processing progress, as well as representation of possible errors.&lt;br /&gt;
&lt;br /&gt;
=== Submission by email ===&lt;br /&gt;
https://issues.mediagoblin.org/ticket/663&lt;br /&gt;
&lt;br /&gt;
== Output, media-specific stuff with user-facing parts ==&lt;br /&gt;
&lt;br /&gt;
=== Client-side audio rendering ===&lt;br /&gt;
&lt;br /&gt;
This one&#039;s a low-maybe on priorities, compared to others.  The goal is to make it themable.&lt;br /&gt;
&lt;br /&gt;
Switch the audio spectrogram rendering to be done on the user&#039;s end.  During processing, the relevant data should be extracted and stored as metadata, but should be presented to the user.&lt;br /&gt;
&lt;br /&gt;
(Could possibly be combined with the above two; student should talk to paroneayea on IRC before doing so and also get some sense of the existing processing code)&lt;br /&gt;
&lt;br /&gt;
=== Media embedding and OEmbed support ===&lt;br /&gt;
&lt;br /&gt;
=== Subtitles support ===&lt;br /&gt;
For video and audio. https://issues.mediagoblin.org/ticket/750&lt;br /&gt;
&lt;br /&gt;
=== A way for a reader to see thumbnails/resized versions in other sizes ===&lt;br /&gt;
Generating multiple versions, like Flickr or MediaWiki can.&lt;br /&gt;
https://issues.mediagoblin.org/ticket/260&lt;br /&gt;
&lt;br /&gt;
=== Support For Ogg Vorbis+Theora ===&lt;br /&gt;
https://issues.mediagoblin.org/ticket/567&lt;br /&gt;
&lt;br /&gt;
== Multi-file output stuff ==&lt;br /&gt;
&lt;br /&gt;
=== Podcasting support / new feed library? ===&lt;br /&gt;
&lt;br /&gt;
Switch to or write a new feed library that is capable of handling enclosures and port MediaGoblin to it.&lt;br /&gt;
&lt;br /&gt;
=== Nested collections ===&lt;br /&gt;
https://issues.mediagoblin.org/ticket/522&lt;br /&gt;
&lt;br /&gt;
=== Slideshow ===&lt;br /&gt;
* For images? https://issues.mediagoblin.org/ticket/574&lt;br /&gt;
* Audio/video https://issues.mediagoblin.org/ticket/701&lt;br /&gt;
&lt;br /&gt;
=== Enable &amp;quot;favoriting&amp;quot; of media ===&lt;br /&gt;
https://issues.mediagoblin.org/ticket/744&lt;br /&gt;
(compat see also: &amp;quot;Favoriting across instances&amp;quot; https://issues.mediagoblin.org/ticket/604 )&lt;br /&gt;
&lt;br /&gt;
=== Cross-instance collections/galleries (think Flickr pool)  ===&lt;br /&gt;
https://issues.mediagoblin.org/ticket/605 &lt;br /&gt;
&lt;br /&gt;
=== Tag clouds ===&lt;br /&gt;
https://issues.mediagoblin.org/ticket/183&lt;br /&gt;
&lt;br /&gt;
== Port migrations to Alembic ==&lt;br /&gt;
&lt;br /&gt;
Currently we use sqlalchemy-migrate, but it&#039;s fairly outdated and unmaintained.&lt;br /&gt;
&lt;br /&gt;
Port the migration infrastructure to using [http://alembic.readthedocs.org/ Alembic] instead.&lt;br /&gt;
&lt;br /&gt;
This includes making sure that sqlite can be continued to be used with MediaGoblin&#039;s migrations (which may require working on some upstream contributions... this is unclear at the time of writing).&lt;br /&gt;
&lt;br /&gt;
== Import/export ==&lt;br /&gt;
* &amp;quot;Liberate my data&amp;quot; (data export button): https://issues.mediagoblin.org/ticket/600&lt;br /&gt;
* Import from Flickr (if not implemented yet; note also possible API changes): https://issues.mediagoblin.org/ticket/229&lt;br /&gt;
&lt;br /&gt;
== Python 3 port ==&lt;br /&gt;
&lt;br /&gt;
Port all of MediaGoblin&#039;s code to python 3: https://issues.mediagoblin.org/ticket/813&lt;/div&gt;</summary>
		<author><name>Helen Christian</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=Design/Appearance&amp;diff=1864</id>
		<title>Design/Appearance</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=Design/Appearance&amp;diff=1864"/>
		<updated>2016-11-26T16:05:15Z</updated>

		<summary type="html">&lt;p&gt;Helen Christian: /* Logo */ Added Fullstop&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes MediaGoblin&#039;s appearance and style. If you&#039;re looking to contribute to its design, this is good reading material.&lt;br /&gt;
&lt;br /&gt;
It is, however, &#039;&#039;&#039;not meant to be a definitive up-to-date guide&#039;&#039;&#039;. It serves as an introduction, but experiments with the design are common and the latest design specifications will always be found in the MediaGoblin software itself.&lt;br /&gt;
&lt;br /&gt;
== Default theme ==&lt;br /&gt;
&lt;br /&gt;
By default, MediaGoblin the software and many of the MediaGoblin websites use a dark, relatively neutral theme. While beauty is important, we try to keep the theme simple and avoid unnecessary decoration. One of the reasons for this is that we believe MediaGoblin itself should stay in the background and put media in the spotlight. Another is that this makes it easier for others to theme their own MediaGoblin instances, which is also why we try to use as little images as possible in the design.&lt;br /&gt;
&lt;br /&gt;
* Text: we use a typeface called [http://www.google.com/webfonts/specimen/Lato Lato], created by Łukasz Dziedzic. The MediaGoblin logo is a custom design, though it takes hints from Lato.&lt;br /&gt;
* Background: a very dark grey with a slight texture. The texture was added to make it easier to distinguish the background from media with similar colors. Fallback color is #161616.&lt;br /&gt;
[[File:Background.png]]&lt;br /&gt;
&lt;br /&gt;
The basic color palette used for MediaGoblin is shown below. Many other colors based on the same hues are also used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;400px&amp;quot;&lt;br /&gt;
! Color || Hex || Sample || Used for e.g.&lt;br /&gt;
|-&lt;br /&gt;
| Text grey || #C3C3C3 || [[File:Color_text_grey.png]] || Body text&lt;br /&gt;
|-&lt;br /&gt;
| Pure white || #FFFFFF || [[File:Color_pure_white.png]] || Headers, logo&lt;br /&gt;
|-&lt;br /&gt;
| Highlight green || #86D4B1 || [[File:Color_highlight_green.png]] || Links, buttons&lt;br /&gt;
|-&lt;br /&gt;
| Faint red || #D49086 || [[File:Color_faint_red.png]] || Form headers&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Light theme ==&lt;br /&gt;
&lt;br /&gt;
Besides the regular theme, we&#039;ve created a lighter version for use on the wiki, documentation and other places that might require reading longer pieces of text. It is meant to increase readability through the use of a black-on-white design and increased contrast.&lt;br /&gt;
&lt;br /&gt;
Color differences include:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;400px&amp;quot;&lt;br /&gt;
! Color || Hex || Sample&lt;br /&gt;
|-&lt;br /&gt;
| A light background || #FCFCFC || [[File:Color_light_background.png]]&lt;br /&gt;
|-&lt;br /&gt;
| Dark text || #3C3C3C || [[File:Color_light_text.png]]&lt;br /&gt;
|-&lt;br /&gt;
| Black headers || #000000 || [[File:Color_light_headers.png]]&lt;br /&gt;
|-&lt;br /&gt;
| Adapted link color || #499776 || [[File:Color_light_link.png]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Logo ==&lt;br /&gt;
&lt;br /&gt;
Get and use the MediaGoblin logo at http://www.mediagoblin.org/pages/logo.html .&lt;/div&gt;</summary>
		<author><name>Helen Christian</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=HackingHowto&amp;diff=1863</id>
		<title>HackingHowto</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=HackingHowto&amp;diff=1863"/>
		<updated>2016-11-26T16:03:35Z</updated>

		<summary type="html">&lt;p&gt;Helen Christian: /* Running a shell */ Added Fullstops.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Hacking HOWTO =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== So you want to hack on GNU MediaGoblin? ==&lt;br /&gt;
&lt;br /&gt;
First thing to do is check out the [http://mediagoblin.org/join/ web site] where we list all the project&lt;br /&gt;
infrastructure including:&lt;br /&gt;
&lt;br /&gt;
* the IRC channel&lt;br /&gt;
* the mailing list&lt;br /&gt;
* the issue tracker&lt;br /&gt;
&lt;br /&gt;
Additionally, we have information on how to get involved, who to talk&lt;br /&gt;
to, what needs to be worked on, and other things besides!&lt;br /&gt;
&lt;br /&gt;
Second thing to do is take a look at [http://docs.mediagoblin.org/devel/codebase.html codebase chapter] where&lt;br /&gt;
we&#039;ve started documenting how GNU MediaGoblin is built and how to add&lt;br /&gt;
new things.  If you&#039;re planning on contributing in python, you should be aware&lt;br /&gt;
of [http://www.python.org/dev/peps/pep-0008/ PEP-8], the official Python style guide,&lt;br /&gt;
which we follow.&lt;br /&gt;
&lt;br /&gt;
Third you&#039;ll need to get the requirements.&lt;br /&gt;
&lt;br /&gt;
Fourth, you&#039;ll need to build a development environment.  We use an&lt;br /&gt;
in-package checkout of virtualenv.  This isn&#039;t the convenional way to&lt;br /&gt;
install virtualenv (normally you don&#039;t install virtualenv inside the&lt;br /&gt;
package itself) but we&#039;ve found that it&#039;s significantly easier for&lt;br /&gt;
newcomers who aren&#039;t already familiar with virtualenv.  If you *are*&lt;br /&gt;
already familiar with virtualenv, feel free to just install&lt;br /&gt;
mediagoblin in your own virtualenv setup... the necessary adjustments&lt;br /&gt;
should be obvious.&lt;br /&gt;
&lt;br /&gt;
== Python 2 vs Python 3 ==&lt;br /&gt;
&lt;br /&gt;
GNU MediaGoblin was originally written for Python 2, and much of the documentation on the wiki reflects that. However, since release v0.9.0, GNU MediaGoblin has attempted to provide support for Python 3. Unfortunately, not everything is working for Python 3 environments yet. Below is a non-exhaustive list of things that might not work if you set up GNU MediaGoblin a Python 3 environment.&lt;br /&gt;
&lt;br /&gt;
=== Python 3 Issues ===&lt;br /&gt;
&lt;br /&gt;
* fcgi - none of the flup packages ([https://pypi.python.org/pypi/flup flup], [https://pypi.python.org/pypi/flup-py3 flup-py3], [https://pypi.python.org/pypi/flup6 flup6]) appear to have proper support for Python 3.5.&lt;br /&gt;
* audio file spectrographs - [https://pypi.python.org/pypi/scikits.audiolab scikits.audiolab] [https://issues.mediagoblin.org/ticket/5467 appears to not work] in Python 3.&lt;br /&gt;
* Rackspace storage - the [https://pypi.python.org/pypi/python-cloudfiles cloudfiles] plugin may not work with Python 3.&lt;br /&gt;
&lt;br /&gt;
== Getting requirements ==&lt;br /&gt;
&lt;br /&gt;
First, you need to have the following installed before you can build&lt;br /&gt;
an environment for hacking on GNU MediaGoblin:&lt;br /&gt;
&lt;br /&gt;
* Python 2.7  - http://www.python.org/ (You&#039;ll need Python as well as the dev files for building modules.)&lt;br /&gt;
* python-lxml        - http://lxml.de/&lt;br /&gt;
* git                - http://git-scm.com/&lt;br /&gt;
* SQLAlchemy 0.7.0 or higher   - http://www.sqlalchemy.org/&lt;br /&gt;
* Pillow - http://python-pillow.org/&lt;br /&gt;
* virtualenv         - http://www.virtualenv.org/&lt;br /&gt;
* Python GStreamer Bindings - http://gstreamer.freedesktop.org/modules/gst-python.html&lt;br /&gt;
* Node.js&lt;br /&gt;
&lt;br /&gt;
=== GNU/Linux ===&lt;br /&gt;
&lt;br /&gt;
==== Debian and derivatives ====&lt;br /&gt;
&lt;br /&gt;
If you&#039;re running Debian GNU/Linux or a Debian-derived distribution&lt;br /&gt;
such as Debian, Mint, or [http://bugs.foocorp.net/issues/478 Ubuntu 10.10+], running the following should install these&lt;br /&gt;
requirements:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|sudo apt-get install git-core python python-dev python-lxml python-imaging python-virtualenv python-gst-1.0 libjpeg8-dev autoconf nodejs npm nodejs-legacy}}&lt;br /&gt;
&lt;br /&gt;
==== Debian GNU/Linux jessie ====&lt;br /&gt;
&lt;br /&gt;
{{Cmd|sudo apt-get install -y git-core python python-dev python-lxml python-imaging python-virtualenv libjpeg-dev autoconf nodejs npm nodejs-legacy python-gst-1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly gstreamer1.0-libav python-numpy python-scipy libsndfile1-dev libasound2-dev libgstreamer-plugins-base1.0-dev}}&lt;br /&gt;
&lt;br /&gt;
==== Fedora / RedHat(?) / CentOS ====&lt;br /&gt;
&lt;br /&gt;
===== On Fedora: =====&lt;br /&gt;
&lt;br /&gt;
{{Cmd|yum install python-paste-deploy python-paste-script git-core python python-devel python-lxml python-imaging python-virtualenv gstreamer-python nodejs}}&lt;br /&gt;
&lt;br /&gt;
===== On CentOS7: =====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;epel-release&#039;&#039;&#039; is the prerequisite for most of the below listed packages&lt;br /&gt;
&lt;br /&gt;
{{Cmd|sudo yum install epel-release}}&lt;br /&gt;
&lt;br /&gt;
{{Cmd|sudo yum update}}&lt;br /&gt;
&lt;br /&gt;
{{Cmd|sudo yum install python-paste-deploy python-paste-script \ git-core python python-devel python-lxml python-imaging \ python-virtualenv npm automake nginx gcc}}&lt;br /&gt;
&lt;br /&gt;
for video to work correctly (as per [https://mediagoblin.readthedocs.io/en/stable/siteadmin/media-types.html?highlight=video#video Enabling Media-Types Video]) you may choose to install AWEL 3rd party repo which provides with the latest gstreamer bindings and more:&lt;br /&gt;
&lt;br /&gt;
* [http://awel.domblogger.net/7/media/x86_64/repoview/awel-media-release.html AWEL Repo],[https://media.librelamp.com/gst AWEL Gstreamer]&lt;br /&gt;
&lt;br /&gt;
once installed:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|sudo yum install gstreamer1 gstreamer1-libav gstreamer1-plugins-base gstreamer1-plugins-base-tools gstreamer1-plugins-good gstreamer1-plugins-ugly gstreamer1-plugins-bad gstreamer1-python ffmpeg }}&lt;br /&gt;
&lt;br /&gt;
==== openSUSE ====&lt;br /&gt;
&lt;br /&gt;
This instructions might be incomplete.&lt;br /&gt;
Try on openSUSE 13.2 or 13.1:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|zypper install python-devel python-gstreamer-0_10 git-core python python-lxml python-Pillow python-virtualenv npm}}&lt;br /&gt;
&lt;br /&gt;
==== ArchLinux / Parabola ====&lt;br /&gt;
&lt;br /&gt;
The following command should work (&amp;lt;del&amp;gt;not tested on a new ArchLinux / Parabola install&amp;lt;/del&amp;gt;. tested, it works):&lt;br /&gt;
&lt;br /&gt;
{{Cmd|pacman -S git python2 python2-lxml python2-pillow python2-virtualenv gstreamer0.10-python}}&lt;br /&gt;
&lt;br /&gt;
=== Mac OS X ===&lt;br /&gt;
&lt;br /&gt;
==== Mac OS X Lion ====&lt;br /&gt;
&lt;br /&gt;
Download the Newest Python.&lt;br /&gt;
&lt;br /&gt;
Git is already installed.&lt;br /&gt;
&lt;br /&gt;
* Note for Pillow and lxml, you can: pip install Pillow lxml&lt;br /&gt;
&lt;br /&gt;
Python-lxml: http://muffinresearch.co.uk/archives/2009/03/05/install-lxml-on-osx/ with sudo&lt;br /&gt;
&lt;br /&gt;
Pillow: http://pillow.readthedocs.org/en/3.0.x/installation.html#os-x-installation&lt;br /&gt;
&lt;br /&gt;
Libjpeg &amp;amp; Libpng: http://ethan.tira-thompson.com/Mac_OS_X_Ports.html Combo Installer&lt;br /&gt;
&lt;br /&gt;
==== Mac OS X Snow Leopard ====&lt;br /&gt;
&lt;br /&gt;
# You will probably want to install MacPorts this will give you access to many free software packages in the same manner to apt-get and yum: https://www.macports.org/install.php&lt;br /&gt;
# Ensure you install Git and the command line tools: https://help.github.com/articles/set-up-git#platform-mac&lt;br /&gt;
# Once both of those are installed type this in your terminal and enter your password when prompted for it {{Cmd|sudo port install python27 py27-lxml py27-sqlalchemy py27-Pillow py27-virtualenv py27-gst-python py27-pastescript}}&lt;br /&gt;
&lt;br /&gt;
=== Microsoft Windows ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Thanks wctype!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Getting requirements ====&lt;br /&gt;
&lt;br /&gt;
* Python 2.7  -  [http://www.python.org/download/ Download] &amp;lt;!-- http://www.python.org/ftp/python/2.7.3/python-2.7.3.msi --&amp;gt;&lt;br /&gt;
* git - [https://github.com/msysgit/git/downloads Download] &amp;lt;!-- https://github.com/downloads/msysgit/git/Git-1.7.11-preview20120620.exe --&amp;gt;&lt;br /&gt;
* python-lxml - [http://pypi.python.org/pypi/lxml/2.3.5#downloads Tarball] [http://www.lfd.uci.edu/~gohlke/pythonlibs/#pil Binaries] &amp;lt;!-- http://pypi.python.org/packages/source/l/lxml/lxml-2.3.5.tar.gz, http://www.lfd.uci.edu/~gohlke/pythonlibs/z8sp4uqu/lxml-2.3.5.win32-py2.7.exe --&amp;gt;&lt;br /&gt;
* Pillow - [http://pillow.readthedocs.org/en/3.0.x/installation.html#windows-installation Download] &amp;lt;!-- http://effbot.org/downloads/PIL-1.1.7.win32-py2.7.exe] --&amp;gt;&lt;br /&gt;
* virtualenv - [http://pypi.python.org/pypi/virtualenvwrapper-win/1.0.8#downloads Download] &amp;lt;!-- http://pypi.python.org/packages/source/v/virtualenvwrapper-win/virtualenvwrapper-win-1.0.8.zip --&amp;gt;&lt;br /&gt;
* OSSBuild project provides reasonably up-to-date binaries of GStreamer - [https://code.google.com/p/ossbuild/downloads/list Download] &amp;lt;!-- http://ossbuild.googlecode.com/files/GStreamer-WinBuilds-GPL-x86.msi --&amp;gt;&lt;br /&gt;
* py-bcrypt - [https://bitbucket.org/alexandrul/py-bcrypt/downloads/ Download] &amp;lt;!-- https://bitbucket.org/alexandrul/py-bcrypt/downloads/py-bcrypt-0.2.post1.win32-py2.7.exe --&amp;gt;&lt;br /&gt;
* Node JS&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;You can help:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you have instructions for other GNU/Linux distributions, Windows, or Mac OS X to set&lt;br /&gt;
up requirements, [http://mediagoblin.org/join/ let us know]!&lt;br /&gt;
&lt;br /&gt;
== How to set up and maintain an environment for hacking with virtualenv ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
No additional requirements.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Create a development environment&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
After installing the requirements, follow these steps:&lt;br /&gt;
&lt;br /&gt;
* Clone the repository: {{Cmd|git clone &amp;lt;nowiki&amp;gt;git://git.savannah.gnu.org/mediagoblin.git&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
* Make the environment: {{Cmd|./bootstrap.sh &amp;amp;&amp;amp; ./configure &amp;amp;&amp;amp; make}}&lt;br /&gt;
* Init the database:&lt;br /&gt;
  {{Cmd|./bin/gmg dbupdate}}&lt;br /&gt;
&lt;br /&gt;
That&#039;s it!&lt;br /&gt;
&lt;br /&gt;
If you want to make sure things are working, consider running the test suite:&lt;br /&gt;
  {{Cmd|./runtests.sh}}&lt;br /&gt;
&lt;br /&gt;
(If you have troubles in the remaining steps, consider try installing&lt;br /&gt;
virtualenv with one of the flags --setuptools, --distribute or possibly --no-site-packages.  Additionally, if your system has python3.X as the default, you might need to do virtualenv --python=python2.7 or --python=python2.6)&lt;br /&gt;
&lt;br /&gt;
If you have problems, please [http://mediagoblin.org/join/ let us know]!&lt;br /&gt;
&lt;br /&gt;
== Updating an existing environment ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Updating for dependency changes&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
While hacking on GNU MediaGoblin over time, you&#039;ll eventually have to&lt;br /&gt;
update your development environment because the dependencies have&lt;br /&gt;
changed.&lt;br /&gt;
&lt;br /&gt;
To do that, run:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|./bin/python setup.py develop --upgrade &amp;amp;&amp;amp; ./bin/gmg dbupdate}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Updating for code changes&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Cmd|git pull -u}}&lt;br /&gt;
{{Cmd|git submodule update}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE:&#039;&#039;&#039; MediaGoblin used to be hosted on gitorious.org, but that is moving to read-only mode, so we&#039;re now on Savannah.  If you have an old checkout, please update it by running the following:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|git remote set-url origin git://git.savannah.gnu.org/mediagoblin.git}}&lt;br /&gt;
&lt;br /&gt;
== Running the server ==&lt;br /&gt;
&lt;br /&gt;
If you want to get things running quickly and without hassle, just&lt;br /&gt;
run:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|./lazyserver.sh}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This will start up a python server where you can begin playing with&lt;br /&gt;
mediagoblin, listening on 127.0.0.1:6543.  It will also run celery in &amp;quot;always eager&amp;quot; mode so you&lt;br /&gt;
don&#039;t have to start a separate process for it.&lt;br /&gt;
&lt;br /&gt;
By default, the instance is not sending out confirmation mails. Instead they are redirected to the standard output (the console) of lazyserver.sh.&lt;br /&gt;
&lt;br /&gt;
You can change this behavior setting &amp;lt;code&amp;gt;email_debug_mode&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; in mediagoblin.ini&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This is fine in development, but if you want to actually run celery&lt;br /&gt;
separately for testing (or deployment purposes), you&#039;ll want to run&lt;br /&gt;
the server independently:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|./bin/paster serve paste.ini --reload}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Running celeryd ==&lt;br /&gt;
&lt;br /&gt;
If you aren&#039;t using &amp;lt;tt&amp;gt;./lazyserver.sh&amp;lt;/tt&amp;gt; or otherwise aren&#039;t running celery&lt;br /&gt;
in always eager mode, you&#039;ll need to do this if you want your media to&lt;br /&gt;
process and actually show up.  It&#039;s probably a good idea in&lt;br /&gt;
development to have the web server (above) running in one terminal and&lt;br /&gt;
celeryd in another window.&lt;br /&gt;
&lt;br /&gt;
Run:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;CELERY_CONFIG_MODULE=mediagoblin.init.celery.from_celery ./bin/celeryd&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Running the test suite ==&lt;br /&gt;
&lt;br /&gt;
Run:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|./runtests.sh}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Running a shell ==&lt;br /&gt;
&lt;br /&gt;
If you want a shell with your database pre-setup and an instantiated&lt;br /&gt;
application ready and at your fingertips ......&lt;br /&gt;
&lt;br /&gt;
Run:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|./bin/gmg shell}}&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
== Wiping your user data ==&lt;br /&gt;
&lt;br /&gt;
You can completely wipe all data from the instance by doing:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|rm -rf mediagoblin.db kombu.db celery.db user_dev; ./bin/gmg dbupdate}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Unless you&#039;re doing development and working on and testing creating&lt;br /&gt;
a new instance, you will probably never have to do this.&lt;br /&gt;
&lt;br /&gt;
== Quickstart for Django programmers ==&lt;br /&gt;
&lt;br /&gt;
We&#039;re not using Django, but the codebase is very Django-like in its&lt;br /&gt;
structure.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;routing.py&amp;lt;/tt&amp;gt; is like &amp;lt;tt&amp;gt;urls.py&amp;lt;/tt&amp;gt; in Django&lt;br /&gt;
* &amp;lt;tt&amp;gt;models.py&amp;lt;/tt&amp;gt; has SQLAlchemy ORM definitions&lt;br /&gt;
* &amp;lt;tt&amp;gt;views.py&amp;lt;/tt&amp;gt; is where the views go&lt;br /&gt;
&lt;br /&gt;
We&#039;re using SQLAlchemy, which is semi-similar to the Django ORM, but&lt;br /&gt;
not really because you can get a lot more fine-grained.  The&lt;br /&gt;
[http://docs.sqlalchemy.org/en/latest/orm/tutorial.html SQLAlchemy ORM tutorial] is a great place to start.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;YouCanHelp&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If there are other things that you think would help orient someone&lt;br /&gt;
new to GNU MediaGoblin but coming from Django, let us know!&lt;br /&gt;
&lt;br /&gt;
== Showing off your work with PageKite ==&lt;br /&gt;
&lt;br /&gt;
If you&#039;re doing development with MediaGoblin, it&#039;s sometimes helpful to show off your work to gather feedback from other contributors.  A number of the MediaGoblin developers use something called [http://pagekite.net PageKite], which is a fellow free software web service which makes temporarily showing off work on your machine easy.  There&#039;s a [http://pagekite.net/wiki/Howto/UsePageKiteWithMediaGoblin/ tutorial on how to use PageKite and MediaGoblin together] available on the PageKite wiki.&lt;br /&gt;
&lt;br /&gt;
If you are doing a lot of MediaGoblin development, the PageKite people have graciously offered us a good amount of bandwidth at no cost in an effort to help out fellow free software projects.  If you&#039;ve been making significant contributions, PM Chris Webber on freenode (who is paroneayea there) and ask if you can be added to our group plan.&lt;br /&gt;
&lt;br /&gt;
== Bite-sized bugs to start with ==&lt;br /&gt;
&lt;br /&gt;
Now you should visit our latest list of [http://issues.mediagoblin.org/query?status=!closed&amp;amp;keywords=~bitesized bite-sized issues] because squishing bugs is messy fun. If you&#039;re interested in other things to work on, or need help getting started on a bug, let us know on [http://mediagoblin.org/join/ the mailing list] or on the [http://mediagoblin.org/join/ IRC channel].&lt;/div&gt;</summary>
		<author><name>Helen Christian</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=API&amp;diff=1819</id>
		<title>API</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=API&amp;diff=1819"/>
		<updated>2016-02-16T00:34:01Z</updated>

		<summary type="html">&lt;p&gt;Helen Christian: /* Possible design problems. */ fullstop &amp;amp; spacing ; punctuation.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes a JSON-based API for MediaGoblin. It is a &#039;&#039;&#039;WORK IN PROGRESS&#039;&#039;&#039; at the moment while it is being drafted before it gets implemented. Currently it only includes a submission API, based on a specific scenario which might not work in general for MediaGoblin but can be used as a springboard for further API improvements and specifications.&lt;br /&gt;
&lt;br /&gt;
= Scenario. =&lt;br /&gt;
&lt;br /&gt;
A MediaGoblin server (&#039;&#039;MGS&#039;&#039;) is used for media storage/repository on behalf of a few other servers, called user servers (&#039;&#039;US&#039;&#039;) . A user of one &#039;&#039;US&#039;&#039; submits a multimedia file. The file is sent to the &#039;&#039;MGS&#039;&#039; and categorized on the &#039;&#039;US&#039;&#039; in some server specific way. All future use of the multimedia file on the &#039;&#039;US&#039;&#039; is processed by the &#039;&#039;MGS&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The collection of multimedia files from all of the &#039;&#039;US&#039;&#039;&#039;s is accessible through the &#039;&#039;MGS&#039;&#039; interface and through specific categorizations on each &#039;&#039;US&#039;&#039; via API or direct links to the content on the &#039;&#039;MGS&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Submission. ==&lt;br /&gt;
&lt;br /&gt;
Since all files are processed automatically when they are uploaded there is no need for a specific submission api. Media files should therefore just be uploaded using a normal HTTP POST which is made available via the API using some sort of an authentication mechanism. An extra variable, containing a webhook/callback URL, can be sent alongside the file upload. The callback provides a URL to the file in the public store. The &#039;&#039;MGS&#039;&#039; allows the &#039;&#039;US&#039;&#039; to send metadata (for example license information) for the file.&lt;br /&gt;
&lt;br /&gt;
The process is as follows:&lt;br /&gt;
&lt;br /&gt;
# User fills in a form on a &#039;&#039;US&#039;&#039;. The form is in fact based up of two forms&lt;br /&gt;
#* One for categorization on the &#039;&#039;US&#039;&#039;&lt;br /&gt;
#* One is a file form for the &#039;&#039;MGS&#039;&#039;&lt;br /&gt;
# &#039;&#039;US&#039;&#039; saves a pending object with the categorization&lt;br /&gt;
# The &#039;&#039;MGS&#039;&#039; processes the file as usual&lt;br /&gt;
# When the &#039;&#039;MGS&#039;&#039; has finished processing it notifies the &#039;&#039;US&#039;&#039; through a special callback url provided that the processing is finished and the file is available in the public store through a specific url&lt;br /&gt;
# &#039;&#039;US&#039;&#039; moves the object from a pending state to a real object with direct links (or api specific information which might be designed later) to the &#039;&#039;MGS&#039;&#039;&lt;br /&gt;
# &#039;&#039;US&#039;&#039; sends metadata to attach to the file.&lt;br /&gt;
&lt;br /&gt;
=== Callback/finished processing API. ===&lt;br /&gt;
&lt;br /&gt;
The callback function of the &#039;&#039;US&#039;&#039; should read and accept MediaGoblin JSON objects according to the following proposed schema when sent to the callback url provided alongside the original upload:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
        &amp;quot;name&amp;quot;:&amp;quot;Callback&amp;quot;,&lt;br /&gt;
        &amp;quot;properties&amp;quot;:&lt;br /&gt;
        {&lt;br /&gt;
                &amp;quot;success&amp;quot;:&lt;br /&gt;
                {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;boolean&amp;quot;,&lt;br /&gt;
                        &amp;quot;description&amp;quot;:&amp;quot;Boolean to indicate whether the processing of the file was successful or not&amp;quot;,&lt;br /&gt;
                        &amp;quot;required&amp;quot;:true&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;message&amp;quot;:&lt;br /&gt;
                {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;string&amp;quot;,&lt;br /&gt;
                        &amp;quot;description&amp;quot;:&amp;quot;Optional message used when processing was unsuccessful to explain the reason for the failure&amp;quot;,&lt;br /&gt;
                        &amp;quot;required&amp;quot;:false&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;location&amp;quot;:&lt;br /&gt;
                {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;array&amp;quot;,&lt;br /&gt;
                        &amp;quot;required&amp;quot;:true,&lt;br /&gt;
                        &amp;quot;description&amp;quot;:&amp;quot;Array of locations for the processed file (or files, e.g. when video file is encoded into the three possible HTML5 video formats&amp;quot;,&lt;br /&gt;
                        &amp;quot;items&amp;quot;:&lt;br /&gt;
                        {&lt;br /&gt;
                                &amp;quot;type&amp;quot;:&amp;quot;object&amp;quot;,&lt;br /&gt;
                                &amp;quot;properties&amp;quot;:&lt;br /&gt;
                                {&lt;br /&gt;
                                        &amp;quot;mimetype&amp;quot;:&lt;br /&gt;
                                        {&lt;br /&gt;
                                                &amp;quot;type&amp;quot;:&amp;quot;string&amp;quot;,&lt;br /&gt;
                                                &amp;quot;description&amp;quot;:&amp;quot;Mimetype to categorize the file&amp;quot;,&lt;br /&gt;
                                                &amp;quot;required&amp;quot;:true,&lt;br /&gt;
                                        },&lt;br /&gt;
                                        &amp;quot;location&amp;quot;:&lt;br /&gt;
                                        {&lt;br /&gt;
                                                &amp;quot;type&amp;quot;:&amp;quot;string&amp;quot;,&lt;br /&gt;
                                                &amp;quot;format&amp;quot;:&amp;quot;url&amp;quot;,&lt;br /&gt;
                                                &amp;quot;description&amp;quot;:&amp;quot;URL of the file in the public store&amp;quot;,&lt;br /&gt;
                                                &amp;quot;required&amp;quot;:true,&lt;br /&gt;
                                        },&lt;br /&gt;
                        }&lt;br /&gt;
                }&lt;br /&gt;
                &amp;quot;mediatype&amp;quot;:&lt;br /&gt;
                {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;string&amp;quot;,&lt;br /&gt;
                        &amp;quot;description&amp;quot;:&amp;quot;Media type of the file categorization, e.g. video, audio, image&amp;quot;,&lt;br /&gt;
                        &amp;quot;required&amp;quot;:false&lt;br /&gt;
                }&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The MediaGoblin expects status codes 204 (No content) on success (to imitate pubsubhubbub protocol) or normal error codes (4xx or 5xx) to indicate failures. It is possible to further define JSON objects in responses but probably unnecessary.&lt;br /&gt;
&lt;br /&gt;
== Metadata. ==&lt;br /&gt;
&lt;br /&gt;
It should be possible to add metadata to a specific file at any time. This could be information such as license information, related files (e.g. derivative work), views on site or something. In this case we only start with a Creative Commons license.&lt;br /&gt;
&lt;br /&gt;
=== Metadata API. ===&lt;br /&gt;
&lt;br /&gt;
A proposed json-based api to attach metadata to a file uploaded to a MediaGoblin instance. Other metadata information can be added later. This is just something to start with. It is necessary to check if the calling application is the same as the uploading application (to restrict others from setting metadata to other people&#039;s files).&lt;br /&gt;
&lt;br /&gt;
The following is the JSON Schema for metadata:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
        &amp;quot;name&amp;quot;:&amp;quot;Metadata&amp;quot;,&lt;br /&gt;
        &amp;quot;properties&amp;quot;:&lt;br /&gt;
        {&lt;br /&gt;
                &amp;quot;file&amp;quot;:&lt;br /&gt;
                {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;string&amp;quot;,&lt;br /&gt;
                        &amp;quot;format&amp;quot;:&amp;quot;url&amp;quot;,&lt;br /&gt;
                        &amp;quot;description&amp;quot;:&amp;quot;URL to the resource (file) to which metadata should be attached&amp;quot;,&lt;br /&gt;
                        &amp;quot;required&amp;quot;:true&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;metadata&amp;quot;:&lt;br /&gt;
                {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;array&amp;quot;,&lt;br /&gt;
                        &amp;quot;description&amp;quot;:&amp;quot;URL to the resource (file) to which metadata should be attached&amp;quot;,&lt;br /&gt;
                        &amp;quot;required&amp;quot;:true,&lt;br /&gt;
                        &amp;quot;items&amp;quot;:&lt;br /&gt;
                        {&lt;br /&gt;
                                &amp;quot;type&amp;quot;:&amp;quot;object&amp;quot;,&lt;br /&gt;
                                &amp;quot;properties&amp;quot;:&lt;br /&gt;
                                {&lt;br /&gt;
                                        &amp;quot;creativecommons&amp;quot;:&lt;br /&gt;
                                        {&lt;br /&gt;
                                                &amp;quot;type&amp;quot;:&amp;quot;object&amp;quot;,&lt;br /&gt;
                                                &amp;quot;required&amp;quot;:false,&lt;br /&gt;
                                                &amp;quot;properties&amp;quot;:&lt;br /&gt;
                                                {&lt;br /&gt;
                                                        &amp;quot;author&amp;quot;:&lt;br /&gt;
                                                        {&lt;br /&gt;
                                                                &amp;quot;type&amp;quot;:&amp;quot;string&amp;quot;,&lt;br /&gt;
                                                                &amp;quot;description&amp;quot;:&amp;quot;Original author of the work, used for attribution&amp;quot;,&lt;br /&gt;
                                                                &amp;quot;required&amp;quot;:true,&lt;br /&gt;
                                                        },&lt;br /&gt;
                                                        &amp;quot;license&amp;quot;:&lt;br /&gt;
                                                        {&lt;br /&gt;
                                                                &amp;quot;type&amp;quot;:&amp;quot;string&amp;quot;,&lt;br /&gt;
                                                                &amp;quot;format&amp;quot;:&amp;quot;url&amp;quot;,&lt;br /&gt;
                                                                &amp;quot;description&amp;quot;:&amp;quot;URL pointing to the Creative Commons license used&amp;quot;,&lt;br /&gt;
                                                                &amp;quot;required&amp;quot;:true,&lt;br /&gt;
                                                        }&lt;br /&gt;
                                                }&lt;br /&gt;
                                        }&lt;br /&gt;
                                }&lt;br /&gt;
                        }&lt;br /&gt;
                }&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An example of a Claim in JSON would be (it remains to decide how to handle user uploads from sites where users aren&#039;t registerd on MediaGoblin):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
        &amp;quot;file&amp;quot;:&amp;quot;http://media.goblin.com/u/artcollection/water-lilies.jpg&amp;quot;,&lt;br /&gt;
        &amp;quot;metadata&amp;quot;:&lt;br /&gt;
        [&lt;br /&gt;
                &amp;quot;creativecommons&amp;quot;:&lt;br /&gt;
                {&lt;br /&gt;
                        &amp;quot;author&amp;quot;:&amp;quot;Claude Monet&amp;quot;,&lt;br /&gt;
                        &amp;quot;licence&amp;quot;:&amp;quot;http://creativecommons.org/publicdomain/mark/1.0/&amp;quot;&lt;br /&gt;
                }&lt;br /&gt;
        ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Possible design problems. ==&lt;br /&gt;
&lt;br /&gt;
* MediaGoblin is user based but who is the user when files are sent in by users on a specific site ? Use OAuth/OpenID ? Perhaps tie closely with OStatus federation. Probably best to follow Twitter API where applications must be registered and get an API key for uploading.&lt;br /&gt;
* Mediatype for callback needs a better definition in the API (what can be sent, e.g. .).&lt;/div&gt;</summary>
		<author><name>Helen Christian</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=API&amp;diff=1818</id>
		<title>API</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=API&amp;diff=1818"/>
		<updated>2016-02-16T00:33:23Z</updated>

		<summary type="html">&lt;p&gt;Helen Christian: /* Possible design problems */ fullstop punctuation.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes a JSON-based API for MediaGoblin. It is a &#039;&#039;&#039;WORK IN PROGRESS&#039;&#039;&#039; at the moment while it is being drafted before it gets implemented. Currently it only includes a submission API, based on a specific scenario which might not work in general for MediaGoblin but can be used as a springboard for further API improvements and specifications.&lt;br /&gt;
&lt;br /&gt;
= Scenario. =&lt;br /&gt;
&lt;br /&gt;
A MediaGoblin server (&#039;&#039;MGS&#039;&#039;) is used for media storage/repository on behalf of a few other servers, called user servers (&#039;&#039;US&#039;&#039;) . A user of one &#039;&#039;US&#039;&#039; submits a multimedia file. The file is sent to the &#039;&#039;MGS&#039;&#039; and categorized on the &#039;&#039;US&#039;&#039; in some server specific way. All future use of the multimedia file on the &#039;&#039;US&#039;&#039; is processed by the &#039;&#039;MGS&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The collection of multimedia files from all of the &#039;&#039;US&#039;&#039;&#039;s is accessible through the &#039;&#039;MGS&#039;&#039; interface and through specific categorizations on each &#039;&#039;US&#039;&#039; via API or direct links to the content on the &#039;&#039;MGS&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Submission. ==&lt;br /&gt;
&lt;br /&gt;
Since all files are processed automatically when they are uploaded there is no need for a specific submission api. Media files should therefore just be uploaded using a normal HTTP POST which is made available via the API using some sort of an authentication mechanism. An extra variable, containing a webhook/callback URL, can be sent alongside the file upload. The callback provides a URL to the file in the public store. The &#039;&#039;MGS&#039;&#039; allows the &#039;&#039;US&#039;&#039; to send metadata (for example license information) for the file.&lt;br /&gt;
&lt;br /&gt;
The process is as follows:&lt;br /&gt;
&lt;br /&gt;
# User fills in a form on a &#039;&#039;US&#039;&#039;. The form is in fact based up of two forms&lt;br /&gt;
#* One for categorization on the &#039;&#039;US&#039;&#039;&lt;br /&gt;
#* One is a file form for the &#039;&#039;MGS&#039;&#039;&lt;br /&gt;
# &#039;&#039;US&#039;&#039; saves a pending object with the categorization&lt;br /&gt;
# The &#039;&#039;MGS&#039;&#039; processes the file as usual&lt;br /&gt;
# When the &#039;&#039;MGS&#039;&#039; has finished processing it notifies the &#039;&#039;US&#039;&#039; through a special callback url provided that the processing is finished and the file is available in the public store through a specific url&lt;br /&gt;
# &#039;&#039;US&#039;&#039; moves the object from a pending state to a real object with direct links (or api specific information which might be designed later) to the &#039;&#039;MGS&#039;&#039;&lt;br /&gt;
# &#039;&#039;US&#039;&#039; sends metadata to attach to the file.&lt;br /&gt;
&lt;br /&gt;
=== Callback/finished processing API. ===&lt;br /&gt;
&lt;br /&gt;
The callback function of the &#039;&#039;US&#039;&#039; should read and accept MediaGoblin JSON objects according to the following proposed schema when sent to the callback url provided alongside the original upload:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
        &amp;quot;name&amp;quot;:&amp;quot;Callback&amp;quot;,&lt;br /&gt;
        &amp;quot;properties&amp;quot;:&lt;br /&gt;
        {&lt;br /&gt;
                &amp;quot;success&amp;quot;:&lt;br /&gt;
                {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;boolean&amp;quot;,&lt;br /&gt;
                        &amp;quot;description&amp;quot;:&amp;quot;Boolean to indicate whether the processing of the file was successful or not&amp;quot;,&lt;br /&gt;
                        &amp;quot;required&amp;quot;:true&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;message&amp;quot;:&lt;br /&gt;
                {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;string&amp;quot;,&lt;br /&gt;
                        &amp;quot;description&amp;quot;:&amp;quot;Optional message used when processing was unsuccessful to explain the reason for the failure&amp;quot;,&lt;br /&gt;
                        &amp;quot;required&amp;quot;:false&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;location&amp;quot;:&lt;br /&gt;
                {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;array&amp;quot;,&lt;br /&gt;
                        &amp;quot;required&amp;quot;:true,&lt;br /&gt;
                        &amp;quot;description&amp;quot;:&amp;quot;Array of locations for the processed file (or files, e.g. when video file is encoded into the three possible HTML5 video formats&amp;quot;,&lt;br /&gt;
                        &amp;quot;items&amp;quot;:&lt;br /&gt;
                        {&lt;br /&gt;
                                &amp;quot;type&amp;quot;:&amp;quot;object&amp;quot;,&lt;br /&gt;
                                &amp;quot;properties&amp;quot;:&lt;br /&gt;
                                {&lt;br /&gt;
                                        &amp;quot;mimetype&amp;quot;:&lt;br /&gt;
                                        {&lt;br /&gt;
                                                &amp;quot;type&amp;quot;:&amp;quot;string&amp;quot;,&lt;br /&gt;
                                                &amp;quot;description&amp;quot;:&amp;quot;Mimetype to categorize the file&amp;quot;,&lt;br /&gt;
                                                &amp;quot;required&amp;quot;:true,&lt;br /&gt;
                                        },&lt;br /&gt;
                                        &amp;quot;location&amp;quot;:&lt;br /&gt;
                                        {&lt;br /&gt;
                                                &amp;quot;type&amp;quot;:&amp;quot;string&amp;quot;,&lt;br /&gt;
                                                &amp;quot;format&amp;quot;:&amp;quot;url&amp;quot;,&lt;br /&gt;
                                                &amp;quot;description&amp;quot;:&amp;quot;URL of the file in the public store&amp;quot;,&lt;br /&gt;
                                                &amp;quot;required&amp;quot;:true,&lt;br /&gt;
                                        },&lt;br /&gt;
                        }&lt;br /&gt;
                }&lt;br /&gt;
                &amp;quot;mediatype&amp;quot;:&lt;br /&gt;
                {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;string&amp;quot;,&lt;br /&gt;
                        &amp;quot;description&amp;quot;:&amp;quot;Media type of the file categorization, e.g. video, audio, image&amp;quot;,&lt;br /&gt;
                        &amp;quot;required&amp;quot;:false&lt;br /&gt;
                }&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The MediaGoblin expects status codes 204 (No content) on success (to imitate pubsubhubbub protocol) or normal error codes (4xx or 5xx) to indicate failures. It is possible to further define JSON objects in responses but probably unnecessary.&lt;br /&gt;
&lt;br /&gt;
== Metadata. ==&lt;br /&gt;
&lt;br /&gt;
It should be possible to add metadata to a specific file at any time. This could be information such as license information, related files (e.g. derivative work), views on site or something. In this case we only start with a Creative Commons license.&lt;br /&gt;
&lt;br /&gt;
=== Metadata API. ===&lt;br /&gt;
&lt;br /&gt;
A proposed json-based api to attach metadata to a file uploaded to a MediaGoblin instance. Other metadata information can be added later. This is just something to start with. It is necessary to check if the calling application is the same as the uploading application (to restrict others from setting metadata to other people&#039;s files).&lt;br /&gt;
&lt;br /&gt;
The following is the JSON Schema for metadata:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
        &amp;quot;name&amp;quot;:&amp;quot;Metadata&amp;quot;,&lt;br /&gt;
        &amp;quot;properties&amp;quot;:&lt;br /&gt;
        {&lt;br /&gt;
                &amp;quot;file&amp;quot;:&lt;br /&gt;
                {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;string&amp;quot;,&lt;br /&gt;
                        &amp;quot;format&amp;quot;:&amp;quot;url&amp;quot;,&lt;br /&gt;
                        &amp;quot;description&amp;quot;:&amp;quot;URL to the resource (file) to which metadata should be attached&amp;quot;,&lt;br /&gt;
                        &amp;quot;required&amp;quot;:true&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;metadata&amp;quot;:&lt;br /&gt;
                {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;array&amp;quot;,&lt;br /&gt;
                        &amp;quot;description&amp;quot;:&amp;quot;URL to the resource (file) to which metadata should be attached&amp;quot;,&lt;br /&gt;
                        &amp;quot;required&amp;quot;:true,&lt;br /&gt;
                        &amp;quot;items&amp;quot;:&lt;br /&gt;
                        {&lt;br /&gt;
                                &amp;quot;type&amp;quot;:&amp;quot;object&amp;quot;,&lt;br /&gt;
                                &amp;quot;properties&amp;quot;:&lt;br /&gt;
                                {&lt;br /&gt;
                                        &amp;quot;creativecommons&amp;quot;:&lt;br /&gt;
                                        {&lt;br /&gt;
                                                &amp;quot;type&amp;quot;:&amp;quot;object&amp;quot;,&lt;br /&gt;
                                                &amp;quot;required&amp;quot;:false,&lt;br /&gt;
                                                &amp;quot;properties&amp;quot;:&lt;br /&gt;
                                                {&lt;br /&gt;
                                                        &amp;quot;author&amp;quot;:&lt;br /&gt;
                                                        {&lt;br /&gt;
                                                                &amp;quot;type&amp;quot;:&amp;quot;string&amp;quot;,&lt;br /&gt;
                                                                &amp;quot;description&amp;quot;:&amp;quot;Original author of the work, used for attribution&amp;quot;,&lt;br /&gt;
                                                                &amp;quot;required&amp;quot;:true,&lt;br /&gt;
                                                        },&lt;br /&gt;
                                                        &amp;quot;license&amp;quot;:&lt;br /&gt;
                                                        {&lt;br /&gt;
                                                                &amp;quot;type&amp;quot;:&amp;quot;string&amp;quot;,&lt;br /&gt;
                                                                &amp;quot;format&amp;quot;:&amp;quot;url&amp;quot;,&lt;br /&gt;
                                                                &amp;quot;description&amp;quot;:&amp;quot;URL pointing to the Creative Commons license used&amp;quot;,&lt;br /&gt;
                                                                &amp;quot;required&amp;quot;:true,&lt;br /&gt;
                                                        }&lt;br /&gt;
                                                }&lt;br /&gt;
                                        }&lt;br /&gt;
                                }&lt;br /&gt;
                        }&lt;br /&gt;
                }&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An example of a Claim in JSON would be (it remains to decide how to handle user uploads from sites where users aren&#039;t registerd on MediaGoblin):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
        &amp;quot;file&amp;quot;:&amp;quot;http://media.goblin.com/u/artcollection/water-lilies.jpg&amp;quot;,&lt;br /&gt;
        &amp;quot;metadata&amp;quot;:&lt;br /&gt;
        [&lt;br /&gt;
                &amp;quot;creativecommons&amp;quot;:&lt;br /&gt;
                {&lt;br /&gt;
                        &amp;quot;author&amp;quot;:&amp;quot;Claude Monet&amp;quot;,&lt;br /&gt;
                        &amp;quot;licence&amp;quot;:&amp;quot;http://creativecommons.org/publicdomain/mark/1.0/&amp;quot;&lt;br /&gt;
                }&lt;br /&gt;
        ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Possible design problems. ==&lt;br /&gt;
&lt;br /&gt;
* MediaGoblin is user based but who is the user when files are sent in by users on a specific site? Use OAuth/OpenID? Perhaps tie closely with OStatus federation. Probably best to follow Twitter API where applications must be registered and get an API key for uploading.&lt;br /&gt;
* Mediatype for callback needs a better definition in the API (what can be sent, e.g. .)&lt;/div&gt;</summary>
		<author><name>Helen Christian</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=API&amp;diff=1817</id>
		<title>API</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=API&amp;diff=1817"/>
		<updated>2016-02-16T00:32:59Z</updated>

		<summary type="html">&lt;p&gt;Helen Christian: /* Metadata */ fullstop punctuation.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes a JSON-based API for MediaGoblin. It is a &#039;&#039;&#039;WORK IN PROGRESS&#039;&#039;&#039; at the moment while it is being drafted before it gets implemented. Currently it only includes a submission API, based on a specific scenario which might not work in general for MediaGoblin but can be used as a springboard for further API improvements and specifications.&lt;br /&gt;
&lt;br /&gt;
= Scenario. =&lt;br /&gt;
&lt;br /&gt;
A MediaGoblin server (&#039;&#039;MGS&#039;&#039;) is used for media storage/repository on behalf of a few other servers, called user servers (&#039;&#039;US&#039;&#039;) . A user of one &#039;&#039;US&#039;&#039; submits a multimedia file. The file is sent to the &#039;&#039;MGS&#039;&#039; and categorized on the &#039;&#039;US&#039;&#039; in some server specific way. All future use of the multimedia file on the &#039;&#039;US&#039;&#039; is processed by the &#039;&#039;MGS&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The collection of multimedia files from all of the &#039;&#039;US&#039;&#039;&#039;s is accessible through the &#039;&#039;MGS&#039;&#039; interface and through specific categorizations on each &#039;&#039;US&#039;&#039; via API or direct links to the content on the &#039;&#039;MGS&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Submission. ==&lt;br /&gt;
&lt;br /&gt;
Since all files are processed automatically when they are uploaded there is no need for a specific submission api. Media files should therefore just be uploaded using a normal HTTP POST which is made available via the API using some sort of an authentication mechanism. An extra variable, containing a webhook/callback URL, can be sent alongside the file upload. The callback provides a URL to the file in the public store. The &#039;&#039;MGS&#039;&#039; allows the &#039;&#039;US&#039;&#039; to send metadata (for example license information) for the file.&lt;br /&gt;
&lt;br /&gt;
The process is as follows:&lt;br /&gt;
&lt;br /&gt;
# User fills in a form on a &#039;&#039;US&#039;&#039;. The form is in fact based up of two forms&lt;br /&gt;
#* One for categorization on the &#039;&#039;US&#039;&#039;&lt;br /&gt;
#* One is a file form for the &#039;&#039;MGS&#039;&#039;&lt;br /&gt;
# &#039;&#039;US&#039;&#039; saves a pending object with the categorization&lt;br /&gt;
# The &#039;&#039;MGS&#039;&#039; processes the file as usual&lt;br /&gt;
# When the &#039;&#039;MGS&#039;&#039; has finished processing it notifies the &#039;&#039;US&#039;&#039; through a special callback url provided that the processing is finished and the file is available in the public store through a specific url&lt;br /&gt;
# &#039;&#039;US&#039;&#039; moves the object from a pending state to a real object with direct links (or api specific information which might be designed later) to the &#039;&#039;MGS&#039;&#039;&lt;br /&gt;
# &#039;&#039;US&#039;&#039; sends metadata to attach to the file.&lt;br /&gt;
&lt;br /&gt;
=== Callback/finished processing API. ===&lt;br /&gt;
&lt;br /&gt;
The callback function of the &#039;&#039;US&#039;&#039; should read and accept MediaGoblin JSON objects according to the following proposed schema when sent to the callback url provided alongside the original upload:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
        &amp;quot;name&amp;quot;:&amp;quot;Callback&amp;quot;,&lt;br /&gt;
        &amp;quot;properties&amp;quot;:&lt;br /&gt;
        {&lt;br /&gt;
                &amp;quot;success&amp;quot;:&lt;br /&gt;
                {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;boolean&amp;quot;,&lt;br /&gt;
                        &amp;quot;description&amp;quot;:&amp;quot;Boolean to indicate whether the processing of the file was successful or not&amp;quot;,&lt;br /&gt;
                        &amp;quot;required&amp;quot;:true&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;message&amp;quot;:&lt;br /&gt;
                {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;string&amp;quot;,&lt;br /&gt;
                        &amp;quot;description&amp;quot;:&amp;quot;Optional message used when processing was unsuccessful to explain the reason for the failure&amp;quot;,&lt;br /&gt;
                        &amp;quot;required&amp;quot;:false&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;location&amp;quot;:&lt;br /&gt;
                {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;array&amp;quot;,&lt;br /&gt;
                        &amp;quot;required&amp;quot;:true,&lt;br /&gt;
                        &amp;quot;description&amp;quot;:&amp;quot;Array of locations for the processed file (or files, e.g. when video file is encoded into the three possible HTML5 video formats&amp;quot;,&lt;br /&gt;
                        &amp;quot;items&amp;quot;:&lt;br /&gt;
                        {&lt;br /&gt;
                                &amp;quot;type&amp;quot;:&amp;quot;object&amp;quot;,&lt;br /&gt;
                                &amp;quot;properties&amp;quot;:&lt;br /&gt;
                                {&lt;br /&gt;
                                        &amp;quot;mimetype&amp;quot;:&lt;br /&gt;
                                        {&lt;br /&gt;
                                                &amp;quot;type&amp;quot;:&amp;quot;string&amp;quot;,&lt;br /&gt;
                                                &amp;quot;description&amp;quot;:&amp;quot;Mimetype to categorize the file&amp;quot;,&lt;br /&gt;
                                                &amp;quot;required&amp;quot;:true,&lt;br /&gt;
                                        },&lt;br /&gt;
                                        &amp;quot;location&amp;quot;:&lt;br /&gt;
                                        {&lt;br /&gt;
                                                &amp;quot;type&amp;quot;:&amp;quot;string&amp;quot;,&lt;br /&gt;
                                                &amp;quot;format&amp;quot;:&amp;quot;url&amp;quot;,&lt;br /&gt;
                                                &amp;quot;description&amp;quot;:&amp;quot;URL of the file in the public store&amp;quot;,&lt;br /&gt;
                                                &amp;quot;required&amp;quot;:true,&lt;br /&gt;
                                        },&lt;br /&gt;
                        }&lt;br /&gt;
                }&lt;br /&gt;
                &amp;quot;mediatype&amp;quot;:&lt;br /&gt;
                {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;string&amp;quot;,&lt;br /&gt;
                        &amp;quot;description&amp;quot;:&amp;quot;Media type of the file categorization, e.g. video, audio, image&amp;quot;,&lt;br /&gt;
                        &amp;quot;required&amp;quot;:false&lt;br /&gt;
                }&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The MediaGoblin expects status codes 204 (No content) on success (to imitate pubsubhubbub protocol) or normal error codes (4xx or 5xx) to indicate failures. It is possible to further define JSON objects in responses but probably unnecessary.&lt;br /&gt;
&lt;br /&gt;
== Metadata. ==&lt;br /&gt;
&lt;br /&gt;
It should be possible to add metadata to a specific file at any time. This could be information such as license information, related files (e.g. derivative work), views on site or something. In this case we only start with a Creative Commons license.&lt;br /&gt;
&lt;br /&gt;
=== Metadata API. ===&lt;br /&gt;
&lt;br /&gt;
A proposed json-based api to attach metadata to a file uploaded to a MediaGoblin instance. Other metadata information can be added later. This is just something to start with. It is necessary to check if the calling application is the same as the uploading application (to restrict others from setting metadata to other people&#039;s files).&lt;br /&gt;
&lt;br /&gt;
The following is the JSON Schema for metadata:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
        &amp;quot;name&amp;quot;:&amp;quot;Metadata&amp;quot;,&lt;br /&gt;
        &amp;quot;properties&amp;quot;:&lt;br /&gt;
        {&lt;br /&gt;
                &amp;quot;file&amp;quot;:&lt;br /&gt;
                {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;string&amp;quot;,&lt;br /&gt;
                        &amp;quot;format&amp;quot;:&amp;quot;url&amp;quot;,&lt;br /&gt;
                        &amp;quot;description&amp;quot;:&amp;quot;URL to the resource (file) to which metadata should be attached&amp;quot;,&lt;br /&gt;
                        &amp;quot;required&amp;quot;:true&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;metadata&amp;quot;:&lt;br /&gt;
                {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;array&amp;quot;,&lt;br /&gt;
                        &amp;quot;description&amp;quot;:&amp;quot;URL to the resource (file) to which metadata should be attached&amp;quot;,&lt;br /&gt;
                        &amp;quot;required&amp;quot;:true,&lt;br /&gt;
                        &amp;quot;items&amp;quot;:&lt;br /&gt;
                        {&lt;br /&gt;
                                &amp;quot;type&amp;quot;:&amp;quot;object&amp;quot;,&lt;br /&gt;
                                &amp;quot;properties&amp;quot;:&lt;br /&gt;
                                {&lt;br /&gt;
                                        &amp;quot;creativecommons&amp;quot;:&lt;br /&gt;
                                        {&lt;br /&gt;
                                                &amp;quot;type&amp;quot;:&amp;quot;object&amp;quot;,&lt;br /&gt;
                                                &amp;quot;required&amp;quot;:false,&lt;br /&gt;
                                                &amp;quot;properties&amp;quot;:&lt;br /&gt;
                                                {&lt;br /&gt;
                                                        &amp;quot;author&amp;quot;:&lt;br /&gt;
                                                        {&lt;br /&gt;
                                                                &amp;quot;type&amp;quot;:&amp;quot;string&amp;quot;,&lt;br /&gt;
                                                                &amp;quot;description&amp;quot;:&amp;quot;Original author of the work, used for attribution&amp;quot;,&lt;br /&gt;
                                                                &amp;quot;required&amp;quot;:true,&lt;br /&gt;
                                                        },&lt;br /&gt;
                                                        &amp;quot;license&amp;quot;:&lt;br /&gt;
                                                        {&lt;br /&gt;
                                                                &amp;quot;type&amp;quot;:&amp;quot;string&amp;quot;,&lt;br /&gt;
                                                                &amp;quot;format&amp;quot;:&amp;quot;url&amp;quot;,&lt;br /&gt;
                                                                &amp;quot;description&amp;quot;:&amp;quot;URL pointing to the Creative Commons license used&amp;quot;,&lt;br /&gt;
                                                                &amp;quot;required&amp;quot;:true,&lt;br /&gt;
                                                        }&lt;br /&gt;
                                                }&lt;br /&gt;
                                        }&lt;br /&gt;
                                }&lt;br /&gt;
                        }&lt;br /&gt;
                }&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An example of a Claim in JSON would be (it remains to decide how to handle user uploads from sites where users aren&#039;t registerd on MediaGoblin):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
        &amp;quot;file&amp;quot;:&amp;quot;http://media.goblin.com/u/artcollection/water-lilies.jpg&amp;quot;,&lt;br /&gt;
        &amp;quot;metadata&amp;quot;:&lt;br /&gt;
        [&lt;br /&gt;
                &amp;quot;creativecommons&amp;quot;:&lt;br /&gt;
                {&lt;br /&gt;
                        &amp;quot;author&amp;quot;:&amp;quot;Claude Monet&amp;quot;,&lt;br /&gt;
                        &amp;quot;licence&amp;quot;:&amp;quot;http://creativecommons.org/publicdomain/mark/1.0/&amp;quot;&lt;br /&gt;
                }&lt;br /&gt;
        ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Possible design problems ==&lt;br /&gt;
&lt;br /&gt;
* MediaGoblin is user based but who is the user when files are sent in by users on a specific site? Use OAuth/OpenID? Perhaps tie closely with OStatus federation. Probably best to follow Twitter API where applications must be registered and get an API key for uploading.&lt;br /&gt;
* Mediatype for callback needs a better definition in the API (what can be sent, e.g. .)&lt;/div&gt;</summary>
		<author><name>Helen Christian</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=API&amp;diff=1816</id>
		<title>API</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=API&amp;diff=1816"/>
		<updated>2016-02-16T00:32:35Z</updated>

		<summary type="html">&lt;p&gt;Helen Christian: /* Callback/finished processing API */ fullstop punctuation.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes a JSON-based API for MediaGoblin. It is a &#039;&#039;&#039;WORK IN PROGRESS&#039;&#039;&#039; at the moment while it is being drafted before it gets implemented. Currently it only includes a submission API, based on a specific scenario which might not work in general for MediaGoblin but can be used as a springboard for further API improvements and specifications.&lt;br /&gt;
&lt;br /&gt;
= Scenario. =&lt;br /&gt;
&lt;br /&gt;
A MediaGoblin server (&#039;&#039;MGS&#039;&#039;) is used for media storage/repository on behalf of a few other servers, called user servers (&#039;&#039;US&#039;&#039;) . A user of one &#039;&#039;US&#039;&#039; submits a multimedia file. The file is sent to the &#039;&#039;MGS&#039;&#039; and categorized on the &#039;&#039;US&#039;&#039; in some server specific way. All future use of the multimedia file on the &#039;&#039;US&#039;&#039; is processed by the &#039;&#039;MGS&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The collection of multimedia files from all of the &#039;&#039;US&#039;&#039;&#039;s is accessible through the &#039;&#039;MGS&#039;&#039; interface and through specific categorizations on each &#039;&#039;US&#039;&#039; via API or direct links to the content on the &#039;&#039;MGS&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Submission. ==&lt;br /&gt;
&lt;br /&gt;
Since all files are processed automatically when they are uploaded there is no need for a specific submission api. Media files should therefore just be uploaded using a normal HTTP POST which is made available via the API using some sort of an authentication mechanism. An extra variable, containing a webhook/callback URL, can be sent alongside the file upload. The callback provides a URL to the file in the public store. The &#039;&#039;MGS&#039;&#039; allows the &#039;&#039;US&#039;&#039; to send metadata (for example license information) for the file.&lt;br /&gt;
&lt;br /&gt;
The process is as follows:&lt;br /&gt;
&lt;br /&gt;
# User fills in a form on a &#039;&#039;US&#039;&#039;. The form is in fact based up of two forms&lt;br /&gt;
#* One for categorization on the &#039;&#039;US&#039;&#039;&lt;br /&gt;
#* One is a file form for the &#039;&#039;MGS&#039;&#039;&lt;br /&gt;
# &#039;&#039;US&#039;&#039; saves a pending object with the categorization&lt;br /&gt;
# The &#039;&#039;MGS&#039;&#039; processes the file as usual&lt;br /&gt;
# When the &#039;&#039;MGS&#039;&#039; has finished processing it notifies the &#039;&#039;US&#039;&#039; through a special callback url provided that the processing is finished and the file is available in the public store through a specific url&lt;br /&gt;
# &#039;&#039;US&#039;&#039; moves the object from a pending state to a real object with direct links (or api specific information which might be designed later) to the &#039;&#039;MGS&#039;&#039;&lt;br /&gt;
# &#039;&#039;US&#039;&#039; sends metadata to attach to the file.&lt;br /&gt;
&lt;br /&gt;
=== Callback/finished processing API. ===&lt;br /&gt;
&lt;br /&gt;
The callback function of the &#039;&#039;US&#039;&#039; should read and accept MediaGoblin JSON objects according to the following proposed schema when sent to the callback url provided alongside the original upload:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
        &amp;quot;name&amp;quot;:&amp;quot;Callback&amp;quot;,&lt;br /&gt;
        &amp;quot;properties&amp;quot;:&lt;br /&gt;
        {&lt;br /&gt;
                &amp;quot;success&amp;quot;:&lt;br /&gt;
                {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;boolean&amp;quot;,&lt;br /&gt;
                        &amp;quot;description&amp;quot;:&amp;quot;Boolean to indicate whether the processing of the file was successful or not&amp;quot;,&lt;br /&gt;
                        &amp;quot;required&amp;quot;:true&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;message&amp;quot;:&lt;br /&gt;
                {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;string&amp;quot;,&lt;br /&gt;
                        &amp;quot;description&amp;quot;:&amp;quot;Optional message used when processing was unsuccessful to explain the reason for the failure&amp;quot;,&lt;br /&gt;
                        &amp;quot;required&amp;quot;:false&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;location&amp;quot;:&lt;br /&gt;
                {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;array&amp;quot;,&lt;br /&gt;
                        &amp;quot;required&amp;quot;:true,&lt;br /&gt;
                        &amp;quot;description&amp;quot;:&amp;quot;Array of locations for the processed file (or files, e.g. when video file is encoded into the three possible HTML5 video formats&amp;quot;,&lt;br /&gt;
                        &amp;quot;items&amp;quot;:&lt;br /&gt;
                        {&lt;br /&gt;
                                &amp;quot;type&amp;quot;:&amp;quot;object&amp;quot;,&lt;br /&gt;
                                &amp;quot;properties&amp;quot;:&lt;br /&gt;
                                {&lt;br /&gt;
                                        &amp;quot;mimetype&amp;quot;:&lt;br /&gt;
                                        {&lt;br /&gt;
                                                &amp;quot;type&amp;quot;:&amp;quot;string&amp;quot;,&lt;br /&gt;
                                                &amp;quot;description&amp;quot;:&amp;quot;Mimetype to categorize the file&amp;quot;,&lt;br /&gt;
                                                &amp;quot;required&amp;quot;:true,&lt;br /&gt;
                                        },&lt;br /&gt;
                                        &amp;quot;location&amp;quot;:&lt;br /&gt;
                                        {&lt;br /&gt;
                                                &amp;quot;type&amp;quot;:&amp;quot;string&amp;quot;,&lt;br /&gt;
                                                &amp;quot;format&amp;quot;:&amp;quot;url&amp;quot;,&lt;br /&gt;
                                                &amp;quot;description&amp;quot;:&amp;quot;URL of the file in the public store&amp;quot;,&lt;br /&gt;
                                                &amp;quot;required&amp;quot;:true,&lt;br /&gt;
                                        },&lt;br /&gt;
                        }&lt;br /&gt;
                }&lt;br /&gt;
                &amp;quot;mediatype&amp;quot;:&lt;br /&gt;
                {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;string&amp;quot;,&lt;br /&gt;
                        &amp;quot;description&amp;quot;:&amp;quot;Media type of the file categorization, e.g. video, audio, image&amp;quot;,&lt;br /&gt;
                        &amp;quot;required&amp;quot;:false&lt;br /&gt;
                }&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The MediaGoblin expects status codes 204 (No content) on success (to imitate pubsubhubbub protocol) or normal error codes (4xx or 5xx) to indicate failures. It is possible to further define JSON objects in responses but probably unnecessary.&lt;br /&gt;
&lt;br /&gt;
== Metadata ==&lt;br /&gt;
&lt;br /&gt;
It should be possible to add metadata to a specific file at any time. This could be information such as license information, related files (e.g. derivative work), views on site or something. In this case we only start with a Creative Commons license.&lt;br /&gt;
&lt;br /&gt;
=== Metadata API ===&lt;br /&gt;
&lt;br /&gt;
A proposed json-based api to attach metadata to a file uploaded to a MediaGoblin instance. Other metadata information can be added later. This is just something to start with. It is necessary to check if the calling application is the same as the uploading application (to restrict others from setting metadata to other people&#039;s files).&lt;br /&gt;
&lt;br /&gt;
The following is the JSON Schema for metadata:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
        &amp;quot;name&amp;quot;:&amp;quot;Metadata&amp;quot;,&lt;br /&gt;
        &amp;quot;properties&amp;quot;:&lt;br /&gt;
        {&lt;br /&gt;
                &amp;quot;file&amp;quot;:&lt;br /&gt;
                {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;string&amp;quot;,&lt;br /&gt;
                        &amp;quot;format&amp;quot;:&amp;quot;url&amp;quot;,&lt;br /&gt;
                        &amp;quot;description&amp;quot;:&amp;quot;URL to the resource (file) to which metadata should be attached&amp;quot;,&lt;br /&gt;
                        &amp;quot;required&amp;quot;:true&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;metadata&amp;quot;:&lt;br /&gt;
                {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;array&amp;quot;,&lt;br /&gt;
                        &amp;quot;description&amp;quot;:&amp;quot;URL to the resource (file) to which metadata should be attached&amp;quot;,&lt;br /&gt;
                        &amp;quot;required&amp;quot;:true,&lt;br /&gt;
                        &amp;quot;items&amp;quot;:&lt;br /&gt;
                        {&lt;br /&gt;
                                &amp;quot;type&amp;quot;:&amp;quot;object&amp;quot;,&lt;br /&gt;
                                &amp;quot;properties&amp;quot;:&lt;br /&gt;
                                {&lt;br /&gt;
                                        &amp;quot;creativecommons&amp;quot;:&lt;br /&gt;
                                        {&lt;br /&gt;
                                                &amp;quot;type&amp;quot;:&amp;quot;object&amp;quot;,&lt;br /&gt;
                                                &amp;quot;required&amp;quot;:false,&lt;br /&gt;
                                                &amp;quot;properties&amp;quot;:&lt;br /&gt;
                                                {&lt;br /&gt;
                                                        &amp;quot;author&amp;quot;:&lt;br /&gt;
                                                        {&lt;br /&gt;
                                                                &amp;quot;type&amp;quot;:&amp;quot;string&amp;quot;,&lt;br /&gt;
                                                                &amp;quot;description&amp;quot;:&amp;quot;Original author of the work, used for attribution&amp;quot;,&lt;br /&gt;
                                                                &amp;quot;required&amp;quot;:true,&lt;br /&gt;
                                                        },&lt;br /&gt;
                                                        &amp;quot;license&amp;quot;:&lt;br /&gt;
                                                        {&lt;br /&gt;
                                                                &amp;quot;type&amp;quot;:&amp;quot;string&amp;quot;,&lt;br /&gt;
                                                                &amp;quot;format&amp;quot;:&amp;quot;url&amp;quot;,&lt;br /&gt;
                                                                &amp;quot;description&amp;quot;:&amp;quot;URL pointing to the Creative Commons license used&amp;quot;,&lt;br /&gt;
                                                                &amp;quot;required&amp;quot;:true,&lt;br /&gt;
                                                        }&lt;br /&gt;
                                                }&lt;br /&gt;
                                        }&lt;br /&gt;
                                }&lt;br /&gt;
                        }&lt;br /&gt;
                }&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An example of a Claim in JSON would be (it remains to decide how to handle user uploads from sites where users aren&#039;t registerd on MediaGoblin):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
        &amp;quot;file&amp;quot;:&amp;quot;http://media.goblin.com/u/artcollection/water-lilies.jpg&amp;quot;,&lt;br /&gt;
        &amp;quot;metadata&amp;quot;:&lt;br /&gt;
        [&lt;br /&gt;
                &amp;quot;creativecommons&amp;quot;:&lt;br /&gt;
                {&lt;br /&gt;
                        &amp;quot;author&amp;quot;:&amp;quot;Claude Monet&amp;quot;,&lt;br /&gt;
                        &amp;quot;licence&amp;quot;:&amp;quot;http://creativecommons.org/publicdomain/mark/1.0/&amp;quot;&lt;br /&gt;
                }&lt;br /&gt;
        ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Possible design problems ==&lt;br /&gt;
&lt;br /&gt;
* MediaGoblin is user based but who is the user when files are sent in by users on a specific site? Use OAuth/OpenID? Perhaps tie closely with OStatus federation. Probably best to follow Twitter API where applications must be registered and get an API key for uploading.&lt;br /&gt;
* Mediatype for callback needs a better definition in the API (what can be sent, e.g. .)&lt;/div&gt;</summary>
		<author><name>Helen Christian</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=API&amp;diff=1815</id>
		<title>API</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=API&amp;diff=1815"/>
		<updated>2016-02-16T00:32:21Z</updated>

		<summary type="html">&lt;p&gt;Helen Christian: /* Submission */ fullstop punctuation.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes a JSON-based API for MediaGoblin. It is a &#039;&#039;&#039;WORK IN PROGRESS&#039;&#039;&#039; at the moment while it is being drafted before it gets implemented. Currently it only includes a submission API, based on a specific scenario which might not work in general for MediaGoblin but can be used as a springboard for further API improvements and specifications.&lt;br /&gt;
&lt;br /&gt;
= Scenario. =&lt;br /&gt;
&lt;br /&gt;
A MediaGoblin server (&#039;&#039;MGS&#039;&#039;) is used for media storage/repository on behalf of a few other servers, called user servers (&#039;&#039;US&#039;&#039;) . A user of one &#039;&#039;US&#039;&#039; submits a multimedia file. The file is sent to the &#039;&#039;MGS&#039;&#039; and categorized on the &#039;&#039;US&#039;&#039; in some server specific way. All future use of the multimedia file on the &#039;&#039;US&#039;&#039; is processed by the &#039;&#039;MGS&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The collection of multimedia files from all of the &#039;&#039;US&#039;&#039;&#039;s is accessible through the &#039;&#039;MGS&#039;&#039; interface and through specific categorizations on each &#039;&#039;US&#039;&#039; via API or direct links to the content on the &#039;&#039;MGS&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Submission. ==&lt;br /&gt;
&lt;br /&gt;
Since all files are processed automatically when they are uploaded there is no need for a specific submission api. Media files should therefore just be uploaded using a normal HTTP POST which is made available via the API using some sort of an authentication mechanism. An extra variable, containing a webhook/callback URL, can be sent alongside the file upload. The callback provides a URL to the file in the public store. The &#039;&#039;MGS&#039;&#039; allows the &#039;&#039;US&#039;&#039; to send metadata (for example license information) for the file.&lt;br /&gt;
&lt;br /&gt;
The process is as follows:&lt;br /&gt;
&lt;br /&gt;
# User fills in a form on a &#039;&#039;US&#039;&#039;. The form is in fact based up of two forms&lt;br /&gt;
#* One for categorization on the &#039;&#039;US&#039;&#039;&lt;br /&gt;
#* One is a file form for the &#039;&#039;MGS&#039;&#039;&lt;br /&gt;
# &#039;&#039;US&#039;&#039; saves a pending object with the categorization&lt;br /&gt;
# The &#039;&#039;MGS&#039;&#039; processes the file as usual&lt;br /&gt;
# When the &#039;&#039;MGS&#039;&#039; has finished processing it notifies the &#039;&#039;US&#039;&#039; through a special callback url provided that the processing is finished and the file is available in the public store through a specific url&lt;br /&gt;
# &#039;&#039;US&#039;&#039; moves the object from a pending state to a real object with direct links (or api specific information which might be designed later) to the &#039;&#039;MGS&#039;&#039;&lt;br /&gt;
# &#039;&#039;US&#039;&#039; sends metadata to attach to the file.&lt;br /&gt;
&lt;br /&gt;
=== Callback/finished processing API ===&lt;br /&gt;
&lt;br /&gt;
The callback function of the &#039;&#039;US&#039;&#039; should read and accept MediaGoblin JSON objects according to the following proposed schema when sent to the callback url provided alongside the original upload:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
        &amp;quot;name&amp;quot;:&amp;quot;Callback&amp;quot;,&lt;br /&gt;
        &amp;quot;properties&amp;quot;:&lt;br /&gt;
        {&lt;br /&gt;
                &amp;quot;success&amp;quot;:&lt;br /&gt;
                {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;boolean&amp;quot;,&lt;br /&gt;
                        &amp;quot;description&amp;quot;:&amp;quot;Boolean to indicate whether the processing of the file was successful or not&amp;quot;,&lt;br /&gt;
                        &amp;quot;required&amp;quot;:true&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;message&amp;quot;:&lt;br /&gt;
                {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;string&amp;quot;,&lt;br /&gt;
                        &amp;quot;description&amp;quot;:&amp;quot;Optional message used when processing was unsuccessful to explain the reason for the failure&amp;quot;,&lt;br /&gt;
                        &amp;quot;required&amp;quot;:false&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;location&amp;quot;:&lt;br /&gt;
                {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;array&amp;quot;,&lt;br /&gt;
                        &amp;quot;required&amp;quot;:true,&lt;br /&gt;
                        &amp;quot;description&amp;quot;:&amp;quot;Array of locations for the processed file (or files, e.g. when video file is encoded into the three possible HTML5 video formats&amp;quot;,&lt;br /&gt;
                        &amp;quot;items&amp;quot;:&lt;br /&gt;
                        {&lt;br /&gt;
                                &amp;quot;type&amp;quot;:&amp;quot;object&amp;quot;,&lt;br /&gt;
                                &amp;quot;properties&amp;quot;:&lt;br /&gt;
                                {&lt;br /&gt;
                                        &amp;quot;mimetype&amp;quot;:&lt;br /&gt;
                                        {&lt;br /&gt;
                                                &amp;quot;type&amp;quot;:&amp;quot;string&amp;quot;,&lt;br /&gt;
                                                &amp;quot;description&amp;quot;:&amp;quot;Mimetype to categorize the file&amp;quot;,&lt;br /&gt;
                                                &amp;quot;required&amp;quot;:true,&lt;br /&gt;
                                        },&lt;br /&gt;
                                        &amp;quot;location&amp;quot;:&lt;br /&gt;
                                        {&lt;br /&gt;
                                                &amp;quot;type&amp;quot;:&amp;quot;string&amp;quot;,&lt;br /&gt;
                                                &amp;quot;format&amp;quot;:&amp;quot;url&amp;quot;,&lt;br /&gt;
                                                &amp;quot;description&amp;quot;:&amp;quot;URL of the file in the public store&amp;quot;,&lt;br /&gt;
                                                &amp;quot;required&amp;quot;:true,&lt;br /&gt;
                                        },&lt;br /&gt;
                        }&lt;br /&gt;
                }&lt;br /&gt;
                &amp;quot;mediatype&amp;quot;:&lt;br /&gt;
                {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;string&amp;quot;,&lt;br /&gt;
                        &amp;quot;description&amp;quot;:&amp;quot;Media type of the file categorization, e.g. video, audio, image&amp;quot;,&lt;br /&gt;
                        &amp;quot;required&amp;quot;:false&lt;br /&gt;
                }&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The MediaGoblin expects status codes 204 (No content) on success (to imitate pubsubhubbub protocol) or normal error codes (4xx or 5xx) to indicate failures. It is possible to further define JSON objects in responses but probably unnecessary.&lt;br /&gt;
&lt;br /&gt;
== Metadata ==&lt;br /&gt;
&lt;br /&gt;
It should be possible to add metadata to a specific file at any time. This could be information such as license information, related files (e.g. derivative work), views on site or something. In this case we only start with a Creative Commons license.&lt;br /&gt;
&lt;br /&gt;
=== Metadata API ===&lt;br /&gt;
&lt;br /&gt;
A proposed json-based api to attach metadata to a file uploaded to a MediaGoblin instance. Other metadata information can be added later. This is just something to start with. It is necessary to check if the calling application is the same as the uploading application (to restrict others from setting metadata to other people&#039;s files).&lt;br /&gt;
&lt;br /&gt;
The following is the JSON Schema for metadata:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
        &amp;quot;name&amp;quot;:&amp;quot;Metadata&amp;quot;,&lt;br /&gt;
        &amp;quot;properties&amp;quot;:&lt;br /&gt;
        {&lt;br /&gt;
                &amp;quot;file&amp;quot;:&lt;br /&gt;
                {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;string&amp;quot;,&lt;br /&gt;
                        &amp;quot;format&amp;quot;:&amp;quot;url&amp;quot;,&lt;br /&gt;
                        &amp;quot;description&amp;quot;:&amp;quot;URL to the resource (file) to which metadata should be attached&amp;quot;,&lt;br /&gt;
                        &amp;quot;required&amp;quot;:true&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;metadata&amp;quot;:&lt;br /&gt;
                {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;array&amp;quot;,&lt;br /&gt;
                        &amp;quot;description&amp;quot;:&amp;quot;URL to the resource (file) to which metadata should be attached&amp;quot;,&lt;br /&gt;
                        &amp;quot;required&amp;quot;:true,&lt;br /&gt;
                        &amp;quot;items&amp;quot;:&lt;br /&gt;
                        {&lt;br /&gt;
                                &amp;quot;type&amp;quot;:&amp;quot;object&amp;quot;,&lt;br /&gt;
                                &amp;quot;properties&amp;quot;:&lt;br /&gt;
                                {&lt;br /&gt;
                                        &amp;quot;creativecommons&amp;quot;:&lt;br /&gt;
                                        {&lt;br /&gt;
                                                &amp;quot;type&amp;quot;:&amp;quot;object&amp;quot;,&lt;br /&gt;
                                                &amp;quot;required&amp;quot;:false,&lt;br /&gt;
                                                &amp;quot;properties&amp;quot;:&lt;br /&gt;
                                                {&lt;br /&gt;
                                                        &amp;quot;author&amp;quot;:&lt;br /&gt;
                                                        {&lt;br /&gt;
                                                                &amp;quot;type&amp;quot;:&amp;quot;string&amp;quot;,&lt;br /&gt;
                                                                &amp;quot;description&amp;quot;:&amp;quot;Original author of the work, used for attribution&amp;quot;,&lt;br /&gt;
                                                                &amp;quot;required&amp;quot;:true,&lt;br /&gt;
                                                        },&lt;br /&gt;
                                                        &amp;quot;license&amp;quot;:&lt;br /&gt;
                                                        {&lt;br /&gt;
                                                                &amp;quot;type&amp;quot;:&amp;quot;string&amp;quot;,&lt;br /&gt;
                                                                &amp;quot;format&amp;quot;:&amp;quot;url&amp;quot;,&lt;br /&gt;
                                                                &amp;quot;description&amp;quot;:&amp;quot;URL pointing to the Creative Commons license used&amp;quot;,&lt;br /&gt;
                                                                &amp;quot;required&amp;quot;:true,&lt;br /&gt;
                                                        }&lt;br /&gt;
                                                }&lt;br /&gt;
                                        }&lt;br /&gt;
                                }&lt;br /&gt;
                        }&lt;br /&gt;
                }&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An example of a Claim in JSON would be (it remains to decide how to handle user uploads from sites where users aren&#039;t registerd on MediaGoblin):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
        &amp;quot;file&amp;quot;:&amp;quot;http://media.goblin.com/u/artcollection/water-lilies.jpg&amp;quot;,&lt;br /&gt;
        &amp;quot;metadata&amp;quot;:&lt;br /&gt;
        [&lt;br /&gt;
                &amp;quot;creativecommons&amp;quot;:&lt;br /&gt;
                {&lt;br /&gt;
                        &amp;quot;author&amp;quot;:&amp;quot;Claude Monet&amp;quot;,&lt;br /&gt;
                        &amp;quot;licence&amp;quot;:&amp;quot;http://creativecommons.org/publicdomain/mark/1.0/&amp;quot;&lt;br /&gt;
                }&lt;br /&gt;
        ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Possible design problems ==&lt;br /&gt;
&lt;br /&gt;
* MediaGoblin is user based but who is the user when files are sent in by users on a specific site? Use OAuth/OpenID? Perhaps tie closely with OStatus federation. Probably best to follow Twitter API where applications must be registered and get an API key for uploading.&lt;br /&gt;
* Mediatype for callback needs a better definition in the API (what can be sent, e.g. .)&lt;/div&gt;</summary>
		<author><name>Helen Christian</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=API&amp;diff=1814</id>
		<title>API</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=API&amp;diff=1814"/>
		<updated>2016-02-16T00:32:06Z</updated>

		<summary type="html">&lt;p&gt;Helen Christian: /* Scenario */ fullstop punctuation.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes a JSON-based API for MediaGoblin. It is a &#039;&#039;&#039;WORK IN PROGRESS&#039;&#039;&#039; at the moment while it is being drafted before it gets implemented. Currently it only includes a submission API, based on a specific scenario which might not work in general for MediaGoblin but can be used as a springboard for further API improvements and specifications.&lt;br /&gt;
&lt;br /&gt;
= Scenario. =&lt;br /&gt;
&lt;br /&gt;
A MediaGoblin server (&#039;&#039;MGS&#039;&#039;) is used for media storage/repository on behalf of a few other servers, called user servers (&#039;&#039;US&#039;&#039;) . A user of one &#039;&#039;US&#039;&#039; submits a multimedia file. The file is sent to the &#039;&#039;MGS&#039;&#039; and categorized on the &#039;&#039;US&#039;&#039; in some server specific way. All future use of the multimedia file on the &#039;&#039;US&#039;&#039; is processed by the &#039;&#039;MGS&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The collection of multimedia files from all of the &#039;&#039;US&#039;&#039;&#039;s is accessible through the &#039;&#039;MGS&#039;&#039; interface and through specific categorizations on each &#039;&#039;US&#039;&#039; via API or direct links to the content on the &#039;&#039;MGS&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Submission ==&lt;br /&gt;
&lt;br /&gt;
Since all files are processed automatically when they are uploaded there is no need for a specific submission api. Media files should therefore just be uploaded using a normal HTTP POST which is made available via the API using some sort of an authentication mechanism. An extra variable, containing a webhook/callback URL, can be sent alongside the file upload. The callback provides a URL to the file in the public store. The &#039;&#039;MGS&#039;&#039; allows the &#039;&#039;US&#039;&#039; to send metadata (for example license information) for the file.&lt;br /&gt;
&lt;br /&gt;
The process is as follows:&lt;br /&gt;
&lt;br /&gt;
# User fills in a form on a &#039;&#039;US&#039;&#039;. The form is in fact based up of two forms&lt;br /&gt;
#* One for categorization on the &#039;&#039;US&#039;&#039;&lt;br /&gt;
#* One is a file form for the &#039;&#039;MGS&#039;&#039;&lt;br /&gt;
# &#039;&#039;US&#039;&#039; saves a pending object with the categorization&lt;br /&gt;
# The &#039;&#039;MGS&#039;&#039; processes the file as usual&lt;br /&gt;
# When the &#039;&#039;MGS&#039;&#039; has finished processing it notifies the &#039;&#039;US&#039;&#039; through a special callback url provided that the processing is finished and the file is available in the public store through a specific url&lt;br /&gt;
# &#039;&#039;US&#039;&#039; moves the object from a pending state to a real object with direct links (or api specific information which might be designed later) to the &#039;&#039;MGS&#039;&#039;&lt;br /&gt;
# &#039;&#039;US&#039;&#039; sends metadata to attach to the file.&lt;br /&gt;
&lt;br /&gt;
=== Callback/finished processing API ===&lt;br /&gt;
&lt;br /&gt;
The callback function of the &#039;&#039;US&#039;&#039; should read and accept MediaGoblin JSON objects according to the following proposed schema when sent to the callback url provided alongside the original upload:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
        &amp;quot;name&amp;quot;:&amp;quot;Callback&amp;quot;,&lt;br /&gt;
        &amp;quot;properties&amp;quot;:&lt;br /&gt;
        {&lt;br /&gt;
                &amp;quot;success&amp;quot;:&lt;br /&gt;
                {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;boolean&amp;quot;,&lt;br /&gt;
                        &amp;quot;description&amp;quot;:&amp;quot;Boolean to indicate whether the processing of the file was successful or not&amp;quot;,&lt;br /&gt;
                        &amp;quot;required&amp;quot;:true&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;message&amp;quot;:&lt;br /&gt;
                {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;string&amp;quot;,&lt;br /&gt;
                        &amp;quot;description&amp;quot;:&amp;quot;Optional message used when processing was unsuccessful to explain the reason for the failure&amp;quot;,&lt;br /&gt;
                        &amp;quot;required&amp;quot;:false&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;location&amp;quot;:&lt;br /&gt;
                {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;array&amp;quot;,&lt;br /&gt;
                        &amp;quot;required&amp;quot;:true,&lt;br /&gt;
                        &amp;quot;description&amp;quot;:&amp;quot;Array of locations for the processed file (or files, e.g. when video file is encoded into the three possible HTML5 video formats&amp;quot;,&lt;br /&gt;
                        &amp;quot;items&amp;quot;:&lt;br /&gt;
                        {&lt;br /&gt;
                                &amp;quot;type&amp;quot;:&amp;quot;object&amp;quot;,&lt;br /&gt;
                                &amp;quot;properties&amp;quot;:&lt;br /&gt;
                                {&lt;br /&gt;
                                        &amp;quot;mimetype&amp;quot;:&lt;br /&gt;
                                        {&lt;br /&gt;
                                                &amp;quot;type&amp;quot;:&amp;quot;string&amp;quot;,&lt;br /&gt;
                                                &amp;quot;description&amp;quot;:&amp;quot;Mimetype to categorize the file&amp;quot;,&lt;br /&gt;
                                                &amp;quot;required&amp;quot;:true,&lt;br /&gt;
                                        },&lt;br /&gt;
                                        &amp;quot;location&amp;quot;:&lt;br /&gt;
                                        {&lt;br /&gt;
                                                &amp;quot;type&amp;quot;:&amp;quot;string&amp;quot;,&lt;br /&gt;
                                                &amp;quot;format&amp;quot;:&amp;quot;url&amp;quot;,&lt;br /&gt;
                                                &amp;quot;description&amp;quot;:&amp;quot;URL of the file in the public store&amp;quot;,&lt;br /&gt;
                                                &amp;quot;required&amp;quot;:true,&lt;br /&gt;
                                        },&lt;br /&gt;
                        }&lt;br /&gt;
                }&lt;br /&gt;
                &amp;quot;mediatype&amp;quot;:&lt;br /&gt;
                {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;string&amp;quot;,&lt;br /&gt;
                        &amp;quot;description&amp;quot;:&amp;quot;Media type of the file categorization, e.g. video, audio, image&amp;quot;,&lt;br /&gt;
                        &amp;quot;required&amp;quot;:false&lt;br /&gt;
                }&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The MediaGoblin expects status codes 204 (No content) on success (to imitate pubsubhubbub protocol) or normal error codes (4xx or 5xx) to indicate failures. It is possible to further define JSON objects in responses but probably unnecessary. &lt;br /&gt;
&lt;br /&gt;
== Metadata ==&lt;br /&gt;
&lt;br /&gt;
It should be possible to add metadata to a specific file at any time. This could be information such as license information, related files (e.g. derivative work), views on site or something. In this case we only start with a Creative Commons license.&lt;br /&gt;
&lt;br /&gt;
=== Metadata API ===&lt;br /&gt;
&lt;br /&gt;
A proposed json-based api to attach metadata to a file uploaded to a MediaGoblin instance. Other metadata information can be added later. This is just something to start with. It is necessary to check if the calling application is the same as the uploading application (to restrict others from setting metadata to other people&#039;s files).&lt;br /&gt;
&lt;br /&gt;
The following is the JSON Schema for metadata:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
        &amp;quot;name&amp;quot;:&amp;quot;Metadata&amp;quot;,&lt;br /&gt;
        &amp;quot;properties&amp;quot;:&lt;br /&gt;
        {&lt;br /&gt;
                &amp;quot;file&amp;quot;:&lt;br /&gt;
                {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;string&amp;quot;,&lt;br /&gt;
                        &amp;quot;format&amp;quot;:&amp;quot;url&amp;quot;,&lt;br /&gt;
                        &amp;quot;description&amp;quot;:&amp;quot;URL to the resource (file) to which metadata should be attached&amp;quot;,&lt;br /&gt;
                        &amp;quot;required&amp;quot;:true&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;metadata&amp;quot;:&lt;br /&gt;
                {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;array&amp;quot;,&lt;br /&gt;
                        &amp;quot;description&amp;quot;:&amp;quot;URL to the resource (file) to which metadata should be attached&amp;quot;,&lt;br /&gt;
                        &amp;quot;required&amp;quot;:true,&lt;br /&gt;
                        &amp;quot;items&amp;quot;:&lt;br /&gt;
                        {&lt;br /&gt;
                                &amp;quot;type&amp;quot;:&amp;quot;object&amp;quot;,&lt;br /&gt;
                                &amp;quot;properties&amp;quot;:&lt;br /&gt;
                                {&lt;br /&gt;
                                        &amp;quot;creativecommons&amp;quot;:&lt;br /&gt;
                                        {&lt;br /&gt;
                                                &amp;quot;type&amp;quot;:&amp;quot;object&amp;quot;,&lt;br /&gt;
                                                &amp;quot;required&amp;quot;:false,&lt;br /&gt;
                                                &amp;quot;properties&amp;quot;:&lt;br /&gt;
                                                {&lt;br /&gt;
                                                        &amp;quot;author&amp;quot;:&lt;br /&gt;
                                                        {&lt;br /&gt;
                                                                &amp;quot;type&amp;quot;:&amp;quot;string&amp;quot;,&lt;br /&gt;
                                                                &amp;quot;description&amp;quot;:&amp;quot;Original author of the work, used for attribution&amp;quot;,&lt;br /&gt;
                                                                &amp;quot;required&amp;quot;:true,&lt;br /&gt;
                                                        },&lt;br /&gt;
                                                        &amp;quot;license&amp;quot;:&lt;br /&gt;
                                                        {&lt;br /&gt;
                                                                &amp;quot;type&amp;quot;:&amp;quot;string&amp;quot;,&lt;br /&gt;
                                                                &amp;quot;format&amp;quot;:&amp;quot;url&amp;quot;,&lt;br /&gt;
                                                                &amp;quot;description&amp;quot;:&amp;quot;URL pointing to the Creative Commons license used&amp;quot;,&lt;br /&gt;
                                                                &amp;quot;required&amp;quot;:true,&lt;br /&gt;
                                                        }&lt;br /&gt;
                                                }&lt;br /&gt;
                                        }&lt;br /&gt;
                                }&lt;br /&gt;
                        }&lt;br /&gt;
                }&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An example of a Claim in JSON would be (it remains to decide how to handle user uploads from sites where users aren&#039;t registerd on MediaGoblin):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
        &amp;quot;file&amp;quot;:&amp;quot;http://media.goblin.com/u/artcollection/water-lilies.jpg&amp;quot;,&lt;br /&gt;
        &amp;quot;metadata&amp;quot;:&lt;br /&gt;
        [&lt;br /&gt;
                &amp;quot;creativecommons&amp;quot;:&lt;br /&gt;
                {&lt;br /&gt;
                        &amp;quot;author&amp;quot;:&amp;quot;Claude Monet&amp;quot;,&lt;br /&gt;
                        &amp;quot;licence&amp;quot;:&amp;quot;http://creativecommons.org/publicdomain/mark/1.0/&amp;quot;&lt;br /&gt;
                }&lt;br /&gt;
        ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Possible design problems ==&lt;br /&gt;
&lt;br /&gt;
* MediaGoblin is user based but who is the user when files are sent in by users on a specific site? Use OAuth/OpenID? Perhaps tie closely with OStatus federation. Probably best to follow Twitter API where applications must be registered and get an API key for uploading.&lt;br /&gt;
* Mediatype for callback needs a better definition in the API (what can be sent, e.g. .)&lt;/div&gt;</summary>
		<author><name>Helen Christian</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=MediaGoblin.org_v2&amp;diff=1813</id>
		<title>MediaGoblin.org v2</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=MediaGoblin.org_v2&amp;diff=1813"/>
		<updated>2016-02-16T00:31:26Z</updated>

		<summary type="html">&lt;p&gt;Helen Christian: /* Reasons for the redesign. */ spacing punctuation.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page tracks the MediaGoblin.org website redesign and is maintained by [[User:schendje|schendje]].&lt;br /&gt;
&lt;br /&gt;
== Reasons for the redesign. ==&lt;br /&gt;
&lt;br /&gt;
I was also the one who created the current [http://www.mediagoblin.org MediaGoblin.org] design. However, it could use some serious updating. I had several things I wish to see improve :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Immediately and clearly explain what MediaGoblin is and what it does.&#039;&#039;&#039; I do not think this is clear at all on our current homepage. It begins with &amp;quot;The perfect tool to show and share your media ! &amp;quot; which sounds positive, but doesn&#039;t really explain anything. It goes on with four more bullet points, about the community and the GNU project among other things, but none of these provide any information about MediaGoblin&#039;s functionality.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Provide an easier way to get started with MediaGoblin.&#039;&#039;&#039; The current design has a big line of text in the middle saying &amp;quot;Get started with the latest MediaGoblin release&amp;quot;, which seems pretty straightforward. But then it provides you with three choices, or maybe three steps, and it is unclear which one you should pick or start with.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Remove the need for a separate tour page.&#039;&#039;&#039; Currently, we point visitors to our Tour page to learn more. This page contains plenty of information and screenshots, which is good. However, I think it would me more effective if MediaGoblin was introduced like this right on the homepage. Therefore, I wanted to combine the homepage and the tour page into a single page.&lt;br /&gt;
&lt;br /&gt;
The homepage should also contain other information, such as links to the repository and [http://issues.mediagoblin.org/ bug tracker], but in my opinion its primary function should be to explain what MediaGoblin is and to get people started with it quickly.&lt;br /&gt;
&lt;br /&gt;
== Request for feedback. ==&lt;br /&gt;
&lt;br /&gt;
One of the reasons I created this page was to gather feedback. If you are interested, please keep checking this page for any updates and let me ([[User:schendje|schendje]]) know what you think. The best place to reach me would be the MediaGoblin IRC channel, which is also where I&#039;ll announce any updates.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Quick note #1:&#039;&#039;&#039; these mockups are free for you to adapt. A picture is worth a thousand words so if you&#039;d like to change something, download and edit the [http://schendje.fedorapeople.org/goblin/homepage/wireframe.svg SVG source file] and show it around!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Quick note #2:&#039;&#039;&#039; virtually all of the copy in the current mockups is placeholder text. Therefore, comments on the content of the page will not yet be of much use. I will be working on replacing it with proper copy as soon as possible, so we can also gather feedback on that part of the design.&lt;br /&gt;
&lt;br /&gt;
== Mockups (most recent one at the top). ==&lt;br /&gt;
&lt;br /&gt;
=== Third iteration. ===&lt;br /&gt;
&lt;br /&gt;
http://schendje.fedorapeople.org/goblin/homepage/wireframe3.png&lt;br /&gt;
&lt;br /&gt;
* Almost the same as previous, but added screenshots.&lt;br /&gt;
* A short explanation for this layout: http://schendje.fedorapeople.org/goblin/homepage/layout_explained.png&lt;br /&gt;
&lt;br /&gt;
Questions:&lt;br /&gt;
* Is it obvious that the images are screenshots ? They can of course be clicked to show a bigger version.&lt;br /&gt;
* What is a good position for the &amp;quot;quick links&amp;quot; ? They will be in the top corner on any other page on the website, but I think they may demand too much attention if we put them at the top of the homepage as well.&lt;br /&gt;
&lt;br /&gt;
=== Second iteration. ===&lt;br /&gt;
* Slightly higher fidelity.&lt;br /&gt;
* Includes several changes to the layout.&lt;br /&gt;
&lt;br /&gt;
http://schendje.fedorapeople.org/goblin/homepage/wireframe2.png&lt;br /&gt;
&lt;br /&gt;
=== First iteration. ===&lt;br /&gt;
A first low-fidelity wireframe: http://schendje.fedorapeople.org/goblin/homepage/wireframe.png&lt;br /&gt;
&lt;br /&gt;
=== Old design. ===&lt;br /&gt;
&lt;br /&gt;
A mockup of the current [https://wiki.mediagoblin.org/Main_Page MediaGoblin.org] design: http://schendje.fedorapeople.org/goblin/homepage/final.png&lt;/div&gt;</summary>
		<author><name>Helen Christian</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=MediaGoblin.org_v2&amp;diff=1812</id>
		<title>MediaGoblin.org v2</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=MediaGoblin.org_v2&amp;diff=1812"/>
		<updated>2016-02-16T00:30:35Z</updated>

		<summary type="html">&lt;p&gt;Helen Christian: /* Mockups (most recent one at the top). */ fullstops punctuation.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page tracks the MediaGoblin.org website redesign and is maintained by [[User:schendje|schendje]].&lt;br /&gt;
&lt;br /&gt;
== Reasons for the redesign. ==&lt;br /&gt;
&lt;br /&gt;
I was also the one who created the current [http://www.mediagoblin.org MediaGoblin.org] design. However, it could use some serious updating. I had several things I wish to see improve :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Immediately and clearly explain what MediaGoblin is and what it does.&#039;&#039;&#039; I do not think this is clear at all on our current homepage. It begins with &amp;quot;The perfect tool to show and share your media !&amp;quot; which sounds positive, but doesn&#039;t really explain anything. It goes on with four more bullet points, about the community and the GNU project among other things, but none of these provide any information about MediaGoblin&#039;s functionality.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Provide an easier way to get started with MediaGoblin.&#039;&#039;&#039; The current design has a big line of text in the middle saying &amp;quot;Get started with the latest MediaGoblin release&amp;quot;, which seems pretty straightforward. But then it provides you with three choices, or maybe three steps, and it is unclear which one you should pick or start with.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Remove the need for a separate tour page.&#039;&#039;&#039; Currently, we point visitors to our Tour page to learn more. This page contains plenty of information and screenshots, which is good. However, I think it would me more effective if MediaGoblin was introduced like this right on the homepage. Therefore, I wanted to combine the homepage and the tour page into a single page.&lt;br /&gt;
&lt;br /&gt;
The homepage should also contain other information, such as links to the repository and [http://issues.mediagoblin.org/ bug tracker], but in my opinion its primary function should be to explain what MediaGoblin is and to get people started with it quickly.&lt;br /&gt;
&lt;br /&gt;
== Request for feedback. ==&lt;br /&gt;
&lt;br /&gt;
One of the reasons I created this page was to gather feedback. If you are interested, please keep checking this page for any updates and let me ([[User:schendje|schendje]]) know what you think. The best place to reach me would be the MediaGoblin IRC channel, which is also where I&#039;ll announce any updates.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Quick note #1:&#039;&#039;&#039; these mockups are free for you to adapt. A picture is worth a thousand words so if you&#039;d like to change something, download and edit the [http://schendje.fedorapeople.org/goblin/homepage/wireframe.svg SVG source file] and show it around!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Quick note #2:&#039;&#039;&#039; virtually all of the copy in the current mockups is placeholder text. Therefore, comments on the content of the page will not yet be of much use. I will be working on replacing it with proper copy as soon as possible, so we can also gather feedback on that part of the design.&lt;br /&gt;
&lt;br /&gt;
== Mockups (most recent one at the top). ==&lt;br /&gt;
&lt;br /&gt;
=== Third iteration. ===&lt;br /&gt;
&lt;br /&gt;
http://schendje.fedorapeople.org/goblin/homepage/wireframe3.png&lt;br /&gt;
&lt;br /&gt;
* Almost the same as previous, but added screenshots.&lt;br /&gt;
* A short explanation for this layout: http://schendje.fedorapeople.org/goblin/homepage/layout_explained.png&lt;br /&gt;
&lt;br /&gt;
Questions:&lt;br /&gt;
* Is it obvious that the images are screenshots ? They can of course be clicked to show a bigger version.&lt;br /&gt;
* What is a good position for the &amp;quot;quick links&amp;quot; ? They will be in the top corner on any other page on the website, but I think they may demand too much attention if we put them at the top of the homepage as well.&lt;br /&gt;
&lt;br /&gt;
=== Second iteration. ===&lt;br /&gt;
* Slightly higher fidelity.&lt;br /&gt;
* Includes several changes to the layout.&lt;br /&gt;
&lt;br /&gt;
http://schendje.fedorapeople.org/goblin/homepage/wireframe2.png&lt;br /&gt;
&lt;br /&gt;
=== First iteration. ===&lt;br /&gt;
A first low-fidelity wireframe: http://schendje.fedorapeople.org/goblin/homepage/wireframe.png&lt;br /&gt;
&lt;br /&gt;
=== Old design. ===&lt;br /&gt;
&lt;br /&gt;
A mockup of the current [https://wiki.mediagoblin.org/Main_Page MediaGoblin.org] design: http://schendje.fedorapeople.org/goblin/homepage/final.png&lt;/div&gt;</summary>
		<author><name>Helen Christian</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=MediaGoblin.org_v2&amp;diff=1811</id>
		<title>MediaGoblin.org v2</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=MediaGoblin.org_v2&amp;diff=1811"/>
		<updated>2016-02-16T00:29:59Z</updated>

		<summary type="html">&lt;p&gt;Helen Christian: /* Mockups (most recent one at the top) */ fullstop punctuation.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page tracks the MediaGoblin.org website redesign and is maintained by [[User:schendje|schendje]].&lt;br /&gt;
&lt;br /&gt;
== Reasons for the redesign. ==&lt;br /&gt;
&lt;br /&gt;
I was also the one who created the current [http://www.mediagoblin.org MediaGoblin.org] design. However, it could use some serious updating. I had several things I wish to see improve :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Immediately and clearly explain what MediaGoblin is and what it does.&#039;&#039;&#039; I do not think this is clear at all on our current homepage. It begins with &amp;quot;The perfect tool to show and share your media !&amp;quot; which sounds positive, but doesn&#039;t really explain anything. It goes on with four more bullet points, about the community and the GNU project among other things, but none of these provide any information about MediaGoblin&#039;s functionality.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Provide an easier way to get started with MediaGoblin.&#039;&#039;&#039; The current design has a big line of text in the middle saying &amp;quot;Get started with the latest MediaGoblin release&amp;quot;, which seems pretty straightforward. But then it provides you with three choices, or maybe three steps, and it is unclear which one you should pick or start with.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Remove the need for a separate tour page.&#039;&#039;&#039; Currently, we point visitors to our Tour page to learn more. This page contains plenty of information and screenshots, which is good. However, I think it would me more effective if MediaGoblin was introduced like this right on the homepage. Therefore, I wanted to combine the homepage and the tour page into a single page.&lt;br /&gt;
&lt;br /&gt;
The homepage should also contain other information, such as links to the repository and [http://issues.mediagoblin.org/ bug tracker], but in my opinion its primary function should be to explain what MediaGoblin is and to get people started with it quickly.&lt;br /&gt;
&lt;br /&gt;
== Request for feedback. ==&lt;br /&gt;
&lt;br /&gt;
One of the reasons I created this page was to gather feedback. If you are interested, please keep checking this page for any updates and let me ([[User:schendje|schendje]]) know what you think. The best place to reach me would be the MediaGoblin IRC channel, which is also where I&#039;ll announce any updates.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Quick note #1:&#039;&#039;&#039; these mockups are free for you to adapt. A picture is worth a thousand words so if you&#039;d like to change something, download and edit the [http://schendje.fedorapeople.org/goblin/homepage/wireframe.svg SVG source file] and show it around!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Quick note #2:&#039;&#039;&#039; virtually all of the copy in the current mockups is placeholder text. Therefore, comments on the content of the page will not yet be of much use. I will be working on replacing it with proper copy as soon as possible, so we can also gather feedback on that part of the design.&lt;br /&gt;
&lt;br /&gt;
== Mockups (most recent one at the top). ==&lt;br /&gt;
&lt;br /&gt;
=== Third iteration ===&lt;br /&gt;
&lt;br /&gt;
http://schendje.fedorapeople.org/goblin/homepage/wireframe3.png&lt;br /&gt;
&lt;br /&gt;
* Almost the same as previous, but added screenshots.&lt;br /&gt;
* A short explanation for this layout: http://schendje.fedorapeople.org/goblin/homepage/layout_explained.png&lt;br /&gt;
&lt;br /&gt;
Questions:&lt;br /&gt;
* Is it obvious that the images are screenshots ? They can of course be clicked to show a bigger version.&lt;br /&gt;
* What is a good position for the &amp;quot;quick links&amp;quot; ? They will be in the top corner on any other page on the website, but I think they may demand too much attention if we put them at the top of the homepage as well.&lt;br /&gt;
&lt;br /&gt;
=== Second iteration ===&lt;br /&gt;
* Slightly higher fidelity.&lt;br /&gt;
* Includes several changes to the layout.&lt;br /&gt;
&lt;br /&gt;
http://schendje.fedorapeople.org/goblin/homepage/wireframe2.png&lt;br /&gt;
&lt;br /&gt;
=== First iteration ===&lt;br /&gt;
A first low-fidelity wireframe: http://schendje.fedorapeople.org/goblin/homepage/wireframe.png&lt;br /&gt;
&lt;br /&gt;
=== Old design ===&lt;br /&gt;
&lt;br /&gt;
A mockup of the current [https://wiki.mediagoblin.org/Main_Page MediaGoblin.org] design: http://schendje.fedorapeople.org/goblin/homepage/final.png&lt;/div&gt;</summary>
		<author><name>Helen Christian</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=MediaGoblin.org_v2&amp;diff=1810</id>
		<title>MediaGoblin.org v2</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=MediaGoblin.org_v2&amp;diff=1810"/>
		<updated>2016-02-16T00:29:37Z</updated>

		<summary type="html">&lt;p&gt;Helen Christian: /* Request for feedback */ fullstop punctuation.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page tracks the MediaGoblin.org website redesign and is maintained by [[User:schendje|schendje]].&lt;br /&gt;
&lt;br /&gt;
== Reasons for the redesign. ==&lt;br /&gt;
&lt;br /&gt;
I was also the one who created the current [http://www.mediagoblin.org MediaGoblin.org] design. However, it could use some serious updating. I had several things I wish to see improve :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Immediately and clearly explain what MediaGoblin is and what it does.&#039;&#039;&#039; I do not think this is clear at all on our current homepage. It begins with &amp;quot;The perfect tool to show and share your media !&amp;quot; which sounds positive, but doesn&#039;t really explain anything. It goes on with four more bullet points, about the community and the GNU project among other things, but none of these provide any information about MediaGoblin&#039;s functionality.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Provide an easier way to get started with MediaGoblin.&#039;&#039;&#039; The current design has a big line of text in the middle saying &amp;quot;Get started with the latest MediaGoblin release&amp;quot;, which seems pretty straightforward. But then it provides you with three choices, or maybe three steps, and it is unclear which one you should pick or start with.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Remove the need for a separate tour page.&#039;&#039;&#039; Currently, we point visitors to our Tour page to learn more. This page contains plenty of information and screenshots, which is good. However, I think it would me more effective if MediaGoblin was introduced like this right on the homepage. Therefore, I wanted to combine the homepage and the tour page into a single page.&lt;br /&gt;
&lt;br /&gt;
The homepage should also contain other information, such as links to the repository and [http://issues.mediagoblin.org/ bug tracker], but in my opinion its primary function should be to explain what MediaGoblin is and to get people started with it quickly.&lt;br /&gt;
&lt;br /&gt;
== Request for feedback. ==&lt;br /&gt;
&lt;br /&gt;
One of the reasons I created this page was to gather feedback. If you are interested, please keep checking this page for any updates and let me ([[User:schendje|schendje]]) know what you think. The best place to reach me would be the MediaGoblin IRC channel, which is also where I&#039;ll announce any updates.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Quick note #1:&#039;&#039;&#039; these mockups are free for you to adapt. A picture is worth a thousand words so if you&#039;d like to change something, download and edit the [http://schendje.fedorapeople.org/goblin/homepage/wireframe.svg SVG source file] and show it around!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Quick note #2:&#039;&#039;&#039; virtually all of the copy in the current mockups is placeholder text. Therefore, comments on the content of the page will not yet be of much use. I will be working on replacing it with proper copy as soon as possible, so we can also gather feedback on that part of the design.&lt;br /&gt;
&lt;br /&gt;
== Mockups (most recent one at the top) ==&lt;br /&gt;
&lt;br /&gt;
=== Third iteration ===&lt;br /&gt;
&lt;br /&gt;
http://schendje.fedorapeople.org/goblin/homepage/wireframe3.png&lt;br /&gt;
&lt;br /&gt;
* Almost the same as previous, but added screenshots.&lt;br /&gt;
* A short explanation for this layout: http://schendje.fedorapeople.org/goblin/homepage/layout_explained.png&lt;br /&gt;
&lt;br /&gt;
Questions:&lt;br /&gt;
* Is it obvious that the images are screenshots ? They can of course be clicked to show a bigger version.&lt;br /&gt;
* What is a good position for the &amp;quot;quick links&amp;quot; ? They will be in the top corner on any other page on the website, but I think they may demand too much attention if we put them at the top of the homepage as well.&lt;br /&gt;
&lt;br /&gt;
=== Second iteration ===&lt;br /&gt;
* Slightly higher fidelity.&lt;br /&gt;
* Includes several changes to the layout.&lt;br /&gt;
&lt;br /&gt;
http://schendje.fedorapeople.org/goblin/homepage/wireframe2.png&lt;br /&gt;
&lt;br /&gt;
=== First iteration ===&lt;br /&gt;
A first low-fidelity wireframe: http://schendje.fedorapeople.org/goblin/homepage/wireframe.png&lt;br /&gt;
&lt;br /&gt;
=== Old design ===&lt;br /&gt;
&lt;br /&gt;
A mockup of the current [https://wiki.mediagoblin.org/Main_Page MediaGoblin.org] design: http://schendje.fedorapeople.org/goblin/homepage/final.png&lt;/div&gt;</summary>
		<author><name>Helen Christian</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=MediaGoblin.org_v2&amp;diff=1809</id>
		<title>MediaGoblin.org v2</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=MediaGoblin.org_v2&amp;diff=1809"/>
		<updated>2016-02-16T00:29:21Z</updated>

		<summary type="html">&lt;p&gt;Helen Christian: /* Reasons for the redesign */ fullstop punctuation.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page tracks the MediaGoblin.org website redesign and is maintained by [[User:schendje|schendje]].&lt;br /&gt;
&lt;br /&gt;
== Reasons for the redesign. ==&lt;br /&gt;
&lt;br /&gt;
I was also the one who created the current [http://www.mediagoblin.org MediaGoblin.org] design. However, it could use some serious updating. I had several things I wish to see improve :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Immediately and clearly explain what MediaGoblin is and what it does.&#039;&#039;&#039; I do not think this is clear at all on our current homepage. It begins with &amp;quot;The perfect tool to show and share your media !&amp;quot; which sounds positive, but doesn&#039;t really explain anything. It goes on with four more bullet points, about the community and the GNU project among other things, but none of these provide any information about MediaGoblin&#039;s functionality.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Provide an easier way to get started with MediaGoblin.&#039;&#039;&#039; The current design has a big line of text in the middle saying &amp;quot;Get started with the latest MediaGoblin release&amp;quot;, which seems pretty straightforward. But then it provides you with three choices, or maybe three steps, and it is unclear which one you should pick or start with.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Remove the need for a separate tour page.&#039;&#039;&#039; Currently, we point visitors to our Tour page to learn more. This page contains plenty of information and screenshots, which is good. However, I think it would me more effective if MediaGoblin was introduced like this right on the homepage. Therefore, I wanted to combine the homepage and the tour page into a single page.&lt;br /&gt;
&lt;br /&gt;
The homepage should also contain other information, such as links to the repository and [http://issues.mediagoblin.org/ bug tracker], but in my opinion its primary function should be to explain what MediaGoblin is and to get people started with it quickly.&lt;br /&gt;
&lt;br /&gt;
== Request for feedback ==&lt;br /&gt;
&lt;br /&gt;
One of the reasons I created this page was to gather feedback. If you are interested, please keep checking this page for any updates and let me ([[User:schendje|schendje]]) know what you think. The best place to reach me would be the MediaGoblin IRC channel, which is also where I&#039;ll announce any updates.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Quick note #1:&#039;&#039;&#039; these mockups are free for you to adapt. A picture is worth a thousand words so if you&#039;d like to change something, download and edit the [http://schendje.fedorapeople.org/goblin/homepage/wireframe.svg SVG source file] and show it around!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Quick note #2:&#039;&#039;&#039; virtually all of the copy in the current mockups is placeholder text. Therefore, comments on the content of the page will not yet be of much use. I will be working on replacing it with proper copy as soon as possible, so we can also gather feedback on that part of the design.&lt;br /&gt;
&lt;br /&gt;
== Mockups (most recent one at the top) ==&lt;br /&gt;
&lt;br /&gt;
=== Third iteration ===&lt;br /&gt;
&lt;br /&gt;
http://schendje.fedorapeople.org/goblin/homepage/wireframe3.png&lt;br /&gt;
&lt;br /&gt;
* Almost the same as previous, but added screenshots.&lt;br /&gt;
* A short explanation for this layout: http://schendje.fedorapeople.org/goblin/homepage/layout_explained.png&lt;br /&gt;
&lt;br /&gt;
Questions:&lt;br /&gt;
* Is it obvious that the images are screenshots ? They can of course be clicked to show a bigger version.&lt;br /&gt;
* What is a good position for the &amp;quot;quick links&amp;quot; ? They will be in the top corner on any other page on the website, but I think they may demand too much attention if we put them at the top of the homepage as well.&lt;br /&gt;
&lt;br /&gt;
=== Second iteration ===&lt;br /&gt;
* Slightly higher fidelity.&lt;br /&gt;
* Includes several changes to the layout.&lt;br /&gt;
&lt;br /&gt;
http://schendje.fedorapeople.org/goblin/homepage/wireframe2.png&lt;br /&gt;
&lt;br /&gt;
=== First iteration ===&lt;br /&gt;
A first low-fidelity wireframe: http://schendje.fedorapeople.org/goblin/homepage/wireframe.png&lt;br /&gt;
&lt;br /&gt;
=== Old design ===&lt;br /&gt;
&lt;br /&gt;
A mockup of the current [https://wiki.mediagoblin.org/Main_Page MediaGoblin.org] design: http://schendje.fedorapeople.org/goblin/homepage/final.png&lt;/div&gt;</summary>
		<author><name>Helen Christian</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=MediaGoblin.org_v2&amp;diff=1808</id>
		<title>MediaGoblin.org v2</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=MediaGoblin.org_v2&amp;diff=1808"/>
		<updated>2016-02-16T00:28:43Z</updated>

		<summary type="html">&lt;p&gt;Helen Christian: /* Old design */ WebLink to Main Page.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page tracks the MediaGoblin.org website redesign and is maintained by [[User:schendje|schendje]].&lt;br /&gt;
&lt;br /&gt;
== Reasons for the redesign ==&lt;br /&gt;
&lt;br /&gt;
I was also the one who created the current [http://www.mediagoblin.org MediaGoblin.org] design. However, it could use some serious updating. I had several things I wish to see improve :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Immediately and clearly explain what MediaGoblin is and what it does.&#039;&#039;&#039; I do not think this is clear at all on our current homepage. It begins with &amp;quot;The perfect tool to show and share your media !&amp;quot; which sounds positive, but doesn&#039;t really explain anything. It goes on with four more bullet points, about the community and the GNU project among other things, but none of these provide any information about MediaGoblin&#039;s functionality.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Provide an easier way to get started with MediaGoblin.&#039;&#039;&#039; The current design has a big line of text in the middle saying &amp;quot;Get started with the latest MediaGoblin release&amp;quot;, which seems pretty straightforward. But then it provides you with three choices, or maybe three steps, and it is unclear which one you should pick or start with.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Remove the need for a separate tour page.&#039;&#039;&#039; Currently, we point visitors to our Tour page to learn more. This page contains plenty of information and screenshots, which is good. However, I think it would me more effective if MediaGoblin was introduced like this right on the homepage. Therefore, I wanted to combine the homepage and the tour page into a single page.&lt;br /&gt;
&lt;br /&gt;
The homepage should also contain other information, such as links to the repository and [http://issues.mediagoblin.org/ bug tracker], but in my opinion its primary function should be to explain what MediaGoblin is and to get people started with it quickly.&lt;br /&gt;
&lt;br /&gt;
== Request for feedback ==&lt;br /&gt;
&lt;br /&gt;
One of the reasons I created this page was to gather feedback. If you are interested, please keep checking this page for any updates and let me ([[User:schendje|schendje]]) know what you think. The best place to reach me would be the MediaGoblin IRC channel, which is also where I&#039;ll announce any updates.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Quick note #1:&#039;&#039;&#039; these mockups are free for you to adapt. A picture is worth a thousand words so if you&#039;d like to change something, download and edit the [http://schendje.fedorapeople.org/goblin/homepage/wireframe.svg SVG source file] and show it around!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Quick note #2:&#039;&#039;&#039; virtually all of the copy in the current mockups is placeholder text. Therefore, comments on the content of the page will not yet be of much use. I will be working on replacing it with proper copy as soon as possible, so we can also gather feedback on that part of the design.&lt;br /&gt;
&lt;br /&gt;
== Mockups (most recent one at the top) ==&lt;br /&gt;
&lt;br /&gt;
=== Third iteration ===&lt;br /&gt;
&lt;br /&gt;
http://schendje.fedorapeople.org/goblin/homepage/wireframe3.png&lt;br /&gt;
&lt;br /&gt;
* Almost the same as previous, but added screenshots.&lt;br /&gt;
* A short explanation for this layout: http://schendje.fedorapeople.org/goblin/homepage/layout_explained.png&lt;br /&gt;
&lt;br /&gt;
Questions:&lt;br /&gt;
* Is it obvious that the images are screenshots ? They can of course be clicked to show a bigger version.&lt;br /&gt;
* What is a good position for the &amp;quot;quick links&amp;quot; ? They will be in the top corner on any other page on the website, but I think they may demand too much attention if we put them at the top of the homepage as well.&lt;br /&gt;
&lt;br /&gt;
=== Second iteration ===&lt;br /&gt;
* Slightly higher fidelity.&lt;br /&gt;
* Includes several changes to the layout.&lt;br /&gt;
&lt;br /&gt;
http://schendje.fedorapeople.org/goblin/homepage/wireframe2.png&lt;br /&gt;
&lt;br /&gt;
=== First iteration ===&lt;br /&gt;
A first low-fidelity wireframe: http://schendje.fedorapeople.org/goblin/homepage/wireframe.png&lt;br /&gt;
&lt;br /&gt;
=== Old design ===&lt;br /&gt;
&lt;br /&gt;
A mockup of the current [https://wiki.mediagoblin.org/Main_Page MediaGoblin.org] design: http://schendje.fedorapeople.org/goblin/homepage/final.png&lt;/div&gt;</summary>
		<author><name>Helen Christian</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=MediaGoblin.org_v2&amp;diff=1807</id>
		<title>MediaGoblin.org v2</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=MediaGoblin.org_v2&amp;diff=1807"/>
		<updated>2016-02-16T00:27:59Z</updated>

		<summary type="html">&lt;p&gt;Helen Christian: /* Second iteration */ full stops.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page tracks the MediaGoblin.org website redesign and is maintained by [[User:schendje|schendje]].&lt;br /&gt;
&lt;br /&gt;
== Reasons for the redesign ==&lt;br /&gt;
&lt;br /&gt;
I was also the one who created the current [http://www.mediagoblin.org MediaGoblin.org] design. However, it could use some serious updating. I had several things I wish to see improve :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Immediately and clearly explain what MediaGoblin is and what it does.&#039;&#039;&#039; I do not think this is clear at all on our current homepage. It begins with &amp;quot;The perfect tool to show and share your media !&amp;quot; which sounds positive, but doesn&#039;t really explain anything. It goes on with four more bullet points, about the community and the GNU project among other things, but none of these provide any information about MediaGoblin&#039;s functionality.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Provide an easier way to get started with MediaGoblin.&#039;&#039;&#039; The current design has a big line of text in the middle saying &amp;quot;Get started with the latest MediaGoblin release&amp;quot;, which seems pretty straightforward. But then it provides you with three choices, or maybe three steps, and it is unclear which one you should pick or start with.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Remove the need for a separate tour page.&#039;&#039;&#039; Currently, we point visitors to our Tour page to learn more. This page contains plenty of information and screenshots, which is good. However, I think it would me more effective if MediaGoblin was introduced like this right on the homepage. Therefore, I wanted to combine the homepage and the tour page into a single page.&lt;br /&gt;
&lt;br /&gt;
The homepage should also contain other information, such as links to the repository and [http://issues.mediagoblin.org/ bug tracker], but in my opinion its primary function should be to explain what MediaGoblin is and to get people started with it quickly.&lt;br /&gt;
&lt;br /&gt;
== Request for feedback ==&lt;br /&gt;
&lt;br /&gt;
One of the reasons I created this page was to gather feedback. If you are interested, please keep checking this page for any updates and let me ([[User:schendje|schendje]]) know what you think. The best place to reach me would be the MediaGoblin IRC channel, which is also where I&#039;ll announce any updates.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Quick note #1:&#039;&#039;&#039; these mockups are free for you to adapt. A picture is worth a thousand words so if you&#039;d like to change something, download and edit the [http://schendje.fedorapeople.org/goblin/homepage/wireframe.svg SVG source file] and show it around!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Quick note #2:&#039;&#039;&#039; virtually all of the copy in the current mockups is placeholder text. Therefore, comments on the content of the page will not yet be of much use. I will be working on replacing it with proper copy as soon as possible, so we can also gather feedback on that part of the design.&lt;br /&gt;
&lt;br /&gt;
== Mockups (most recent one at the top) ==&lt;br /&gt;
&lt;br /&gt;
=== Third iteration ===&lt;br /&gt;
&lt;br /&gt;
http://schendje.fedorapeople.org/goblin/homepage/wireframe3.png&lt;br /&gt;
&lt;br /&gt;
* Almost the same as previous, but added screenshots.&lt;br /&gt;
* A short explanation for this layout: http://schendje.fedorapeople.org/goblin/homepage/layout_explained.png&lt;br /&gt;
&lt;br /&gt;
Questions:&lt;br /&gt;
* Is it obvious that the images are screenshots ? They can of course be clicked to show a bigger version.&lt;br /&gt;
* What is a good position for the &amp;quot;quick links&amp;quot; ? They will be in the top corner on any other page on the website, but I think they may demand too much attention if we put them at the top of the homepage as well.&lt;br /&gt;
&lt;br /&gt;
=== Second iteration ===&lt;br /&gt;
* Slightly higher fidelity.&lt;br /&gt;
* Includes several changes to the layout.&lt;br /&gt;
&lt;br /&gt;
http://schendje.fedorapeople.org/goblin/homepage/wireframe2.png&lt;br /&gt;
&lt;br /&gt;
=== First iteration ===&lt;br /&gt;
A first low-fidelity wireframe: http://schendje.fedorapeople.org/goblin/homepage/wireframe.png&lt;br /&gt;
&lt;br /&gt;
=== Old design ===&lt;br /&gt;
&lt;br /&gt;
A mockup of the current MediaGoblin.org design: http://schendje.fedorapeople.org/goblin/homepage/final.png&lt;/div&gt;</summary>
		<author><name>Helen Christian</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=MediaGoblin.org_v2&amp;diff=1806</id>
		<title>MediaGoblin.org v2</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=MediaGoblin.org_v2&amp;diff=1806"/>
		<updated>2016-02-16T00:27:34Z</updated>

		<summary type="html">&lt;p&gt;Helen Christian: /* Third iteration */ punctuation fullstops and ? QM&amp;#039;s.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page tracks the MediaGoblin.org website redesign and is maintained by [[User:schendje|schendje]].&lt;br /&gt;
&lt;br /&gt;
== Reasons for the redesign ==&lt;br /&gt;
&lt;br /&gt;
I was also the one who created the current [http://www.mediagoblin.org MediaGoblin.org] design. However, it could use some serious updating. I had several things I wish to see improve :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Immediately and clearly explain what MediaGoblin is and what it does.&#039;&#039;&#039; I do not think this is clear at all on our current homepage. It begins with &amp;quot;The perfect tool to show and share your media !&amp;quot; which sounds positive, but doesn&#039;t really explain anything. It goes on with four more bullet points, about the community and the GNU project among other things, but none of these provide any information about MediaGoblin&#039;s functionality.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Provide an easier way to get started with MediaGoblin.&#039;&#039;&#039; The current design has a big line of text in the middle saying &amp;quot;Get started with the latest MediaGoblin release&amp;quot;, which seems pretty straightforward. But then it provides you with three choices, or maybe three steps, and it is unclear which one you should pick or start with.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Remove the need for a separate tour page.&#039;&#039;&#039; Currently, we point visitors to our Tour page to learn more. This page contains plenty of information and screenshots, which is good. However, I think it would me more effective if MediaGoblin was introduced like this right on the homepage. Therefore, I wanted to combine the homepage and the tour page into a single page.&lt;br /&gt;
&lt;br /&gt;
The homepage should also contain other information, such as links to the repository and [http://issues.mediagoblin.org/ bug tracker], but in my opinion its primary function should be to explain what MediaGoblin is and to get people started with it quickly.&lt;br /&gt;
&lt;br /&gt;
== Request for feedback ==&lt;br /&gt;
&lt;br /&gt;
One of the reasons I created this page was to gather feedback. If you are interested, please keep checking this page for any updates and let me ([[User:schendje|schendje]]) know what you think. The best place to reach me would be the MediaGoblin IRC channel, which is also where I&#039;ll announce any updates.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Quick note #1:&#039;&#039;&#039; these mockups are free for you to adapt. A picture is worth a thousand words so if you&#039;d like to change something, download and edit the [http://schendje.fedorapeople.org/goblin/homepage/wireframe.svg SVG source file] and show it around!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Quick note #2:&#039;&#039;&#039; virtually all of the copy in the current mockups is placeholder text. Therefore, comments on the content of the page will not yet be of much use. I will be working on replacing it with proper copy as soon as possible, so we can also gather feedback on that part of the design.&lt;br /&gt;
&lt;br /&gt;
== Mockups (most recent one at the top) ==&lt;br /&gt;
&lt;br /&gt;
=== Third iteration ===&lt;br /&gt;
&lt;br /&gt;
http://schendje.fedorapeople.org/goblin/homepage/wireframe3.png&lt;br /&gt;
&lt;br /&gt;
* Almost the same as previous, but added screenshots.&lt;br /&gt;
* A short explanation for this layout: http://schendje.fedorapeople.org/goblin/homepage/layout_explained.png&lt;br /&gt;
&lt;br /&gt;
Questions:&lt;br /&gt;
* Is it obvious that the images are screenshots ? They can of course be clicked to show a bigger version.&lt;br /&gt;
* What is a good position for the &amp;quot;quick links&amp;quot; ? They will be in the top corner on any other page on the website, but I think they may demand too much attention if we put them at the top of the homepage as well.&lt;br /&gt;
&lt;br /&gt;
=== Second iteration ===&lt;br /&gt;
* Slightly higher fidelity&lt;br /&gt;
* Includes several changes to the layout&lt;br /&gt;
&lt;br /&gt;
http://schendje.fedorapeople.org/goblin/homepage/wireframe2.png&lt;br /&gt;
&lt;br /&gt;
=== First iteration ===&lt;br /&gt;
A first low-fidelity wireframe: http://schendje.fedorapeople.org/goblin/homepage/wireframe.png&lt;br /&gt;
&lt;br /&gt;
=== Old design ===&lt;br /&gt;
&lt;br /&gt;
A mockup of the current MediaGoblin.org design: http://schendje.fedorapeople.org/goblin/homepage/final.png&lt;/div&gt;</summary>
		<author><name>Helen Christian</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=User:Schendje&amp;diff=1805</id>
		<title>User:Schendje</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=User:Schendje&amp;diff=1805"/>
		<updated>2016-02-16T00:26:20Z</updated>

		<summary type="html">&lt;p&gt;Helen Christian: Sorry for pinging you I couldn&amp;#039;t get anyone on IRChat as it&amp;#039;s a holiday - you can delete this as Spam if you wish, when the Talk./Discussion bug is resolved. Thank-you.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I&#039;m Jef and I have [http://www.jefvanschendel.nl a website].&lt;br /&gt;
&lt;br /&gt;
For MediaGoblin, I design things and pretend to be able to code.&lt;br /&gt;
&lt;br /&gt;
To contact me about MediaGoblin-related things, look me up on the MediaGoblin IRC channel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Let people know what you think.&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
Sorry for editing this page, I really didn&#039;t mean to ping you. but, but, How are we supposed to [https://wiki.mediagoblin.org/MediaGoblin.org_v2#Request_for_feedback let you/users know what we think] if we can not edit the &amp;quot;discussion&amp;quot; page of our MediaGoblin Wiki&#039;s ??&lt;/div&gt;</summary>
		<author><name>Helen Christian</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=MediaGoblin.org_v2&amp;diff=1804</id>
		<title>MediaGoblin.org v2</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=MediaGoblin.org_v2&amp;diff=1804"/>
		<updated>2016-02-16T00:20:23Z</updated>

		<summary type="html">&lt;p&gt;Helen Christian: /* Reasons for the redesign */ bug tracker webLink&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page tracks the MediaGoblin.org website redesign and is maintained by [[User:schendje|schendje]].&lt;br /&gt;
&lt;br /&gt;
== Reasons for the redesign ==&lt;br /&gt;
&lt;br /&gt;
I was also the one who created the current [http://www.mediagoblin.org MediaGoblin.org] design. However, it could use some serious updating. I had several things I wish to see improve :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Immediately and clearly explain what MediaGoblin is and what it does.&#039;&#039;&#039; I do not think this is clear at all on our current homepage. It begins with &amp;quot;The perfect tool to show and share your media !&amp;quot; which sounds positive, but doesn&#039;t really explain anything. It goes on with four more bullet points, about the community and the GNU project among other things, but none of these provide any information about MediaGoblin&#039;s functionality.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Provide an easier way to get started with MediaGoblin.&#039;&#039;&#039; The current design has a big line of text in the middle saying &amp;quot;Get started with the latest MediaGoblin release&amp;quot;, which seems pretty straightforward. But then it provides you with three choices, or maybe three steps, and it is unclear which one you should pick or start with.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Remove the need for a separate tour page.&#039;&#039;&#039; Currently, we point visitors to our Tour page to learn more. This page contains plenty of information and screenshots, which is good. However, I think it would me more effective if MediaGoblin was introduced like this right on the homepage. Therefore, I wanted to combine the homepage and the tour page into a single page.&lt;br /&gt;
&lt;br /&gt;
The homepage should also contain other information, such as links to the repository and [http://issues.mediagoblin.org/ bug tracker], but in my opinion its primary function should be to explain what MediaGoblin is and to get people started with it quickly.&lt;br /&gt;
&lt;br /&gt;
== Request for feedback ==&lt;br /&gt;
&lt;br /&gt;
One of the reasons I created this page was to gather feedback. If you are interested, please keep checking this page for any updates and let me ([[User:schendje|schendje]]) know what you think. The best place to reach me would be the MediaGoblin IRC channel, which is also where I&#039;ll announce any updates.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Quick note #1:&#039;&#039;&#039; these mockups are free for you to adapt. A picture is worth a thousand words so if you&#039;d like to change something, download and edit the [http://schendje.fedorapeople.org/goblin/homepage/wireframe.svg SVG source file] and show it around!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Quick note #2:&#039;&#039;&#039; virtually all of the copy in the current mockups is placeholder text. Therefore, comments on the content of the page will not yet be of much use. I will be working on replacing it with proper copy as soon as possible, so we can also gather feedback on that part of the design.&lt;br /&gt;
&lt;br /&gt;
== Mockups (most recent one at the top) ==&lt;br /&gt;
&lt;br /&gt;
=== Third iteration ===&lt;br /&gt;
&lt;br /&gt;
http://schendje.fedorapeople.org/goblin/homepage/wireframe3.png&lt;br /&gt;
&lt;br /&gt;
* Almost the same as previous, but added screenshots&lt;br /&gt;
* A short explanation for this layout: http://schendje.fedorapeople.org/goblin/homepage/layout_explained.png&lt;br /&gt;
&lt;br /&gt;
Questions:&lt;br /&gt;
* Is it obvious that the images are screenshots? They can of course be clicked to show a bigger version.&lt;br /&gt;
* What is a good position for the &amp;quot;quick links&amp;quot;? They will be in the top corner on any other page on the website, but I think they may demand too much attention if we put them at the top of the homepage as well.&lt;br /&gt;
&lt;br /&gt;
=== Second iteration ===&lt;br /&gt;
* Slightly higher fidelity&lt;br /&gt;
* Includes several changes to the layout&lt;br /&gt;
&lt;br /&gt;
http://schendje.fedorapeople.org/goblin/homepage/wireframe2.png&lt;br /&gt;
&lt;br /&gt;
=== First iteration ===&lt;br /&gt;
A first low-fidelity wireframe: http://schendje.fedorapeople.org/goblin/homepage/wireframe.png&lt;br /&gt;
&lt;br /&gt;
=== Old design ===&lt;br /&gt;
&lt;br /&gt;
A mockup of the current MediaGoblin.org design: http://schendje.fedorapeople.org/goblin/homepage/final.png&lt;/div&gt;</summary>
		<author><name>Helen Christian</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=MediaGoblin.org_v2&amp;diff=1803</id>
		<title>MediaGoblin.org v2</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=MediaGoblin.org_v2&amp;diff=1803"/>
		<updated>2016-02-16T00:11:57Z</updated>

		<summary type="html">&lt;p&gt;Helen Christian: /* Reasons for the redesign */ punctuation &amp;#039;!&amp;#039;  gapped.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page tracks the MediaGoblin.org website redesign and is maintained by [[User:schendje|schendje]].&lt;br /&gt;
&lt;br /&gt;
== Reasons for the redesign ==&lt;br /&gt;
&lt;br /&gt;
I was also the one who created the current [http://www.mediagoblin.org MediaGoblin.org] design. However, it could use some serious updating. I had several things I wish to see improve :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Immediately and clearly explain what MediaGoblin is and what it does.&#039;&#039;&#039; I do not think this is clear at all on our current homepage. It begins with &amp;quot;The perfect tool to show and share your media !&amp;quot; which sounds positive, but doesn&#039;t really explain anything. It goes on with four more bullet points, about the community and the GNU project among other things, but none of these provide any information about MediaGoblin&#039;s functionality.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Provide an easier way to get started with MediaGoblin.&#039;&#039;&#039; The current design has a big line of text in the middle saying &amp;quot;Get started with the latest MediaGoblin release&amp;quot;, which seems pretty straightforward. But then it provides you with three choices, or maybe three steps, and it is unclear which one you should pick or start with.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Remove the need for a separate tour page.&#039;&#039;&#039; Currently, we point visitors to our Tour page to learn more. This page contains plenty of information and screenshots, which is good. However, I think it would me more effective if MediaGoblin was introduced like this right on the homepage. Therefore, I wanted to combine the homepage and the tour page into a single page.&lt;br /&gt;
&lt;br /&gt;
The homepage should also contain other information, such as links to the repository and bug tracker, but in my opinion its primary function should be to explain what MediaGoblin is and to get people started with it quickly.&lt;br /&gt;
&lt;br /&gt;
== Request for feedback ==&lt;br /&gt;
&lt;br /&gt;
One of the reasons I created this page was to gather feedback. If you are interested, please keep checking this page for any updates and let me ([[User:schendje|schendje]]) know what you think. The best place to reach me would be the MediaGoblin IRC channel, which is also where I&#039;ll announce any updates.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Quick note #1:&#039;&#039;&#039; these mockups are free for you to adapt. A picture is worth a thousand words so if you&#039;d like to change something, download and edit the [http://schendje.fedorapeople.org/goblin/homepage/wireframe.svg SVG source file] and show it around!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Quick note #2:&#039;&#039;&#039; virtually all of the copy in the current mockups is placeholder text. Therefore, comments on the content of the page will not yet be of much use. I will be working on replacing it with proper copy as soon as possible, so we can also gather feedback on that part of the design.&lt;br /&gt;
&lt;br /&gt;
== Mockups (most recent one at the top) ==&lt;br /&gt;
&lt;br /&gt;
=== Third iteration ===&lt;br /&gt;
&lt;br /&gt;
http://schendje.fedorapeople.org/goblin/homepage/wireframe3.png&lt;br /&gt;
&lt;br /&gt;
* Almost the same as previous, but added screenshots&lt;br /&gt;
* A short explanation for this layout: http://schendje.fedorapeople.org/goblin/homepage/layout_explained.png&lt;br /&gt;
&lt;br /&gt;
Questions:&lt;br /&gt;
* Is it obvious that the images are screenshots? They can of course be clicked to show a bigger version.&lt;br /&gt;
* What is a good position for the &amp;quot;quick links&amp;quot;? They will be in the top corner on any other page on the website, but I think they may demand too much attention if we put them at the top of the homepage as well.&lt;br /&gt;
&lt;br /&gt;
=== Second iteration ===&lt;br /&gt;
* Slightly higher fidelity&lt;br /&gt;
* Includes several changes to the layout&lt;br /&gt;
&lt;br /&gt;
http://schendje.fedorapeople.org/goblin/homepage/wireframe2.png&lt;br /&gt;
&lt;br /&gt;
=== First iteration ===&lt;br /&gt;
A first low-fidelity wireframe: http://schendje.fedorapeople.org/goblin/homepage/wireframe.png&lt;br /&gt;
&lt;br /&gt;
=== Old design ===&lt;br /&gt;
&lt;br /&gt;
A mockup of the current MediaGoblin.org design: http://schendje.fedorapeople.org/goblin/homepage/final.png&lt;/div&gt;</summary>
		<author><name>Helen Christian</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=MediaGoblin.org_v2&amp;diff=1802</id>
		<title>MediaGoblin.org v2</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=MediaGoblin.org_v2&amp;diff=1802"/>
		<updated>2016-02-16T00:11:10Z</updated>

		<summary type="html">&lt;p&gt;Helen Christian: /* Reasons for the redesign */  changed &amp;#039;wanted to&amp;#039; to &amp;#039;wished to see :&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page tracks the MediaGoblin.org website redesign and is maintained by [[User:schendje|schendje]].&lt;br /&gt;
&lt;br /&gt;
== Reasons for the redesign ==&lt;br /&gt;
&lt;br /&gt;
I was also the one who created the current [http://www.mediagoblin.org MediaGoblin.org] design. However, it could use some serious updating. I had several things I wish to see improve :&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Immediately and clearly explain what MediaGoblin is and what it does.&#039;&#039;&#039; I do not think this is clear at all on our current homepage. It begins with &amp;quot;The perfect tool to show and share your media!&amp;quot; which sounds positive, but doesn&#039;t really explain anything. It goes on with four more bullet points, about the community and the GNU project among other things, but none of these provide any information about MediaGoblin&#039;s functionality.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Provide an easier way to get started with MediaGoblin.&#039;&#039;&#039; The current design has a big line of text in the middle saying &amp;quot;Get started with the latest MediaGoblin release&amp;quot;, which seems pretty straightforward. But then it provides you with three choices, or maybe three steps, and it is unclear which one you should pick or start with.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Remove the need for a separate tour page.&#039;&#039;&#039; Currently, we point visitors to our Tour page to learn more. This page contains plenty of information and screenshots, which is good. However, I think it would me more effective if MediaGoblin was introduced like this right on the homepage. Therefore, I wanted to combine the homepage and the tour page into a single page.&lt;br /&gt;
&lt;br /&gt;
The homepage should also contain other information, such as links to the repository and bug tracker, but in my opinion its primary function should be to explain what MediaGoblin is and to get people started with it quickly.&lt;br /&gt;
&lt;br /&gt;
== Request for feedback ==&lt;br /&gt;
&lt;br /&gt;
One of the reasons I created this page was to gather feedback. If you are interested, please keep checking this page for any updates and let me ([[User:schendje|schendje]]) know what you think. The best place to reach me would be the MediaGoblin IRC channel, which is also where I&#039;ll announce any updates.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Quick note #1:&#039;&#039;&#039; these mockups are free for you to adapt. A picture is worth a thousand words so if you&#039;d like to change something, download and edit the [http://schendje.fedorapeople.org/goblin/homepage/wireframe.svg SVG source file] and show it around!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Quick note #2:&#039;&#039;&#039; virtually all of the copy in the current mockups is placeholder text. Therefore, comments on the content of the page will not yet be of much use. I will be working on replacing it with proper copy as soon as possible, so we can also gather feedback on that part of the design.&lt;br /&gt;
&lt;br /&gt;
== Mockups (most recent one at the top) ==&lt;br /&gt;
&lt;br /&gt;
=== Third iteration ===&lt;br /&gt;
&lt;br /&gt;
http://schendje.fedorapeople.org/goblin/homepage/wireframe3.png&lt;br /&gt;
&lt;br /&gt;
* Almost the same as previous, but added screenshots&lt;br /&gt;
* A short explanation for this layout: http://schendje.fedorapeople.org/goblin/homepage/layout_explained.png&lt;br /&gt;
&lt;br /&gt;
Questions:&lt;br /&gt;
* Is it obvious that the images are screenshots? They can of course be clicked to show a bigger version.&lt;br /&gt;
* What is a good position for the &amp;quot;quick links&amp;quot;? They will be in the top corner on any other page on the website, but I think they may demand too much attention if we put them at the top of the homepage as well.&lt;br /&gt;
&lt;br /&gt;
=== Second iteration ===&lt;br /&gt;
* Slightly higher fidelity&lt;br /&gt;
* Includes several changes to the layout&lt;br /&gt;
&lt;br /&gt;
http://schendje.fedorapeople.org/goblin/homepage/wireframe2.png&lt;br /&gt;
&lt;br /&gt;
=== First iteration ===&lt;br /&gt;
A first low-fidelity wireframe: http://schendje.fedorapeople.org/goblin/homepage/wireframe.png&lt;br /&gt;
&lt;br /&gt;
=== Old design ===&lt;br /&gt;
&lt;br /&gt;
A mockup of the current MediaGoblin.org design: http://schendje.fedorapeople.org/goblin/homepage/final.png&lt;/div&gt;</summary>
		<author><name>Helen Christian</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=GSOC_2017&amp;diff=1801</id>
		<title>GSOC 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=GSOC_2017&amp;diff=1801"/>
		<updated>2016-02-15T23:38:47Z</updated>

		<summary type="html">&lt;p&gt;Helen Christian: /* Multiple qualities of video. */ better use of links for 4k .&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We are hoping to participate in [https://developers.google.com/open-source/gsoc/ GSOC 2016] under the GNU umbrella. &lt;br /&gt;
 &lt;br /&gt;
You may want to check for a &amp;quot;possible mentor&amp;quot; before applying for this topic.  If you have your own idea, probably bring it up in #mediagoblin on irc.freenode.net !&lt;br /&gt;
&lt;br /&gt;
= How do I apply as a student ? =&lt;br /&gt;
&lt;br /&gt;
* [https://developers.google.com/open-source/gsoc/ Submit your application].  Please see the application submission template on the [http://www.gnu.org/software/soc-projects/guidelines.html GNU GSoC guidelines page].&lt;br /&gt;
* [http://mediagoblin.org/pages/join.html Join us] on IRC and on our mailing lists.&lt;br /&gt;
* Set up a development environment via our [[HackingHowto]]&lt;br /&gt;
* If you have never done web development in python before, MediaGoblin is a pretty good place to start !  However, we highly recommend going through the [https://docs.djangoproject.com/en/1.7/intro/tutorial01/ Django tutorial]... this isn&#039;t a requirement, but it will help you be better prepared.&lt;br /&gt;
* Work on a small task, and mention it in your application.  The [http://issues.mediagoblin.org/query?status=!closed&amp;amp;keywords=~bitesized bitesized list] is often helpful.&lt;br /&gt;
* Also, be aware when submitting: Summer of Code applicants are expected to work &#039;&#039;&#039;40 hours per week&#039;&#039;&#039;... so, a full time internship !  If you propose, please be sure you are ready to make that level of commitment.&lt;br /&gt;
&lt;br /&gt;
It&#039;s important that you communicate... most MediaGoblin communication happens on IRC, so you should [http://webchat.freenode.net/?channels=mediagoblin join us there] and discuss (#mediagoblin on irc.freenode.net)!  Please, please join our channel and introduce yourself.  We would love to hear from you !&lt;br /&gt;
&lt;br /&gt;
= Possible projects with mentors. =&lt;br /&gt;
== Chunked uploads / multi-upload UI. ==&lt;br /&gt;
&lt;br /&gt;
We want to have multi-upload from cli (usecase: go to my directory with photos and upload them all) and from web-interface (using maybe zip, maybe html5 feature). There is already https://github.com/VenKamikaze/mediagoblin-html5-multi-upload which might be what we need, so before choosing this task please verify.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Christopher Allan Webber, Boris Bobrov .&lt;br /&gt;
&lt;br /&gt;
== Subtitle interface. ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Christopher Allan Webber, Boris Bobrov .&lt;br /&gt;
&lt;br /&gt;
We want subtitle support for our player. Subtitles should be supported as separate files and as embedded into video/audio files. Popular formats should be supported. Also, there can be multiple subtitles per video. It will require work on front-end and maybe some fixes to backend.&lt;br /&gt;
&lt;br /&gt;
== Multiple qualities of video. ==&lt;br /&gt;
&lt;br /&gt;
Now MediaGoblin supports only a single quality of video files. We want to fix that and support multiple qualities: 360p, 480p, 720p, 1080p, [https://en.wikipedia.org/wiki/Ultra-high-definition_television 4k]. This requires changes to frontend and to backend. To implement it, one must have some experience in JavaScript and Python.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possible mentors&#039;&#039;&#039;: Boris Bobrov .&lt;/div&gt;</summary>
		<author><name>Helen Christian</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=GSOC_2017&amp;diff=1800</id>
		<title>GSOC 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=GSOC_2017&amp;diff=1800"/>
		<updated>2016-02-15T23:35:50Z</updated>

		<summary type="html">&lt;p&gt;Helen Christian: /* Multiple qualities of video. */  4k or UHDT definition wikipedia.org reference.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We are hoping to participate in [https://developers.google.com/open-source/gsoc/ GSOC 2016] under the GNU umbrella. &lt;br /&gt;
 &lt;br /&gt;
You may want to check for a &amp;quot;possible mentor&amp;quot; before applying for this topic.  If you have your own idea, probably bring it up in #mediagoblin on irc.freenode.net !&lt;br /&gt;
&lt;br /&gt;
= How do I apply as a student ? =&lt;br /&gt;
&lt;br /&gt;
* [https://developers.google.com/open-source/gsoc/ Submit your application].  Please see the application submission template on the [http://www.gnu.org/software/soc-projects/guidelines.html GNU GSoC guidelines page].&lt;br /&gt;
* [http://mediagoblin.org/pages/join.html Join us] on IRC and on our mailing lists.&lt;br /&gt;
* Set up a development environment via our [[HackingHowto]]&lt;br /&gt;
* If you have never done web development in python before, MediaGoblin is a pretty good place to start !  However, we highly recommend going through the [https://docs.djangoproject.com/en/1.7/intro/tutorial01/ Django tutorial]... this isn&#039;t a requirement, but it will help you be better prepared.&lt;br /&gt;
* Work on a small task, and mention it in your application.  The [http://issues.mediagoblin.org/query?status=!closed&amp;amp;keywords=~bitesized bitesized list] is often helpful.&lt;br /&gt;
* Also, be aware when submitting: Summer of Code applicants are expected to work &#039;&#039;&#039;40 hours per week&#039;&#039;&#039;... so, a full time internship !  If you propose, please be sure you are ready to make that level of commitment.&lt;br /&gt;
&lt;br /&gt;
It&#039;s important that you communicate... most MediaGoblin communication happens on IRC, so you should [http://webchat.freenode.net/?channels=mediagoblin join us there] and discuss (#mediagoblin on irc.freenode.net)!  Please, please join our channel and introduce yourself.  We would love to hear from you !&lt;br /&gt;
&lt;br /&gt;
= Possible projects with mentors. =&lt;br /&gt;
== Chunked uploads / multi-upload UI. ==&lt;br /&gt;
&lt;br /&gt;
We want to have multi-upload from cli (usecase: go to my directory with photos and upload them all) and from web-interface (using maybe zip, maybe html5 feature). There is already https://github.com/VenKamikaze/mediagoblin-html5-multi-upload which might be what we need, so before choosing this task please verify.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Christopher Allan Webber, Boris Bobrov .&lt;br /&gt;
&lt;br /&gt;
== Subtitle interface. ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Christopher Allan Webber, Boris Bobrov .&lt;br /&gt;
&lt;br /&gt;
We want subtitle support for our player. Subtitles should be supported as separate files and as embedded into video/audio files. Popular formats should be supported. Also, there can be multiple subtitles per video. It will require work on front-end and maybe some fixes to backend.&lt;br /&gt;
&lt;br /&gt;
== Multiple qualities of video. ==&lt;br /&gt;
&lt;br /&gt;
Now MediaGoblin supports only a single quality of video files. We want to fix that and support multiple qualities: 360p, 480p, 720p, 1080p, [4k][https://en.wikipedia.org/wiki/Ultra-high-definition_television]. This requires changes to frontend and to backend. To implement it, one must have some experience in JavaScript and Python.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possible mentors&#039;&#039;&#039;: Boris Bobrov .&lt;/div&gt;</summary>
		<author><name>Helen Christian</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=GSOC_2017&amp;diff=1799</id>
		<title>GSOC 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=GSOC_2017&amp;diff=1799"/>
		<updated>2016-02-15T23:29:11Z</updated>

		<summary type="html">&lt;p&gt;Helen Christian: /* Multiple qualities of video. */ punctuation fullstop .&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We are hoping to participate in [https://developers.google.com/open-source/gsoc/ GSOC 2016] under the GNU umbrella. &lt;br /&gt;
 &lt;br /&gt;
You may want to check for a &amp;quot;possible mentor&amp;quot; before applying for this topic.  If you have your own idea, probably bring it up in #mediagoblin on irc.freenode.net !&lt;br /&gt;
&lt;br /&gt;
= How do I apply as a student ? =&lt;br /&gt;
&lt;br /&gt;
* [https://developers.google.com/open-source/gsoc/ Submit your application].  Please see the application submission template on the [http://www.gnu.org/software/soc-projects/guidelines.html GNU GSoC guidelines page].&lt;br /&gt;
* [http://mediagoblin.org/pages/join.html Join us] on IRC and on our mailing lists.&lt;br /&gt;
* Set up a development environment via our [[HackingHowto]]&lt;br /&gt;
* If you have never done web development in python before, MediaGoblin is a pretty good place to start !  However, we highly recommend going through the [https://docs.djangoproject.com/en/1.7/intro/tutorial01/ Django tutorial]... this isn&#039;t a requirement, but it will help you be better prepared.&lt;br /&gt;
* Work on a small task, and mention it in your application.  The [http://issues.mediagoblin.org/query?status=!closed&amp;amp;keywords=~bitesized bitesized list] is often helpful.&lt;br /&gt;
* Also, be aware when submitting: Summer of Code applicants are expected to work &#039;&#039;&#039;40 hours per week&#039;&#039;&#039;... so, a full time internship !  If you propose, please be sure you are ready to make that level of commitment.&lt;br /&gt;
&lt;br /&gt;
It&#039;s important that you communicate... most MediaGoblin communication happens on IRC, so you should [http://webchat.freenode.net/?channels=mediagoblin join us there] and discuss (#mediagoblin on irc.freenode.net)!  Please, please join our channel and introduce yourself.  We would love to hear from you !&lt;br /&gt;
&lt;br /&gt;
= Possible projects with mentors. =&lt;br /&gt;
== Chunked uploads / multi-upload UI. ==&lt;br /&gt;
&lt;br /&gt;
We want to have multi-upload from cli (usecase: go to my directory with photos and upload them all) and from web-interface (using maybe zip, maybe html5 feature). There is already https://github.com/VenKamikaze/mediagoblin-html5-multi-upload which might be what we need, so before choosing this task please verify.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Christopher Allan Webber, Boris Bobrov .&lt;br /&gt;
&lt;br /&gt;
== Subtitle interface. ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Christopher Allan Webber, Boris Bobrov .&lt;br /&gt;
&lt;br /&gt;
We want subtitle support for our player. Subtitles should be supported as separate files and as embedded into video/audio files. Popular formats should be supported. Also, there can be multiple subtitles per video. It will require work on front-end and maybe some fixes to backend.&lt;br /&gt;
&lt;br /&gt;
== Multiple qualities of video. ==&lt;br /&gt;
&lt;br /&gt;
Now MediaGoblin supports only a single quality of video files. We want to fix that and support multiple qualities: 360p, 480p, 720p, 1080p, 4k. This requires changes to frontend and to backend. To implement it, one must have some experience in JavaScript and Python.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possible mentors&#039;&#039;&#039;: Boris Bobrov .&lt;/div&gt;</summary>
		<author><name>Helen Christian</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=GSOC_2017&amp;diff=1798</id>
		<title>GSOC 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=GSOC_2017&amp;diff=1798"/>
		<updated>2016-02-15T23:28:49Z</updated>

		<summary type="html">&lt;p&gt;Helen Christian: /* Subtitle interface. */ punctuation fullstop .&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We are hoping to participate in [https://developers.google.com/open-source/gsoc/ GSOC 2016] under the GNU umbrella. &lt;br /&gt;
 &lt;br /&gt;
You may want to check for a &amp;quot;possible mentor&amp;quot; before applying for this topic.  If you have your own idea, probably bring it up in #mediagoblin on irc.freenode.net !&lt;br /&gt;
&lt;br /&gt;
= How do I apply as a student ? =&lt;br /&gt;
&lt;br /&gt;
* [https://developers.google.com/open-source/gsoc/ Submit your application].  Please see the application submission template on the [http://www.gnu.org/software/soc-projects/guidelines.html GNU GSoC guidelines page].&lt;br /&gt;
* [http://mediagoblin.org/pages/join.html Join us] on IRC and on our mailing lists.&lt;br /&gt;
* Set up a development environment via our [[HackingHowto]]&lt;br /&gt;
* If you have never done web development in python before, MediaGoblin is a pretty good place to start !  However, we highly recommend going through the [https://docs.djangoproject.com/en/1.7/intro/tutorial01/ Django tutorial]... this isn&#039;t a requirement, but it will help you be better prepared.&lt;br /&gt;
* Work on a small task, and mention it in your application.  The [http://issues.mediagoblin.org/query?status=!closed&amp;amp;keywords=~bitesized bitesized list] is often helpful.&lt;br /&gt;
* Also, be aware when submitting: Summer of Code applicants are expected to work &#039;&#039;&#039;40 hours per week&#039;&#039;&#039;... so, a full time internship !  If you propose, please be sure you are ready to make that level of commitment.&lt;br /&gt;
&lt;br /&gt;
It&#039;s important that you communicate... most MediaGoblin communication happens on IRC, so you should [http://webchat.freenode.net/?channels=mediagoblin join us there] and discuss (#mediagoblin on irc.freenode.net)!  Please, please join our channel and introduce yourself.  We would love to hear from you !&lt;br /&gt;
&lt;br /&gt;
= Possible projects with mentors. =&lt;br /&gt;
== Chunked uploads / multi-upload UI. ==&lt;br /&gt;
&lt;br /&gt;
We want to have multi-upload from cli (usecase: go to my directory with photos and upload them all) and from web-interface (using maybe zip, maybe html5 feature). There is already https://github.com/VenKamikaze/mediagoblin-html5-multi-upload which might be what we need, so before choosing this task please verify.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Christopher Allan Webber, Boris Bobrov .&lt;br /&gt;
&lt;br /&gt;
== Subtitle interface. ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Christopher Allan Webber, Boris Bobrov .&lt;br /&gt;
&lt;br /&gt;
We want subtitle support for our player. Subtitles should be supported as separate files and as embedded into video/audio files. Popular formats should be supported. Also, there can be multiple subtitles per video. It will require work on front-end and maybe some fixes to backend.&lt;br /&gt;
&lt;br /&gt;
== Multiple qualities of video. ==&lt;br /&gt;
&lt;br /&gt;
Now MediaGoblin supports only a single quality of video files. We want to fix that and support multiple qualities: 360p, 480p, 720p, 1080p, 4k. This requires changes to frontend and to backend. To implement it, one must have some experience in JavaScript and Python.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possible mentors&#039;&#039;&#039;: Boris Bobrov&lt;/div&gt;</summary>
		<author><name>Helen Christian</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=GSOC_2017&amp;diff=1797</id>
		<title>GSOC 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=GSOC_2017&amp;diff=1797"/>
		<updated>2016-02-15T23:28:21Z</updated>

		<summary type="html">&lt;p&gt;Helen Christian: /* Chunked uploads / multi-upload UI. */ punctuation fullstop.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We are hoping to participate in [https://developers.google.com/open-source/gsoc/ GSOC 2016] under the GNU umbrella. &lt;br /&gt;
 &lt;br /&gt;
You may want to check for a &amp;quot;possible mentor&amp;quot; before applying for this topic.  If you have your own idea, probably bring it up in #mediagoblin on irc.freenode.net !&lt;br /&gt;
&lt;br /&gt;
= How do I apply as a student ? =&lt;br /&gt;
&lt;br /&gt;
* [https://developers.google.com/open-source/gsoc/ Submit your application].  Please see the application submission template on the [http://www.gnu.org/software/soc-projects/guidelines.html GNU GSoC guidelines page].&lt;br /&gt;
* [http://mediagoblin.org/pages/join.html Join us] on IRC and on our mailing lists.&lt;br /&gt;
* Set up a development environment via our [[HackingHowto]]&lt;br /&gt;
* If you have never done web development in python before, MediaGoblin is a pretty good place to start !  However, we highly recommend going through the [https://docs.djangoproject.com/en/1.7/intro/tutorial01/ Django tutorial]... this isn&#039;t a requirement, but it will help you be better prepared.&lt;br /&gt;
* Work on a small task, and mention it in your application.  The [http://issues.mediagoblin.org/query?status=!closed&amp;amp;keywords=~bitesized bitesized list] is often helpful.&lt;br /&gt;
* Also, be aware when submitting: Summer of Code applicants are expected to work &#039;&#039;&#039;40 hours per week&#039;&#039;&#039;... so, a full time internship !  If you propose, please be sure you are ready to make that level of commitment.&lt;br /&gt;
&lt;br /&gt;
It&#039;s important that you communicate... most MediaGoblin communication happens on IRC, so you should [http://webchat.freenode.net/?channels=mediagoblin join us there] and discuss (#mediagoblin on irc.freenode.net)!  Please, please join our channel and introduce yourself.  We would love to hear from you !&lt;br /&gt;
&lt;br /&gt;
= Possible projects with mentors. =&lt;br /&gt;
== Chunked uploads / multi-upload UI. ==&lt;br /&gt;
&lt;br /&gt;
We want to have multi-upload from cli (usecase: go to my directory with photos and upload them all) and from web-interface (using maybe zip, maybe html5 feature). There is already https://github.com/VenKamikaze/mediagoblin-html5-multi-upload which might be what we need, so before choosing this task please verify.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Christopher Allan Webber, Boris Bobrov .&lt;br /&gt;
&lt;br /&gt;
== Subtitle interface. ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Christopher Allan Webber, Boris Bobrov&lt;br /&gt;
&lt;br /&gt;
We want subtitle support for our player. Subtitles should be supported as separate files and as embedded into video/audio files. Popular formats should be supported. Also, there can be multiple subtitles per video. It will require work on front-end and maybe some fixes to backend.&lt;br /&gt;
&lt;br /&gt;
== Multiple qualities of video. ==&lt;br /&gt;
&lt;br /&gt;
Now MediaGoblin supports only a single quality of video files. We want to fix that and support multiple qualities: 360p, 480p, 720p, 1080p, 4k. This requires changes to frontend and to backend. To implement it, one must have some experience in JavaScript and Python.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possible mentors&#039;&#039;&#039;: Boris Bobrov&lt;/div&gt;</summary>
		<author><name>Helen Christian</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=GSOC_2017&amp;diff=1796</id>
		<title>GSOC 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=GSOC_2017&amp;diff=1796"/>
		<updated>2016-02-15T23:27:29Z</updated>

		<summary type="html">&lt;p&gt;Helen Christian: /* How do I apply as a student ? */  changing &amp;#039;start!&amp;#039; and &amp;#039;internship!&amp;#039; to &amp;#039;start !&amp;#039; etc respectively.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We are hoping to participate in [https://developers.google.com/open-source/gsoc/ GSOC 2016] under the GNU umbrella. &lt;br /&gt;
 &lt;br /&gt;
You may want to check for a &amp;quot;possible mentor&amp;quot; before applying for this topic.  If you have your own idea, probably bring it up in #mediagoblin on irc.freenode.net !&lt;br /&gt;
&lt;br /&gt;
= How do I apply as a student ? =&lt;br /&gt;
&lt;br /&gt;
* [https://developers.google.com/open-source/gsoc/ Submit your application].  Please see the application submission template on the [http://www.gnu.org/software/soc-projects/guidelines.html GNU GSoC guidelines page].&lt;br /&gt;
* [http://mediagoblin.org/pages/join.html Join us] on IRC and on our mailing lists.&lt;br /&gt;
* Set up a development environment via our [[HackingHowto]]&lt;br /&gt;
* If you have never done web development in python before, MediaGoblin is a pretty good place to start !  However, we highly recommend going through the [https://docs.djangoproject.com/en/1.7/intro/tutorial01/ Django tutorial]... this isn&#039;t a requirement, but it will help you be better prepared.&lt;br /&gt;
* Work on a small task, and mention it in your application.  The [http://issues.mediagoblin.org/query?status=!closed&amp;amp;keywords=~bitesized bitesized list] is often helpful.&lt;br /&gt;
* Also, be aware when submitting: Summer of Code applicants are expected to work &#039;&#039;&#039;40 hours per week&#039;&#039;&#039;... so, a full time internship !  If you propose, please be sure you are ready to make that level of commitment.&lt;br /&gt;
&lt;br /&gt;
It&#039;s important that you communicate... most MediaGoblin communication happens on IRC, so you should [http://webchat.freenode.net/?channels=mediagoblin join us there] and discuss (#mediagoblin on irc.freenode.net)!  Please, please join our channel and introduce yourself.  We would love to hear from you !&lt;br /&gt;
&lt;br /&gt;
= Possible projects with mentors. =&lt;br /&gt;
== Chunked uploads / multi-upload UI. ==&lt;br /&gt;
&lt;br /&gt;
We want to have multi-upload from cli (usecase: go to my directory with photos and upload them all) and from web-interface (using maybe zip, maybe html5 feature). There is already https://github.com/VenKamikaze/mediagoblin-html5-multi-upload which might be what we need, so before choosing this task please verify.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Christopher Allan Webber, Boris Bobrov&lt;br /&gt;
&lt;br /&gt;
== Subtitle interface. ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Christopher Allan Webber, Boris Bobrov&lt;br /&gt;
&lt;br /&gt;
We want subtitle support for our player. Subtitles should be supported as separate files and as embedded into video/audio files. Popular formats should be supported. Also, there can be multiple subtitles per video. It will require work on front-end and maybe some fixes to backend.&lt;br /&gt;
&lt;br /&gt;
== Multiple qualities of video. ==&lt;br /&gt;
&lt;br /&gt;
Now MediaGoblin supports only a single quality of video files. We want to fix that and support multiple qualities: 360p, 480p, 720p, 1080p, 4k. This requires changes to frontend and to backend. To implement it, one must have some experience in JavaScript and Python.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possible mentors&#039;&#039;&#039;: Boris Bobrov&lt;/div&gt;</summary>
		<author><name>Helen Christian</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=GSOC_2017&amp;diff=1795</id>
		<title>GSOC 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=GSOC_2017&amp;diff=1795"/>
		<updated>2016-02-15T23:21:06Z</updated>

		<summary type="html">&lt;p&gt;Helen Christian: changing irc.freenode.net! to irc.freenode.net !&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We are hoping to participate in [https://developers.google.com/open-source/gsoc/ GSOC 2016] under the GNU umbrella. &lt;br /&gt;
 &lt;br /&gt;
You may want to check for a &amp;quot;possible mentor&amp;quot; before applying for this topic.  If you have your own idea, probably bring it up in #mediagoblin on irc.freenode.net !&lt;br /&gt;
&lt;br /&gt;
= How do I apply as a student ? =&lt;br /&gt;
&lt;br /&gt;
* [https://developers.google.com/open-source/gsoc/ Submit your application].  Please see the application submission template on the [http://www.gnu.org/software/soc-projects/guidelines.html GNU GSoC guidelines page].&lt;br /&gt;
* [http://mediagoblin.org/pages/join.html Join us] on IRC and on our mailing lists.&lt;br /&gt;
* Set up a development environment via our [[HackingHowto]]&lt;br /&gt;
* If you have never done web development in python before, MediaGoblin is a pretty good place to start!  However, we highly recommend going through the [https://docs.djangoproject.com/en/1.7/intro/tutorial01/ Django tutorial]... this isn&#039;t a requirement, but it will help you be better prepared.&lt;br /&gt;
* Work on a small task, and mention it in your application.  The [http://issues.mediagoblin.org/query?status=!closed&amp;amp;keywords=~bitesized bitesized list] is often helpful.&lt;br /&gt;
* Also, be aware when submitting: Summer of Code applicants are expected to work &#039;&#039;&#039;40 hours per week&#039;&#039;&#039;... so, a full time internship!  If you propose, please be sure you are ready to make that level of commitment.&lt;br /&gt;
&lt;br /&gt;
It&#039;s important that you communicate... most MediaGoblin communication happens on IRC, so you should [http://webchat.freenode.net/?channels=mediagoblin join us there] and discuss (#mediagoblin on irc.freenode.net)!  Please, please join our channel and introduce yourself.  We would love to hear from you !&lt;br /&gt;
&lt;br /&gt;
= Possible projects with mentors. =&lt;br /&gt;
== Chunked uploads / multi-upload UI. ==&lt;br /&gt;
&lt;br /&gt;
We want to have multi-upload from cli (usecase: go to my directory with photos and upload them all) and from web-interface (using maybe zip, maybe html5 feature). There is already https://github.com/VenKamikaze/mediagoblin-html5-multi-upload which might be what we need, so before choosing this task please verify.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Christopher Allan Webber, Boris Bobrov&lt;br /&gt;
&lt;br /&gt;
== Subtitle interface. ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Christopher Allan Webber, Boris Bobrov&lt;br /&gt;
&lt;br /&gt;
We want subtitle support for our player. Subtitles should be supported as separate files and as embedded into video/audio files. Popular formats should be supported. Also, there can be multiple subtitles per video. It will require work on front-end and maybe some fixes to backend.&lt;br /&gt;
&lt;br /&gt;
== Multiple qualities of video. ==&lt;br /&gt;
&lt;br /&gt;
Now MediaGoblin supports only a single quality of video files. We want to fix that and support multiple qualities: 360p, 480p, 720p, 1080p, 4k. This requires changes to frontend and to backend. To implement it, one must have some experience in JavaScript and Python.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possible mentors&#039;&#039;&#039;: Boris Bobrov&lt;/div&gt;</summary>
		<author><name>Helen Christian</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=GSOC_2017&amp;diff=1794</id>
		<title>GSOC 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=GSOC_2017&amp;diff=1794"/>
		<updated>2016-02-15T23:16:01Z</updated>

		<summary type="html">&lt;p&gt;Helen Christian: /* How do I apply as a student ? */  changing we&amp;#039;d to we would. Don&amp;#039;t use we&amp;#039;d :-)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We are hoping to participate in [https://developers.google.com/open-source/gsoc/ GSOC 2016] under the GNU umbrella. &lt;br /&gt;
&lt;br /&gt;
You may want to check for a &amp;quot;possible mentor&amp;quot; before applying for this topic.  If you have your own idea, probably bring it up in #mediagoblin on irc.freenode.net!&lt;br /&gt;
&lt;br /&gt;
= How do I apply as a student ? =&lt;br /&gt;
&lt;br /&gt;
* [https://developers.google.com/open-source/gsoc/ Submit your application].  Please see the application submission template on the [http://www.gnu.org/software/soc-projects/guidelines.html GNU GSoC guidelines page].&lt;br /&gt;
* [http://mediagoblin.org/pages/join.html Join us] on IRC and on our mailing lists.&lt;br /&gt;
* Set up a development environment via our [[HackingHowto]]&lt;br /&gt;
* If you have never done web development in python before, MediaGoblin is a pretty good place to start!  However, we highly recommend going through the [https://docs.djangoproject.com/en/1.7/intro/tutorial01/ Django tutorial]... this isn&#039;t a requirement, but it will help you be better prepared.&lt;br /&gt;
* Work on a small task, and mention it in your application.  The [http://issues.mediagoblin.org/query?status=!closed&amp;amp;keywords=~bitesized bitesized list] is often helpful.&lt;br /&gt;
* Also, be aware when submitting: Summer of Code applicants are expected to work &#039;&#039;&#039;40 hours per week&#039;&#039;&#039;... so, a full time internship!  If you propose, please be sure you are ready to make that level of commitment.&lt;br /&gt;
&lt;br /&gt;
It&#039;s important that you communicate... most MediaGoblin communication happens on IRC, so you should [http://webchat.freenode.net/?channels=mediagoblin join us there] and discuss (#mediagoblin on irc.freenode.net)!  Please, please join our channel and introduce yourself.  We would love to hear from you !&lt;br /&gt;
&lt;br /&gt;
= Possible projects with mentors. =&lt;br /&gt;
== Chunked uploads / multi-upload UI. ==&lt;br /&gt;
&lt;br /&gt;
We want to have multi-upload from cli (usecase: go to my directory with photos and upload them all) and from web-interface (using maybe zip, maybe html5 feature). There is already https://github.com/VenKamikaze/mediagoblin-html5-multi-upload which might be what we need, so before choosing this task please verify.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Christopher Allan Webber, Boris Bobrov&lt;br /&gt;
&lt;br /&gt;
== Subtitle interface. ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Christopher Allan Webber, Boris Bobrov&lt;br /&gt;
&lt;br /&gt;
We want subtitle support for our player. Subtitles should be supported as separate files and as embedded into video/audio files. Popular formats should be supported. Also, there can be multiple subtitles per video. It will require work on front-end and maybe some fixes to backend.&lt;br /&gt;
&lt;br /&gt;
== Multiple qualities of video. ==&lt;br /&gt;
&lt;br /&gt;
Now MediaGoblin supports only a single quality of video files. We want to fix that and support multiple qualities: 360p, 480p, 720p, 1080p, 4k. This requires changes to frontend and to backend. To implement it, one must have some experience in JavaScript and Python.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possible mentors&#039;&#039;&#039;: Boris Bobrov&lt;/div&gt;</summary>
		<author><name>Helen Christian</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=GSOC_2017&amp;diff=1793</id>
		<title>GSOC 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=GSOC_2017&amp;diff=1793"/>
		<updated>2016-02-15T23:14:20Z</updated>

		<summary type="html">&lt;p&gt;Helen Christian: punctuation change &amp;#039;fullstops&amp;#039; after headings.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We are hoping to participate in [https://developers.google.com/open-source/gsoc/ GSOC 2016] under the GNU umbrella. &lt;br /&gt;
&lt;br /&gt;
You may want to check for a &amp;quot;possible mentor&amp;quot; before applying for this topic.  If you have your own idea, probably bring it up in #mediagoblin on irc.freenode.net!&lt;br /&gt;
&lt;br /&gt;
= How do I apply as a student ? =&lt;br /&gt;
&lt;br /&gt;
* [https://developers.google.com/open-source/gsoc/ Submit your application].  Please see the application submission template on the [http://www.gnu.org/software/soc-projects/guidelines.html GNU GSoC guidelines page].&lt;br /&gt;
* [http://mediagoblin.org/pages/join.html Join us] on IRC and on our mailing lists.&lt;br /&gt;
* Set up a development environment via our [[HackingHowto]]&lt;br /&gt;
* If you have never done web development in python before, MediaGoblin is a pretty good place to start!  However, we highly recommend going through the [https://docs.djangoproject.com/en/1.7/intro/tutorial01/ Django tutorial]... this isn&#039;t a requirement, but it will help you be better prepared.&lt;br /&gt;
* Work on a small task, and mention it in your application.  The [http://issues.mediagoblin.org/query?status=!closed&amp;amp;keywords=~bitesized bitesized list] is often helpful.&lt;br /&gt;
* Also, be aware when submitting: Summer of Code applicants are expected to work &#039;&#039;&#039;40 hours per week&#039;&#039;&#039;... so, a full time internship!  If you propose, please be sure you are ready to make that level of commitment.&lt;br /&gt;
&lt;br /&gt;
It&#039;s important that you communicate... most MediaGoblin communication happens on IRC, so you should [http://webchat.freenode.net/?channels=mediagoblin join us there] and discuss (#mediagoblin on irc.freenode.net)!  Please, please join our channel and introduce yourself.  We&#039;d love to hear from you!&lt;br /&gt;
&lt;br /&gt;
= Possible projects with mentors. =&lt;br /&gt;
== Chunked uploads / multi-upload UI. ==&lt;br /&gt;
&lt;br /&gt;
We want to have multi-upload from cli (usecase: go to my directory with photos and upload them all) and from web-interface (using maybe zip, maybe html5 feature). There is already https://github.com/VenKamikaze/mediagoblin-html5-multi-upload which might be what we need, so before choosing this task please verify.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Christopher Allan Webber, Boris Bobrov&lt;br /&gt;
&lt;br /&gt;
== Subtitle interface. ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Christopher Allan Webber, Boris Bobrov&lt;br /&gt;
&lt;br /&gt;
We want subtitle support for our player. Subtitles should be supported as separate files and as embedded into video/audio files. Popular formats should be supported. Also, there can be multiple subtitles per video. It will require work on front-end and maybe some fixes to backend.&lt;br /&gt;
&lt;br /&gt;
== Multiple qualities of video. ==&lt;br /&gt;
&lt;br /&gt;
Now MediaGoblin supports only a single quality of video files. We want to fix that and support multiple qualities: 360p, 480p, 720p, 1080p, 4k. This requires changes to frontend and to backend. To implement it, one must have some experience in JavaScript and Python.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possible mentors&#039;&#039;&#039;: Boris Bobrov&lt;/div&gt;</summary>
		<author><name>Helen Christian</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=GSOC_2017&amp;diff=1792</id>
		<title>GSOC 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=GSOC_2017&amp;diff=1792"/>
		<updated>2016-02-15T23:11:28Z</updated>

		<summary type="html">&lt;p&gt;Helen Christian: punctuation change from &amp;#039;student?&amp;#039; to &amp;#039;student ?&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We are hoping to participate in [https://developers.google.com/open-source/gsoc/ GSOC 2016] under the GNU umbrella. &lt;br /&gt;
&lt;br /&gt;
You may want to check for a &amp;quot;possible mentor&amp;quot; before applying for this topic.  If you have your own idea, probably bring it up in #mediagoblin on irc.freenode.net!&lt;br /&gt;
&lt;br /&gt;
= How do I apply as a student ? =&lt;br /&gt;
&lt;br /&gt;
* [https://developers.google.com/open-source/gsoc/ Submit your application].  Please see the application submission template on the [http://www.gnu.org/software/soc-projects/guidelines.html GNU GSoC guidelines page].&lt;br /&gt;
* [http://mediagoblin.org/pages/join.html Join us] on IRC and on our mailing lists.&lt;br /&gt;
* Set up a development environment via our [[HackingHowto]]&lt;br /&gt;
* If you have never done web development in python before, MediaGoblin is a pretty good place to start!  However, we highly recommend going through the [https://docs.djangoproject.com/en/1.7/intro/tutorial01/ Django tutorial]... this isn&#039;t a requirement, but it will help you be better prepared.&lt;br /&gt;
* Work on a small task, and mention it in your application.  The [http://issues.mediagoblin.org/query?status=!closed&amp;amp;keywords=~bitesized bitesized list] is often helpful.&lt;br /&gt;
* Also, be aware when submitting: Summer of Code applicants are expected to work &#039;&#039;&#039;40 hours per week&#039;&#039;&#039;... so, a full time internship!  If you propose, please be sure you are ready to make that level of commitment.&lt;br /&gt;
&lt;br /&gt;
It&#039;s important that you communicate... most MediaGoblin communication happens on IRC, so you should [http://webchat.freenode.net/?channels=mediagoblin join us there] and discuss (#mediagoblin on irc.freenode.net)!  Please, please join our channel and introduce yourself.  We&#039;d love to hear from you!&lt;br /&gt;
&lt;br /&gt;
= Possible projects with mentors =&lt;br /&gt;
== Chunked uploads / multi-upload UI ==&lt;br /&gt;
&lt;br /&gt;
We want to have multi-upload from cli (usecase: go to my directory with photos and upload them all) and from web-interface (using maybe zip, maybe html5 feature). There is already https://github.com/VenKamikaze/mediagoblin-html5-multi-upload which might be what we need, so before choosing this task please verify.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Christopher Allan Webber, Boris Bobrov&lt;br /&gt;
&lt;br /&gt;
== Subtitle interface ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possible Mentors:&#039;&#039;&#039; Christopher Allan Webber, Boris Bobrov&lt;br /&gt;
&lt;br /&gt;
We want subtitle support for our player. Subtitles should be supported as separate files and as embedded into video/audio files. Popular formats should be supported. Also, there can be multiple subtitles per video. It will require work on front-end and maybe some fixes to backend.&lt;br /&gt;
&lt;br /&gt;
== Multiple qualities of video ==&lt;br /&gt;
&lt;br /&gt;
Now MediaGoblin supports only a single quality of video files. We want to fix that and support multiple qualities: 360p, 480p, 720p, 1080p, 4k. This requires changes to frontend and to backend. To implement it, one must have some experience in JavaScript and Python.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possible mentors&#039;&#039;&#039;: Boris Bobrov&lt;/div&gt;</summary>
		<author><name>Helen Christian</name></author>
	</entry>
</feed>