<?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=Ayleph</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=Ayleph"/>
	<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/Special:Contributions/Ayleph"/>
	<updated>2026-05-14T18:03:14Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.17</generator>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=20170304_Log&amp;diff=1898</id>
		<title>20170304 Log</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=20170304_Log&amp;diff=1898"/>
		<updated>2017-03-04T19:23:51Z</updated>

		<summary type="html">&lt;p&gt;Ayleph: missed the last line&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
09:02:40       breton  #startmeeting&lt;br /&gt;
09:02:48       breton  where is the bot?&lt;br /&gt;
09:03:03       breton  #startmeeting mediagoblin&lt;br /&gt;
09:03:11       breton  oh well&lt;br /&gt;
09:03:18       ayleph  i haven&#039;t seen chaosgoblin in quite a while :&lt;br /&gt;
09:03:24   paroneayea  womp womp&lt;br /&gt;
09:03:33   paroneayea  well, we could record the log and just post it to the list ourselves&lt;br /&gt;
09:03:53       breton  hi everyone, welcome to our monthly meeting&lt;br /&gt;
09:03:59       breton  todays agenda&lt;br /&gt;
09:03:59   paroneayea  \o/&lt;br /&gt;
09:04:03       breton   - GSoC&lt;br /&gt;
09:04:16       breton  what else?&lt;br /&gt;
09:04:35   paroneayea   - Federation and ActivityPub progress&lt;br /&gt;
09:04:43   paroneayea  it ties in with at least one GSoC option&lt;br /&gt;
09:05:40   paroneayea  maybe we should do the federation / activitypub update first since it impacts the gsoc &lt;br /&gt;
                       discussion?  breton, wdyt?&lt;br /&gt;
09:06:26       breton  paroneayea: sounds good, go for it :)&lt;br /&gt;
09:06:29   paroneayea  ok :)&lt;br /&gt;
09:06:37   paroneayea  so let&#039;s open up with some Good News&lt;br /&gt;
09:07:29   paroneayea  ActivityPub relies on ActivityStreams, and ActivityStreams just got signed off to &amp;quot;go to PR&amp;quot;,  &lt;br /&gt;
                       ie &amp;quot;Proposed Recommendation&amp;quot;&lt;br /&gt;
09:07:51   paroneayea  ActivityStreams is our whole vocabulary, etc in ActivityPub, so this is good&lt;br /&gt;
09:07:58   paroneayea  PR means the group has spent a lonnnnnng time vetting the spec&lt;br /&gt;
09:08:13   paroneayea  and it&#039;s now ready to be sent to the w3c advisory committee to review&lt;br /&gt;
09:08:23   paroneayea  and hopefully make it an official spec&lt;br /&gt;
09:08:27   paroneayea  so that&#039;s good news \o/&lt;br /&gt;
09:09:29   paroneayea  in helping to make sure that we didn&#039;t have any important vocabulary dropped from the spec, we &lt;br /&gt;
                       had to prove implementation of all the terms, which means I&#039;ve done a TON of implementation of &lt;br /&gt;
                       ActivityStreams terms in Pubstrate, the ActivityPub testbed server I&#039;ve been working on&lt;br /&gt;
09:09:34   paroneayea  http://dustycloud.org/gfx/goodies/video-in-pubstrate.png look, video! :)&lt;br /&gt;
09:09:46   paroneayea  Pubstrate isn&#039;t doing anything like MediaGoblin&#039;s processing tooling&lt;br /&gt;
09:10:05   paroneayea  but it can read the metadata that MediaGoblin will publish once MediaGoblin supports ActivityPUb&lt;br /&gt;
09:10:32   paroneayea  so I already have a good idea of what that&#039;ll be &amp;quot;shaped&amp;quot; like once we switch MediaGoblin&#039;s &lt;br /&gt;
                       federation code over to ActivityPub&lt;br /&gt;
09:11:18   paroneayea  in the meanwhile, as for ActivityPub itself, it&#039;s still at Candidate Recommendation stage, &lt;br /&gt;
                       pre-CR.  The group got a 6 month extension for ActivityPub, but in order to meet that&lt;br /&gt;
09:12:00   paroneayea  we need implementation reports (the template for which I&#039;m just now about to merge &lt;br /&gt;
                       https://github.com/w3c/activitypub/pull/174#issuecomment-284131233 )&lt;br /&gt;
09:12:13   paroneayea  and we need a test suite implementations can test against&lt;br /&gt;
09:12:19   paroneayea  my whole next month will mostly be spent on that test suite.&lt;br /&gt;
09:12:42   paroneayea  after that&#039;s done, I&#039;ll be helping with MediaGoblin&#039;s switch over to ActivityPub, but the test &lt;br /&gt;
                       suite needs to happen first&lt;br /&gt;
09:12:50   paroneayea  so that&#039;s the update.&lt;br /&gt;
09:12:54   paroneayea  questions? :)&lt;br /&gt;
09:13:01       ayleph  when do you sleep?&lt;br /&gt;
09:13:36       ayleph  sounds like you&#039;ve been extremely busy, and very productive.&lt;br /&gt;
09:13:44   paroneayea  thanks ayleph :)  I appreciate that&lt;br /&gt;
09:13:49       breton  there should be more docs for dumb people like me&lt;br /&gt;
09:14:01       breton  or blogposts&lt;br /&gt;
09:14:14   paroneayea  breton: have you read the AP spec? https://www.w3.org/TR/activitypub/&lt;br /&gt;
09:14:24   paroneayea  we&#039;ve tried to make it fairly readable&lt;br /&gt;
09:14:54   paroneayea  breton: and yes I&#039;d like to do more blogposts, I haven&#039;t gotten to it yet&lt;br /&gt;
09:15:06       ayleph  i&#039;m really excite about that pubstrate screen shot with video&lt;br /&gt;
09:15:07       breton  paroneayea: yes. But it&#039;s 40 pages :(&lt;br /&gt;
09:15:38   paroneayea  though!  If you want a fun distraction &lt;br /&gt;
                       https://archive.org/details/feb_2017-live_network_coding_8sync&lt;br /&gt;
09:15:41   paroneayea  watch this after the meeting :)&lt;br /&gt;
09:15:52   paroneayea  it&#039;ll tie together the federation work with some other things ;)&lt;br /&gt;
09:15:56   paroneayea  that&#039;s not important though.  Okay!&lt;br /&gt;
09:16:03   paroneayea  any other questions, or on to GSoC?&lt;br /&gt;
09:16:18   paroneayea  ayleph: glad you&#039;re excited to see it... I was excited to get it working :)&lt;br /&gt;
09:16:53   paroneayea  ayleph: btw if you want a rendering of what that AS2 object is before it&#039;s rendered in fancy &lt;br /&gt;
                       HTML, I could pull it up...&lt;br /&gt;
09:17:22   paroneayea  no questions?  maybe we should move on to GSoC&lt;br /&gt;
09:17:35       breton  yes, lets move on&lt;br /&gt;
09:17:38   paroneayea  #topic GSoC&lt;br /&gt;
09:17:41   paroneayea  breton: why don&#039;t you lead this one&lt;br /&gt;
09:17:48       breton  GNU was accepted to GSoC&lt;br /&gt;
09:17:58       breton  we participate under GNU umbrella&lt;br /&gt;
09:18:36       breton  https://wiki.mediagoblin.org/GSOC_2017 -- is our GSoC page, please fix it if you see something &lt;br /&gt;
                       wrong there&lt;br /&gt;
09:19:26       breton  we have several students who contacted us early!&lt;br /&gt;
09:19:33   paroneayea  breton: cool :)&lt;br /&gt;
09:20:10       breton  so if some of them are here, we could talk about the projects&lt;br /&gt;
09:20:31   paroneayea  let&#039;s do it!&lt;br /&gt;
09:20:51       breton  one thing i wanted to discuss is access control project&lt;br /&gt;
09:21:04       breton  paroneayea: how do you see it tied with activitypub one?&lt;br /&gt;
09:21:22   paroneayea  breton: let&#039;s look at an example ActivityStreams object to see how!&lt;br /&gt;
09:21:26   paroneayea  let me pull it up, one sec&lt;br /&gt;
09:22:57   paroneayea  http://dpaste.com/1PDDHR3&lt;br /&gt;
09:23:00   paroneayea  here are two examples&lt;br /&gt;
09:23:14   paroneayea  taken from the ActivityPub document&lt;br /&gt;
09:23:41   paroneayea  you can see a couple of things: a) objects are nested, the first one shows that we are &lt;br /&gt;
                       Create&#039;ing a Note&lt;br /&gt;
09:24:09   paroneayea  usually a stream will consist of Activity related to an Object (by an Actor)&lt;br /&gt;
09:24:46   paroneayea  b) you&#039;ll notice that there&#039;s these fields for &amp;quot;to&amp;quot; or &amp;quot;cc&amp;quot; (and also &amp;quot;bcc&amp;quot; and &amp;quot;bto&amp;quot; in case &lt;br /&gt;
                       you don&#039;t want to disclose those recipients)&lt;br /&gt;
09:24:54   paroneayea  so we&#039;re sending things to those specific users&lt;br /&gt;
09:25:02   paroneayea  or even possibly to collections of users!&lt;br /&gt;
09:25:16   paroneayea    &amp;quot;to&amp;quot;: [&amp;quot;https://example.org/~john/&amp;quot;],&lt;br /&gt;
09:25:16   paroneayea    &amp;quot;cc&amp;quot;: [&amp;quot;https://example.com/~erik/followers&amp;quot;,&lt;br /&gt;
09:25:17   paroneayea           &amp;quot;https://www.w3.org/ns/activitystreams#Public&amp;quot;]&lt;br /&gt;
09:25:37   paroneayea  in this example, &amp;quot;example.org/~john&amp;quot; is an actor on the network&lt;br /&gt;
09:25:53   paroneayea  whereas &amp;quot;https://example.com/~erik/followers&amp;quot; is a collection of all the followers&lt;br /&gt;
09:26:10   paroneayea  &amp;quot;https://www.w3.org/ns/activitystreams#Public&amp;quot; is kind of a special meta-collection that says &lt;br /&gt;
                       &amp;quot;actually anyone can see this&amp;quot;&lt;br /&gt;
09:26:16   paroneayea  if we pretend the Public wasn&#039;t there&lt;br /&gt;
09:26:27   paroneayea  we&#039;d only want the original author, john, and erik&#039;s followers to read this&lt;br /&gt;
09:26:43   paroneayea  that implies some fine-grained access control on an object level&lt;br /&gt;
09:27:10   paroneayea  and indeed, for the Like by Mallory in Example 2, sarah and john presumably are the only people &lt;br /&gt;
                       who read it&lt;br /&gt;
09:27:21       breton  so like email&lt;br /&gt;
09:27:24   paroneayea  yes exactly.&lt;br /&gt;
09:27:35   paroneayea  so to and cc and etc are *primarily* used for delivery&lt;br /&gt;
09:27:40   paroneayea  but they also *imply* access control.&lt;br /&gt;
09:28:07   paroneayea  so, let&#039;s say we had two GSoC students at once, one working on access control and one working on &lt;br /&gt;
                       ActivityPub federation!  How could we get them to work together?&lt;br /&gt;
09:28:37   paroneayea  well I think it isn&#039;t so terrrrrribly hard actually, but it will require they are willing to &lt;br /&gt;
                       work together a bit.  they don&#039;t have to work from the same branch.&lt;br /&gt;
09:29:16       ayleph  paroneayea: do you think that ActivityPub implied access control should be *the* access control &lt;br /&gt;
                       method for MediaGoblin? Or do you see it as just one possible implementation?&lt;br /&gt;
09:29:18   paroneayea  we&#039;d have to make sure the access control branch was set up with the *intent* of doing this kind &lt;br /&gt;
                       of fine grained access control: things are either public (anyone can see them), or they&#039;re &lt;br /&gt;
                       restricted to individuals and collections&lt;br /&gt;
09:29:29       breton  i am opposed to students working together then&lt;br /&gt;
09:29:30   paroneayea  ayleph: I think it should be *the* basis, and maybe there can be some hooks.&lt;br /&gt;
09:29:46       ayleph  I&#039;m wondering if some people just want to make an instance they can share with family member &lt;br /&gt;
                       without having to figure out ActivityPub stuff&lt;br /&gt;
09:29:51       breton  ayleph: so mg switches to activitypub&lt;br /&gt;
09:30:05       breton  ayleph: i think we shall mask all activitypub stuff&lt;br /&gt;
09:30:12       breton  ayleph: hide it behind web-interface&lt;br /&gt;
09:30:14   paroneayea  ayleph: I think it&#039;ll be possible&lt;br /&gt;
09:30:26   paroneayea  you could add extra access checks&lt;br /&gt;
09:30:29   paroneayea  via plugin hooks&lt;br /&gt;
09:30:44   paroneayea  but it&#039;s just, the primary &amp;quot;how do I say this person has access&amp;quot; *starts with* the AP side of &lt;br /&gt;
                       things.&lt;br /&gt;
09:30:46   paroneayea  make sense?&lt;br /&gt;
09:31:14   paroneayea  so AP access control ideas start as foundation, and if you want to add some plugin hook that &lt;br /&gt;
                       gives broad sweeping access via some other authenticated mechanism, go for it&lt;br /&gt;
09:31:40       ayleph  okay, i think i get it. (it&#039;s still a little early for me on a saturday morning...)&lt;br /&gt;
09:31:46       breton  ok, that&#039;s actually nice&lt;br /&gt;
09:32:07       breton  here is what we need to do&lt;br /&gt;
09:32:10   paroneayea  so, what I imagine the person working on the ActivityPub implementation for the summer focusing &lt;br /&gt;
                       primarily on delivery&lt;br /&gt;
09:32:21   paroneayea  so it&#039;s possible for them to focus on delivery, and not access control&lt;br /&gt;
09:32:39   paroneayea  but we need the actor and actor collections stuff put in place before GSoC for that to work&lt;br /&gt;
09:32:47   paroneayea  or else it&#039;s going to be a gnarly merge.&lt;br /&gt;
09:32:47       breton  1. drop access control project for now&lt;br /&gt;
09:33:00   paroneayea  breton: or we can do that :)&lt;br /&gt;
09:33:08       breton  2. add more description about activitypub stuff to the project&lt;br /&gt;
09:33:20       breton  activitypub looks scary&lt;br /&gt;
09:33:25   paroneayea  here&#039;s the other thing about activitypub&lt;br /&gt;
09:33:30       breton  i know it isn&#039;t, but it is.&lt;br /&gt;
09:33:33   paroneayea  I think this is going to be an unusual GSoC&lt;br /&gt;
09:33:37       breton  *but it looks&lt;br /&gt;
09:33:42   paroneayea  the person working on GSoC this year will in some ways be my &amp;quot;assistant&amp;quot;&lt;br /&gt;
09:33:47   paroneayea  I will be actively working with them&lt;br /&gt;
09:34:31   paroneayea  I think that could reduce the scariness a bit&lt;br /&gt;
09:34:48   paroneayea  so whoever is working on it this year will have to be willing to do a lot of collaboration, more &lt;br /&gt;
                       than most GSoC&lt;br /&gt;
09:34:58   paroneayea  breton: does that make sense to you?&lt;br /&gt;
09:35:01       breton  paroneayea: yes&lt;br /&gt;
09:35:11   paroneayea  I figure I&#039;ve been doing this ActivityPub stuff and getting it to a stable state for a couple of &lt;br /&gt;
                       years&lt;br /&gt;
09:35:27   paroneayea  so it&#039;s time to land it, and I can certainly use help, but I think it&#039;ll go smoothest with &lt;br /&gt;
                       direct guidance&lt;br /&gt;
09:35:33   paroneayea  tsyesika also said she&#039;d be willing to help mentor&lt;br /&gt;
09:36:46   paroneayea  ok&lt;br /&gt;
09:36:52   paroneayea  so I guess one question is&lt;br /&gt;
09:37:44   paroneayea  since this is kind of an unusual GSoC, do we need to do anything to help students prepare or &lt;br /&gt;
                       help check before GSoC stuff even starts?&lt;br /&gt;
09:38:03   paroneayea  breton: do you have ideas?&lt;br /&gt;
09:38:16   paroneayea  one tricky thing is I&#039;m doing this test suite all month so that&#039;s going to be a bit overwhelming &lt;br /&gt;
                       already :)&lt;br /&gt;
09:38:17       breton  the first thing i will do is update description of the task&lt;br /&gt;
09:39:04       breton  the worst thing about the whole federation stuff is lack of description readable in 5-10 minutes&lt;br /&gt;
09:39:41   paroneayea  ha&lt;br /&gt;
09:39:43   paroneayea  yeah&lt;br /&gt;
09:39:56   paroneayea  breton: maybe we should link to the part of the mediagoblin 2nd campaign video where federation &lt;br /&gt;
                       is explained ;)&lt;br /&gt;
09:40:22       breton  the second worst is ambiguity of word &amp;quot;federation&amp;quot;&lt;br /&gt;
09:41:57   paroneayea  http://mediagoblin.org/pages/campaign.html 1:45-2:20 on the video for talking about federation :)&lt;br /&gt;
09:42:10   paroneayea  then it goes into some outdated stuff about the Pump API.  but that was all pre-standardization!&lt;br /&gt;
09:42:20       ayleph  the description mentions that there&#039;s a federation branch...is the idea to first try to merge &lt;br /&gt;
                       that branch, and then to convert it to activitypub?&lt;br /&gt;
09:42:37   paroneayea  ayleph: hauuuuugh, I need to review it.&lt;br /&gt;
09:42:38       ayleph  i imagine merging the branch alone may be a big task&lt;br /&gt;
09:42:44   paroneayea  yes that&#039;s true&lt;br /&gt;
09:42:54   paroneayea  maybe I need to devote weekends to getting up-to-date on that this month&lt;br /&gt;
09:43:18   paroneayea  so we have two other gsoc tasks also&lt;br /&gt;
09:43:19       breton  isn&#039;t it merged yet?&lt;br /&gt;
09:43:25   paroneayea  breton: no :)&lt;br /&gt;
09:43:30       breton  but&lt;br /&gt;
09:43:34   paroneayea  it&#039;s been sitting there, burning on the back burner :)&lt;br /&gt;
09:43:48       breton  why did the switch from user to actor happened?&lt;br /&gt;
09:44:34   paroneayea  breton: *part of* the federation stuff landed&lt;br /&gt;
09:44:37   paroneayea  but there&#039;s still more&lt;br /&gt;
09:44:40       ayleph  there were certainly a lot of changes to the API code a year or two ago, but it was a pretty &lt;br /&gt;
                       basic implementation&lt;br /&gt;
09:44:50       ayleph  images only, most clients couldn&#039;t successfully connect&lt;br /&gt;
09:44:53   paroneayea  the complete federation branch is still sitting in tsyesika&#039;s branch&lt;br /&gt;
09:44:56       breton  oh well.&lt;br /&gt;
09:45:00   paroneayea  so&lt;br /&gt;
09:45:03   paroneayea  I guess that&#039;s a task for me.&lt;br /&gt;
09:45:08   paroneayea  assess the state of federation stuff&lt;br /&gt;
09:45:14            *  paroneayea piles it on a towering heap&lt;br /&gt;
09:45:17       ayleph  hehe&lt;br /&gt;
09:45:32       ayleph  is that branch on savannah?&lt;br /&gt;
09:46:05       ayleph  yeah, appears to be&lt;br /&gt;
09:46:06   paroneayea  nope, notabug https://notabug.org/tsyesika/federated-mediagoblin.git&lt;br /&gt;
09:46:07   paroneayea  oh&lt;br /&gt;
09:46:10   paroneayea  maybe there too&lt;br /&gt;
09:46:33       ayleph  oh, i probably shouldn&#039;t assume the one on savannah is the same one&lt;br /&gt;
09:46:34   paroneayea  we might have pushed it to sannah&lt;br /&gt;
09:46:43   paroneayea  another thing to look into!&lt;br /&gt;
09:47:03   paroneayea  ayleph: breton: ok, so I&#039;m going to be crazy busy for the next 1.5 weeks on this test suite&lt;br /&gt;
09:47:13       adfeno  Savannah is the most respectful of the two repository hosts so far.&lt;br /&gt;
09:47:18   paroneayea  in 2 weeks, can I ask one of you to pester me, &amp;quot;hey how&#039;s reviewing that federation code going&amp;quot;? &lt;br /&gt;
                       ;)&lt;br /&gt;
09:47:35       ayleph  hmm, it looks like the one on notabug is many commits behind the one on savannah&lt;br /&gt;
09:47:58   paroneayea  ok, savannah is most up to date then.  noted!&lt;br /&gt;
09:48:15       ayleph  oh, but then i noticed the &amp;quot;federation&amp;quot; branch on notabug&lt;br /&gt;
09:48:31       ayleph  they look about the same?&lt;br /&gt;
09:49:00   paroneayea  meh, I&#039;ll look :)&lt;br /&gt;
09:49:08       breton  ok, other GSoC projects&lt;br /&gt;
09:49:11   paroneayea  yes&lt;br /&gt;
09:49:15   paroneayea  there are 2 others!&lt;br /&gt;
09:49:25       breton  Multiple qualities of video&lt;br /&gt;
09:49:48       breton  i think it is pretty clear what to do there&lt;br /&gt;
09:50:11       breton  this is the one i would love to mentor&lt;br /&gt;
09:50:13       ayleph  maybe we could tack on some advanced user upload limit stuff to that one?&lt;br /&gt;
09:50:15   paroneayea  great :)&lt;br /&gt;
09:50:25   paroneayea  ayleph: don&#039;t we have a user upload limit thing?&lt;br /&gt;
09:50:33   paroneayea  maybe it&#039;s not advanced :)&lt;br /&gt;
09:50:33       ayleph  i think the current user upload limit code only looks at the size of the uploaded video (which &lt;br /&gt;
                       may or may not stick around), not the size of the transcoded video&lt;br /&gt;
09:50:46       ayleph  and if we have multiple transcoded video sizes, that&#039;s a lot more disk space&lt;br /&gt;
09:50:59   paroneayea  ahhh&lt;br /&gt;
09:51:03   paroneayea  yes ayleph, good point.&lt;br /&gt;
09:51:15   paroneayea  I think that&#039;s a reasonable thing to add to it&lt;br /&gt;
09:51:15       breton  ayleph: lets just make a list of possible video qualities configurable&lt;br /&gt;
09:51:47       breton  ayleph: also, if original video is 480p, there is definitely no reason to transcode it to 720p&lt;br /&gt;
09:53:42       breton  ok, anything else aout multiple video qualities?&lt;br /&gt;
09:54:04   paroneayea  breton: seems pretty good&lt;br /&gt;
09:54:19       breton  cool. Our next project is &amp;quot;Chunked uploads / multi-upload UI&amp;quot;&lt;br /&gt;
09:54:41   paroneayea  I think we have like, three branches that have attempted this and I&#039;ve failed to review any of &lt;br /&gt;
                       them, like the terrible maintainer I am&lt;br /&gt;
09:54:47   paroneayea  well wait&lt;br /&gt;
09:54:51   paroneayea  I did review one once I think!&lt;br /&gt;
09:54:52       breton  this one looks like an easy one actually&lt;br /&gt;
09:55:56       ayleph  looking at the comments on the wiki, this may already be working code&lt;br /&gt;
09:56:15       ayleph  i didn&#039;t realize that someone had updated the VenKamikaze multi-upload code to work with 0.9&lt;br /&gt;
09:58:31       breton  so... there is no project?&lt;br /&gt;
09:59:04       ayleph  i&#039;m not sure, but at a quick glance, it seems that most of the work is already done&lt;br /&gt;
09:59:10       breton  the code also doesn&#039;t look too complex for GSoC project&lt;br /&gt;
09:59:17       ayleph  unless we want someone to create a new method&lt;br /&gt;
09:59:43       ayleph  this code may need some adjustments; i&#039;m not sure what happens if a browser doesn&#039;t support html5&lt;br /&gt;
09:59:50       ayleph  but i don&#039;t think that&#039;s worthy of GSoC&lt;br /&gt;
10:00:31       breton  i agree&lt;br /&gt;
10:00:34   paroneayea  ok :)&lt;br /&gt;
10:00:40       breton  lets drop the project&lt;br /&gt;
10:00:53   paroneayea  also, one more thing&lt;br /&gt;
10:01:06   paroneayea  is there any reason not to generalize multiple quality types?&lt;br /&gt;
10:01:18   paroneayea  eg, multiple image quality, multiple audio quality&lt;br /&gt;
10:01:20   paroneayea  all seems related.&lt;br /&gt;
10:01:27   paroneayea  just thinkin&#039; out loud here.&lt;br /&gt;
10:01:45       breton  weeeell&lt;br /&gt;
10:01:55       breton  multiple audio qualities -- meh&lt;br /&gt;
10:02:10       breton  maybe just 2 -- high-quality and low-quality&lt;br /&gt;
10:02:26       breton  well actually yes&lt;br /&gt;
10:02:30       breton  this could be a thing&lt;br /&gt;
10:03:23       breton  i am now thinking how i would do this project&lt;br /&gt;
10:05:36       ayleph  totally different subject just popped into my head, but isn&#039;t there some issue with celery &lt;br /&gt;
                       moving forward? is this something that we could turn into a project?&lt;br /&gt;
10:05:56   paroneayea  ayleph: yes... so our Celery stuff is kind of a mess&lt;br /&gt;
10:05:59       ayleph  i seem to recall celery 4 dropped support for something that we need&lt;br /&gt;
10:06:19   paroneayea  it dropped our crappy default solution that used an sqlite database as a message queue ;)&lt;br /&gt;
10:06:24   paroneayea  I think we agreed to move to RabbitMQ&lt;br /&gt;
10:06:28       ayleph  oh okay&lt;br /&gt;
10:06:45   paroneayea  this might not be that big of a project, not sure if it&#039;s a whole summer&#039;s worth, but it needs &lt;br /&gt;
                       to be done&lt;br /&gt;
10:08:23       breton  ++&lt;br /&gt;
10:09:17       breton  maybe it will be done as part of multiple audio qualities&lt;br /&gt;
10:09:19   paroneayea  (also, if the chunked upload stuff really is ready, why haven&#039;t we merged it? :)  probably my &lt;br /&gt;
                       fault...)&lt;br /&gt;
10:09:32   paroneayea  too bad &amp;quot;odds and ends&amp;quot; style GSoC&#039;s never seem to work out&lt;br /&gt;
10:09:59       breton  because the project requires priorities in video transcoding&lt;br /&gt;
10:10:19       breton  paroneayea: i will think about generalizing the qualities&lt;br /&gt;
10:10:42       breton  we are 10 minutes out of our time and i need to go :)&lt;br /&gt;
10:11:18       breton  thanks everyone for coming&lt;br /&gt;
10:11:25   paroneayea  yes, time to wrap up&lt;br /&gt;
10:11:43   paroneayea  #endmeeting ;)&lt;br /&gt;
10:11:44       breton  #endmeeting&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ayleph</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=Meeting&amp;diff=1897</id>
		<title>Meeting</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=Meeting&amp;diff=1897"/>
		<updated>2017-03-04T19:19:55Z</updated>

		<summary type="html">&lt;p&gt;Ayleph: link to Mar 4 2017 meeting log&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== MediaGoblin Monthly Meeting ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;When:&#039;&#039;&#039; 9:00 am Pacific Time first Saturday of the month. [http://www.timeanddate.com/worldclock/converter.html Convert time to your timezone].  Print current UTC time: &amp;lt;code&amp;gt;date -u +&amp;quot;It&#039;s %F %T UTC&amp;quot;&amp;lt;/code&amp;gt;.  [https://en.wikipedia.org/wiki/Daylight_saving_time_in_the_United_States#2005_revision_to_dates_of_observance Pacific Time in 2014 has DST between March 9th and November 2nd].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Where:&#039;&#039;&#039; IRC #mediagoblin on irc.freenode.net&lt;br /&gt;
&lt;br /&gt;
Always announced several days in advance on the [http://lists.mediagoblin.org/pipermail/devel/ mailing list] as is date adjustments, agenda discussion and other meeting preparation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Purpose:&#039;&#039;&#039; The idea is to discuss the past month, what happened, what was good, what should be done better. And to create roadmap for the upcoming month and assign tasks to people willing to handle them.&lt;br /&gt;
&lt;br /&gt;
Typical Agenda topics:&lt;br /&gt;
&lt;br /&gt;
* What happened in the last month, what was good, what could be better next time?&lt;br /&gt;
* What should be done next month?&lt;br /&gt;
&lt;br /&gt;
Meetings are logged. See below for logs of each meeting.&lt;br /&gt;
&lt;br /&gt;
== Next Meeting ==&lt;br /&gt;
&lt;br /&gt;
Every first Saturday of the month with JIT-compiled agenda.&lt;br /&gt;
&lt;br /&gt;
=== April 1, 2017 ===&lt;br /&gt;
&lt;br /&gt;
== Past Meetings ==&lt;br /&gt;
&lt;br /&gt;
=== March 4, 2017, 9:00AM Pacific Time, 17:00 UTC ===&lt;br /&gt;
* Federation and ActivityPub progress&lt;br /&gt;
* GSoC&lt;br /&gt;
&lt;br /&gt;
[[20170304_Log]]&lt;br /&gt;
&lt;br /&gt;
=== Oct 1, 2016 ===&lt;br /&gt;
&lt;br /&gt;
=== Sept 4, 2016, 17:00 UTC ===&lt;br /&gt;
&lt;br /&gt;
[[20160904_Log]]&lt;br /&gt;
&lt;br /&gt;
=== May 7, 2016 ===&lt;br /&gt;
&lt;br /&gt;
=== April 2, 2016, 17:00 UTC ===&lt;br /&gt;
* 0.9.0 release (done!)&lt;br /&gt;
* GSoC&lt;br /&gt;
* 1.0&lt;br /&gt;
&lt;br /&gt;
[[20160402_Log]]&lt;br /&gt;
&lt;br /&gt;
=== March 5, 2016, 9:00AM Pacific Time, 17:00 UTC ===&lt;br /&gt;
* 0.9.0 release (imminent!)&lt;br /&gt;
* GSoC&lt;br /&gt;
** Project ideas&lt;br /&gt;
** Interested mentors?&lt;br /&gt;
* Federation mini-update&lt;br /&gt;
&lt;br /&gt;
[[20160305_Log]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== February 6, 2016, 9:00AM Pacific Time, 17:00 UTC ===&lt;br /&gt;
&lt;br /&gt;
* Continuous integration / Commit Notifications&lt;br /&gt;
* Move sqlite to development-only? (no more migrations)&lt;br /&gt;
* Upcoming 0.9.0 release&lt;br /&gt;
* Path to 1.0&lt;br /&gt;
* Stripe retreat update&lt;br /&gt;
* ActivityPub update (related!)&lt;br /&gt;
* GSOC ideas, and volunteers?&lt;br /&gt;
&lt;br /&gt;
[[20160206_Log]]&lt;br /&gt;
&lt;br /&gt;
=== January 2, 2016, 9:00AM Pacific Time, 17:00 UTC ===&lt;br /&gt;
&lt;br /&gt;
* 0.9.0&lt;br /&gt;
* FOSDEM&lt;br /&gt;
* 0.8.2&lt;br /&gt;
[[20160102_Log]]&lt;br /&gt;
&lt;br /&gt;
=== November 7, 2015, 9:00AM Pacific Time, 17:00 UTC ===&lt;br /&gt;
&lt;br /&gt;
* 0.8.1 and 0.9.0&lt;br /&gt;
* Activipy and W3C Social WG stuff&lt;br /&gt;
* Help squash bugs!&lt;br /&gt;
* Revisiting the code / issue hosting situation??&lt;br /&gt;
&lt;br /&gt;
=== March 7, 2015, 09:00AM Pacific Time, 17:00 UTC ===&lt;br /&gt;
&lt;br /&gt;
* Moving off of gitorious, to?&lt;br /&gt;
* 0.8.0 upcoming release&lt;br /&gt;
* LibrePlanet and W3C meeting&lt;br /&gt;
* GSoC 2015&lt;br /&gt;
* Heads up: UserOps list&lt;br /&gt;
* Federation status&lt;br /&gt;
* Chris to take a temporary break?&lt;br /&gt;
&lt;br /&gt;
=== December 6, 2014, 09:00AM Pacific Time, 17:00 UTC ===&lt;br /&gt;
&lt;br /&gt;
* 0.8.0 upcoming release&lt;br /&gt;
** Current state (including looking at issue list)&lt;br /&gt;
** How to help!&lt;br /&gt;
*** Help us [https://issues.mediagoblin.org/query?status=new&amp;amp;status=in_progress&amp;amp;status=accepted&amp;amp;status=review&amp;amp;group=status&amp;amp;milestone=0.8.0 fix issues!]&lt;br /&gt;
*** Documentation (check it!  improve it!)&lt;br /&gt;
*** Gstreamer 1.0 merge?&lt;br /&gt;
*** Help test!&lt;br /&gt;
*** Translate? (Maybe, but maybe not yet?)&lt;br /&gt;
* Translation talk, if breton is around&lt;br /&gt;
* Update on federation&lt;br /&gt;
* Update on W3C group&lt;br /&gt;
&lt;br /&gt;
=== November 1, 2014, 09:00AM Pacific Time, 16:00 UTC&amp;lt;!-- change to 17:00 for December 2014 --&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Loose meeting structure :)&lt;br /&gt;
&lt;br /&gt;
=== October 4, 2014, 09:00AM Pacific Time, 16:00 UTC&amp;lt;!-- change to 17:00 for December 2014 --&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
* 0.8.0 progress&lt;br /&gt;
** Python 3 is in!&lt;br /&gt;
** Cleanup happening&lt;br /&gt;
** What&#039;s next&lt;br /&gt;
*** Gstreamer 1.0 merge&lt;br /&gt;
*** Search merge&lt;br /&gt;
*** [https://issues.mediagoblin.org/query?status=new&amp;amp;status=in_progress&amp;amp;status=accepted&amp;amp;status=review&amp;amp;group=status&amp;amp;milestone=0.8.0 Tickets!]&lt;br /&gt;
* Autoconf update&lt;br /&gt;
* Breton&#039;s translation update&lt;br /&gt;
* Federation update&lt;br /&gt;
* Deployment research update&lt;br /&gt;
* Add your things!&lt;br /&gt;
&lt;br /&gt;
=== September 6, 2014, 09:00AM Pacific Time, 16:00 UTC&amp;lt;!-- change to 17:00 for December 2014 --&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
* Things happened! Horray!&lt;br /&gt;
** 0.7.0 is out!&lt;br /&gt;
** GSoC is done!&lt;br /&gt;
* Transifex move... help!&lt;br /&gt;
* 0.8.0 planning&lt;br /&gt;
* Updates on federation&lt;br /&gt;
* Updates on campaign-todo-items&lt;br /&gt;
* Premium hosting and deployment&lt;br /&gt;
* Documentation updates ( j1mc )&lt;br /&gt;
* Triage day!  And the [https://etherpad.mozilla.org/gmg-triage new setup]!&lt;br /&gt;
* Help on reviewing?&lt;br /&gt;
* Epicanis&#039; feature questions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== August 2, 2014, 09:00AM Pacific Time, 16:00 UTC&amp;lt;!-- change to 17:00 for December 2014 --&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
* GSoC updates&lt;br /&gt;
* State of 0.7.0&lt;br /&gt;
* State of Federation&lt;br /&gt;
* State of post-campaign stuff (rewards, etc)&lt;br /&gt;
* General community updates&lt;br /&gt;
* Feedback: how are things going?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== June 7, 2014, 09:00AM Pacific Time, 16:00 UTC&amp;lt;!-- change to 17:00 for December 2014 --&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
* GSoC updates&lt;br /&gt;
* Researchcation brief summary&lt;br /&gt;
* Campaign-related updates&lt;br /&gt;
* Upcoming release&lt;br /&gt;
* Code reviews&lt;br /&gt;
&lt;br /&gt;
=== May 3, 2014, 09:00AM Pacific Time, 16:00 UTC&amp;lt;!-- change to 17:00 for December 2014 --&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
* GSoC starts!&lt;br /&gt;
* Post campaign updates!&lt;br /&gt;
** Horray, we did it!&lt;br /&gt;
** Unlocked features&lt;br /&gt;
** The rewards&lt;br /&gt;
** Premium hosting brainstorm&lt;br /&gt;
** Extra features brainstorm&lt;br /&gt;
* [http://lists.mediagoblin.org/pipermail/devel/2014-May/000867.html Metadata] discussion&lt;br /&gt;
* Chris&#039; researchcation&lt;br /&gt;
** Federation stuff&lt;br /&gt;
** Deployment stuff&lt;br /&gt;
** Other stuff?&lt;br /&gt;
* Help review!&lt;br /&gt;
* Add your items HERE!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== March 1st, 2014, 09:00AM Pacific Time, 17:00 UTC&amp;lt;!-- change to 16:00 for April-November 2014; then to 17:00 for December 2014 --&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
* GSoC&lt;br /&gt;
* The [http://mediagoblin.org/pages/campaign.html crowdfunding campaign!]&lt;br /&gt;
** State of things / Q &amp;amp; A&lt;br /&gt;
** You can help!&lt;br /&gt;
* MediaGoblin in the meanwhile&lt;br /&gt;
&lt;br /&gt;
=== November 2nd, 2013, 09:00AM Pacific Time, 16:00 UTC ===&lt;br /&gt;
&lt;br /&gt;
Pretty loose on the schedule this month? :)&lt;br /&gt;
&lt;br /&gt;
* Post-conference wrapup stuff?&lt;br /&gt;
* What&#039;s ahead in the next year for MediaGoblin?&lt;br /&gt;
&lt;br /&gt;
=== October 5th, 2013, 09:00AM Pacific Time, 16:00 UTC ===&lt;br /&gt;
&lt;br /&gt;
* Post-OPW/GSoC wrapup discussion &lt;br /&gt;
* Huge pile of code to review&lt;br /&gt;
* Planning out 0.6.0&lt;br /&gt;
* Road to 1.0&lt;br /&gt;
* mediagoblin.org changes&lt;br /&gt;
* GNU 30th recap, upcoming conferences&lt;br /&gt;
* MediaGoblin&#039;s graphic design?&lt;br /&gt;
&lt;br /&gt;
=== September 7th, 2013 ===&lt;br /&gt;
&lt;br /&gt;
* 0.5.0 release recap!&lt;br /&gt;
* Next release: 0.6.0!&lt;br /&gt;
* GSoC/OPW updates&lt;br /&gt;
* Review queue that needs attention&lt;br /&gt;
* GNU 30th! (and traveling)&lt;br /&gt;
* Other things???&lt;br /&gt;
&lt;br /&gt;
=== August 3rd, 2013 9:00 am Pacific Time (2013-08-03 16:00 UTC) ===&lt;br /&gt;
&lt;br /&gt;
* Configure &amp;amp;&amp;amp; make merge&lt;br /&gt;
* 0.5.0 plans&lt;br /&gt;
* GSoC / OPW updates&lt;br /&gt;
* GNU 30th birthday party / GoblinCon? :)&lt;br /&gt;
* Documentation overhaul&lt;br /&gt;
* Reprocessing&lt;br /&gt;
* Bonus topics&lt;br /&gt;
** Mumble server&lt;br /&gt;
** XUDD&lt;br /&gt;
&lt;br /&gt;
=== July 6th, 2013 9:00 am Pacific Time (2013-07-06 16:00 UTC) ===&lt;br /&gt;
&lt;br /&gt;
* 0.4.0 is out! On to 0.4.1!&lt;br /&gt;
* OPW/GSoC update&lt;br /&gt;
* Federation status&lt;br /&gt;
* Module owners (and reducing the &amp;quot;Chris Webber bottleneck&amp;quot;)?&lt;br /&gt;
** Projects like Blender, the Linux Kernel, and qemu have &amp;quot;module owners&amp;quot;, people responsible for a domain of the code&lt;br /&gt;
** Could/should MediaGoblin do the same?&lt;br /&gt;
** How would that be broken up?&lt;br /&gt;
&lt;br /&gt;
=== Jun 1st, 2013 9:00 am Pacific Time (2013-06-01 16:00 UTC) ===&lt;br /&gt;
&lt;br /&gt;
* Welcoming our GSoC and OPW interns&lt;br /&gt;
* The coming 0.4.0&lt;br /&gt;
* What&#039;s after 0.4.0?&lt;br /&gt;
* RTL&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== May 4th, 2013, 9:00 am Pacific Time (2013-05-04 16:00 UTC) ===&lt;br /&gt;
&lt;br /&gt;
[[meeting-2013-05-04|May 4th, 2013, 9:00 am Pacific Time (2013-05-04 16:00 UTC)]]&lt;br /&gt;
&lt;br /&gt;
* GSOC and Gnome Outreach for Women participation update&lt;br /&gt;
* Mention the bug triage meeting&lt;br /&gt;
* Improving our unit tests?&lt;br /&gt;
* 0.4.0 release coming soon&lt;br /&gt;
* Help review code?&lt;br /&gt;
* Thanking simonft for sysadmin help!&lt;br /&gt;
&lt;br /&gt;
=== April 6, 2013, 9:00 am Pacific Time (2013-03-30 16:00 UTC) ===&lt;br /&gt;
&lt;br /&gt;
* Plugins update&lt;br /&gt;
* Post-libreplanet sprint merging&lt;br /&gt;
* Gstreamer 1.0 stuff (if Joar is here!)&lt;br /&gt;
* GSOC and Gnome Outreach for Women participation&lt;br /&gt;
* ???&lt;br /&gt;
&lt;br /&gt;
=== March 2nd, 2013, 9:00 am Pacific Time (2013-03-02 16:00 UTC) ===&lt;br /&gt;
&lt;br /&gt;
* Bug triage day discussion&lt;br /&gt;
* Upgrading Trac to 1.0&lt;br /&gt;
* Next release: 0.3.3&lt;br /&gt;
* Consider have release dates?&lt;br /&gt;
* Plugin stystem&lt;br /&gt;
* Consider moving to GStreamer 1.0&lt;br /&gt;
** Debian - 1.0 in sid&lt;br /&gt;
** Ubuntu - 1.0 in 12.10&lt;br /&gt;
*** Possibly backports for 12.04&lt;br /&gt;
** Fedora - 1.0 in 18&lt;br /&gt;
* Upcoming conferences and hackathons&lt;br /&gt;
&lt;br /&gt;
=== February 9th, 2013, 9:00 am Pacific Time (2013-02-09 16:00 UTC) ===&lt;br /&gt;
&lt;br /&gt;
* 0.3.3 milestone!  What about our next release? :)&lt;br /&gt;
* Where to put Developer docs?&lt;br /&gt;
*: Our Documentation for developers is currently a bit split. Some are on the wiki, some in the main docs. There are pros and cons for both. We should consider where to put things. One place? Which? Or decide on an individual basis?&lt;br /&gt;
*: Good about main docs: Easy to integrate source code doc strings. That way internal api docs can be kept mostly up to date.&lt;br /&gt;
*: Good about wiki: Doesn&#039;t feel so &amp;quot;set in stone&amp;quot;.&lt;br /&gt;
* wiki spam: Do we want to change something?&lt;br /&gt;
* [http://lists.mediagoblin.org/pipermail/devel/2012-November/000307.html Designing features!]&lt;br /&gt;
* Plugins, and architecting for plugins&lt;br /&gt;
* Chris Webber gives updates on how he&#039;s settling into his role ;)&lt;br /&gt;
&lt;br /&gt;
=== October 13th, 2012, 9:00 am Pacific Time (2012-10-13 16:00 UTC) ===&lt;br /&gt;
&lt;br /&gt;
* 0.3.2 release&lt;br /&gt;
** What existing features need to be wrapped up?&lt;br /&gt;
*** Werkzeug switch&lt;br /&gt;
** What time might we do the release?&lt;br /&gt;
* Fundraising campaign&lt;br /&gt;
** Keeping things going mid-campaign&lt;br /&gt;
** You have questions?  I have answers, kinda :)&lt;br /&gt;
* Getting new contributors involved&lt;br /&gt;
* Plugins?  New features?&lt;br /&gt;
&lt;br /&gt;
==== Etherpad ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
AGENDA&lt;br /&gt;
&lt;br /&gt;
     0.3.2 release &lt;br /&gt;
&lt;br /&gt;
     What existing features need to be wrapped up? &lt;br /&gt;
&lt;br /&gt;
     Werkzeug switch &lt;br /&gt;
&lt;br /&gt;
     What time might we do the release? &lt;br /&gt;
&lt;br /&gt;
    Congrats to Deb from the mediagoblin team! Congrats de Deb!&lt;br /&gt;
&lt;br /&gt;
     Fundraising campaign &lt;br /&gt;
&lt;br /&gt;
     Keeping things going mid-campaign &lt;br /&gt;
&lt;br /&gt;
     You have questions?  I have answers, kinda :) &lt;br /&gt;
&lt;br /&gt;
     Getting new contributors involved &lt;br /&gt;
&lt;br /&gt;
     Plugins?  New features? &lt;br /&gt;
&lt;br /&gt;
-- http://wiki.mediagoblin.org/Meeting#Next_Meeting&lt;br /&gt;
Fundraising stuff&lt;br /&gt;
Things are going great mostly when people check it out!&lt;br /&gt;
But how to spread the word?&lt;br /&gt;
&lt;br /&gt;
    should contact more podcasts, etc&lt;br /&gt;
&lt;br /&gt;
    currently working with FSF on this&lt;br /&gt;
&lt;br /&gt;
    need community to spread the word!&lt;br /&gt;
&lt;br /&gt;
    List of places already spreaded list and contacted&lt;br /&gt;
&lt;br /&gt;
VideoThumbnailerMarkII&lt;br /&gt;
New video thumbnailer, rewritten to try to eliminate a bug in the old one where processing would stall.&lt;br /&gt;
New bugs introduce (of course ;)&lt;br /&gt;
Collections&lt;br /&gt;
Merged - Thanks aaronw!&lt;br /&gt;
WebOb =&amp;gt; Werkzeug switch&lt;br /&gt;
Made some things break. Need help with testing + bugfixes&lt;br /&gt;
borked stuffs:&lt;br /&gt;
&lt;br /&gt;
    Accessing paths without trailing slashes, e.g. /submit (instead of /submit/)&lt;br /&gt;
&lt;br /&gt;
    Still a lot of legacy WebOb responses (such as webob.exc.HTTPFound() HTTPForbidden() left)&lt;br /&gt;
&lt;br /&gt;
API&lt;br /&gt;
Delivered to mrn.is, tryggvib will test it and get back with feedback.&lt;br /&gt;
Working, still a lot of room for improvements.&lt;br /&gt;
Mostly done, usable, still room for improvements. Example applications:&lt;br /&gt;
&lt;br /&gt;
    https://github.com/jwandborg/automgtic&lt;br /&gt;
&lt;br /&gt;
    https://github.com/jwandborg/omgmg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== September 1st, 2012, 9:00 am Pacific Time (2012-09-01 16:00 UTC) ===&lt;br /&gt;
&lt;br /&gt;
[http://mediagoblin.org/irclogs/irc_meeting_2012-09-01.txt IRC log]&lt;br /&gt;
&lt;br /&gt;
* FIXME - can someone type in summary here?&lt;br /&gt;
&lt;br /&gt;
=== August 4th, 2012, 9:00 am Pacific Time (2012-08-04 16:00 UTC) ===&lt;br /&gt;
&lt;br /&gt;
[http://mediagoblin.org/irclogs/irc_meeting_2012-08-04.txt IRC log]&lt;br /&gt;
&lt;br /&gt;
* Release schedule&lt;br /&gt;
* Plugins and themes! Who&#039;s working on one? What problems are you having? -- Please write up issues for problems so they can get fixed!&lt;br /&gt;
* Should we namespace plugins? If so, how should we namespace plugins?&lt;br /&gt;
** Python 3.3 will have support for namespace plugins. [http://www.python.org/dev/peps/pep-0420/#namespace-packages-today]&lt;br /&gt;
** In Python &amp;gt;=2.3, &amp;lt;3.3 it&#039;s a hack [http://www.python.org/dev/peps/pep-0402/#the-problem][http://www.python.org/dev/peps/pep-0420/#namespace-packages-today]&lt;br /&gt;
** Flask has a workaround[https://github.com/mitsuhiko/flask/blob/master/flask/ext/__init__.py]&lt;br /&gt;
&lt;br /&gt;
=== July 7th, 2012, 9:00 am Pacific Time (2012-07-07 16:00 UTC) ===&lt;br /&gt;
&lt;br /&gt;
[http://mediagoblin.org/irclogs/irc_meeting_2012-07-07.txt IRC log]&lt;br /&gt;
&lt;br /&gt;
Announcements:&lt;br /&gt;
&lt;br /&gt;
* Anyone who wants to edit the wiki needs to be in the goblin army group. Ask Will or Chris to get added.&lt;br /&gt;
* Plugin infrastructure landed. If you&#039;re interested in writing plugins, talk to Will. Some documentation at http://docs.mediagoblin.org/#part-2-plugin-writer-s-guide&lt;br /&gt;
&lt;br /&gt;
Agenda:&lt;br /&gt;
&lt;br /&gt;
* Keyboard shortcuts ([http://issues.mediagoblin.org/ticket/346 #346])&lt;br /&gt;
* Ticket triaging?&lt;br /&gt;
* Base plugin stuff!&lt;br /&gt;
* Theming&lt;br /&gt;
* Conference: OSCON&lt;br /&gt;
* Chris Webber&#039;s new &amp;quot;office hours&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== June 2nd, 2012, 9:00 am Pacific Time ===&lt;br /&gt;
&lt;br /&gt;
[http://mediagoblin.org/irclogs/irc_meeting_2012-06-02.txt IRC log]&lt;br /&gt;
&lt;br /&gt;
* docs changes&lt;br /&gt;
** Will split the docs/ guide into a Site Administrator&#039;s Guide and a Plugin Writer&#039;s Guide&lt;br /&gt;
** Has anyone looked at the Plugin Writer&#039;s Guide, yet?&lt;br /&gt;
** Will wants to add a &amp;quot;Contributor&#039;s Guide&amp;quot; to docs/ which he&#039;d update from the wiki before every release&lt;br /&gt;
* Is there a way to improve our unit tests and motivation to write them?&lt;br /&gt;
** Simulating a browser by the way of [http://phantomjs.org/ PhantomJS], [http://seleniumhq.org/ Selenium] instead of having code simulating other code against itself might be more natural to write and even more testing the actual application. I have a good feeling about this, please prove me wrong if I&#039;d be. --[[User:Joar|Joar]] 08:53, 28 May 2012 (EDT)&lt;br /&gt;
* Administrative panel/tools and user uploads panel&lt;br /&gt;
* Git and tickets &lt;br /&gt;
* Plugins&lt;br /&gt;
** What&#039;s the state of things?&lt;br /&gt;
** Documentation&lt;br /&gt;
** What plugins might we want to build for this upcoming release?&lt;br /&gt;
** What things do we currently have that we might want to pluginify?&lt;br /&gt;
* State of kuneco/federation mini-update (Chris)&lt;br /&gt;
&lt;br /&gt;
=== May 5th, 2012, 9:00 am Pacific Time ===&lt;br /&gt;
&lt;br /&gt;
[http://mediagoblin.org/irclogs/irc_meeting_2012-05-05.txt IRC log]&lt;br /&gt;
&lt;br /&gt;
* Post-release reflections&lt;br /&gt;
** Woohoo, release!&lt;br /&gt;
** How did this release process go?&lt;br /&gt;
*** We should talk about that conference.&lt;br /&gt;
** What&#039;s left to clean up?&lt;br /&gt;
*** Mongokit-&amp;gt;SQL &amp;quot;style&amp;quot; query conversion?&lt;br /&gt;
*** Other cruft code?&lt;br /&gt;
* What are our next goals?&lt;br /&gt;
** Plugins&lt;br /&gt;
** Federation&lt;br /&gt;
** Favoriting&lt;br /&gt;
*** Take that, Pinterest! ;)&lt;br /&gt;
** Galleries&lt;br /&gt;
** Theming&lt;br /&gt;
*** Using sass would be neat&lt;br /&gt;
** Access restrictions&lt;br /&gt;
*** User management, or having a &amp;quot;secret url&amp;quot; that is not in the photo index that you can share with friends and generate as needed for any media type&lt;br /&gt;
** What about traffic? Some of us will host GMG on limited plans.&lt;br /&gt;
** Some kind of coding guidelines? Do we have a philosophy like &amp;quot;Keep it Simple, Stupid&amp;quot;&lt;br /&gt;
*** This concerns things like: Should plugins land in core eventually, do we want to support ALL THE MEDIA TYPES, ...&lt;br /&gt;
** Podcasting support?&lt;br /&gt;
** Things that have been hanging???&lt;br /&gt;
** Bugtrackers and milestone?&lt;br /&gt;
** More??? We should organize things!&lt;br /&gt;
* jancborchardt and his team of UX wizard-students&lt;br /&gt;
* Website redesign&lt;br /&gt;
* OpenShift?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== April 7th, 2012, 4:00 pm UTC ===&lt;br /&gt;
&lt;br /&gt;
[http://mediagoblin.org/irclogs/irc_meeting_2012-04-07.txt IRC log]&lt;br /&gt;
&lt;br /&gt;
* Post-SQL stuff&lt;br /&gt;
* Pending 0.0.3 release!&lt;br /&gt;
* Are there stray patches/branches to be merged?&lt;br /&gt;
* Our glorious upcoming plugin future! (Update from Will)&lt;br /&gt;
&lt;br /&gt;
=== March 3rd, 2012, 9:00 am Pacific Time ===&lt;br /&gt;
&lt;br /&gt;
[http://mediagoblin.org/irclogs/irc_meeting_2012-03-03.txt IRC log]&lt;br /&gt;
&lt;br /&gt;
* [[GSOC 2012]]&lt;br /&gt;
* State of the SQL transition (preview: it&#039;s super close, but we need help!)&lt;br /&gt;
* Plugin discussion (Will can&#039;t make this, but we should talk about use cases)&lt;br /&gt;
* MediaGoblin at upcoming conferences&lt;br /&gt;
* PageKite accounts&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2012-02 (held on 2012-02-04) ===&lt;br /&gt;
&lt;br /&gt;
[http://mediagoblin.org/irclogs/irc_meeting_2012-02-04.txt IRC log]&lt;br /&gt;
&lt;br /&gt;
* Code style guide?  See also: http://issues.mediagoblin.org/ticket/197&lt;br /&gt;
* Kuneco/federation&lt;br /&gt;
* API&lt;br /&gt;
* More testing discussion?&lt;br /&gt;
* Theming?&lt;br /&gt;
* Preliminary plugin discussion&lt;br /&gt;
* Status update from the &amp;quot;SQL Team&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Some of the decisions:&lt;br /&gt;
&lt;br /&gt;
* file an issue about proper &amp;amp;lt;audio&amp;amp;gt; support.&lt;br /&gt;
* some TODOs recorded&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2011-12 (held on 2011-12-03) ===&lt;br /&gt;
&lt;br /&gt;
[http://mediagoblin.org/irclogs/irc_meeting_2011-12-03.txt IRC log]&lt;br /&gt;
&lt;br /&gt;
* We plan to create a plugin system.  Do we want to create that soon or push it off until things settle a bit more?  ([[User:Willkg|Willkg]] 08:54, 10 November 2011 (EST))&lt;br /&gt;
* [[Feature Ideas]]: What should we do about the wiki page? Keep it and have it as a monthly topic for &amp;quot;what next&amp;quot;? Convert everything to long waiting bugs?&lt;br /&gt;
* Possibility of an [[SQL Database Backend]]?&lt;br /&gt;
*: &#039;executive summary&#039; (well, you should read the long docs): &amp;quot;We could move to sql. It&#039;s probably replacing one type of pain by another type of pain, but those are somewhat comparable. Leaving the main question: Do we want to occupy our main devs for some long time with this task and loose momentum?&amp;quot;&lt;br /&gt;
* Schendje&#039;s [http://wiki.mediagoblin.org/Feature_Ideas/Activities activities proposal]&lt;br /&gt;
* &amp;quot;Coming up next&amp;quot; blogpost draft by Deb Nicholson&lt;br /&gt;
* Jef&#039;s requests:&lt;br /&gt;
** Ticket #466 &amp;quot;Use of &amp;quot;Submit&amp;quot; in site copy is sterile and not as friendly and welcoming as it could be&amp;quot;. I&#039;d really like to change this soon to something more suitable. How can we improve the wording here? Some alternatives have been mentioned in the bug report, but which one should we pick? Link: http://bugs.foocorp.net/issues/466&lt;br /&gt;
** The concept and naming of &amp;quot;favourites&amp;quot;. We&#039;ll (hopefully) be able to &amp;quot;favourite&amp;quot; media soon, which I *think* means that 1) it&#039;ll work like a &amp;quot;I like this&amp;quot; comment, a quick token of appreciation, 2) it&#039;ll be added to your list of favourites so you can save and promote it, and 3) we could maybe use the number of favourites as a ranking. What I&#039;d like to know is: is that the intended purpose? If so, should we name them favo(u)rites or something else? &amp;quot;Like&amp;quot;, &amp;quot;love&amp;quot;, &amp;quot;save&amp;quot;, &amp;quot;appreciate&amp;quot;, &amp;quot;heart&amp;quot;, &amp;quot;high five&amp;quot; and many more could all be contenders. And the name should be consistent with the action and purpose, of course. So I&#039;d like to clear up how and why we will use favourites and what we should call them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2011-11 (held on 2011-11-05) ===&lt;br /&gt;
&lt;br /&gt;
[http://mediagoblin.org/irclogs/irc_meeting_2011-11-05.txt IRC log]&lt;br /&gt;
&lt;br /&gt;
* What happened in the last month, what was good, what could be better next time?&lt;br /&gt;
** Release:&lt;br /&gt;
*** Good: 0.1.0 released!&lt;br /&gt;
*** Bad: postponing vs not postponing&lt;br /&gt;
** Sites and deployment documentation:&lt;br /&gt;
*** Good: new mediagoblin.org&lt;br /&gt;
*** Good: deployment documentation&lt;br /&gt;
*** Bad: py-bcrypt’s site was down just after the release, so the virtualenv deployment didn’t work, and it wasn’t clear how to fix it.&lt;br /&gt;
** Live instances:&lt;br /&gt;
*** Joar has a live instance!&lt;br /&gt;
*** But what does it mean? Should ordinary users start using it?&lt;br /&gt;
**** Details at [[User:Joar/mg.wandborg.se]] -- [[User:Joar|Joar]] 17:01, 6 November 2011 (EST)&lt;br /&gt;
*** nyergler added a note about &amp;quot;heartbeat&amp;quot;/status to API notes&lt;br /&gt;
* What should be done next month?&lt;br /&gt;
* Starting real work on federation (via OStatus)... and do we split any of this work out into its own library?&lt;br /&gt;
* An API&lt;br /&gt;
* Creative Commons licensing tools&lt;br /&gt;
* Merging in the multimedia/video branch&lt;br /&gt;
*: (this is *very close* already actually thanks to the hard work of Joar Wandborg!  But we need some help on the gstreamer front to fix a few issues... if you or someone you know is an expert in this area we could really use their help to make the videos that come out smoother!)&lt;br /&gt;
* Rollover items from 0.1.0&lt;br /&gt;
* Multiple file upload interface&lt;br /&gt;
* Drag and drop uploads interface (probably related!)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2011-10 (held on 2011-10-01) ===&lt;br /&gt;
&lt;br /&gt;
[http://mediagoblin.org/irclogs/irc_meeting_2011-10-01.txt IRC log]&lt;br /&gt;
&lt;br /&gt;
This month&#039;s meeting was a quickly announced short meeting. The project is getting back on track and next month&#039;s meeting will be scheduled more properly. A bunch of people were around.&lt;br /&gt;
&lt;br /&gt;
The most important decisions:&lt;br /&gt;
* The project will keep monthly releases. They&#039;re the heartbeat of the project.&lt;br /&gt;
* Release 0.1.0 this sunday/monday.&lt;br /&gt;
* New website will hopefully be deployed in the next few days.&lt;br /&gt;
* And the following things are planned to happen during this month: Most importantly federation. The developers have decided to make up their minds on what federation aactually should mean for MediaGoblin. Concerning code, probably &amp;quot;activity streams&amp;quot; are the first goal. If there is no (good) python library for this, a new stand alone library may be created. If so, a name for it has to be found. It should have something about communication in it. And the other thing to happen during this month is an ongoing discussion about &amp;quot;bus factor&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2011-09 (held on 2011-09-03) ===&lt;br /&gt;
&lt;br /&gt;
[http://mediagoblin.org/irclogs/irc_meeting_2011-09-03.txt IRC log]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2011-08 (held on 2011-08-06) ===&lt;br /&gt;
&lt;br /&gt;
[http://mediagoblin.org/irclogs/irc_meeting_2011-08-06.txt IRC log]&lt;/div&gt;</summary>
		<author><name>Ayleph</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=20170304_Log&amp;diff=1896</id>
		<title>20170304 Log</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=20170304_Log&amp;diff=1896"/>
		<updated>2017-03-04T19:19:15Z</updated>

		<summary type="html">&lt;p&gt;Ayleph: Created page with &amp;quot;&amp;lt;pre&amp;gt; 09:02:40       breton  #startmeeting 09:02:48       breton  where is the bot? 09:03:03       breton  #startmeeting mediagoblin 09:03:11       breton  oh well 09:03:18   ...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
09:02:40       breton  #startmeeting&lt;br /&gt;
09:02:48       breton  where is the bot?&lt;br /&gt;
09:03:03       breton  #startmeeting mediagoblin&lt;br /&gt;
09:03:11       breton  oh well&lt;br /&gt;
09:03:18       ayleph  i haven&#039;t seen chaosgoblin in quite a while :&lt;br /&gt;
09:03:24   paroneayea  womp womp&lt;br /&gt;
09:03:33   paroneayea  well, we could record the log and just post it to the list ourselves&lt;br /&gt;
09:03:53       breton  hi everyone, welcome to our monthly meeting&lt;br /&gt;
09:03:59       breton  todays agenda&lt;br /&gt;
09:03:59   paroneayea  \o/&lt;br /&gt;
09:04:03       breton   - GSoC&lt;br /&gt;
09:04:16       breton  what else?&lt;br /&gt;
09:04:35   paroneayea   - Federation and ActivityPub progress&lt;br /&gt;
09:04:43   paroneayea  it ties in with at least one GSoC option&lt;br /&gt;
09:05:40   paroneayea  maybe we should do the federation / activitypub update first since it impacts the gsoc &lt;br /&gt;
                       discussion?  breton, wdyt?&lt;br /&gt;
09:06:26       breton  paroneayea: sounds good, go for it :)&lt;br /&gt;
09:06:29   paroneayea  ok :)&lt;br /&gt;
09:06:37   paroneayea  so let&#039;s open up with some Good News&lt;br /&gt;
09:07:29   paroneayea  ActivityPub relies on ActivityStreams, and ActivityStreams just got signed off to &amp;quot;go to PR&amp;quot;,  &lt;br /&gt;
                       ie &amp;quot;Proposed Recommendation&amp;quot;&lt;br /&gt;
09:07:51   paroneayea  ActivityStreams is our whole vocabulary, etc in ActivityPub, so this is good&lt;br /&gt;
09:07:58   paroneayea  PR means the group has spent a lonnnnnng time vetting the spec&lt;br /&gt;
09:08:13   paroneayea  and it&#039;s now ready to be sent to the w3c advisory committee to review&lt;br /&gt;
09:08:23   paroneayea  and hopefully make it an official spec&lt;br /&gt;
09:08:27   paroneayea  so that&#039;s good news \o/&lt;br /&gt;
09:09:29   paroneayea  in helping to make sure that we didn&#039;t have any important vocabulary dropped from the spec, we &lt;br /&gt;
                       had to prove implementation of all the terms, which means I&#039;ve done a TON of implementation of &lt;br /&gt;
                       ActivityStreams terms in Pubstrate, the ActivityPub testbed server I&#039;ve been working on&lt;br /&gt;
09:09:34   paroneayea  http://dustycloud.org/gfx/goodies/video-in-pubstrate.png look, video! :)&lt;br /&gt;
09:09:46   paroneayea  Pubstrate isn&#039;t doing anything like MediaGoblin&#039;s processing tooling&lt;br /&gt;
09:10:05   paroneayea  but it can read the metadata that MediaGoblin will publish once MediaGoblin supports ActivityPUb&lt;br /&gt;
09:10:32   paroneayea  so I already have a good idea of what that&#039;ll be &amp;quot;shaped&amp;quot; like once we switch MediaGoblin&#039;s &lt;br /&gt;
                       federation code over to ActivityPub&lt;br /&gt;
09:11:18   paroneayea  in the meanwhile, as for ActivityPub itself, it&#039;s still at Candidate Recommendation stage, &lt;br /&gt;
                       pre-CR.  The group got a 6 month extension for ActivityPub, but in order to meet that&lt;br /&gt;
09:12:00   paroneayea  we need implementation reports (the template for which I&#039;m just now about to merge &lt;br /&gt;
                       https://github.com/w3c/activitypub/pull/174#issuecomment-284131233 )&lt;br /&gt;
09:12:13   paroneayea  and we need a test suite implementations can test against&lt;br /&gt;
09:12:19   paroneayea  my whole next month will mostly be spent on that test suite.&lt;br /&gt;
09:12:42   paroneayea  after that&#039;s done, I&#039;ll be helping with MediaGoblin&#039;s switch over to ActivityPub, but the test &lt;br /&gt;
                       suite needs to happen first&lt;br /&gt;
09:12:50   paroneayea  so that&#039;s the update.&lt;br /&gt;
09:12:54   paroneayea  questions? :)&lt;br /&gt;
09:13:01       ayleph  when do you sleep?&lt;br /&gt;
09:13:36       ayleph  sounds like you&#039;ve been extremely busy, and very productive.&lt;br /&gt;
09:13:44   paroneayea  thanks ayleph :)  I appreciate that&lt;br /&gt;
09:13:49       breton  there should be more docs for dumb people like me&lt;br /&gt;
09:14:01       breton  or blogposts&lt;br /&gt;
09:14:14   paroneayea  breton: have you read the AP spec? https://www.w3.org/TR/activitypub/&lt;br /&gt;
09:14:24   paroneayea  we&#039;ve tried to make it fairly readable&lt;br /&gt;
09:14:54   paroneayea  breton: and yes I&#039;d like to do more blogposts, I haven&#039;t gotten to it yet&lt;br /&gt;
09:15:06       ayleph  i&#039;m really excite about that pubstrate screen shot with video&lt;br /&gt;
09:15:07       breton  paroneayea: yes. But it&#039;s 40 pages :(&lt;br /&gt;
09:15:38   paroneayea  though!  If you want a fun distraction &lt;br /&gt;
                       https://archive.org/details/feb_2017-live_network_coding_8sync&lt;br /&gt;
09:15:41   paroneayea  watch this after the meeting :)&lt;br /&gt;
09:15:52   paroneayea  it&#039;ll tie together the federation work with some other things ;)&lt;br /&gt;
09:15:56   paroneayea  that&#039;s not important though.  Okay!&lt;br /&gt;
09:16:03   paroneayea  any other questions, or on to GSoC?&lt;br /&gt;
09:16:18   paroneayea  ayleph: glad you&#039;re excited to see it... I was excited to get it working :)&lt;br /&gt;
09:16:53   paroneayea  ayleph: btw if you want a rendering of what that AS2 object is before it&#039;s rendered in fancy &lt;br /&gt;
                       HTML, I could pull it up...&lt;br /&gt;
09:17:22   paroneayea  no questions?  maybe we should move on to GSoC&lt;br /&gt;
09:17:35       breton  yes, lets move on&lt;br /&gt;
09:17:38   paroneayea  #topic GSoC&lt;br /&gt;
09:17:41   paroneayea  breton: why don&#039;t you lead this one&lt;br /&gt;
09:17:48       breton  GNU was accepted to GSoC&lt;br /&gt;
09:17:58       breton  we participate under GNU umbrella&lt;br /&gt;
09:18:36       breton  https://wiki.mediagoblin.org/GSOC_2017 -- is our GSoC page, please fix it if you see something &lt;br /&gt;
                       wrong there&lt;br /&gt;
09:19:26       breton  we have several students who contacted us early!&lt;br /&gt;
09:19:33   paroneayea  breton: cool :)&lt;br /&gt;
09:20:10       breton  so if some of them are here, we could talk about the projects&lt;br /&gt;
09:20:31   paroneayea  let&#039;s do it!&lt;br /&gt;
09:20:51       breton  one thing i wanted to discuss is access control project&lt;br /&gt;
09:21:04       breton  paroneayea: how do you see it tied with activitypub one?&lt;br /&gt;
09:21:22   paroneayea  breton: let&#039;s look at an example ActivityStreams object to see how!&lt;br /&gt;
09:21:26   paroneayea  let me pull it up, one sec&lt;br /&gt;
09:22:57   paroneayea  http://dpaste.com/1PDDHR3&lt;br /&gt;
09:23:00   paroneayea  here are two examples&lt;br /&gt;
09:23:14   paroneayea  taken from the ActivityPub document&lt;br /&gt;
09:23:41   paroneayea  you can see a couple of things: a) objects are nested, the first one shows that we are &lt;br /&gt;
                       Create&#039;ing a Note&lt;br /&gt;
09:24:09   paroneayea  usually a stream will consist of Activity related to an Object (by an Actor)&lt;br /&gt;
09:24:46   paroneayea  b) you&#039;ll notice that there&#039;s these fields for &amp;quot;to&amp;quot; or &amp;quot;cc&amp;quot; (and also &amp;quot;bcc&amp;quot; and &amp;quot;bto&amp;quot; in case &lt;br /&gt;
                       you don&#039;t want to disclose those recipients)&lt;br /&gt;
09:24:54   paroneayea  so we&#039;re sending things to those specific users&lt;br /&gt;
09:25:02   paroneayea  or even possibly to collections of users!&lt;br /&gt;
09:25:16   paroneayea    &amp;quot;to&amp;quot;: [&amp;quot;https://example.org/~john/&amp;quot;],&lt;br /&gt;
09:25:16   paroneayea    &amp;quot;cc&amp;quot;: [&amp;quot;https://example.com/~erik/followers&amp;quot;,&lt;br /&gt;
09:25:17   paroneayea           &amp;quot;https://www.w3.org/ns/activitystreams#Public&amp;quot;]&lt;br /&gt;
09:25:37   paroneayea  in this example, &amp;quot;example.org/~john&amp;quot; is an actor on the network&lt;br /&gt;
09:25:53   paroneayea  whereas &amp;quot;https://example.com/~erik/followers&amp;quot; is a collection of all the followers&lt;br /&gt;
09:26:10   paroneayea  &amp;quot;https://www.w3.org/ns/activitystreams#Public&amp;quot; is kind of a special meta-collection that says &lt;br /&gt;
                       &amp;quot;actually anyone can see this&amp;quot;&lt;br /&gt;
09:26:16   paroneayea  if we pretend the Public wasn&#039;t there&lt;br /&gt;
09:26:27   paroneayea  we&#039;d only want the original author, john, and erik&#039;s followers to read this&lt;br /&gt;
09:26:43   paroneayea  that implies some fine-grained access control on an object level&lt;br /&gt;
09:27:10   paroneayea  and indeed, for the Like by Mallory in Example 2, sarah and john presumably are the only people &lt;br /&gt;
                       who read it&lt;br /&gt;
09:27:21       breton  so like email&lt;br /&gt;
09:27:24   paroneayea  yes exactly.&lt;br /&gt;
09:27:35   paroneayea  so to and cc and etc are *primarily* used for delivery&lt;br /&gt;
09:27:40   paroneayea  but they also *imply* access control.&lt;br /&gt;
09:28:07   paroneayea  so, let&#039;s say we had two GSoC students at once, one working on access control and one working on &lt;br /&gt;
                       ActivityPub federation!  How could we get them to work together?&lt;br /&gt;
09:28:37   paroneayea  well I think it isn&#039;t so terrrrrribly hard actually, but it will require they are willing to &lt;br /&gt;
                       work together a bit.  they don&#039;t have to work from the same branch.&lt;br /&gt;
09:29:16       ayleph  paroneayea: do you think that ActivityPub implied access control should be *the* access control &lt;br /&gt;
                       method for MediaGoblin? Or do you see it as just one possible implementation?&lt;br /&gt;
09:29:18   paroneayea  we&#039;d have to make sure the access control branch was set up with the *intent* of doing this kind &lt;br /&gt;
                       of fine grained access control: things are either public (anyone can see them), or they&#039;re &lt;br /&gt;
                       restricted to individuals and collections&lt;br /&gt;
09:29:29       breton  i am opposed to students working together then&lt;br /&gt;
09:29:30   paroneayea  ayleph: I think it should be *the* basis, and maybe there can be some hooks.&lt;br /&gt;
09:29:46       ayleph  I&#039;m wondering if some people just want to make an instance they can share with family member &lt;br /&gt;
                       without having to figure out ActivityPub stuff&lt;br /&gt;
09:29:51       breton  ayleph: so mg switches to activitypub&lt;br /&gt;
09:30:05       breton  ayleph: i think we shall mask all activitypub stuff&lt;br /&gt;
09:30:12       breton  ayleph: hide it behind web-interface&lt;br /&gt;
09:30:14   paroneayea  ayleph: I think it&#039;ll be possible&lt;br /&gt;
09:30:26   paroneayea  you could add extra access checks&lt;br /&gt;
09:30:29   paroneayea  via plugin hooks&lt;br /&gt;
09:30:44   paroneayea  but it&#039;s just, the primary &amp;quot;how do I say this person has access&amp;quot; *starts with* the AP side of &lt;br /&gt;
                       things.&lt;br /&gt;
09:30:46   paroneayea  make sense?&lt;br /&gt;
09:31:14   paroneayea  so AP access control ideas start as foundation, and if you want to add some plugin hook that &lt;br /&gt;
                       gives broad sweeping access via some other authenticated mechanism, go for it&lt;br /&gt;
09:31:40       ayleph  okay, i think i get it. (it&#039;s still a little early for me on a saturday morning...)&lt;br /&gt;
09:31:46       breton  ok, that&#039;s actually nice&lt;br /&gt;
09:32:07       breton  here is what we need to do&lt;br /&gt;
09:32:10   paroneayea  so, what I imagine the person working on the ActivityPub implementation for the summer focusing &lt;br /&gt;
                       primarily on delivery&lt;br /&gt;
09:32:21   paroneayea  so it&#039;s possible for them to focus on delivery, and not access control&lt;br /&gt;
09:32:39   paroneayea  but we need the actor and actor collections stuff put in place before GSoC for that to work&lt;br /&gt;
09:32:47   paroneayea  or else it&#039;s going to be a gnarly merge.&lt;br /&gt;
09:32:47       breton  1. drop access control project for now&lt;br /&gt;
09:33:00   paroneayea  breton: or we can do that :)&lt;br /&gt;
09:33:08       breton  2. add more description about activitypub stuff to the project&lt;br /&gt;
09:33:20       breton  activitypub looks scary&lt;br /&gt;
09:33:25   paroneayea  here&#039;s the other thing about activitypub&lt;br /&gt;
09:33:30       breton  i know it isn&#039;t, but it is.&lt;br /&gt;
09:33:33   paroneayea  I think this is going to be an unusual GSoC&lt;br /&gt;
09:33:37       breton  *but it looks&lt;br /&gt;
09:33:42   paroneayea  the person working on GSoC this year will in some ways be my &amp;quot;assistant&amp;quot;&lt;br /&gt;
09:33:47   paroneayea  I will be actively working with them&lt;br /&gt;
09:34:31   paroneayea  I think that could reduce the scariness a bit&lt;br /&gt;
09:34:48   paroneayea  so whoever is working on it this year will have to be willing to do a lot of collaboration, more &lt;br /&gt;
                       than most GSoC&lt;br /&gt;
09:34:58   paroneayea  breton: does that make sense to you?&lt;br /&gt;
09:35:01       breton  paroneayea: yes&lt;br /&gt;
09:35:11   paroneayea  I figure I&#039;ve been doing this ActivityPub stuff and getting it to a stable state for a couple of &lt;br /&gt;
                       years&lt;br /&gt;
09:35:27   paroneayea  so it&#039;s time to land it, and I can certainly use help, but I think it&#039;ll go smoothest with &lt;br /&gt;
                       direct guidance&lt;br /&gt;
09:35:33   paroneayea  tsyesika also said she&#039;d be willing to help mentor&lt;br /&gt;
09:36:46   paroneayea  ok&lt;br /&gt;
09:36:52   paroneayea  so I guess one question is&lt;br /&gt;
09:37:44   paroneayea  since this is kind of an unusual GSoC, do we need to do anything to help students prepare or &lt;br /&gt;
                       help check before GSoC stuff even starts?&lt;br /&gt;
09:38:03   paroneayea  breton: do you have ideas?&lt;br /&gt;
09:38:16   paroneayea  one tricky thing is I&#039;m doing this test suite all month so that&#039;s going to be a bit overwhelming &lt;br /&gt;
                       already :)&lt;br /&gt;
09:38:17       breton  the first thing i will do is update description of the task&lt;br /&gt;
09:39:04       breton  the worst thing about the whole federation stuff is lack of description readable in 5-10 minutes&lt;br /&gt;
09:39:41   paroneayea  ha&lt;br /&gt;
09:39:43   paroneayea  yeah&lt;br /&gt;
09:39:56   paroneayea  breton: maybe we should link to the part of the mediagoblin 2nd campaign video where federation &lt;br /&gt;
                       is explained ;)&lt;br /&gt;
09:40:22       breton  the second worst is ambiguity of word &amp;quot;federation&amp;quot;&lt;br /&gt;
09:41:57   paroneayea  http://mediagoblin.org/pages/campaign.html 1:45-2:20 on the video for talking about federation :)&lt;br /&gt;
09:42:10   paroneayea  then it goes into some outdated stuff about the Pump API.  but that was all pre-standardization!&lt;br /&gt;
09:42:20       ayleph  the description mentions that there&#039;s a federation branch...is the idea to first try to merge &lt;br /&gt;
                       that branch, and then to convert it to activitypub?&lt;br /&gt;
09:42:37   paroneayea  ayleph: hauuuuugh, I need to review it.&lt;br /&gt;
09:42:38       ayleph  i imagine merging the branch alone may be a big task&lt;br /&gt;
09:42:44   paroneayea  yes that&#039;s true&lt;br /&gt;
09:42:54   paroneayea  maybe I need to devote weekends to getting up-to-date on that this month&lt;br /&gt;
09:43:18   paroneayea  so we have two other gsoc tasks also&lt;br /&gt;
09:43:19       breton  isn&#039;t it merged yet?&lt;br /&gt;
09:43:25   paroneayea  breton: no :)&lt;br /&gt;
09:43:30       breton  but&lt;br /&gt;
09:43:34   paroneayea  it&#039;s been sitting there, burning on the back burner :)&lt;br /&gt;
09:43:48       breton  why did the switch from user to actor happened?&lt;br /&gt;
09:44:34   paroneayea  breton: *part of* the federation stuff landed&lt;br /&gt;
09:44:37   paroneayea  but there&#039;s still more&lt;br /&gt;
09:44:40       ayleph  there were certainly a lot of changes to the API code a year or two ago, but it was a pretty &lt;br /&gt;
                       basic implementation&lt;br /&gt;
09:44:50       ayleph  images only, most clients couldn&#039;t successfully connect&lt;br /&gt;
09:44:53   paroneayea  the complete federation branch is still sitting in tsyesika&#039;s branch&lt;br /&gt;
09:44:56       breton  oh well.&lt;br /&gt;
09:45:00   paroneayea  so&lt;br /&gt;
09:45:03   paroneayea  I guess that&#039;s a task for me.&lt;br /&gt;
09:45:08   paroneayea  assess the state of federation stuff&lt;br /&gt;
09:45:14            *  paroneayea piles it on a towering heap&lt;br /&gt;
09:45:17       ayleph  hehe&lt;br /&gt;
09:45:32       ayleph  is that branch on savannah?&lt;br /&gt;
09:46:05       ayleph  yeah, appears to be&lt;br /&gt;
09:46:06   paroneayea  nope, notabug https://notabug.org/tsyesika/federated-mediagoblin.git&lt;br /&gt;
09:46:07   paroneayea  oh&lt;br /&gt;
09:46:10   paroneayea  maybe there too&lt;br /&gt;
09:46:33       ayleph  oh, i probably shouldn&#039;t assume the one on savannah is the same one&lt;br /&gt;
09:46:34   paroneayea  we might have pushed it to sannah&lt;br /&gt;
09:46:43   paroneayea  another thing to look into!&lt;br /&gt;
09:47:03   paroneayea  ayleph: breton: ok, so I&#039;m going to be crazy busy for the next 1.5 weeks on this test suite&lt;br /&gt;
09:47:13       adfeno  Savannah is the most respectful of the two repository hosts so far.&lt;br /&gt;
09:47:18   paroneayea  in 2 weeks, can I ask one of you to pester me, &amp;quot;hey how&#039;s reviewing that federation code going&amp;quot;? &lt;br /&gt;
                       ;)&lt;br /&gt;
09:47:35       ayleph  hmm, it looks like the one on notabug is many commits behind the one on savannah&lt;br /&gt;
09:47:58   paroneayea  ok, savannah is most up to date then.  noted!&lt;br /&gt;
09:48:15       ayleph  oh, but then i noticed the &amp;quot;federation&amp;quot; branch on notabug&lt;br /&gt;
09:48:31       ayleph  they look about the same?&lt;br /&gt;
09:49:00   paroneayea  meh, I&#039;ll look :)&lt;br /&gt;
09:49:08       breton  ok, other GSoC projects&lt;br /&gt;
09:49:11   paroneayea  yes&lt;br /&gt;
09:49:15   paroneayea  there are 2 others!&lt;br /&gt;
09:49:25       breton  Multiple qualities of video&lt;br /&gt;
09:49:48       breton  i think it is pretty clear what to do there&lt;br /&gt;
09:50:11       breton  this is the one i would love to mentor&lt;br /&gt;
09:50:13       ayleph  maybe we could tack on some advanced user upload limit stuff to that one?&lt;br /&gt;
09:50:15   paroneayea  great :)&lt;br /&gt;
09:50:25   paroneayea  ayleph: don&#039;t we have a user upload limit thing?&lt;br /&gt;
09:50:33   paroneayea  maybe it&#039;s not advanced :)&lt;br /&gt;
09:50:33       ayleph  i think the current user upload limit code only looks at the size of the uploaded video (which &lt;br /&gt;
                       may or may not stick around), not the size of the transcoded video&lt;br /&gt;
09:50:46       ayleph  and if we have multiple transcoded video sizes, that&#039;s a lot more disk space&lt;br /&gt;
09:50:59   paroneayea  ahhh&lt;br /&gt;
09:51:03   paroneayea  yes ayleph, good point.&lt;br /&gt;
09:51:15   paroneayea  I think that&#039;s a reasonable thing to add to it&lt;br /&gt;
09:51:15       breton  ayleph: lets just make a list of possible video qualities configurable&lt;br /&gt;
09:51:47       breton  ayleph: also, if original video is 480p, there is definitely no reason to transcode it to 720p&lt;br /&gt;
09:53:42       breton  ok, anything else aout multiple video qualities?&lt;br /&gt;
09:54:04   paroneayea  breton: seems pretty good&lt;br /&gt;
09:54:19       breton  cool. Our next project is &amp;quot;Chunked uploads / multi-upload UI&amp;quot;&lt;br /&gt;
09:54:41   paroneayea  I think we have like, three branches that have attempted this and I&#039;ve failed to review any of &lt;br /&gt;
                       them, like the terrible maintainer I am&lt;br /&gt;
09:54:47   paroneayea  well wait&lt;br /&gt;
09:54:51   paroneayea  I did review one once I think!&lt;br /&gt;
09:54:52       breton  this one looks like an easy one actually&lt;br /&gt;
09:55:56       ayleph  looking at the comments on the wiki, this may already be working code&lt;br /&gt;
09:56:15       ayleph  i didn&#039;t realize that someone had updated the VenKamikaze multi-upload code to work with 0.9&lt;br /&gt;
09:58:31       breton  so... there is no project?&lt;br /&gt;
09:59:04       ayleph  i&#039;m not sure, but at a quick glance, it seems that most of the work is already done&lt;br /&gt;
09:59:10       breton  the code also doesn&#039;t look too complex for GSoC project&lt;br /&gt;
09:59:17       ayleph  unless we want someone to create a new method&lt;br /&gt;
09:59:43       ayleph  this code may need some adjustments; i&#039;m not sure what happens if a browser doesn&#039;t support html5&lt;br /&gt;
09:59:50       ayleph  but i don&#039;t think that&#039;s worthy of GSoC&lt;br /&gt;
10:00:31       breton  i agree&lt;br /&gt;
10:00:34   paroneayea  ok :)&lt;br /&gt;
10:00:40       breton  lets drop the project&lt;br /&gt;
10:00:53   paroneayea  also, one more thing&lt;br /&gt;
10:01:06   paroneayea  is there any reason not to generalize multiple quality types?&lt;br /&gt;
10:01:18   paroneayea  eg, multiple image quality, multiple audio quality&lt;br /&gt;
10:01:20   paroneayea  all seems related.&lt;br /&gt;
10:01:27   paroneayea  just thinkin&#039; out loud here.&lt;br /&gt;
10:01:45       breton  weeeell&lt;br /&gt;
10:01:55       breton  multiple audio qualities -- meh&lt;br /&gt;
10:02:10       breton  maybe just 2 -- high-quality and low-quality&lt;br /&gt;
10:02:26       breton  well actually yes&lt;br /&gt;
10:02:30       breton  this could be a thing&lt;br /&gt;
10:03:23       breton  i am now thinking how i would do this project&lt;br /&gt;
10:05:36       ayleph  totally different subject just popped into my head, but isn&#039;t there some issue with celery &lt;br /&gt;
                       moving forward? is this something that we could turn into a project?&lt;br /&gt;
10:05:56   paroneayea  ayleph: yes... so our Celery stuff is kind of a mess&lt;br /&gt;
10:05:59       ayleph  i seem to recall celery 4 dropped support for something that we need&lt;br /&gt;
10:06:19   paroneayea  it dropped our crappy default solution that used an sqlite database as a message queue ;)&lt;br /&gt;
10:06:24   paroneayea  I think we agreed to move to RabbitMQ&lt;br /&gt;
10:06:28       ayleph  oh okay&lt;br /&gt;
10:06:45   paroneayea  this might not be that big of a project, not sure if it&#039;s a whole summer&#039;s worth, but it needs &lt;br /&gt;
                       to be done&lt;br /&gt;
10:08:23       breton  ++&lt;br /&gt;
10:09:17       breton  maybe it will be done as part of multiple audio qualities&lt;br /&gt;
10:09:19   paroneayea  (also, if the chunked upload stuff really is ready, why haven&#039;t we merged it? :)  probably my &lt;br /&gt;
                       fault...)&lt;br /&gt;
10:09:32   paroneayea  too bad &amp;quot;odds and ends&amp;quot; style GSoC&#039;s never seem to work out&lt;br /&gt;
10:09:59       breton  because the project requires priorities in video transcoding&lt;br /&gt;
10:10:19       breton  paroneayea: i will think about generalizing the qualities&lt;br /&gt;
10:10:42       breton  we are 10 minutes out of our time and i need to go :)&lt;br /&gt;
10:11:18       breton  thanks everyone for coming&lt;br /&gt;
10:11:25   paroneayea  yes, time to wrap up&lt;br /&gt;
10:11:43   paroneayea  #endmeeting ;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ayleph</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=Meeting&amp;diff=1894</id>
		<title>Meeting</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=Meeting&amp;diff=1894"/>
		<updated>2017-03-04T18:59:43Z</updated>

		<summary type="html">&lt;p&gt;Ayleph: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== MediaGoblin Monthly Meeting ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;When:&#039;&#039;&#039; 9:00 am Pacific Time first Saturday of the month. [http://www.timeanddate.com/worldclock/converter.html Convert time to your timezone].  Print current UTC time: &amp;lt;code&amp;gt;date -u +&amp;quot;It&#039;s %F %T UTC&amp;quot;&amp;lt;/code&amp;gt;.  [https://en.wikipedia.org/wiki/Daylight_saving_time_in_the_United_States#2005_revision_to_dates_of_observance Pacific Time in 2014 has DST between March 9th and November 2nd].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Where:&#039;&#039;&#039; IRC #mediagoblin on irc.freenode.net&lt;br /&gt;
&lt;br /&gt;
Always announced several days in advance on the [http://lists.mediagoblin.org/pipermail/devel/ mailing list] as is date adjustments, agenda discussion and other meeting preparation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Purpose:&#039;&#039;&#039; The idea is to discuss the past month, what happened, what was good, what should be done better. And to create roadmap for the upcoming month and assign tasks to people willing to handle them.&lt;br /&gt;
&lt;br /&gt;
Typical Agenda topics:&lt;br /&gt;
&lt;br /&gt;
* What happened in the last month, what was good, what could be better next time?&lt;br /&gt;
* What should be done next month?&lt;br /&gt;
&lt;br /&gt;
Meetings are logged. See below for logs of each meeting.&lt;br /&gt;
&lt;br /&gt;
== Next Meeting ==&lt;br /&gt;
&lt;br /&gt;
Every first Saturday of the month with JIT-compiled agenda.&lt;br /&gt;
&lt;br /&gt;
=== April 1, 2017 ===&lt;br /&gt;
&lt;br /&gt;
== Past Meetings ==&lt;br /&gt;
&lt;br /&gt;
=== March 4, 2017, 9:00AM Pacific Time, 17:00 UTC ===&lt;br /&gt;
* Federation and ActivityPub progress&lt;br /&gt;
* GSoC&lt;br /&gt;
&lt;br /&gt;
=== Oct 1, 2016 ===&lt;br /&gt;
&lt;br /&gt;
=== Sept 4, 2016, 17:00 UTC ===&lt;br /&gt;
&lt;br /&gt;
[[20160904_Log]]&lt;br /&gt;
&lt;br /&gt;
=== May 7, 2016 ===&lt;br /&gt;
&lt;br /&gt;
=== April 2, 2016, 17:00 UTC ===&lt;br /&gt;
* 0.9.0 release (done!)&lt;br /&gt;
* GSoC&lt;br /&gt;
* 1.0&lt;br /&gt;
&lt;br /&gt;
[[20160402_Log]]&lt;br /&gt;
&lt;br /&gt;
=== March 5, 2016, 9:00AM Pacific Time, 17:00 UTC ===&lt;br /&gt;
* 0.9.0 release (imminent!)&lt;br /&gt;
* GSoC&lt;br /&gt;
** Project ideas&lt;br /&gt;
** Interested mentors?&lt;br /&gt;
* Federation mini-update&lt;br /&gt;
&lt;br /&gt;
[[20160305_Log]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== February 6, 2016, 9:00AM Pacific Time, 17:00 UTC ===&lt;br /&gt;
&lt;br /&gt;
* Continuous integration / Commit Notifications&lt;br /&gt;
* Move sqlite to development-only? (no more migrations)&lt;br /&gt;
* Upcoming 0.9.0 release&lt;br /&gt;
* Path to 1.0&lt;br /&gt;
* Stripe retreat update&lt;br /&gt;
* ActivityPub update (related!)&lt;br /&gt;
* GSOC ideas, and volunteers?&lt;br /&gt;
&lt;br /&gt;
[[20160206_Log]]&lt;br /&gt;
&lt;br /&gt;
=== January 2, 2016, 9:00AM Pacific Time, 17:00 UTC ===&lt;br /&gt;
&lt;br /&gt;
* 0.9.0&lt;br /&gt;
* FOSDEM&lt;br /&gt;
* 0.8.2&lt;br /&gt;
[[20160102_Log]]&lt;br /&gt;
&lt;br /&gt;
=== November 7, 2015, 9:00AM Pacific Time, 17:00 UTC ===&lt;br /&gt;
&lt;br /&gt;
* 0.8.1 and 0.9.0&lt;br /&gt;
* Activipy and W3C Social WG stuff&lt;br /&gt;
* Help squash bugs!&lt;br /&gt;
* Revisiting the code / issue hosting situation??&lt;br /&gt;
&lt;br /&gt;
=== March 7, 2015, 09:00AM Pacific Time, 17:00 UTC ===&lt;br /&gt;
&lt;br /&gt;
* Moving off of gitorious, to?&lt;br /&gt;
* 0.8.0 upcoming release&lt;br /&gt;
* LibrePlanet and W3C meeting&lt;br /&gt;
* GSoC 2015&lt;br /&gt;
* Heads up: UserOps list&lt;br /&gt;
* Federation status&lt;br /&gt;
* Chris to take a temporary break?&lt;br /&gt;
&lt;br /&gt;
=== December 6, 2014, 09:00AM Pacific Time, 17:00 UTC ===&lt;br /&gt;
&lt;br /&gt;
* 0.8.0 upcoming release&lt;br /&gt;
** Current state (including looking at issue list)&lt;br /&gt;
** How to help!&lt;br /&gt;
*** Help us [https://issues.mediagoblin.org/query?status=new&amp;amp;status=in_progress&amp;amp;status=accepted&amp;amp;status=review&amp;amp;group=status&amp;amp;milestone=0.8.0 fix issues!]&lt;br /&gt;
*** Documentation (check it!  improve it!)&lt;br /&gt;
*** Gstreamer 1.0 merge?&lt;br /&gt;
*** Help test!&lt;br /&gt;
*** Translate? (Maybe, but maybe not yet?)&lt;br /&gt;
* Translation talk, if breton is around&lt;br /&gt;
* Update on federation&lt;br /&gt;
* Update on W3C group&lt;br /&gt;
&lt;br /&gt;
=== November 1, 2014, 09:00AM Pacific Time, 16:00 UTC&amp;lt;!-- change to 17:00 for December 2014 --&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Loose meeting structure :)&lt;br /&gt;
&lt;br /&gt;
=== October 4, 2014, 09:00AM Pacific Time, 16:00 UTC&amp;lt;!-- change to 17:00 for December 2014 --&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
* 0.8.0 progress&lt;br /&gt;
** Python 3 is in!&lt;br /&gt;
** Cleanup happening&lt;br /&gt;
** What&#039;s next&lt;br /&gt;
*** Gstreamer 1.0 merge&lt;br /&gt;
*** Search merge&lt;br /&gt;
*** [https://issues.mediagoblin.org/query?status=new&amp;amp;status=in_progress&amp;amp;status=accepted&amp;amp;status=review&amp;amp;group=status&amp;amp;milestone=0.8.0 Tickets!]&lt;br /&gt;
* Autoconf update&lt;br /&gt;
* Breton&#039;s translation update&lt;br /&gt;
* Federation update&lt;br /&gt;
* Deployment research update&lt;br /&gt;
* Add your things!&lt;br /&gt;
&lt;br /&gt;
=== September 6, 2014, 09:00AM Pacific Time, 16:00 UTC&amp;lt;!-- change to 17:00 for December 2014 --&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
* Things happened! Horray!&lt;br /&gt;
** 0.7.0 is out!&lt;br /&gt;
** GSoC is done!&lt;br /&gt;
* Transifex move... help!&lt;br /&gt;
* 0.8.0 planning&lt;br /&gt;
* Updates on federation&lt;br /&gt;
* Updates on campaign-todo-items&lt;br /&gt;
* Premium hosting and deployment&lt;br /&gt;
* Documentation updates ( j1mc )&lt;br /&gt;
* Triage day!  And the [https://etherpad.mozilla.org/gmg-triage new setup]!&lt;br /&gt;
* Help on reviewing?&lt;br /&gt;
* Epicanis&#039; feature questions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== August 2, 2014, 09:00AM Pacific Time, 16:00 UTC&amp;lt;!-- change to 17:00 for December 2014 --&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
* GSoC updates&lt;br /&gt;
* State of 0.7.0&lt;br /&gt;
* State of Federation&lt;br /&gt;
* State of post-campaign stuff (rewards, etc)&lt;br /&gt;
* General community updates&lt;br /&gt;
* Feedback: how are things going?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== June 7, 2014, 09:00AM Pacific Time, 16:00 UTC&amp;lt;!-- change to 17:00 for December 2014 --&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
* GSoC updates&lt;br /&gt;
* Researchcation brief summary&lt;br /&gt;
* Campaign-related updates&lt;br /&gt;
* Upcoming release&lt;br /&gt;
* Code reviews&lt;br /&gt;
&lt;br /&gt;
=== May 3, 2014, 09:00AM Pacific Time, 16:00 UTC&amp;lt;!-- change to 17:00 for December 2014 --&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
* GSoC starts!&lt;br /&gt;
* Post campaign updates!&lt;br /&gt;
** Horray, we did it!&lt;br /&gt;
** Unlocked features&lt;br /&gt;
** The rewards&lt;br /&gt;
** Premium hosting brainstorm&lt;br /&gt;
** Extra features brainstorm&lt;br /&gt;
* [http://lists.mediagoblin.org/pipermail/devel/2014-May/000867.html Metadata] discussion&lt;br /&gt;
* Chris&#039; researchcation&lt;br /&gt;
** Federation stuff&lt;br /&gt;
** Deployment stuff&lt;br /&gt;
** Other stuff?&lt;br /&gt;
* Help review!&lt;br /&gt;
* Add your items HERE!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== March 1st, 2014, 09:00AM Pacific Time, 17:00 UTC&amp;lt;!-- change to 16:00 for April-November 2014; then to 17:00 for December 2014 --&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
* GSoC&lt;br /&gt;
* The [http://mediagoblin.org/pages/campaign.html crowdfunding campaign!]&lt;br /&gt;
** State of things / Q &amp;amp; A&lt;br /&gt;
** You can help!&lt;br /&gt;
* MediaGoblin in the meanwhile&lt;br /&gt;
&lt;br /&gt;
=== November 2nd, 2013, 09:00AM Pacific Time, 16:00 UTC ===&lt;br /&gt;
&lt;br /&gt;
Pretty loose on the schedule this month? :)&lt;br /&gt;
&lt;br /&gt;
* Post-conference wrapup stuff?&lt;br /&gt;
* What&#039;s ahead in the next year for MediaGoblin?&lt;br /&gt;
&lt;br /&gt;
=== October 5th, 2013, 09:00AM Pacific Time, 16:00 UTC ===&lt;br /&gt;
&lt;br /&gt;
* Post-OPW/GSoC wrapup discussion &lt;br /&gt;
* Huge pile of code to review&lt;br /&gt;
* Planning out 0.6.0&lt;br /&gt;
* Road to 1.0&lt;br /&gt;
* mediagoblin.org changes&lt;br /&gt;
* GNU 30th recap, upcoming conferences&lt;br /&gt;
* MediaGoblin&#039;s graphic design?&lt;br /&gt;
&lt;br /&gt;
=== September 7th, 2013 ===&lt;br /&gt;
&lt;br /&gt;
* 0.5.0 release recap!&lt;br /&gt;
* Next release: 0.6.0!&lt;br /&gt;
* GSoC/OPW updates&lt;br /&gt;
* Review queue that needs attention&lt;br /&gt;
* GNU 30th! (and traveling)&lt;br /&gt;
* Other things???&lt;br /&gt;
&lt;br /&gt;
=== August 3rd, 2013 9:00 am Pacific Time (2013-08-03 16:00 UTC) ===&lt;br /&gt;
&lt;br /&gt;
* Configure &amp;amp;&amp;amp; make merge&lt;br /&gt;
* 0.5.0 plans&lt;br /&gt;
* GSoC / OPW updates&lt;br /&gt;
* GNU 30th birthday party / GoblinCon? :)&lt;br /&gt;
* Documentation overhaul&lt;br /&gt;
* Reprocessing&lt;br /&gt;
* Bonus topics&lt;br /&gt;
** Mumble server&lt;br /&gt;
** XUDD&lt;br /&gt;
&lt;br /&gt;
=== July 6th, 2013 9:00 am Pacific Time (2013-07-06 16:00 UTC) ===&lt;br /&gt;
&lt;br /&gt;
* 0.4.0 is out! On to 0.4.1!&lt;br /&gt;
* OPW/GSoC update&lt;br /&gt;
* Federation status&lt;br /&gt;
* Module owners (and reducing the &amp;quot;Chris Webber bottleneck&amp;quot;)?&lt;br /&gt;
** Projects like Blender, the Linux Kernel, and qemu have &amp;quot;module owners&amp;quot;, people responsible for a domain of the code&lt;br /&gt;
** Could/should MediaGoblin do the same?&lt;br /&gt;
** How would that be broken up?&lt;br /&gt;
&lt;br /&gt;
=== Jun 1st, 2013 9:00 am Pacific Time (2013-06-01 16:00 UTC) ===&lt;br /&gt;
&lt;br /&gt;
* Welcoming our GSoC and OPW interns&lt;br /&gt;
* The coming 0.4.0&lt;br /&gt;
* What&#039;s after 0.4.0?&lt;br /&gt;
* RTL&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== May 4th, 2013, 9:00 am Pacific Time (2013-05-04 16:00 UTC) ===&lt;br /&gt;
&lt;br /&gt;
[[meeting-2013-05-04|May 4th, 2013, 9:00 am Pacific Time (2013-05-04 16:00 UTC)]]&lt;br /&gt;
&lt;br /&gt;
* GSOC and Gnome Outreach for Women participation update&lt;br /&gt;
* Mention the bug triage meeting&lt;br /&gt;
* Improving our unit tests?&lt;br /&gt;
* 0.4.0 release coming soon&lt;br /&gt;
* Help review code?&lt;br /&gt;
* Thanking simonft for sysadmin help!&lt;br /&gt;
&lt;br /&gt;
=== April 6, 2013, 9:00 am Pacific Time (2013-03-30 16:00 UTC) ===&lt;br /&gt;
&lt;br /&gt;
* Plugins update&lt;br /&gt;
* Post-libreplanet sprint merging&lt;br /&gt;
* Gstreamer 1.0 stuff (if Joar is here!)&lt;br /&gt;
* GSOC and Gnome Outreach for Women participation&lt;br /&gt;
* ???&lt;br /&gt;
&lt;br /&gt;
=== March 2nd, 2013, 9:00 am Pacific Time (2013-03-02 16:00 UTC) ===&lt;br /&gt;
&lt;br /&gt;
* Bug triage day discussion&lt;br /&gt;
* Upgrading Trac to 1.0&lt;br /&gt;
* Next release: 0.3.3&lt;br /&gt;
* Consider have release dates?&lt;br /&gt;
* Plugin stystem&lt;br /&gt;
* Consider moving to GStreamer 1.0&lt;br /&gt;
** Debian - 1.0 in sid&lt;br /&gt;
** Ubuntu - 1.0 in 12.10&lt;br /&gt;
*** Possibly backports for 12.04&lt;br /&gt;
** Fedora - 1.0 in 18&lt;br /&gt;
* Upcoming conferences and hackathons&lt;br /&gt;
&lt;br /&gt;
=== February 9th, 2013, 9:00 am Pacific Time (2013-02-09 16:00 UTC) ===&lt;br /&gt;
&lt;br /&gt;
* 0.3.3 milestone!  What about our next release? :)&lt;br /&gt;
* Where to put Developer docs?&lt;br /&gt;
*: Our Documentation for developers is currently a bit split. Some are on the wiki, some in the main docs. There are pros and cons for both. We should consider where to put things. One place? Which? Or decide on an individual basis?&lt;br /&gt;
*: Good about main docs: Easy to integrate source code doc strings. That way internal api docs can be kept mostly up to date.&lt;br /&gt;
*: Good about wiki: Doesn&#039;t feel so &amp;quot;set in stone&amp;quot;.&lt;br /&gt;
* wiki spam: Do we want to change something?&lt;br /&gt;
* [http://lists.mediagoblin.org/pipermail/devel/2012-November/000307.html Designing features!]&lt;br /&gt;
* Plugins, and architecting for plugins&lt;br /&gt;
* Chris Webber gives updates on how he&#039;s settling into his role ;)&lt;br /&gt;
&lt;br /&gt;
=== October 13th, 2012, 9:00 am Pacific Time (2012-10-13 16:00 UTC) ===&lt;br /&gt;
&lt;br /&gt;
* 0.3.2 release&lt;br /&gt;
** What existing features need to be wrapped up?&lt;br /&gt;
*** Werkzeug switch&lt;br /&gt;
** What time might we do the release?&lt;br /&gt;
* Fundraising campaign&lt;br /&gt;
** Keeping things going mid-campaign&lt;br /&gt;
** You have questions?  I have answers, kinda :)&lt;br /&gt;
* Getting new contributors involved&lt;br /&gt;
* Plugins?  New features?&lt;br /&gt;
&lt;br /&gt;
==== Etherpad ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
AGENDA&lt;br /&gt;
&lt;br /&gt;
     0.3.2 release &lt;br /&gt;
&lt;br /&gt;
     What existing features need to be wrapped up? &lt;br /&gt;
&lt;br /&gt;
     Werkzeug switch &lt;br /&gt;
&lt;br /&gt;
     What time might we do the release? &lt;br /&gt;
&lt;br /&gt;
    Congrats to Deb from the mediagoblin team! Congrats de Deb!&lt;br /&gt;
&lt;br /&gt;
     Fundraising campaign &lt;br /&gt;
&lt;br /&gt;
     Keeping things going mid-campaign &lt;br /&gt;
&lt;br /&gt;
     You have questions?  I have answers, kinda :) &lt;br /&gt;
&lt;br /&gt;
     Getting new contributors involved &lt;br /&gt;
&lt;br /&gt;
     Plugins?  New features? &lt;br /&gt;
&lt;br /&gt;
-- http://wiki.mediagoblin.org/Meeting#Next_Meeting&lt;br /&gt;
Fundraising stuff&lt;br /&gt;
Things are going great mostly when people check it out!&lt;br /&gt;
But how to spread the word?&lt;br /&gt;
&lt;br /&gt;
    should contact more podcasts, etc&lt;br /&gt;
&lt;br /&gt;
    currently working with FSF on this&lt;br /&gt;
&lt;br /&gt;
    need community to spread the word!&lt;br /&gt;
&lt;br /&gt;
    List of places already spreaded list and contacted&lt;br /&gt;
&lt;br /&gt;
VideoThumbnailerMarkII&lt;br /&gt;
New video thumbnailer, rewritten to try to eliminate a bug in the old one where processing would stall.&lt;br /&gt;
New bugs introduce (of course ;)&lt;br /&gt;
Collections&lt;br /&gt;
Merged - Thanks aaronw!&lt;br /&gt;
WebOb =&amp;gt; Werkzeug switch&lt;br /&gt;
Made some things break. Need help with testing + bugfixes&lt;br /&gt;
borked stuffs:&lt;br /&gt;
&lt;br /&gt;
    Accessing paths without trailing slashes, e.g. /submit (instead of /submit/)&lt;br /&gt;
&lt;br /&gt;
    Still a lot of legacy WebOb responses (such as webob.exc.HTTPFound() HTTPForbidden() left)&lt;br /&gt;
&lt;br /&gt;
API&lt;br /&gt;
Delivered to mrn.is, tryggvib will test it and get back with feedback.&lt;br /&gt;
Working, still a lot of room for improvements.&lt;br /&gt;
Mostly done, usable, still room for improvements. Example applications:&lt;br /&gt;
&lt;br /&gt;
    https://github.com/jwandborg/automgtic&lt;br /&gt;
&lt;br /&gt;
    https://github.com/jwandborg/omgmg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== September 1st, 2012, 9:00 am Pacific Time (2012-09-01 16:00 UTC) ===&lt;br /&gt;
&lt;br /&gt;
[http://mediagoblin.org/irclogs/irc_meeting_2012-09-01.txt IRC log]&lt;br /&gt;
&lt;br /&gt;
* FIXME - can someone type in summary here?&lt;br /&gt;
&lt;br /&gt;
=== August 4th, 2012, 9:00 am Pacific Time (2012-08-04 16:00 UTC) ===&lt;br /&gt;
&lt;br /&gt;
[http://mediagoblin.org/irclogs/irc_meeting_2012-08-04.txt IRC log]&lt;br /&gt;
&lt;br /&gt;
* Release schedule&lt;br /&gt;
* Plugins and themes! Who&#039;s working on one? What problems are you having? -- Please write up issues for problems so they can get fixed!&lt;br /&gt;
* Should we namespace plugins? If so, how should we namespace plugins?&lt;br /&gt;
** Python 3.3 will have support for namespace plugins. [http://www.python.org/dev/peps/pep-0420/#namespace-packages-today]&lt;br /&gt;
** In Python &amp;gt;=2.3, &amp;lt;3.3 it&#039;s a hack [http://www.python.org/dev/peps/pep-0402/#the-problem][http://www.python.org/dev/peps/pep-0420/#namespace-packages-today]&lt;br /&gt;
** Flask has a workaround[https://github.com/mitsuhiko/flask/blob/master/flask/ext/__init__.py]&lt;br /&gt;
&lt;br /&gt;
=== July 7th, 2012, 9:00 am Pacific Time (2012-07-07 16:00 UTC) ===&lt;br /&gt;
&lt;br /&gt;
[http://mediagoblin.org/irclogs/irc_meeting_2012-07-07.txt IRC log]&lt;br /&gt;
&lt;br /&gt;
Announcements:&lt;br /&gt;
&lt;br /&gt;
* Anyone who wants to edit the wiki needs to be in the goblin army group. Ask Will or Chris to get added.&lt;br /&gt;
* Plugin infrastructure landed. If you&#039;re interested in writing plugins, talk to Will. Some documentation at http://docs.mediagoblin.org/#part-2-plugin-writer-s-guide&lt;br /&gt;
&lt;br /&gt;
Agenda:&lt;br /&gt;
&lt;br /&gt;
* Keyboard shortcuts ([http://issues.mediagoblin.org/ticket/346 #346])&lt;br /&gt;
* Ticket triaging?&lt;br /&gt;
* Base plugin stuff!&lt;br /&gt;
* Theming&lt;br /&gt;
* Conference: OSCON&lt;br /&gt;
* Chris Webber&#039;s new &amp;quot;office hours&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== June 2nd, 2012, 9:00 am Pacific Time ===&lt;br /&gt;
&lt;br /&gt;
[http://mediagoblin.org/irclogs/irc_meeting_2012-06-02.txt IRC log]&lt;br /&gt;
&lt;br /&gt;
* docs changes&lt;br /&gt;
** Will split the docs/ guide into a Site Administrator&#039;s Guide and a Plugin Writer&#039;s Guide&lt;br /&gt;
** Has anyone looked at the Plugin Writer&#039;s Guide, yet?&lt;br /&gt;
** Will wants to add a &amp;quot;Contributor&#039;s Guide&amp;quot; to docs/ which he&#039;d update from the wiki before every release&lt;br /&gt;
* Is there a way to improve our unit tests and motivation to write them?&lt;br /&gt;
** Simulating a browser by the way of [http://phantomjs.org/ PhantomJS], [http://seleniumhq.org/ Selenium] instead of having code simulating other code against itself might be more natural to write and even more testing the actual application. I have a good feeling about this, please prove me wrong if I&#039;d be. --[[User:Joar|Joar]] 08:53, 28 May 2012 (EDT)&lt;br /&gt;
* Administrative panel/tools and user uploads panel&lt;br /&gt;
* Git and tickets &lt;br /&gt;
* Plugins&lt;br /&gt;
** What&#039;s the state of things?&lt;br /&gt;
** Documentation&lt;br /&gt;
** What plugins might we want to build for this upcoming release?&lt;br /&gt;
** What things do we currently have that we might want to pluginify?&lt;br /&gt;
* State of kuneco/federation mini-update (Chris)&lt;br /&gt;
&lt;br /&gt;
=== May 5th, 2012, 9:00 am Pacific Time ===&lt;br /&gt;
&lt;br /&gt;
[http://mediagoblin.org/irclogs/irc_meeting_2012-05-05.txt IRC log]&lt;br /&gt;
&lt;br /&gt;
* Post-release reflections&lt;br /&gt;
** Woohoo, release!&lt;br /&gt;
** How did this release process go?&lt;br /&gt;
*** We should talk about that conference.&lt;br /&gt;
** What&#039;s left to clean up?&lt;br /&gt;
*** Mongokit-&amp;gt;SQL &amp;quot;style&amp;quot; query conversion?&lt;br /&gt;
*** Other cruft code?&lt;br /&gt;
* What are our next goals?&lt;br /&gt;
** Plugins&lt;br /&gt;
** Federation&lt;br /&gt;
** Favoriting&lt;br /&gt;
*** Take that, Pinterest! ;)&lt;br /&gt;
** Galleries&lt;br /&gt;
** Theming&lt;br /&gt;
*** Using sass would be neat&lt;br /&gt;
** Access restrictions&lt;br /&gt;
*** User management, or having a &amp;quot;secret url&amp;quot; that is not in the photo index that you can share with friends and generate as needed for any media type&lt;br /&gt;
** What about traffic? Some of us will host GMG on limited plans.&lt;br /&gt;
** Some kind of coding guidelines? Do we have a philosophy like &amp;quot;Keep it Simple, Stupid&amp;quot;&lt;br /&gt;
*** This concerns things like: Should plugins land in core eventually, do we want to support ALL THE MEDIA TYPES, ...&lt;br /&gt;
** Podcasting support?&lt;br /&gt;
** Things that have been hanging???&lt;br /&gt;
** Bugtrackers and milestone?&lt;br /&gt;
** More??? We should organize things!&lt;br /&gt;
* jancborchardt and his team of UX wizard-students&lt;br /&gt;
* Website redesign&lt;br /&gt;
* OpenShift?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== April 7th, 2012, 4:00 pm UTC ===&lt;br /&gt;
&lt;br /&gt;
[http://mediagoblin.org/irclogs/irc_meeting_2012-04-07.txt IRC log]&lt;br /&gt;
&lt;br /&gt;
* Post-SQL stuff&lt;br /&gt;
* Pending 0.0.3 release!&lt;br /&gt;
* Are there stray patches/branches to be merged?&lt;br /&gt;
* Our glorious upcoming plugin future! (Update from Will)&lt;br /&gt;
&lt;br /&gt;
=== March 3rd, 2012, 9:00 am Pacific Time ===&lt;br /&gt;
&lt;br /&gt;
[http://mediagoblin.org/irclogs/irc_meeting_2012-03-03.txt IRC log]&lt;br /&gt;
&lt;br /&gt;
* [[GSOC 2012]]&lt;br /&gt;
* State of the SQL transition (preview: it&#039;s super close, but we need help!)&lt;br /&gt;
* Plugin discussion (Will can&#039;t make this, but we should talk about use cases)&lt;br /&gt;
* MediaGoblin at upcoming conferences&lt;br /&gt;
* PageKite accounts&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2012-02 (held on 2012-02-04) ===&lt;br /&gt;
&lt;br /&gt;
[http://mediagoblin.org/irclogs/irc_meeting_2012-02-04.txt IRC log]&lt;br /&gt;
&lt;br /&gt;
* Code style guide?  See also: http://issues.mediagoblin.org/ticket/197&lt;br /&gt;
* Kuneco/federation&lt;br /&gt;
* API&lt;br /&gt;
* More testing discussion?&lt;br /&gt;
* Theming?&lt;br /&gt;
* Preliminary plugin discussion&lt;br /&gt;
* Status update from the &amp;quot;SQL Team&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Some of the decisions:&lt;br /&gt;
&lt;br /&gt;
* file an issue about proper &amp;amp;lt;audio&amp;amp;gt; support.&lt;br /&gt;
* some TODOs recorded&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2011-12 (held on 2011-12-03) ===&lt;br /&gt;
&lt;br /&gt;
[http://mediagoblin.org/irclogs/irc_meeting_2011-12-03.txt IRC log]&lt;br /&gt;
&lt;br /&gt;
* We plan to create a plugin system.  Do we want to create that soon or push it off until things settle a bit more?  ([[User:Willkg|Willkg]] 08:54, 10 November 2011 (EST))&lt;br /&gt;
* [[Feature Ideas]]: What should we do about the wiki page? Keep it and have it as a monthly topic for &amp;quot;what next&amp;quot;? Convert everything to long waiting bugs?&lt;br /&gt;
* Possibility of an [[SQL Database Backend]]?&lt;br /&gt;
*: &#039;executive summary&#039; (well, you should read the long docs): &amp;quot;We could move to sql. It&#039;s probably replacing one type of pain by another type of pain, but those are somewhat comparable. Leaving the main question: Do we want to occupy our main devs for some long time with this task and loose momentum?&amp;quot;&lt;br /&gt;
* Schendje&#039;s [http://wiki.mediagoblin.org/Feature_Ideas/Activities activities proposal]&lt;br /&gt;
* &amp;quot;Coming up next&amp;quot; blogpost draft by Deb Nicholson&lt;br /&gt;
* Jef&#039;s requests:&lt;br /&gt;
** Ticket #466 &amp;quot;Use of &amp;quot;Submit&amp;quot; in site copy is sterile and not as friendly and welcoming as it could be&amp;quot;. I&#039;d really like to change this soon to something more suitable. How can we improve the wording here? Some alternatives have been mentioned in the bug report, but which one should we pick? Link: http://bugs.foocorp.net/issues/466&lt;br /&gt;
** The concept and naming of &amp;quot;favourites&amp;quot;. We&#039;ll (hopefully) be able to &amp;quot;favourite&amp;quot; media soon, which I *think* means that 1) it&#039;ll work like a &amp;quot;I like this&amp;quot; comment, a quick token of appreciation, 2) it&#039;ll be added to your list of favourites so you can save and promote it, and 3) we could maybe use the number of favourites as a ranking. What I&#039;d like to know is: is that the intended purpose? If so, should we name them favo(u)rites or something else? &amp;quot;Like&amp;quot;, &amp;quot;love&amp;quot;, &amp;quot;save&amp;quot;, &amp;quot;appreciate&amp;quot;, &amp;quot;heart&amp;quot;, &amp;quot;high five&amp;quot; and many more could all be contenders. And the name should be consistent with the action and purpose, of course. So I&#039;d like to clear up how and why we will use favourites and what we should call them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2011-11 (held on 2011-11-05) ===&lt;br /&gt;
&lt;br /&gt;
[http://mediagoblin.org/irclogs/irc_meeting_2011-11-05.txt IRC log]&lt;br /&gt;
&lt;br /&gt;
* What happened in the last month, what was good, what could be better next time?&lt;br /&gt;
** Release:&lt;br /&gt;
*** Good: 0.1.0 released!&lt;br /&gt;
*** Bad: postponing vs not postponing&lt;br /&gt;
** Sites and deployment documentation:&lt;br /&gt;
*** Good: new mediagoblin.org&lt;br /&gt;
*** Good: deployment documentation&lt;br /&gt;
*** Bad: py-bcrypt’s site was down just after the release, so the virtualenv deployment didn’t work, and it wasn’t clear how to fix it.&lt;br /&gt;
** Live instances:&lt;br /&gt;
*** Joar has a live instance!&lt;br /&gt;
*** But what does it mean? Should ordinary users start using it?&lt;br /&gt;
**** Details at [[User:Joar/mg.wandborg.se]] -- [[User:Joar|Joar]] 17:01, 6 November 2011 (EST)&lt;br /&gt;
*** nyergler added a note about &amp;quot;heartbeat&amp;quot;/status to API notes&lt;br /&gt;
* What should be done next month?&lt;br /&gt;
* Starting real work on federation (via OStatus)... and do we split any of this work out into its own library?&lt;br /&gt;
* An API&lt;br /&gt;
* Creative Commons licensing tools&lt;br /&gt;
* Merging in the multimedia/video branch&lt;br /&gt;
*: (this is *very close* already actually thanks to the hard work of Joar Wandborg!  But we need some help on the gstreamer front to fix a few issues... if you or someone you know is an expert in this area we could really use their help to make the videos that come out smoother!)&lt;br /&gt;
* Rollover items from 0.1.0&lt;br /&gt;
* Multiple file upload interface&lt;br /&gt;
* Drag and drop uploads interface (probably related!)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2011-10 (held on 2011-10-01) ===&lt;br /&gt;
&lt;br /&gt;
[http://mediagoblin.org/irclogs/irc_meeting_2011-10-01.txt IRC log]&lt;br /&gt;
&lt;br /&gt;
This month&#039;s meeting was a quickly announced short meeting. The project is getting back on track and next month&#039;s meeting will be scheduled more properly. A bunch of people were around.&lt;br /&gt;
&lt;br /&gt;
The most important decisions:&lt;br /&gt;
* The project will keep monthly releases. They&#039;re the heartbeat of the project.&lt;br /&gt;
* Release 0.1.0 this sunday/monday.&lt;br /&gt;
* New website will hopefully be deployed in the next few days.&lt;br /&gt;
* And the following things are planned to happen during this month: Most importantly federation. The developers have decided to make up their minds on what federation aactually should mean for MediaGoblin. Concerning code, probably &amp;quot;activity streams&amp;quot; are the first goal. If there is no (good) python library for this, a new stand alone library may be created. If so, a name for it has to be found. It should have something about communication in it. And the other thing to happen during this month is an ongoing discussion about &amp;quot;bus factor&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2011-09 (held on 2011-09-03) ===&lt;br /&gt;
&lt;br /&gt;
[http://mediagoblin.org/irclogs/irc_meeting_2011-09-03.txt IRC log]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2011-08 (held on 2011-08-06) ===&lt;br /&gt;
&lt;br /&gt;
[http://mediagoblin.org/irclogs/irc_meeting_2011-08-06.txt IRC log]&lt;/div&gt;</summary>
		<author><name>Ayleph</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=HackingHowto&amp;diff=1861</id>
		<title>HackingHowto</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=HackingHowto&amp;diff=1861"/>
		<updated>2016-10-18T05:39:24Z</updated>

		<summary type="html">&lt;p&gt;Ayleph: Add section about py2 vs py3 and issues with py3&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;
&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>Ayleph</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=Deployment&amp;diff=1841</id>
		<title>Deployment</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=Deployment&amp;diff=1841"/>
		<updated>2016-06-08T22:31:37Z</updated>

		<summary type="html">&lt;p&gt;Ayleph: Fixing script name per https://issues.mediagoblin.org/ticket/5459&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page could use a lot of work.  For now, a few smaller deployment tips!&lt;br /&gt;
&lt;br /&gt;
See also: http://docs.mediagoblin.org/deploying.html (some of which may belong here)&lt;br /&gt;
&lt;br /&gt;
= uwsgi =&lt;br /&gt;
&lt;br /&gt;
Possibly a cleaner way to do nginx configuration than the official nginx + fastcgi suggestions!&lt;br /&gt;
&lt;br /&gt;
http://nathanielca.se/fossrit/deploying-mediagoblin-1-fastcgi-vs-uwsgi.html&lt;br /&gt;
&lt;br /&gt;
= uwsgi with configs =&lt;br /&gt;
&lt;br /&gt;
Below there are 3 configs: for nginx, for uwsgi version 1.2.3-debian and for supervisord, used to run celery.&lt;br /&gt;
&lt;br /&gt;
In future, when newer versions of uwsgi appear in debian, supervisor can be removed.&lt;br /&gt;
&lt;br /&gt;
All instructions below are for Debian 7. They should also work with rpm-based systems, but with other paths.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt-get install uwsgi uwsgi-plugin-python nginx-full supervisor;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/etc/nginx/sites-available/mediagoblin:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
server {&lt;br /&gt;
        server_name &amp;lt;domain&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
        access_log /var/log/nginx/mg.access.log;&lt;br /&gt;
        error_log /var/log/nginx/mg.error.log error;&lt;br /&gt;
&lt;br /&gt;
        #include global/common.conf;&lt;br /&gt;
&lt;br /&gt;
        client_max_body_size 100m;&lt;br /&gt;
        add_header X-Content-Type-Options nosniff;&lt;br /&gt;
&lt;br /&gt;
        root /path/to/mediagoblin//user_dev/;&lt;br /&gt;
&lt;br /&gt;
        location /mgoblin_static/ {&lt;br /&gt;
                alias /path/to/mediagoblin/mediagoblin/static/;&lt;br /&gt;
        }&lt;br /&gt;
        location /mgoblin_media/ {&lt;br /&gt;
                alias /path/to/mediagoblin/user_dev/media/public/;&lt;br /&gt;
        }&lt;br /&gt;
        location /theme_static/ {&lt;br /&gt;
        }&lt;br /&gt;
        location /plugin_static/ {&lt;br /&gt;
        }&lt;br /&gt;
        location / {&lt;br /&gt;
                uwsgi_pass unix:///tmp/mg.uwsgi.sock;&lt;br /&gt;
                uwsgi_param SCRIPT_NAME &amp;quot;&amp;quot;;&lt;br /&gt;
                include uwsgi_params;&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/etc/uwsgi/apps-available/mg.yaml:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uwsgi:&lt;br /&gt;
 uid: mediagoblin&lt;br /&gt;
 gid: mediagoblin&lt;br /&gt;
 socket: /tmp/mg.uwsgi.sock&lt;br /&gt;
 chown-socket: www-data:www-data&lt;br /&gt;
 plugins: python&lt;br /&gt;
 home: /path/to/mediagoblin/&lt;br /&gt;
 chdir: /path/to/mediagoblin/&lt;br /&gt;
 ini-paste: /path/to/mediagoblin/paste_local.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/etc/supervisor/conf.d/mediagoblin.conf:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[program:celery]&lt;br /&gt;
command=/path/to/mediagoblin/bin/celery worker -l debug&lt;br /&gt;
&lt;br /&gt;
; Set PYTHONPATH to the directory containing celeryconfig.py&lt;br /&gt;
environment=PYTHONPATH=&amp;quot;/path/to/mediagoblin&amp;quot;,MEDIAGOBLIN_CONFIG=&amp;quot;/path/to/mediagoblin/mediagoblin_local.ini&amp;quot;,CELERY_CONFIG_MODULE=&amp;quot;mediagoblin.init.celery.from_celery&amp;quot;&lt;br /&gt;
&lt;br /&gt;
directory=/path/to/mediagoblin/&lt;br /&gt;
user=mediagoblin&lt;br /&gt;
numprocs=1&lt;br /&gt;
; uncomment below to enable logs saving&lt;br /&gt;
;stdout_logfile=/some/logs/path/celeryd_stdout.log&lt;br /&gt;
;stderr_logfile=/some/logs/path/celeryd_stderr.log&lt;br /&gt;
autostart=true&lt;br /&gt;
autorestart=false&lt;br /&gt;
startsecs=10&lt;br /&gt;
&lt;br /&gt;
; Need to wait for currently executing tasks to finish at shutdown.&lt;br /&gt;
; Increase this if you have very long running tasks.&lt;br /&gt;
stopwaitsecs = 600&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After setting all configs do:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s /etc/nginx/sites-available/mediagoblin /etc/nginx/sites-enabled/&lt;br /&gt;
ln -s /etc/uwsgi/apps-available/mg.yaml /etc/uwsgi/apps-enabled/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And don&#039;t forget to restart all your daemons:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
service uwsgi restart;&lt;br /&gt;
service nginx restart;&lt;br /&gt;
service supervisor stop; sleep 1; service supervisor start  # sleep 1 might be needed here because supervisor really stops not at once&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= FCGI script =&lt;br /&gt;
&lt;br /&gt;
This works great with the apache FCGID config example in the next section :) in which case you should name it &amp;quot;mg.fcgi&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Before use, make sure you replace &#039;/path/to/mediagoblin/bin/python&#039; with a real path on your server, e.g. &#039;/srv/www/myhomepage.com/mediagoblin/bin/python&#039;. Also replace &#039;/path/to/mediagoblin/paste.ini&#039;.&lt;br /&gt;
&lt;br /&gt;
If you encounter problems, try executing executing the script manually, e.g. &amp;lt;pre&amp;gt;./mg.fcgi&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Script:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/path/to/mediagoblin/bin/python&lt;br /&gt;
&lt;br /&gt;
# Written in 2011 by Christopher Allan Webber&lt;br /&gt;
#&lt;br /&gt;
# To the extent possible under law, the author(s) have dedicated all&lt;br /&gt;
# copyright and related and neighboring rights to this software to the&lt;br /&gt;
# public domain worldwide. This software is distributed without any&lt;br /&gt;
# warranty.&lt;br /&gt;
# &lt;br /&gt;
# You should have received a copy of the CC0 Public Domain Dedication along&lt;br /&gt;
# with this software. If not, see&lt;br /&gt;
# &amp;lt;http://creativecommons.org/publicdomain/zero/1.0/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
from paste.deploy import loadapp&lt;br /&gt;
from flup.server.fcgi import WSGIServer&lt;br /&gt;
&lt;br /&gt;
CONFIG_PATH = &#039;/path/to/mediagoblin/paste.ini&#039;&lt;br /&gt;
&lt;br /&gt;
## Uncomment this to run celery in &amp;quot;always eager&amp;quot; mode... ie, you don&#039;t have&lt;br /&gt;
## to run a separate process, but submissions wait till processing finishes&lt;br /&gt;
# import os&lt;br /&gt;
# os.environ[&#039;CELERY_ALWAYS_EAGER&#039;] = &#039;true&#039;&lt;br /&gt;
&lt;br /&gt;
def launch_fcgi():&lt;br /&gt;
    ccengine_wsgi_app = loadapp(&#039;config:&#039; + CONFIG_PATH)&lt;br /&gt;
    WSGIServer(ccengine_wsgi_app).run()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    launch_fcgi()&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Apache 2 Config With fcgid =&lt;br /&gt;
&lt;br /&gt;
Note that the libapache2-mod-fcgi in Debian is in the main section. libapache2-mod-fcgid can be used, but requires a slightly different configuration. For yum-based distributions, you may need to install mod_fcgid. &lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
    Options +ExecCGI&lt;br /&gt;
  &lt;br /&gt;
    # Accept up to 16MB requests&lt;br /&gt;
    FcgidMaxRequestLen 16777216&lt;br /&gt;
  &lt;br /&gt;
    ServerName mediagoblin.example.org&lt;br /&gt;
  &lt;br /&gt;
    Alias /mgoblin_static/ /path/to/mediagoblin/mediagoblin/static/&lt;br /&gt;
    Alias /mgoblin_media/ /path/to/mediagoblin/user_dev/media/public/&lt;br /&gt;
  &lt;br /&gt;
    ScriptAlias / /path/to/mediagoblin/mg.fcgi/&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Apache 2 Config With mod_wsgi =&lt;br /&gt;
&lt;br /&gt;
Apache can manage the MediaGoblin application itself with mod_wsgi. It requires slightly more configuration on the Apache side, but cuts out the FastCGI middleware. See their [http://code.google.com/p/modwsgi/wiki/ConfigurationGuidelines configuration guidelines] for advanced configuration.&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
    ServerName mediagoblin.example.org&lt;br /&gt;
  &lt;br /&gt;
    Alias /mgoblin_static/ /path/to/mediagoblin/mediagoblin/static/&lt;br /&gt;
    Alias /mgoblin_media/ /path/to/mediagoblin/user_dev/media/public/&lt;br /&gt;
  &lt;br /&gt;
    WSGIScriptAlias / /path/to/mediagoblin/wsgi.py&lt;br /&gt;
    # Set user and group to whatever user you used to install mediagoblin (if you used a system account, &lt;br /&gt;
    # it may have the group &#039;nogroup&#039; assigned, in that case you can remove the group parameter)&lt;br /&gt;
    # Remember to change python-path too!&lt;br /&gt;
    # Replace the python version in the &#039;python-path&#039; below with the correct one (eg 2.x -&amp;gt; 2.7)&lt;br /&gt;
    WSGIPassAuthorization On&lt;br /&gt;
    WSGIDaemonProcess gmg user=mediagoblin group=mediagoblin processes=2 threads=10 \&lt;br /&gt;
        umask=0007 inactivity-timeout=900 maximum-requests=1000 \&lt;br /&gt;
        python-path=/path/to/mediagoblin/:/path/to/mediagoblin/lib/python-2.x/site-packages/&lt;br /&gt;
    WSGIProcessGroup gmg&lt;br /&gt;
    WSGIApplicationGroup %{GLOBAL}&lt;br /&gt;
   &lt;br /&gt;
        &amp;lt;Directory &amp;quot;/path/to/mediagoblin/mediagoblin/static/&amp;quot;&amp;gt;&lt;br /&gt;
                Order allow,deny&lt;br /&gt;
                Allow from all&lt;br /&gt;
        &amp;lt;/Directory&amp;gt;&lt;br /&gt;
        &amp;lt;Directory &amp;quot;/path/to/mediagoblin/user_dev/media/public&amp;quot;&amp;gt;&lt;br /&gt;
                Order allow,deny&lt;br /&gt;
                Allow from all&lt;br /&gt;
        &amp;lt;/Directory&amp;gt;&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You&#039;ll also need to copy this into /path/to/mediagoblin/wsgi.py:&lt;br /&gt;
&lt;br /&gt;
  #!/path/to/mediagoblin/bin/python&lt;br /&gt;
  &lt;br /&gt;
  # Written in 2011 by Christopher Allan Webber&lt;br /&gt;
  #&lt;br /&gt;
  # To the extent possible under law, the author(s) have dedicated all&lt;br /&gt;
  # copyright and related and neighboring rights to this software to the&lt;br /&gt;
  # public domain worldwide. This software is distributed without any&lt;br /&gt;
  # warranty.&lt;br /&gt;
  # &lt;br /&gt;
  # You should have received a copy of the CC0 Public Domain Dedication along&lt;br /&gt;
  # with this software. If not, see&lt;br /&gt;
  # &amp;lt;http://creativecommons.org/publicdomain/zero/1.0/&amp;gt;.&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  import site&lt;br /&gt;
  # Replace the python version with the correct one in the line below (eg 2.x -&amp;gt; 2.7)&lt;br /&gt;
  site.addsitedir(&#039;/path/to/mediagoblin/lib/python-2.x/site-packages&#039;)&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  from paste.deploy import loadapp&lt;br /&gt;
  &lt;br /&gt;
  CONFIG_PATH = &#039;/path/to/mediagoblin/paste.ini&#039;&lt;br /&gt;
  &lt;br /&gt;
  ## Uncomment this to run celery in &amp;quot;always eager&amp;quot; mode... ie, you don&#039;t have&lt;br /&gt;
  ## to run a separate process, but submissions wait till processing finishes&lt;br /&gt;
  #import os&lt;br /&gt;
  #os.environ[&#039;CELERY_ALWAYS_EAGER&#039;] = &#039;true&#039;&lt;br /&gt;
  &lt;br /&gt;
  application = loadapp(&#039;config:&#039; + CONFIG_PATH)&lt;br /&gt;
&lt;br /&gt;
If you&#039;re getting strange errors when trying to upload something, your WSGI setup is probably not starting Celery. You should start it yourself, perhaps with your preferred init system or service supervisor.&lt;br /&gt;
&lt;br /&gt;
= Apache Config Example =&lt;br /&gt;
This configuration example uses mod_fastcgi.&lt;br /&gt;
&lt;br /&gt;
To install and enable mod_fastcgi on a Debian/Ubuntu based system:&lt;br /&gt;
&amp;lt;pre&amp;gt;# apt-get install libapache2-mod-suexec libapache2-mod-fastcgi&lt;br /&gt;
# a2enmod suexec&lt;br /&gt;
# a2enmod fastcgi&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sample configuration:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
ServerName mediagoblin.yourdomain.tld&lt;br /&gt;
ServerAdmin webmaster@yourdoimain.tld&lt;br /&gt;
DocumentRoot /var/www/&lt;br /&gt;
# Custom log files&lt;br /&gt;
CustomLog /var/log/apache2/mediagobling_access.log combined&lt;br /&gt;
ErrorLog /var/log/apache2/mediagoblin_error.log&lt;br /&gt;
&lt;br /&gt;
# Serve static and media files via alias&lt;br /&gt;
Alias /mgoblin_static/ /path/to/mediagoblin/mediagoblin/static/&lt;br /&gt;
Alias /mgoblin_media/ /path/to/mediagoblin/user_dev/media/public/&lt;br /&gt;
&lt;br /&gt;
# Rewrite all URLs to fcgi, except for static and media urls&lt;br /&gt;
RewriteEngine On&lt;br /&gt;
RewriteRule ^(mgoblin_static|mgoblin_media)($|/) - [L]&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !-f&lt;br /&gt;
RewriteRule ^/(.*)$ /mg.fcgi/$1 [QSA,L]&lt;br /&gt;
&lt;br /&gt;
# Allow access to static and media directories&lt;br /&gt;
&amp;lt;Directory /path/to/mediagoblin/mediagoblin/static&amp;gt;&lt;br /&gt;
  Order allow,deny&lt;br /&gt;
  Allow from all&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
&amp;lt;Directory /path/to/mediagoblin/mediagoblin/user_dev/media/public&amp;gt;&lt;br /&gt;
  Order allow,deny&lt;br /&gt;
  Allow from all&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Connect to fcgi server&lt;br /&gt;
FastCGIExternalServer /var/www/mg.fcgi -host 127.0.0.1:26543&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then, you need to make sure mediagoblin is running in fcgi mode:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd /path/to/mediagoblin&lt;br /&gt;
./lazyserver.sh --server-name=fcgi fcgi_host=127.0.0.1 fcgi_port=26543&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: there may be several ways to improve this configuration&lt;br /&gt;
&lt;br /&gt;
If it is too slow and you use the deflate module, you could try to use the following option : SetOutputFilter INFLATE&lt;br /&gt;
&lt;br /&gt;
= Lighttpd =&lt;br /&gt;
&lt;br /&gt;
This configuration example uses mod_fastcgi.&lt;br /&gt;
Make a symbolic link from &amp;lt;pre&amp;gt;/etc/lighttpd/conf-available/10-fastcgi.conf&amp;lt;/pre&amp;gt; to &amp;lt;pre&amp;gt;/etc/lighttpd/conf-enabled/10-fastcgi.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s /etc/lighttpd/conf-available/10-fastcgi.conf /etc/lighttpd/conf-enabled/10-fastcgi.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
then edit your /etc/lighttpd/conf-enabled/10-fastcgi.conf file modifying it as below to serve mediagoblin on the /tube/ path of your webserver.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## FastCGI programs have the same functionality as CGI programs,&lt;br /&gt;
## but are considerably faster through lower interpreter startup&lt;br /&gt;
## time and socketed communication&lt;br /&gt;
##&lt;br /&gt;
## Documentation: /usr/share/doc/lighttpd-doc/fastcgi.txt.gz&lt;br /&gt;
##                http://www.lighttpd.net/documentation/fastcgi.html&lt;br /&gt;
&lt;br /&gt;
server.modules   += ( &amp;quot;mod_fastcgi&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
## Start an FastCGI server for mediagoblin (lazyserver.sh or other deployments scripts should be up and running)&lt;br /&gt;
fastcgi.server = (&lt;br /&gt;
    # url at which the app should be accessible on the server&lt;br /&gt;
      &amp;quot;/tube&amp;quot; =&amp;gt;&lt;br /&gt;
      # mnemonical name of the backend&lt;br /&gt;
      ( &amp;quot;mg-local&amp;quot; =&amp;gt; (&lt;br /&gt;
                &amp;quot;host&amp;quot; =&amp;gt; &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
                &amp;quot;port&amp;quot; =&amp;gt; 6543,&lt;br /&gt;
                &amp;quot;docroot&amp;quot; =&amp;gt; &amp;quot;/path/to/mediagoblin-git-folder/mediagoblin&amp;quot;,&lt;br /&gt;
                &amp;quot;check-local&amp;quot; =&amp;gt; &amp;quot;disable&amp;quot;&lt;br /&gt;
                )&lt;br /&gt;
        )&lt;br /&gt;
&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then open your /etc/lighttpd/lighttpd.conf and add the configuration to serve directly the static/public folders&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
alias.url += (&lt;br /&gt;
        &amp;quot;/mgoblin_static/&amp;quot; =&amp;gt; &amp;quot;/path/to/mediagoblin-git-folder/mediagoblin/static/&amp;quot;,&lt;br /&gt;
        &amp;quot;/mgoblin_media/&amp;quot; =&amp;gt; &amp;quot;/path/to/mediagoblin-git-folder/user_dev/media/public/&amp;quot;,&lt;br /&gt;
        &amp;quot;/theme_static/&amp;quot; =&amp;gt; &amp;quot;/path/to/mediagoblin-git-folder/user_dev/theme_static/&amp;quot;,&lt;br /&gt;
        &amp;quot;/plugin_static/&amp;quot; =&amp;gt; &amp;quot;/path/to/mediagoblin-git-folder/user_dev/plugin_static/&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Done!&lt;br /&gt;
&lt;br /&gt;
= OpenShift =&lt;br /&gt;
&lt;br /&gt;
Thers&#039;s a blogpost saying how to [http://www.sud0.com/gnu-media-goblin-on-openshift.html install mediagoblin on openshift].&lt;br /&gt;
&lt;br /&gt;
= Juju =&lt;br /&gt;
&lt;br /&gt;
There is a juju [https://juju.ubuntu.com/Charms charm] available for deploying mediagoblin into EC2 or on your local box.  [https://juju.ubuntu.com/ juju] is available in Ubuntu 11.10 and later, though it is recommended that you pull it from [https://launchpad.net/~juju/+archive/pkgs the juju PPA], which includes backported packages going back to Ubuntu 11.10. To use the juju charm, install juju and configure either the [https://juju.ubuntu.com/docs/provider-configuration-local.html local provider] or one of the cloud API providers, currently the [https://juju.ubuntu.com/docs/provider-configuration-ec2.html EC2 provider] is the best supported and works not only with Amazon Web Services but also OpenStack clouds. There is also a newer native OpenStack API provider which is known to support HP Cloud.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# if you have not bootstrapped&lt;br /&gt;
juju bootstrap&lt;br /&gt;
mkdir ~/charms&lt;br /&gt;
bzr init-repo ~/charms/precise&lt;br /&gt;
bzr branch lp:~clint-fewbar/charms/precise/mediagoblin/trunk ~/charms/precise/mediagoblin&lt;br /&gt;
juju deploy --repository ~/charms local:mediagoblin&lt;br /&gt;
juju expose mediagoblin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Currently the charm is volatile, deploying from trunk, and deploys a single-server version of MediaGoblin only. It will eventually relate to the existing juju charms for other supported data stores to allow one to scale out their MediaGoblin instance.&lt;br /&gt;
&lt;br /&gt;
= Init scripts =&lt;br /&gt;
&lt;br /&gt;
== Debian init scripts ==&lt;br /&gt;
&lt;br /&gt;
Joar has some scripts for running celery and mediagoblin separately that are designed for Debian.&lt;br /&gt;
&lt;br /&gt;
https://github.com/joar/mediagoblin-init-scripts&lt;br /&gt;
&lt;br /&gt;
== Arch Linux init scripts ==&lt;br /&gt;
&lt;br /&gt;
[http://whird.jpope.org/2012/04/14/mediagoblin-archlinux-rcd-scripts Jeremy Pope has written a nice blogpost] on how to add init scripts to deploy MediaGoblin with both the python paste http server and the celery deployments separated.&lt;br /&gt;
&lt;br /&gt;
If you want a simpler setup and don&#039;t want to deploy celery separately, consider either turning CELERY_ALWAYS_EAGER to true in the paste init script described above, or check out [http://chimo.chromic.org/2012/03/01/mediagoblin-init-script-on-archlinux/ Chimo&#039;s guide].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Generic, simple init script ==&lt;br /&gt;
&lt;br /&gt;
This is a super stupidly simple init script that was used for mediagoblin.com... note that this has Celery running in always eager mode.&lt;br /&gt;
&lt;br /&gt;
You will need to adjust the paths appropriately.  This could probably be better written!&lt;br /&gt;
&lt;br /&gt;
  #! /bin/sh&lt;br /&gt;
  &lt;br /&gt;
  ## Stupidly simple mediagoblin init script.&lt;br /&gt;
  # &lt;br /&gt;
  # Written in 2012 by Christopher Allan Webber&lt;br /&gt;
  #&lt;br /&gt;
  # To the extent possible under law, the author(s) have dedicated all&lt;br /&gt;
  # copyright and related and neighboring rights to this software to the&lt;br /&gt;
  # public domain worldwide. This software is distributed without any&lt;br /&gt;
  # warranty.&lt;br /&gt;
  # &lt;br /&gt;
  # You should have received a copy of the CC0 Public Domain Dedication along&lt;br /&gt;
  # with this software. If not, see&lt;br /&gt;
  # &amp;lt;http://creativecommons.org/publicdomain/zero/1.0/&amp;gt;.&lt;br /&gt;
  &lt;br /&gt;
  PASTER=/srv/mediagoblin.com/bin/paster&lt;br /&gt;
  PASTE_CONFIG=/srv/mediagoblin.com/paste.ini&lt;br /&gt;
  OPTIONS=&amp;quot;--pid-file=/tmp/mediagoblin.pid \&lt;br /&gt;
   --log-file=/srv/mediagoblin.com/paster.log \&lt;br /&gt;
   --server-name=fcgi fcgi_host=127.0.0.1 fcgi_port=26543&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  CELERY_ALWAYS_EAGER=true su -pc &amp;quot;$PASTER serve $PASTE_CONFIG $1 $OPTIONS&amp;quot; webadmin&lt;br /&gt;
&lt;br /&gt;
== systemd init scripts ==&lt;br /&gt;
&lt;br /&gt;
The following systemd scripts provide separate Paste and Celery instances. Replace &amp;lt;code&amp;gt;/path/to/mediagoblin&amp;lt;/code&amp;gt; to match your install path. The directories &amp;lt;code&amp;gt;/var/log/mediagoblin&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/var/run/mediagoblin&amp;lt;/code&amp;gt; are not created by default; you may create them yourself or change the location of the pid and log files. You may omit the log file if you choose. The init scripts provided below assume customized versions of mediagoblin.ini and paste.ini have been created as mediagoblin_local.ini and paste_local.ini, respectively; you should change those lines to point back to the original mediagoblin.ini or paste.ini files if you haven&#039;t made customizations.&lt;br /&gt;
&lt;br /&gt;
If you prefer not to run separate Celery, uncomment &amp;lt;code&amp;gt;Environment=CELERY_ALWAYS_EAGER=true&amp;lt;/code&amp;gt; and comment &amp;lt;code&amp;gt;Environment=CELERY_ALWAYS_EAGER=false&amp;lt;/code&amp;gt;. You won&#039;t need the file &amp;lt;code&amp;gt;/etc/systemd/system/gmg-celery.service&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/systemd/system/gmg.service&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=Mediagoblin&lt;br /&gt;
  &lt;br /&gt;
 [Service]&lt;br /&gt;
 Type=forking&lt;br /&gt;
 User=mediagoblin&lt;br /&gt;
 Group=mediagoblin&lt;br /&gt;
 #Environment=CELERY_ALWAYS_EAGER=true&lt;br /&gt;
 Environment=CELERY_ALWAYS_EAGER=false&lt;br /&gt;
 WorkingDirectory=/path/to/mediagoblin&lt;br /&gt;
 ExecStart=/path/to/mediagoblin/bin/paster serve \&lt;br /&gt;
              /path/to/mediagoblin/paste_local.ini \&lt;br /&gt;
              --pid-file=/var/run/mediagoblin/paster.pid \&lt;br /&gt;
              --log-file=/var/log/mediagoblin/paster.log \&lt;br /&gt;
              --daemon \&lt;br /&gt;
              --server-name=fcgi fcgi_host=127.0.0.1 fcgi_port=26543&lt;br /&gt;
 ExecStop=/path/to/mediagoblin/bin/paster serve \&lt;br /&gt;
             --pid-file=/var/run/mediagoblin/paster.pid \&lt;br /&gt;
             /path/to/mediagoblin/paste_local.ini stop&lt;br /&gt;
 PIDFile=/var/run/mediagoblin/paster.pid&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=multi-user.target&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/systemd/system/gmg-celeryd.service&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=Mediagoblin Celeryd&lt;br /&gt;
  &lt;br /&gt;
 [Service]&lt;br /&gt;
 User=mediagoblin&lt;br /&gt;
 Group=mediagoblin&lt;br /&gt;
 Type=simple&lt;br /&gt;
 WorkingDirectory=/path/to/mediagoblin&lt;br /&gt;
 Environment=&amp;quot;MEDIAGOBLIN_CONFIG=/path/to/mediagoblin/mediagoblin_local.ini&amp;quot; \&lt;br /&gt;
 CELERY_CONFIG_MODULE=mediagoblin.init.celery.from_celery&lt;br /&gt;
 ExecStart=/path/to/mediagoblin/bin/celeryd&lt;br /&gt;
 PIDFile=/var/run/mediagoblin/mediagoblin-celeryd.pid&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=multi-user.target&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/usr/lib/tmpfiles.d/gmg.conf&amp;lt;/code&amp;gt;:&lt;br /&gt;
 d /var/run/mediagoblin 0755 mediagoblin mediagoblin&lt;br /&gt;
&lt;br /&gt;
Invoke the Paste or Celery processes using systemctl. Eg,&lt;br /&gt;
&lt;br /&gt;
 $ sudo systemctl start|stop|restart gmg.service&lt;br /&gt;
&lt;br /&gt;
 $ sudo systemctl start|stop|restart gmg-celeryd.service&lt;br /&gt;
&lt;br /&gt;
= Running on Dreamhost.com =&lt;br /&gt;
&lt;br /&gt;
===Set up your python virtualenv===&lt;br /&gt;
&lt;br /&gt;
dreamhost.com servers come with python 2.4 and 2.5 installed which is too old for mediagoblin. This means you need to compile and install a newer python (don&#039;t worry this is really not difficult on dreamhost servers). In order to be able to install python packages for a local user without touching system files, we need to setup a python &#039;&#039;virtualenv&#039;&#039;. Fortunately, this is not too tricky either. If your server has python 2.6 or 2.7 installed already, you can skip the [[#Install a local python|python installation stuff]] and you&#039;ll only need to [[#Setup virtualenv to install local python packages|install virtualenv]].&lt;br /&gt;
&lt;br /&gt;
====Install a local python====&lt;br /&gt;
# Download the latest python: http://python.org/ftp/python/XXX/Python-XXX.tar.bz2&lt;br /&gt;
# Unpack with &amp;lt;pre&amp;gt;tar xvjf Python-XXX.tar.bz2&amp;lt;/pre&amp;gt;&lt;br /&gt;
# &#039;&#039;cd&#039;&#039; into the directory and compile and install python locally:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;./configure --prefix=$HOME/local&lt;br /&gt;
make&lt;br /&gt;
make install&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
:This will install python (I used 2.7.3) into /home/&amp;lt;USERNAME&amp;gt;/local/bin/python. You might get warnings about some modules not being able to compile. :It was tcl/tk and bzip2 mainly, but things still worked out overall.&lt;br /&gt;
:&lt;br /&gt;
:You should now be able to invoke &amp;lt;tt&amp;gt;~/local/bin/python&amp;lt;/tt&amp;gt; and fall into a shell of your new python (exit with ctrl-d). Congrats, you have now a new python 2.7 that you can use. However, you will need to be able to install additional packages as a user and this is what virtualenv allows.&lt;br /&gt;
&lt;br /&gt;
====Setup virtualenv to install local python packages====&lt;br /&gt;
# Download the latest virtualenv: http://pypi.python.org/packages/source/v/virtualenv/XXX&lt;br /&gt;
# Install the virtualenv: &amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;~/local/bin/python ~/virtualenv-1.8/virtualenv.py  $HOME/local/virtenv&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
:: You will now have: ~/local/virtenv/bin/python&lt;br /&gt;
# In  ~/.bash_profile add: &amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;PATH=~/local/virtenv/bin:~/local/bin:${PATH}&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
:: so that your local python will be preferred.&lt;br /&gt;
:: Log out, log in again and test python&amp;quot; to see which version will be invoked. It should be the new python. Check &amp;quot;which easy_install&amp;quot; to see if the one in local/virtenv would be executed.&lt;br /&gt;
::  &lt;br /&gt;
:: You have now 1) a local &#039;&#039;python&#039;&#039; installation that you can use, and 2) &#039;&#039;easy_install&#039;&#039; will also work with your local user installation. From now on you can e.g. locally install the nose testing framework (&#039;&#039;easy_install nose&#039;&#039;) and use it (&#039;&#039;python -c &amp;quot;import nose&amp;quot;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
===Install mediagoblin as a site package===&lt;br /&gt;
&lt;br /&gt;
# Check out mediagoblin from git to e.g. ~/mediagoblin&lt;br /&gt;
# Install MediaGoblin and all dependencies for MediaGoblin with easy_install.&lt;br /&gt;
:* In the mediagoblin directory issue:&lt;br /&gt;
:&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;python setup.py&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
:* You will also need to: easy_install lxml&lt;br /&gt;
:* Python-image was trickier to install: &amp;lt;pre&amp;gt;easy_install --find-links http://www.pythonware.com/products/pil/ Imaging&amp;lt;/pre&amp;gt;&lt;br /&gt;
::Test by leaving the mediagoblin directory and see if you can import it: &amp;lt;pre&amp;gt;python -c &amp;quot;import mediagoblin&amp;quot;&amp;lt;/pre&amp;gt; looking for error messages.&lt;br /&gt;
&lt;br /&gt;
===Set up an WSGI environment on Dreamhost===&lt;br /&gt;
&lt;br /&gt;
# Enable the mod_passenger setting for ruby/python in the domains web panel&lt;br /&gt;
# &#039;&#039;cd&#039;&#039; into the domain directory (e.g. ~/media.sspaeth.de for me)&lt;br /&gt;
# Copy mediagoblin.ini and paste.ini from the ~/mediagoblin directory here&lt;br /&gt;
# Create passenger_wsgi.py in your domain directory (e.g. ~/media.sspaeth.de for me):&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;import sys, os&lt;br /&gt;
INTERP = &amp;quot;/home/&amp;lt;username&amp;gt;/local/virtenv/bin/python&amp;quot;&lt;br /&gt;
#INTERP is present twice so that the new python interpreter knows the actual executable path&lt;br /&gt;
if sys.executable != INTERP: os.execl(INTERP, INTERP, *sys.argv)&lt;br /&gt;
&lt;br /&gt;
from paste.deploy import loadapp&lt;br /&gt;
application = loadapp(&#039;config:/home/mediagoblin/media.sspaeth.de/paste.ini&#039;)&lt;br /&gt;
&lt;br /&gt;
#If in case of errors, all you get are mysterious error 500, you can set debug=true in paste.ini to see stack traces&lt;br /&gt;
# Otherwise, add this:&lt;br /&gt;
#from paste.exceptions.errormiddleware import ErrorMiddleware&lt;br /&gt;
#application = ErrorMiddleware(application, debug=True)&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
# Set up the database by issueing: &amp;lt;pre&amp;gt;gmg dbupdate&amp;lt;/pre&amp;gt;&lt;br /&gt;
# (optional but recommended) Serve the static files directly from the webserver.&lt;br /&gt;
:In paste.ini in this section: [composite:routing] comment out the static files:&lt;br /&gt;
   #/mgoblin_static/ = mediagoblin_static&lt;br /&gt;
   #/theme_static/ = theme_static&lt;br /&gt;
:and symlink the mediagobin/mediagoblin/static directoy to public/mgoblin_static&lt;br /&gt;
:           and mediagoblin/mediagoblin/themes to public/theme_static&lt;br /&gt;
:&lt;br /&gt;
:so it is displayed directly. This step might be different depending on your web server configuration. There is no reason that static&lt;br /&gt;
:files need to go through all the python indirection when they can be served directly by nginx/apache/...&lt;br /&gt;
:&lt;br /&gt;
:In case you want to delete your git checkout after the installation (you don&#039;t need it, since you installed the mediagoblin package to ~/local/virtenv/lib/python2.7/mediagoblin... you should do the symlinking from there.&lt;br /&gt;
===Open Issues===&lt;br /&gt;
Please fill in the blanks if you find them out:&lt;br /&gt;
* How to enable logging to a file or standard html logs? Console output just disappears.&lt;br /&gt;
* How to set up things not using sqlite. What&#039;s wrong with mySQL?&lt;br /&gt;
&lt;br /&gt;
===Troubleshooting===&lt;br /&gt;
* First of all: invoke &amp;lt;pre&amp;gt;python passenger_wsgi.py&amp;lt;/pre&amp;gt; directly from the shell. This will tell you if there are import errors etc. If this command exits without any output on the console, you have already achieved a lot.&lt;br /&gt;
* In &#039;&#039;paste.ini&#039;&#039; set debug=true. This will show you python backtraces directly in the web page&lt;br /&gt;
* You will need to configure an smtp user/passwd/server in mediagoblin.ini, so you actually get the account creation token mailed out. Hint, the relevant settings are: &amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;email_debug_mode = false&lt;br /&gt;
email_sender_address = postmaster@sspaeth.de&lt;br /&gt;
email_smtp_host = SMTP.DOMAIN.TLD&lt;br /&gt;
email_smtp_user = USERNAME&lt;br /&gt;
email_smtp_pass = WEIRDPASSWORD&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* In case you can upload media, but it does not appear. You don&#039;t have the celery server running. Add &amp;lt;pre&amp;gt;CELERY_ALWAYS_EAGER = true&amp;lt;/pre&amp;gt; to the &#039;&#039;[celery]&#039;&#039; section in mediagoblin.ini&lt;br /&gt;
&lt;br /&gt;
=Miscellaneous Hacks=&lt;br /&gt;
==Force translation==&lt;br /&gt;
There might some conditions under which you would prefer that MediaGoblin always return the same translation.  If you are deploying with nginx and fastcgi, you can force MediaGoblin to return a specific translation regardless of browser preferences by passing a specific HTTP_ACCEPT_LANGUAGE fastcgi parameter in your location block. Example last line in location block:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
    fastcgi_param HTTP_ACCEPT_LANGUAGE es; #force spanish translation&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Create an admin user==&lt;br /&gt;
&lt;br /&gt;
To create an admin user, first create the user you need either via the website or the command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./bin/gmg adduser&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then to turn it into an admin account use&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./bin/gmg makeadmin your_username&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ayleph</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=CommunityGovernance&amp;diff=1728</id>
		<title>CommunityGovernance</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=CommunityGovernance&amp;diff=1728"/>
		<updated>2015-08-24T16:56:19Z</updated>

		<summary type="html">&lt;p&gt;Ayleph: who admins the issue tracker box?&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;
* 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;
&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: ???&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 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>Ayleph</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=CommunityGovernance&amp;diff=1719</id>
		<title>CommunityGovernance</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=CommunityGovernance&amp;diff=1719"/>
		<updated>2015-06-25T17:52:12Z</updated>

		<summary type="html">&lt;p&gt;Ayleph: /* MediaGoblin issue tracker */  I have spam admin access&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;
&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;
* 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;
&lt;br /&gt;
* Publish pages (for example new releases)&lt;br /&gt;
&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;
* 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 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;/div&gt;</summary>
		<author><name>Ayleph</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=Main_Page&amp;diff=1639</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=Main_Page&amp;diff=1639"/>
		<updated>2015-01-15T01:04:26Z</updated>

		<summary type="html">&lt;p&gt;Ayleph: Undo revision 1634 by MonikaQDCU (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Want to Join the MediaGoblin Community? =&lt;br /&gt;
&lt;br /&gt;
We’re really glad that you want to join the MediaGoblin community!&lt;br /&gt;
&lt;br /&gt;
There are a variety of ways to help and support MediaGoblin and to join the team.  If you want to code, great, if not, even better!  MediaGoblin interested contributors in many different roles: users, system administrators, technical writers, testers, evangelists, UI/UX and graphics designers, cheerleaders, and dreamers.&lt;br /&gt;
&lt;br /&gt;
We observe the [https://www.djangoproject.com/conduct/ Django code of conduct].  Be welcoming, friendly, and patient!&lt;br /&gt;
&lt;br /&gt;
This wiki covers a variety of ways that you can get involved with MediaGoblin as well as instructions on how to get started.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hang out with the MediaGoblin folk ==&lt;br /&gt;
&lt;br /&gt;
MediaGoblin has a mailing list and an IRC channel where we hang out.  See [http://mediagoblin.org/pages/join.html our join page] for links.&lt;br /&gt;
&lt;br /&gt;
Please drop by and say “Hi!”  And, if you’re looking for something to do, just ask---there’s always work to be done.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Take Part in the Monthly Meetings ==&lt;br /&gt;
&lt;br /&gt;
Each month is a [[:Meeting|Meeting]]. You can take part and help decide on the future of MediaGoblin. Or just be around and see what&#039;s happening live!&lt;br /&gt;
&lt;br /&gt;
=How Can you help ?=&lt;br /&gt;
&lt;br /&gt;
First and foremost, for many (but not all) types of contributions you may want to set up a local instance.  To learn how to do this, see the [[HackingHowto]] page.  (If you&#039;re not familiar with command line level things, there are still ways you can help below!)&lt;br /&gt;
&lt;br /&gt;
== File Bugs / Triage Bugs ==&lt;br /&gt;
&lt;br /&gt;
Issue reports are critical for all projects.  Identified bugs give developers a basis for beginning work, and providing an idea of what features and issues are most important to users and the overall usability of the software.  If you identify errors, flaws, unexpected behaviors, or deficits that impede use, file a bug.&lt;br /&gt;
&lt;br /&gt;
* [[File Bugs]] -- notes on filing new bugs/issues/feature requests&lt;br /&gt;
* [[Feature Ideas]] -- notes on possible features&lt;br /&gt;
* [[Triage Bugs]] -- notes on triaging&lt;br /&gt;
* [[BugTriageDay]] -- every other Thursday is bug triage day where anyone can help out triaging bugs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Send Encouragement / Spread the Word ==&lt;br /&gt;
&lt;br /&gt;
Sometimes, a nice word, simple encouragement, and interest in the work we’re doing is enough to inspire a tizzy of productive work.  Just a bit more interest and encouragement can even make the difference between a complete feature and limited functionality; between a completed milestone and lost momentum.&lt;br /&gt;
&lt;br /&gt;
Similarly, MediaGoblin, and the movement for free network services, is always in need of encouragement.  Use free network services, understand the principals behind the movement, be able to articulate the benefits of free network services and the problems with psudo-free applications that don’t respect the users’ freedom.&lt;br /&gt;
&lt;br /&gt;
Write a blog post, post a status update, drop by the listserv or join #mediagoblin on freenode.net and let us know.  See [http://mediagoblin.org/join/ our join page] for links.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Write Documentation / Edit Documentation ==&lt;br /&gt;
&lt;br /&gt;
* [[Documentation quick start]] - How to contribute to the documentation effort.&lt;br /&gt;
* [[ManualStandards]] - covers the standards for writing the user manual (forthcoming.) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test MediaGoblin ==&lt;br /&gt;
&lt;br /&gt;
Do you have access to the web? Do you like sharing your opinions? If so, we need your help to test MediaGoblin! Testers play around with the current test instance, note what operating system and browser they use (notes on multiple set-ups are also helpful) and take some notes. That&#039;s it! It&#039;s a very important task that doesn&#039;t require any special knowledge and you&#039;re done in under an hour. Ready to help?  &lt;br /&gt;
&lt;br /&gt;
* [[User Experience]] - user experience testing.  Includes link to an instance you can try!&lt;br /&gt;
* [[UnitTests|Unit Tests]] - all about the unit tests&lt;br /&gt;
* [[Manual_Functional_Testing|Manual Functional Testing]] - a great way to get to know MediaGoblin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Translate MediaGoblin ==&lt;br /&gt;
&lt;br /&gt;
If you know English and another language and feel comfortable translating elements of the interface or even the documentation, we’d love to have help translating the software and resources.&lt;br /&gt;
Translating MediaGoblin is very easy with a web interface, so there is no programming knowledge required at all.&lt;br /&gt;
&lt;br /&gt;
* [[Translations]] - How to translate stuff or update the translations&lt;br /&gt;
&lt;br /&gt;
== Become a User ==&lt;br /&gt;
&lt;br /&gt;
Coming soon!&lt;br /&gt;
&lt;br /&gt;
We’re building MediaGoblin for us and for you but really you’re one of us and I am you and we are we and MediaGoblin is the walrus.&lt;br /&gt;
&lt;br /&gt;
We&#039;re planning to launch our own public instance of MediaGoblin in the near future--probably in the September/October 2011 time frame.  When we do, sign up for an account, use the service and relish in the thought that this service comes with a heaping side of Freedom and you can salt and pepper it to your liking.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Help Others ==&lt;br /&gt;
&lt;br /&gt;
Have you spent time with MediaGoblin?  If so, your experience and wisdom are invaluable and you’re the best person we can think of to help other users with their questions.&lt;br /&gt;
&lt;br /&gt;
Hang out on the IRC channel and help answer new peoples&#039; questions.  See [http://mediagoblin.org/join/ our join page] for links.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Run your own MediaGoblin Instance ==&lt;br /&gt;
&lt;br /&gt;
Are there things about our instance you want to change?  Are there things about other instances you wish were different?  Want to test upcoming changes?  Want to create patches to implement things you need?  That’s great—you can run your own instance!&lt;br /&gt;
&lt;br /&gt;
The primary documentation for this is at [http://docs.mediagoblin.org http://docs.mediagoblin.org] but here are some additional tips:&lt;br /&gt;
&lt;br /&gt;
* [[Configure_MediaGoblin|Configuration]] - Learn about MediaGoblin configuration files and file options.&lt;br /&gt;
* [[Deployment]] - General deployment advice&lt;br /&gt;
* [[Scaling Down]] - Minimizing MediaGoblin&#039;s resource requirements&lt;br /&gt;
* [[Virtual Machine Hosting]] - Deploy your own publicly available MediaGoblin server using [http://aws.amazon.com/free/?utm_source=adwords&amp;amp;utm_medium=cpc&amp;amp;utm_campaign=CPC_Google_AWS_ec2&amp;amp;utm_content=TextV01_PP_V01_EC2&amp;amp;trk=CPC_Google_AWS_ec2 Amazon&#039;s free EC2 tier].&lt;br /&gt;
&lt;br /&gt;
= Technical project documentation =&lt;br /&gt;
&lt;br /&gt;
The technical docs, that are more finished and the ones that are better maintained near the code (so they stay up to date) are in the more technical chapters of the [http://docs.mediagoblin.org/ main documentation].&lt;br /&gt;
* [[Storage]] - How MediaGoblin&#039;s internal storage system works.&lt;br /&gt;
* [[Processing]] - What happens after you submit your image/video/etc?  Processing!  More about that.&lt;br /&gt;
* [https://gitorious.org/mediagoblin/mediagoblin/blobs/master/extlib/README External Library Policy] - covers use of external libraries&lt;br /&gt;
* [[User:Cwebber/braindumps]] - Chris Webber&#039;s braindumps (you can help refactoring these into real sections of the site!)&lt;br /&gt;
* [[Multiple media support]] - Design plan for multiple media support&lt;br /&gt;
&lt;br /&gt;
== Write Code / Fix Code ==&lt;br /&gt;
&lt;br /&gt;
MediaGoblin development is premised on the idea that the entire interface for the platform be completely theme-able.  If you have a design or theming background, consider developing themes for MediaGoblin.  New themes help test the theming system, provide attractive and appealing interfaces for prospective users.  If you want to start a new theme but don’t know where to start, touch base with the development community on the list or in the IRC channel for more information.&lt;br /&gt;
&lt;br /&gt;
If you are a coder and you would like to write code, the repository is hosted on gitorious. Clone or fork the repository and start poking around. Become familiar with this manual for an overview of how the software works and is used. Consider the contributor wiki for more information about the project, our preferred methods, and guides for developing MediaGoblin. We even have tips on becoming a coder and we’re willing to help!&lt;br /&gt;
&lt;br /&gt;
* [[HackingHowto|Hacking]] - notes on making and sending in code contributions&lt;br /&gt;
** [[BeginnersCorner|Beginner&#039;s Corner]] - resources for those who are new to Python or Git.&lt;br /&gt;
** &#039;&#039;Started from an older version of the Hacking Howto?  We switched from buildout-&amp;gt;virtualenv, so look at [[Moving from buildout to virtualenv]] for information on how to move over.&#039;&#039;&lt;br /&gt;
* [[Git workflow]] - How to go about submitting patches via git.&lt;br /&gt;
* [[Code review tips]] - Tips on how to go about doing local code review&lt;br /&gt;
* [[Templating]] - How our templating structure is set up&lt;br /&gt;
* [[Code overview]] - Overview of the structure of the codebase&lt;br /&gt;
&lt;br /&gt;
== Create a Theme ==&lt;br /&gt;
&lt;br /&gt;
See [http://docs.mediagoblin.org/siteadmin/theming.html the theming docs]&lt;br /&gt;
&lt;br /&gt;
== Write a plugin ==&lt;br /&gt;
&lt;br /&gt;
If you start, you&#039;ll find some basic documentation [http://docs.mediagoblin.org/#part-4-developer-s-zone| in the docs site]&lt;br /&gt;
&lt;br /&gt;
You&#039;ve made a plugin ? List it here : &lt;br /&gt;
&lt;br /&gt;
[[Available_Plugins|Available plugins]]&lt;br /&gt;
&lt;br /&gt;
You&#039;ve written a plugin ? You got some tips to share ? A tutorial idea ? Please do :&lt;br /&gt;
 &lt;br /&gt;
[[PluginsTips|Plugins Tips]]&lt;br /&gt;
&lt;br /&gt;
= Misc =&lt;br /&gt;
&lt;br /&gt;
== Android client ==&lt;br /&gt;
&lt;br /&gt;
See [[Android Client]]&lt;br /&gt;
&lt;br /&gt;
= Inner workings of the secret sanctum =&lt;br /&gt;
&lt;br /&gt;
* [[IRCBot]] - covers our irc bot&lt;br /&gt;
* [[ReleaseProcess|Release Process]] - covers the release process&lt;br /&gt;
* [[Update the website]] - Learn how to update mediagoblin.org!&lt;br /&gt;
&lt;br /&gt;
=FAQ=&lt;br /&gt;
&lt;br /&gt;
[[GMG FAQ]]&lt;/div&gt;</summary>
		<author><name>Ayleph</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=Main_Page&amp;diff=1638</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=Main_Page&amp;diff=1638"/>
		<updated>2015-01-15T01:04:04Z</updated>

		<summary type="html">&lt;p&gt;Ayleph: Undo revision 1635 by TarenSlowik (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;To learn more info on [http://madlyfatherland08.sosblogs.com/The-first-blog-b1/baby-shop-b1-p2353.htm онлайн магазин за бебето] check out the [http://Www.Answers.com/topic/internet+site internet site].&lt;/div&gt;</summary>
		<author><name>Ayleph</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=Main_Page&amp;diff=1637</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=Main_Page&amp;diff=1637"/>
		<updated>2015-01-15T01:03:49Z</updated>

		<summary type="html">&lt;p&gt;Ayleph: Undo revision 1636 by SungGirardi (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;If you loved this report and you would like to get more facts regarding [https://Www.Gov.uk/search?q=%D0%B1%D0%B5%D0%B1%D0%B5%D1%88%D0%BA%D0%B8 бебешки] продукти NUK - [http://worthlesslid413.deviantart.com/status/ deviantart.com], kindly visit the [http://Www.europeana.eu/portal/search.html?query=web-site web-site].&lt;/div&gt;</summary>
		<author><name>Ayleph</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=Search&amp;diff=1616</id>
		<title>Search</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=Search&amp;diff=1616"/>
		<updated>2014-11-01T01:07:08Z</updated>

		<summary type="html">&lt;p&gt;Ayleph: added search plugin&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Currently MG does not have any built-in search engine, but Praveen Kumar has developed a proposal during his [[GSOC_2013#Search_interface|GSOC 2013]] project. Some links:&lt;br /&gt;
&lt;br /&gt;
* [http://mediagoblin.org/news/summer-of-awesome-wrapup.html Summer of Awesome Wrap-up blog post]&lt;br /&gt;
* [https://github.com/praveen97uma/GSoC-Docs/wiki/Search-Interface-for-MediaGoblin Documentation related to the project]&lt;br /&gt;
* [https://www.gitorious.org/mediagoblin/alons-mediagoblin/commits/74f0f0943305ab85dbc1a6c6495db92148ac716e Gitorious branch (being reviewed and polished)]&lt;br /&gt;
&lt;br /&gt;
A basic search [[Available Plugins|plugin]] is also available from [https://github.com/ayleph/mediagoblin-search github]. The plugin is not as full-featured or as polished as the search function described above, but it does provide a quick and easy way to perform basic searches on an instance.&lt;/div&gt;</summary>
		<author><name>Ayleph</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=Main_Page&amp;diff=1588</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=Main_Page&amp;diff=1588"/>
		<updated>2014-09-21T17:36:06Z</updated>

		<summary type="html">&lt;p&gt;Ayleph: Undo revision 1585 by RethaLimavkh (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Want to Join the MediaGoblin Community? =&lt;br /&gt;
&lt;br /&gt;
We’re really glad that you want to join the MediaGoblin community!&lt;br /&gt;
&lt;br /&gt;
There are a variety of ways to help and support MediaGoblin and to join the team.  If you want to code, great, if not, even better!  MediaGoblin interested contributors in many different roles: users, system administrators, technical writers, testers, evangelists, UI/UX and graphics designers, cheerleaders, and dreamers.&lt;br /&gt;
&lt;br /&gt;
We observe the [https://www.djangoproject.com/conduct/ Django code of conduct].  Be welcoming, friendly, and patient!&lt;br /&gt;
&lt;br /&gt;
This wiki covers a variety of ways that you can get involved with MediaGoblin as well as instructions on how to get started.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hang out with the MediaGoblin folk ==&lt;br /&gt;
&lt;br /&gt;
MediaGoblin has a mailing list and an IRC channel where we hang out.  See [http://mediagoblin.org/pages/join.html our join page] for links.&lt;br /&gt;
&lt;br /&gt;
Please drop by and say “Hi!”  And, if you’re looking for something to do, just ask---there’s always work to be done.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Take Part in the Monthly Meetings ==&lt;br /&gt;
&lt;br /&gt;
Each month is a [[:Meeting|Meeting]]. You can take part and help decide on the future of MediaGoblin. Or just be around and see what&#039;s happening live!&lt;br /&gt;
&lt;br /&gt;
=How Can you help ?=&lt;br /&gt;
&lt;br /&gt;
First and foremost, for many (but not all) types of contributions you may want to set up a local instance.  To learn how to do this, see the [[HackingHowto]] page.  (If you&#039;re not familiar with command line level things, there are still ways you can help below!)&lt;br /&gt;
&lt;br /&gt;
== File Bugs / Triage Bugs ==&lt;br /&gt;
&lt;br /&gt;
Issue reports are critical for all projects.  Identified bugs give developers a basis for beginning work, and providing an idea of what features and issues are most important to users and the overall usability of the software.  If you identify errors, flaws, unexpected behaviors, or deficits that impede use, file a bug.&lt;br /&gt;
&lt;br /&gt;
* [[File Bugs]] -- notes on filing new bugs/issues/feature requests&lt;br /&gt;
* [[Feature Ideas]] -- notes on possible features&lt;br /&gt;
* [[Triage Bugs]] -- notes on triaging&lt;br /&gt;
* [[BugTriageDay]] -- every other Thursday is bug triage day where anyone can help out triaging bugs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Send Encouragement / Spread the Word ==&lt;br /&gt;
&lt;br /&gt;
Sometimes, a nice word, simple encouragement, and interest in the work we’re doing is enough to inspire a tizzy of productive work.  Just a bit more interest and encouragement can even make the difference between a complete feature and limited functionality; between a completed milestone and lost momentum.&lt;br /&gt;
&lt;br /&gt;
Similarly, MediaGoblin, and the movement for free network services, is always in need of encouragement.  Use free network services, understand the principals behind the movement, be able to articulate the benefits of free network services and the problems with psudo-free applications that don’t respect the users’ freedom.&lt;br /&gt;
&lt;br /&gt;
Write a blog post, post a status update, drop by the listserv or join #mediagoblin on freenode.net and let us know.  See [http://mediagoblin.org/join/ our join page] for links.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Write Documentation / Edit Documentation ==&lt;br /&gt;
&lt;br /&gt;
* [[Documentation quick start]] - How to contribute to the documentation effort.&lt;br /&gt;
* [[ManualStandards]] - covers the standards for writing the user manual (forthcoming.) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test MediaGoblin ==&lt;br /&gt;
&lt;br /&gt;
Do you have access to the web? Do you like sharing your opinions? If so, we need your help to test MediaGoblin! Testers play around with the current test instance, note what operating system and browser they use (notes on multiple set-ups are also helpful) and take some notes. That&#039;s it! It&#039;s a very important task that doesn&#039;t require any special knowledge and you&#039;re done in under an hour. Ready to help?  &lt;br /&gt;
&lt;br /&gt;
* [[User Experience]] - user experience testing.  Includes link to an instance you can try!&lt;br /&gt;
* [[UnitTests|Unit Tests]] - all about the unit tests&lt;br /&gt;
* [[Manual_Functional_Testing|Manual Functional Testing]] - a great way to get to know MediaGoblin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Translate MediaGoblin ==&lt;br /&gt;
&lt;br /&gt;
If you know English and another language and feel comfortable translating elements of the interface or even the documentation, we’d love to have help translating the software and resources.&lt;br /&gt;
Translating MediaGoblin is very easy with a web interface, so there is no programming knowledge required at all.&lt;br /&gt;
&lt;br /&gt;
* [[Translations]] - How to translate stuff or update the translations&lt;br /&gt;
&lt;br /&gt;
== Become a User ==&lt;br /&gt;
&lt;br /&gt;
Coming soon!&lt;br /&gt;
&lt;br /&gt;
We’re building MediaGoblin for us and for you but really you’re one of us and I am you and we are we and MediaGoblin is the walrus.&lt;br /&gt;
&lt;br /&gt;
We&#039;re planning to launch our own public instance of MediaGoblin in the near future--probably in the September/October 2011 time frame.  When we do, sign up for an account, use the service and relish in the thought that this service comes with a heaping side of Freedom and you can salt and pepper it to your liking.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Help Others ==&lt;br /&gt;
&lt;br /&gt;
Have you spent time with MediaGoblin?  If so, your experience and wisdom are invaluable and you’re the best person we can think of to help other users with their questions.&lt;br /&gt;
&lt;br /&gt;
Hang out on the IRC channel and help answer new peoples&#039; questions.  See [http://mediagoblin.org/join/ our join page] for links.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Run your own MediaGoblin Instance ==&lt;br /&gt;
&lt;br /&gt;
Are there things about our instance you want to change?  Are there things about other instances you wish were different?  Want to test upcoming changes?  Want to create patches to implement things you need?  That’s great—you can run your own instance!&lt;br /&gt;
&lt;br /&gt;
The primary documentation for this is at [http://docs.mediagoblin.org http://docs.mediagoblin.org] but here are some additional tips:&lt;br /&gt;
&lt;br /&gt;
* [[Configure_MediaGoblin|Configuration]] - Learn about MediaGoblin configuration files and file options.&lt;br /&gt;
* [[Deployment]] - General deployment advice&lt;br /&gt;
* [[Scaling Down]] - Minimizing MediaGoblin&#039;s resource requirements&lt;br /&gt;
* [[Virtual Machine Hosting]] - Deploy your own publicly available MediaGoblin server using [http://aws.amazon.com/free/?utm_source=adwords&amp;amp;utm_medium=cpc&amp;amp;utm_campaign=CPC_Google_AWS_ec2&amp;amp;utm_content=TextV01_PP_V01_EC2&amp;amp;trk=CPC_Google_AWS_ec2 Amazon&#039;s free EC2 tier].&lt;br /&gt;
&lt;br /&gt;
= Technical project documentation =&lt;br /&gt;
&lt;br /&gt;
The technical docs, that are more finished and the ones that are better maintained near the code (so they stay up to date) are in the more technical chapters of the [http://docs.mediagoblin.org/ main documentation].&lt;br /&gt;
* [[Storage]] - How MediaGoblin&#039;s internal storage system works.&lt;br /&gt;
* [[Processing]] - What happens after you submit your image/video/etc?  Processing!  More about that.&lt;br /&gt;
* [https://gitorious.org/mediagoblin/mediagoblin/blobs/master/extlib/README External Library Policy] - covers use of external libraries&lt;br /&gt;
* [[User:Cwebber/braindumps]] - Chris Webber&#039;s braindumps (you can help refactoring these into real sections of the site!)&lt;br /&gt;
* [[Multiple media support]] - Design plan for multiple media support&lt;br /&gt;
&lt;br /&gt;
== Write Code / Fix Code ==&lt;br /&gt;
&lt;br /&gt;
MedaGoblin development is premised on the idea that the entire interface for the platform be completely theme-able.  If you have a design or theming background, consider developing themes for MediaGoblin.  New themes help test the theming system, provide attractive and appealing interfaces for prospective users.  If you want to start a new theme but don’t know where to start, touch base with the development community on the list or in the IRC channel for more information.&lt;br /&gt;
&lt;br /&gt;
If you are a coder and you would like to write code, the repository is hosted on gitorious. Clone or fork the repository and start poking around. Become familiar with this manual for an overview of how the software works and is used. Consider the contributor wiki for more information about the project, our preferred methods, and guides for developing MediaGoblin. We even have tips on becoming a coder and we’re willing to help!&lt;br /&gt;
&lt;br /&gt;
* [[HackingHowto|Hacking]] - notes on making and sending in code contributions&lt;br /&gt;
** [[BeginnersCorner|Beginner&#039;s Corner]] - resources for those who are new to Python or Git.&lt;br /&gt;
** &#039;&#039;Started from an older version of the Hacking Howto?  We switched from buildout-&amp;gt;virtualenv, so look at [[Moving from buildout to virtualenv]] for information on how to move over.&#039;&#039;&lt;br /&gt;
* [[Git workflow]] - How to go about submitting patches via git.&lt;br /&gt;
* [[Code review tips]] - Tips on how to go about doing local code review&lt;br /&gt;
* [[Templating]] - How our templating structure is set up&lt;br /&gt;
* [[Code overview]] - Overview of the structure of the codebase&lt;br /&gt;
&lt;br /&gt;
== Create a Theme ==&lt;br /&gt;
&lt;br /&gt;
See [http://docs.mediagoblin.org/siteadmin/theming.html the theming docs]&lt;br /&gt;
&lt;br /&gt;
== Write a plugin ==&lt;br /&gt;
&lt;br /&gt;
If you start, you&#039;ll find some basic documentation [http://docs.mediagoblin.org/#part-4-developer-s-zone| in the docs site]&lt;br /&gt;
&lt;br /&gt;
You&#039;ve made a plugin ? List it here : &lt;br /&gt;
&lt;br /&gt;
[[Available_Plugins|Available plugins]]&lt;br /&gt;
&lt;br /&gt;
You&#039;ve written a plugin ? You got some tips to share ? A tutorial idea ? Please do :&lt;br /&gt;
 &lt;br /&gt;
[[PluginsTips|Plugins Tips]]&lt;br /&gt;
&lt;br /&gt;
= Misc =&lt;br /&gt;
&lt;br /&gt;
== Android client ==&lt;br /&gt;
&lt;br /&gt;
See [[Android Client]]&lt;br /&gt;
&lt;br /&gt;
= Inner workings of the secret sanctum =&lt;br /&gt;
&lt;br /&gt;
* [[IRCBot]] - covers our irc bot&lt;br /&gt;
* [[ReleaseProcess|Release Process]] - covers the release process&lt;br /&gt;
* [[Update the website]] - Learn how to update mediagoblin.org!&lt;br /&gt;
&lt;br /&gt;
=FAQ=&lt;br /&gt;
&lt;br /&gt;
[[GMG FAQ]]&lt;/div&gt;</summary>
		<author><name>Ayleph</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=Main_Page&amp;diff=1587</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=Main_Page&amp;diff=1587"/>
		<updated>2014-09-21T17:35:51Z</updated>

		<summary type="html">&lt;p&gt;Ayleph: Undo revision 1586 by Anitra2502 (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
คอบอลลีกต่างๆพากันดู [http://www.bestballwin.com สายบอล] ที่เว็บนี้และติดตามข่าว ดัชนีนิก​เกอิปรับตัวลดลงปิด​ใน​แดนลบ​เป็นวันที่ 5 ติดต่อกัน ​และปิดที่ระดับต่ำสุด​ในรอบประมาณ 1 ​เดือนครึ่ง ​ในวันนี้ หลังจากตัว​เลขจ้างงานสหรัฐที่มี​การ​เปิด​เผย​เมื่อวันศุกร์ที่ผ่านมา​ได้จุดชนวน​ความวิตกกังวล​เกี่ยวกับ​การฟื้นตัวของ​เศรษฐกิจสหรัฐ&amp;lt;br&amp;gt;สำนักข่าว​เกียว​โดรายงานว่า ดัชนีนิก​เกอิตลาดหุ้น​โต​เกียวร่วงลง 142.19 จุด ​หรือ 1.47% ปิดที่ 9,546.26 จุด ​ซึ่ง​เป็นระดับปิดต่ำสุดนับตั้ง​แต่วันที่ 21 ก.พ.​เป็นต้นมา ​โดยหุ้น​ทั้ง 33 กลุ่มปรับตัวลง นำ​โดยหุ้นกลุ่มประกัน ตามด้วยกลุ่ม​เหมือง​แร่​และ​โลหะนอกกลุ่ม​เหล็ก&amp;lt;br&amp;gt;​โบรก​เกอร์กล่าวว่า ดัชนีนิก​เกอิร่วงลงสู่ระดับ 9,500 จุด​เป็นครั้ง​แรก​ในรอบกว่าหนึ่ง​เดือน หลังจากที่กระทรวง​แรงงานสหรัฐ​เปิด​เผย​เมื่อวันศุก[http://Www.Bing.com/search?q=%E0%B8%A3%E0%B9%8C%E0%B8%A7%E0%B9%88%E0%B8%B2&amp;amp;form=MSNNWS&amp;amp;mkt=en-us&amp;amp;pq=%E0%B8%A3%E0%B9%8C%E0%B8%A7%E0%B9%88%E0%B8%B2 ร์ว่า] ตัว​เลขจ้างงานนอกภาค​เกษตร​เพิ่มขึ้น 120,000 ตำ​แหน่ง​ใน​เดือนมี.ค. ​ซึ่งน้อยกว่าคาด​การณ์ของนัก​เศรษฐศาสตร์ส่วน​ใหญ่ที่ว่าจะ​เพิ่มขึ้น 203,000 ตำ​แหน่ง ​และต่ำกว่าค่า​เฉลี่ย​ในช่วง 3 ​เดือนก่อนที่ 246,000 ตำ​แหน่ง&amp;lt;br&amp;gt;นอกจากนี้ ตลาดหุ้น​โต​เกียวยัง​ได้รับ​แรงกดดันจาก​เงิน​เยนที่​แข็งค่าขึ้นหลังจากที่มี​การ​เปิด​เผยข้อมูลดังกล่าว ​โดย​เงินดอลลาร์สหรัฐมี​การซื้อขายอยู่​ใน[http://Search.Un.org/search?ie=utf8&amp;amp;site=un_org&amp;amp;output=xml_no_dtd&amp;amp;client=UN_Website_en&amp;amp;num=10&amp;amp;lr=lang_en&amp;amp;proxystylesheet=UN_Website_en&amp;amp;oe=utf8&amp;amp;q=%E0%B8%8A%E0%B9%88%E0%B8%A7%E0%B8%87&amp;amp;Submit=Go ช่วง] 81 ​เยนกลางๆ ​เมื่อ​เทียบกับระดับ 82 ​เยนกลางๆ ​ใน​การซื้อขาย​เมื่อวันศุกร์ที่​แล้ว ขณะที่ยู​โร​เคลื่อน​ไหว​ในช่วง 106 ​เยนกลางๆ ​เทียบกับ 107 ​เยนปลายๆ ​ในสัปดาห์ก่อน&lt;/div&gt;</summary>
		<author><name>Ayleph</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=Deployment&amp;diff=1579</id>
		<title>Deployment</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=Deployment&amp;diff=1579"/>
		<updated>2014-09-09T07:11:19Z</updated>

		<summary type="html">&lt;p&gt;Ayleph: /* Init scripts */  added systemd scripts&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page could use a lot of work.  For now, a few smaller deployment tips!&lt;br /&gt;
&lt;br /&gt;
See also: http://docs.mediagoblin.org/deploying.html (some of which may belong here)&lt;br /&gt;
&lt;br /&gt;
= uwsgi =&lt;br /&gt;
&lt;br /&gt;
Possibly a cleaner way to do nginx configuration than the official nginx + fastcgi suggestions!&lt;br /&gt;
&lt;br /&gt;
http://qalthos.github.io/blog/FOSS@RIT/deploying-mediagoblin-1-fastcgi-vs-uwsgi.html&lt;br /&gt;
&lt;br /&gt;
= uwsgi with configs =&lt;br /&gt;
&lt;br /&gt;
Below there are 3 configs: for nginx, for uwsgi version 1.2.3-debian and for supervisord, used to run celery.&lt;br /&gt;
&lt;br /&gt;
In future, when newer versions of uwsgi appear in debian, supervisor can be removed.&lt;br /&gt;
&lt;br /&gt;
All instructions below are for Debian 7. They should also work with rpm-based systems, but with other paths.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt-get install uwsgi uwsgi-plugin-python nginx-full supervisor;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/etc/nginx/sites-available/mediagoblin:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
server {&lt;br /&gt;
        server_name &amp;lt;domain&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
        access_log /var/log/nginx/mg.access.log;&lt;br /&gt;
        error_log /var/log/nginx/mg.error.log error;&lt;br /&gt;
&lt;br /&gt;
        #include global/common.conf;&lt;br /&gt;
&lt;br /&gt;
        client_max_body_size 100m;&lt;br /&gt;
        add_header X-Content-Type-Options nosniff;&lt;br /&gt;
&lt;br /&gt;
        root /path/to/mediagoblin//user_dev/;&lt;br /&gt;
&lt;br /&gt;
        location /mgoblin_static/ {&lt;br /&gt;
                alias /path/to/mediagoblin/mediagoblin/static/;&lt;br /&gt;
        }&lt;br /&gt;
        location /mgoblin_media/ {&lt;br /&gt;
                alias /path/to/mediagoblin/user_dev/media/public/;&lt;br /&gt;
        }&lt;br /&gt;
        location /theme_static/ {&lt;br /&gt;
        }&lt;br /&gt;
        location /plugin_static/ {&lt;br /&gt;
        }&lt;br /&gt;
        location / {&lt;br /&gt;
                uwsgi_pass unix:///tmp/mg.uwsgi.sock;&lt;br /&gt;
                uwsgi_param SCRIPT_NAME &amp;quot;/&amp;quot;;&lt;br /&gt;
                include uwsgi_params;&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/etc/uwsgi/apps-available/mg.yaml:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uwsgi:&lt;br /&gt;
 uid: mediagoblin&lt;br /&gt;
 gid: mediagoblin&lt;br /&gt;
 socket: /tmp/mg.uwsgi.sock&lt;br /&gt;
 chown-socket: www-data:www-data&lt;br /&gt;
 plugins: python&lt;br /&gt;
 home: /path/to/mediagoblin/&lt;br /&gt;
 chdir: /path/to/mediagoblin/&lt;br /&gt;
 ini-paste: /path/to/mediagoblin/paste_local.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/etc/supervisor/conf.d/mediagoblin.conf:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[program:celery]&lt;br /&gt;
command=/path/to/mediagoblin/bin/celery worker -l debug&lt;br /&gt;
&lt;br /&gt;
; Set PYTHONPATH to the directory containing celeryconfig.py&lt;br /&gt;
environment=PYTHONPATH=&amp;quot;/path/to/mediagoblin&amp;quot;,MEDIAGOBLIN_CONFIG=&amp;quot;/path/to/mediagoblin/mediagoblin_local.ini&amp;quot;,CELERY_CONFIG_MODULE=&amp;quot;mediagoblin.init.celery.from_celery&amp;quot;&lt;br /&gt;
&lt;br /&gt;
directory=/path/to/mediagoblin/&lt;br /&gt;
user=mediagoblin&lt;br /&gt;
numprocs=1&lt;br /&gt;
; uncomment below to enable logs saving&lt;br /&gt;
;stdout_logfile=/some/logs/path/celeryd_stdout.log&lt;br /&gt;
;stderr_logfile=/some/logs/path/celeryd_stderr.log&lt;br /&gt;
autostart=true&lt;br /&gt;
autorestart=false&lt;br /&gt;
startsecs=10&lt;br /&gt;
&lt;br /&gt;
; Need to wait for currently executing tasks to finish at shutdown.&lt;br /&gt;
; Increase this if you have very long running tasks.&lt;br /&gt;
stopwaitsecs = 600&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After setting all configs do:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s /etc/nginx/sites-available/mediagoblin /etc/nginx/sites-enabled/&lt;br /&gt;
ln -s /etc/uwsgi/apps-available/mg.yaml /etc/uwsgi/apps-enabled/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= FCGI script =&lt;br /&gt;
&lt;br /&gt;
This works great with the apache FCGID config example in the next section :) in which case you should name it &amp;quot;mg.fcgi&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Before use, make sure you replace &#039;/path/to/mediagoblin/bin/python&#039; with a real path on your server, e.g. &#039;/srv/www/myhomepage.com/mediagoblin/bin/python&#039;. Also replace &#039;/path/to/mediagoblin/paste.ini&#039;.&lt;br /&gt;
&lt;br /&gt;
If you encounter problems, try executing executing the script manually, e.g. &amp;lt;pre&amp;gt;./mg.fcgi&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Script:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/path/to/mediagoblin/bin/python&lt;br /&gt;
&lt;br /&gt;
# Written in 2011 by Christopher Allan Webber&lt;br /&gt;
#&lt;br /&gt;
# To the extent possible under law, the author(s) have dedicated all&lt;br /&gt;
# copyright and related and neighboring rights to this software to the&lt;br /&gt;
# public domain worldwide. This software is distributed without any&lt;br /&gt;
# warranty.&lt;br /&gt;
# &lt;br /&gt;
# You should have received a copy of the CC0 Public Domain Dedication along&lt;br /&gt;
# with this software. If not, see&lt;br /&gt;
# &amp;lt;http://creativecommons.org/publicdomain/zero/1.0/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
from paste.deploy import loadapp&lt;br /&gt;
from flup.server.fcgi import WSGIServer&lt;br /&gt;
&lt;br /&gt;
CONFIG_PATH = &#039;/path/to/mediagoblin/paste.ini&#039;&lt;br /&gt;
&lt;br /&gt;
## Uncomment this to run celery in &amp;quot;always eager&amp;quot; mode... ie, you don&#039;t have&lt;br /&gt;
## to run a separate process, but submissions wait till processing finishes&lt;br /&gt;
# import os&lt;br /&gt;
# os.environ[&#039;CELERY_ALWAYS_EAGER&#039;] = &#039;true&#039;&lt;br /&gt;
&lt;br /&gt;
def launch_fcgi():&lt;br /&gt;
    ccengine_wsgi_app = loadapp(&#039;config:&#039; + CONFIG_PATH)&lt;br /&gt;
    WSGIServer(ccengine_wsgi_app).run()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    launch_fcgi()&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Apache 2 Config With fcgid =&lt;br /&gt;
&lt;br /&gt;
Note that the libapache2-mod-fcgi in Debian is in the main section. libapache2-mod-fcgid can be used, but requires a slightly different configuration. For yum-based distributions, you may need to install mod_fcgid. &lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
    Options +ExecCGI&lt;br /&gt;
  &lt;br /&gt;
    # Accept up to 16MB requests&lt;br /&gt;
    FcgidMaxRequestLen 16777216&lt;br /&gt;
  &lt;br /&gt;
    ServerName mediagoblin.example.org&lt;br /&gt;
  &lt;br /&gt;
    Alias /mgoblin_static/ /path/to/mediagoblin/mediagoblin/static/&lt;br /&gt;
    Alias /mgoblin_media/ /path/to/mediagoblin/user_dev/media/public/&lt;br /&gt;
  &lt;br /&gt;
    ScriptAlias / /path/to/mediagoblin/mg.fcgi/&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Apache 2 Config With mod_wsgi =&lt;br /&gt;
&lt;br /&gt;
Apache can manage the MediaGoblin application itself with mod_wsgi. It requires slightly more configuration on the Apache side, but cuts out the FastCGI middleware. See their [http://code.google.com/p/modwsgi/wiki/ConfigurationGuidelines configuration guidelines] for advanced configuration.&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
    ServerName mediagoblin.example.org&lt;br /&gt;
  &lt;br /&gt;
    Alias /mgoblin_static/ /path/to/mediagoblin/mediagoblin/static/&lt;br /&gt;
    Alias /mgoblin_media/ /path/to/mediagoblin/user_dev/media/public/&lt;br /&gt;
  &lt;br /&gt;
    WSGIScriptAlias / /path/to/mediagoblin/wsgi.py&lt;br /&gt;
    # Set user and group to whatever user you used to install mediagoblin (if you used a system account, &lt;br /&gt;
    # it may have the group &#039;nogroup&#039; assigned, in that case you can remove the group parameter)&lt;br /&gt;
    # Remember to change python-path too!&lt;br /&gt;
    # Replace the python version in the &#039;python-path&#039; below with the correct one (eg 2.x -&amp;gt; 2.7)&lt;br /&gt;
    WSGIDaemonProcess gmg user=mediagoblin group=mediagoblin processes=2 threads=10 \&lt;br /&gt;
        umask=0007 inactivity-timeout=900 maximum-requests=1000 \&lt;br /&gt;
        python-path=/path/to/mediagoblin/:/path/to/mediagoblin/lib/python-2.x/site-packages/&lt;br /&gt;
    WSGIProcessGroup gmg&lt;br /&gt;
    WSGIApplicationGroup %{GLOBAL}&lt;br /&gt;
   &lt;br /&gt;
        &amp;lt;Directory &amp;quot;/path/to/mediagoblin/mediagoblin/static/&amp;quot;&amp;gt;&lt;br /&gt;
                Order allow,deny&lt;br /&gt;
                Allow from all&lt;br /&gt;
        &amp;lt;/Directory&amp;gt;&lt;br /&gt;
        &amp;lt;Directory &amp;quot;/path/to/mediagoblin/user_dev/media/public&amp;quot;&amp;gt;&lt;br /&gt;
                Order allow,deny&lt;br /&gt;
                Allow from all&lt;br /&gt;
        &amp;lt;/Directory&amp;gt;&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You&#039;ll also need to copy this into /path/to/mediagoblin/wsgi.py:&lt;br /&gt;
&lt;br /&gt;
  #!/path/to/mediagoblin/bin/python&lt;br /&gt;
  &lt;br /&gt;
  # Written in 2011 by Christopher Allan Webber&lt;br /&gt;
  #&lt;br /&gt;
  # To the extent possible under law, the author(s) have dedicated all&lt;br /&gt;
  # copyright and related and neighboring rights to this software to the&lt;br /&gt;
  # public domain worldwide. This software is distributed without any&lt;br /&gt;
  # warranty.&lt;br /&gt;
  # &lt;br /&gt;
  # You should have received a copy of the CC0 Public Domain Dedication along&lt;br /&gt;
  # with this software. If not, see&lt;br /&gt;
  # &amp;lt;http://creativecommons.org/publicdomain/zero/1.0/&amp;gt;.&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  import site&lt;br /&gt;
  # Replace the python version with the correct one in the line below (eg 2.x -&amp;gt; 2.7)&lt;br /&gt;
  site.addsitedir(&#039;/path/to/mediagoblin/lib/python-2.x/site-packages&#039;)&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  from paste.deploy import loadapp&lt;br /&gt;
  &lt;br /&gt;
  CONFIG_PATH = &#039;/path/to/mediagoblin/paste.ini&#039;&lt;br /&gt;
  &lt;br /&gt;
  ## Uncomment this to run celery in &amp;quot;always eager&amp;quot; mode... ie, you don&#039;t have&lt;br /&gt;
  ## to run a separate process, but submissions wait till processing finishes&lt;br /&gt;
  #import os&lt;br /&gt;
  #os.environ[&#039;CELERY_ALWAYS_EAGER&#039;] = &#039;true&#039;&lt;br /&gt;
  &lt;br /&gt;
  application = loadapp(&#039;config:&#039; + CONFIG_PATH)&lt;br /&gt;
&lt;br /&gt;
= Apache Config Example =&lt;br /&gt;
This configuration example uses mod_fastcgi.&lt;br /&gt;
&lt;br /&gt;
To install and enable mod_fastcgi on a Debian/Ubuntu based system:&lt;br /&gt;
&amp;lt;pre&amp;gt;# apt-get install libapache2-mod-suexec libapache2-mod-fastcgi&lt;br /&gt;
# a2enmod suexec&lt;br /&gt;
# a2enmod fastcgi&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sample configuration:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
ServerName mediagoblin.yourdomain.tld&lt;br /&gt;
ServerAdmin webmaster@yourdoimain.tld&lt;br /&gt;
DocumentRoot /var/www/&lt;br /&gt;
# Custom log files&lt;br /&gt;
CustomLog /var/log/apache2/mediagobling_access.log combined&lt;br /&gt;
ErrorLog /var/log/apache2/mediagoblin_error.log&lt;br /&gt;
&lt;br /&gt;
# Serve static and media files via alias&lt;br /&gt;
Alias /mgoblin_static/ /path/to/mediagoblin/mediagoblin/static/&lt;br /&gt;
Alias /mgoblin_media/ /path/to/mediagoblin/user_dev/media/public/&lt;br /&gt;
&lt;br /&gt;
# Rewrite all URLs to fcgi, except for static and media urls&lt;br /&gt;
RewriteEngine On&lt;br /&gt;
RewriteRule ^(mgoblin_static|mgoblin_media)($|/) - [L]&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !-f&lt;br /&gt;
RewriteRule ^/(.*)$ /mg.fcgi/$1 [QSA,L]&lt;br /&gt;
&lt;br /&gt;
# Allow access to static and media directories&lt;br /&gt;
&amp;lt;Directory /path/to/mediagoblin/mediagoblin/static&amp;gt;&lt;br /&gt;
  Order allow,deny&lt;br /&gt;
  Allow from all&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
&amp;lt;Directory /path/to/mediagoblin/mediagoblin/user_dev/media/public&amp;gt;&lt;br /&gt;
  Order allow,deny&lt;br /&gt;
  Allow from all&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Connect to fcgi server&lt;br /&gt;
FastCGIExternalServer /var/www/mg.fcgi -host 127.0.0.1:26543&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then, you need to make sure mediagoblin is running in fcgi mode:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd /path/to/mediagoblin&lt;br /&gt;
./lazyserver.sh --server-name=fcgi fcgi_host=127.0.0.1 fcgi_port=26543&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: there may be several ways to improve this configuration&lt;br /&gt;
&lt;br /&gt;
If it is too slow and you use the deflate module, you could try to use the following option : SetOutputFilter INFLATE&lt;br /&gt;
&lt;br /&gt;
= Lighttpd =&lt;br /&gt;
&lt;br /&gt;
This configuration example uses mod_fastcgi.&lt;br /&gt;
Make a symbolic link from &amp;lt;pre&amp;gt;/etc/lighttpd/conf-available/10-fastcgi.conf&amp;lt;/pre&amp;gt; to &amp;lt;pre&amp;gt;/etc/lighttpd/conf-enabled/10-fastcgi.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s /etc/lighttpd/conf-available/10-fastcgi.conf /etc/lighttpd/conf-enabled/10-fastcgi.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
then edit your /etc/lighttpd/conf-enabled/10-fastcgi.conf file modifying it as below to serve mediagoblin on the /tube/ path of your webserver.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## FastCGI programs have the same functionality as CGI programs,&lt;br /&gt;
## but are considerably faster through lower interpreter startup&lt;br /&gt;
## time and socketed communication&lt;br /&gt;
##&lt;br /&gt;
## Documentation: /usr/share/doc/lighttpd-doc/fastcgi.txt.gz&lt;br /&gt;
##                http://www.lighttpd.net/documentation/fastcgi.html&lt;br /&gt;
&lt;br /&gt;
server.modules   += ( &amp;quot;mod_fastcgi&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
## Start an FastCGI server for mediagoblin (lazyserver.sh or other deployments scripts should be up and running)&lt;br /&gt;
fastcgi.server = (&lt;br /&gt;
    # url at which the app should be accessible on the server&lt;br /&gt;
      &amp;quot;/tube&amp;quot; =&amp;gt;&lt;br /&gt;
      # mnemonical name of the backend&lt;br /&gt;
      ( &amp;quot;mg-local&amp;quot; =&amp;gt; (&lt;br /&gt;
                &amp;quot;host&amp;quot; =&amp;gt; &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
                &amp;quot;port&amp;quot; =&amp;gt; 6543,&lt;br /&gt;
                &amp;quot;docroot&amp;quot; =&amp;gt; &amp;quot;/path/to/mediagoblin-git-folder/mediagoblin&amp;quot;,&lt;br /&gt;
                &amp;quot;check-local&amp;quot; =&amp;gt; &amp;quot;disable&amp;quot;&lt;br /&gt;
                )&lt;br /&gt;
        )&lt;br /&gt;
&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then open your /etc/lighttpd/lighttpd.conf and add the configuration to serve directly the static/public folders&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
alias.url += (&lt;br /&gt;
        &amp;quot;/mgoblin_static/&amp;quot; =&amp;gt; &amp;quot;/path/to/mediagoblin-git-folder/mediagoblin/static/&amp;quot;,&lt;br /&gt;
        &amp;quot;/mgoblin_media/&amp;quot; =&amp;gt; &amp;quot;/path/to/mediagoblin-git-folder/user_dev/media/public/&amp;quot;,&lt;br /&gt;
        &amp;quot;/theme_static/&amp;quot; =&amp;gt; &amp;quot;/path/to/mediagoblin-git-folder/user_dev/theme_static/&amp;quot;,&lt;br /&gt;
        &amp;quot;/plugin_static/&amp;quot; =&amp;gt; &amp;quot;/path/to/mediagoblin-git-folder/user_dev/plugin_static/&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Done!&lt;br /&gt;
&lt;br /&gt;
= OpenShift =&lt;br /&gt;
&lt;br /&gt;
Thers&#039;s a blogpost saying how to [http://www.sud0.com/gnu-media-goblin-on-openshift.html install mediagoblin on openshift].&lt;br /&gt;
&lt;br /&gt;
= Juju =&lt;br /&gt;
&lt;br /&gt;
There is a juju [https://juju.ubuntu.com/Charms charm] available for deploying mediagoblin into EC2 or on your local box.  [https://juju.ubuntu.com/ juju] is available in Ubuntu 11.10 and later, though it is recommended that you pull it from [https://launchpad.net/~juju/+archive/pkgs the juju PPA], which includes backported packages going back to Ubuntu 11.10. To use the juju charm, install juju and configure either the [https://juju.ubuntu.com/docs/provider-configuration-local.html local provider] or one of the cloud API providers, currently the [https://juju.ubuntu.com/docs/provider-configuration-ec2.html EC2 provider] is the best supported and works not only with Amazon Web Services but also OpenStack clouds. There is also a newer native OpenStack API provider which is known to support HP Cloud.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# if you have not bootstrapped&lt;br /&gt;
juju bootstrap&lt;br /&gt;
mkdir ~/charms&lt;br /&gt;
bzr init-repo ~/charms/precise&lt;br /&gt;
bzr branch lp:~clint-fewbar/charms/precise/mediagoblin/trunk ~/charms/precise/mediagoblin&lt;br /&gt;
juju deploy --repository ~/charms local:mediagoblin&lt;br /&gt;
juju expose mediagoblin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Currently the charm is volatile, deploying from trunk, and deploys a single-server version of MediaGoblin only. It will eventually relate to the existing juju charms for other supported data stores to allow one to scale out their MediaGoblin instance.&lt;br /&gt;
&lt;br /&gt;
= Init scripts =&lt;br /&gt;
&lt;br /&gt;
== Debian init scripts ==&lt;br /&gt;
&lt;br /&gt;
Joar has some scripts for running celery and mediagoblin separately that are designed for Debian.&lt;br /&gt;
&lt;br /&gt;
https://github.com/joar/mediagoblin-init-scripts&lt;br /&gt;
&lt;br /&gt;
== Arch Linux init scripts ==&lt;br /&gt;
&lt;br /&gt;
[http://whird.jpope.org/2012/04/14/mediagoblin-archlinux-rcd-scripts Jeremy Pope has written a nice blogpost] on how to add init scripts to deploy MediaGoblin with both the python paste http server and the celery deployments separated.&lt;br /&gt;
&lt;br /&gt;
If you want a simpler setup and don&#039;t want to deploy celery separately, consider either turning CELERY_ALWAYS_EAGER to true in the paste init script described above, or check out [http://chimo.chromic.org/2012/03/01/mediagoblin-init-script-on-archlinux/ Chimo&#039;s guide].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Generic, simple init script ==&lt;br /&gt;
&lt;br /&gt;
This is a super stupidly simple init script that was used for mediagoblin.com... note that this has Celery running in always eager mode.&lt;br /&gt;
&lt;br /&gt;
You will need to adjust the paths appropriately.  This could probably be better written!&lt;br /&gt;
&lt;br /&gt;
  #! /bin/sh&lt;br /&gt;
  &lt;br /&gt;
  ## Stupidly simple mediagoblin init script.&lt;br /&gt;
  # &lt;br /&gt;
  # Written in 2012 by Christopher Allan Webber&lt;br /&gt;
  #&lt;br /&gt;
  # To the extent possible under law, the author(s) have dedicated all&lt;br /&gt;
  # copyright and related and neighboring rights to this software to the&lt;br /&gt;
  # public domain worldwide. This software is distributed without any&lt;br /&gt;
  # warranty.&lt;br /&gt;
  # &lt;br /&gt;
  # You should have received a copy of the CC0 Public Domain Dedication along&lt;br /&gt;
  # with this software. If not, see&lt;br /&gt;
  # &amp;lt;http://creativecommons.org/publicdomain/zero/1.0/&amp;gt;.&lt;br /&gt;
  &lt;br /&gt;
  PASTER=/srv/mediagoblin.com/bin/paster&lt;br /&gt;
  PASTE_CONFIG=/srv/mediagoblin.com/paste.ini&lt;br /&gt;
  OPTIONS=&amp;quot;--pid-file=/tmp/mediagoblin.pid \&lt;br /&gt;
   --log-file=/srv/mediagoblin.com/paster.log \&lt;br /&gt;
   --server-name=fcgi fcgi_host=127.0.0.1 fcgi_port=26543&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  CELERY_ALWAYS_EAGER=true su -pc &amp;quot;$PASTER serve $PASTE_CONFIG $1 $OPTIONS&amp;quot; webadmin&lt;br /&gt;
&lt;br /&gt;
== systemd init scripts ==&lt;br /&gt;
&lt;br /&gt;
The following systemd scripts provide separate Paste and Celery instances. Replace &amp;lt;code&amp;gt;/path/to/mediagoblin&amp;lt;/code&amp;gt; to match your install path. The directories &amp;lt;code&amp;gt;/var/log/mediagoblin&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/var/run/mediagoblin&amp;lt;/code&amp;gt; are not created by default; you may create them yourself or change the location of the pid and log files. You may omit the log file if you choose. The init scripts provided below assume customized versions of mediagoblin.ini and paste.ini have been created as mediagoblin_local.ini and paste_local.ini, respectively; you should change those lines to point back to the original mediagoblin.ini or paste.ini files if you haven&#039;t made customizations.&lt;br /&gt;
&lt;br /&gt;
If you prefer not to run separate Celery, uncomment &amp;lt;code&amp;gt;Environment=CELERY_ALWAYS_EAGER=true&amp;lt;/code&amp;gt; and comment &amp;lt;code&amp;gt;Environment=CELERY_ALWAYS_EAGER=false&amp;lt;/code&amp;gt;. You won&#039;t need the file &amp;lt;code&amp;gt;/etc/systemd/system/gmg-celery.service&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/systemd/system/gmg.service&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=Mediagoblin&lt;br /&gt;
  &lt;br /&gt;
 [Service]&lt;br /&gt;
 Type=forking&lt;br /&gt;
 User=mediagoblin&lt;br /&gt;
 Group=mediagoblin&lt;br /&gt;
 #Environment=CELERY_ALWAYS_EAGER=true&lt;br /&gt;
 Environment=CELERY_ALWAYS_EAGER=false&lt;br /&gt;
 WorkingDirectory=/path/to/mediagoblin&lt;br /&gt;
 ExecStart=/path/to/mediagoblin/bin/paster serve \&lt;br /&gt;
              /path/to/mediagoblin/paste_local.ini \&lt;br /&gt;
              --pid-file=/var/run/mediagoblin/paster.pid \&lt;br /&gt;
              --log-file=/var/log/mediagoblin/paster.log \&lt;br /&gt;
              --daemon \&lt;br /&gt;
              --server-name=fcgi fcgi_host=127.0.0.1 fcgi_port=26543&lt;br /&gt;
 ExecStop=/path/to/mediagoblin/bin/paster serve \&lt;br /&gt;
             --pid-file=/var/run/mediagoblin/paster.pid \&lt;br /&gt;
             /path/to/mediagoblin/paste_local.ini stop&lt;br /&gt;
 PIDFile=/var/run/mediagoblin/mediagoblin.pid&lt;br /&gt;
 &lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=multi-user.target&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/systemd/system/gmg-celeryd.service&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=Mediagoblin Celeryd&lt;br /&gt;
  &lt;br /&gt;
 [Service]&lt;br /&gt;
 User=mediagoblin&lt;br /&gt;
 Group=mediagoblin&lt;br /&gt;
 Type=simple&lt;br /&gt;
 WorkingDirectory=/path/to/mediagoblin&lt;br /&gt;
 Environment=&amp;quot;MEDIAGOBLIN_CONFIG=/path/to/mediagoblin/mediagoblin_local.ini&amp;quot; \&lt;br /&gt;
 CELERY_CONFIG_MODULE=mediagoblin.init.celery.from_celery&lt;br /&gt;
 ExecStart=/path/to/mediagoblin/bin/celeryd&lt;br /&gt;
 PIDFile=/var/run/mediagoblin/mediagoblin-celeryd.pid&lt;br /&gt;
 &lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=multi-user.target&lt;br /&gt;
&lt;br /&gt;
Invoke the Paste or Celery processes using systemctl. Eg,&lt;br /&gt;
&lt;br /&gt;
 $ sudo systemctl start|stop|restart gmg.service&lt;br /&gt;
&lt;br /&gt;
 $ sudo systemctl start|stop|restart gmg-celeryd.service&lt;br /&gt;
&lt;br /&gt;
= Running on Dreamhost.com =&lt;br /&gt;
&lt;br /&gt;
===Set up your python virtualenv===&lt;br /&gt;
&lt;br /&gt;
dreamhost.com servers come with python 2.4 and 2.5 installed which is too old for mediagoblin. This means you need to compile and install a newer python (don&#039;t worry this is really not difficult on dreamhost servers). In order to be able to install python packages for a local user without touching system files, we need to setup a python &#039;&#039;virtualenv&#039;&#039;. Fortunately, this is not too tricky either. If your server has python 2.6 or 2.7 installed already, you can skip the [[#Install a local python|python installation stuff]] and you&#039;ll only need to [[#Setup virtualenv to install local python packages|install virtualenv]].&lt;br /&gt;
&lt;br /&gt;
====Install a local python====&lt;br /&gt;
# Download the latest python: http://python.org/ftp/python/XXX/Python-XXX.tar.bz2&lt;br /&gt;
# Unpack with &amp;lt;pre&amp;gt;tar xvjf Python-XXX.tar.bz2&amp;lt;/pre&amp;gt;&lt;br /&gt;
# &#039;&#039;cd&#039;&#039; into the directory and compile and install python locally:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;./configure --prefix=$HOME/local&lt;br /&gt;
make&lt;br /&gt;
make install&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
:This will install python (I used 2.7.3) into /home/&amp;lt;USERNAME&amp;gt;/local/bin/python. You might get warnings about some modules not being able to compile. :It was tcl/tk and bzip2 mainly, but things still worked out overall.&lt;br /&gt;
:&lt;br /&gt;
:You should now be able to invoke &amp;lt;tt&amp;gt;~/local/bin/python&amp;lt;/tt&amp;gt; and fall into a shell of your new python (exit with ctrl-d). Congrats, you have now a new python 2.7 that you can use. However, you will need to be able to install additional packages as a user and this is what virtualenv allows.&lt;br /&gt;
&lt;br /&gt;
====Setup virtualenv to install local python packages====&lt;br /&gt;
# Download the latest virtualenv: http://pypi.python.org/packages/source/v/virtualenv/XXX&lt;br /&gt;
# Install the virtualenv: &amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;~/local/bin/python ~/virtualenv-1.8/virtualenv.py  $HOME/local/virtenv&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
:: You will now have: ~/local/virtenv/bin/python&lt;br /&gt;
# In  ~/.bash_profile add: &amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;PATH=~/local/virtenv/bin:~/local/bin:${PATH}&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
:: so that your local python will be preferred.&lt;br /&gt;
:: Log out, log in again and test python&amp;quot; to see which version will be invoked. It should be the new python. Check &amp;quot;which easy_install&amp;quot; to see if the one in local/virtenv would be executed.&lt;br /&gt;
::  &lt;br /&gt;
:: You have now 1) a local &#039;&#039;python&#039;&#039; installation that you can use, and 2) &#039;&#039;easy_install&#039;&#039; will also work with your local user installation. From now on you can e.g. locally install the nose testing framework (&#039;&#039;easy_install nose&#039;&#039;) and use it (&#039;&#039;python -c &amp;quot;import nose&amp;quot;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
===Install mediagoblin as a site package===&lt;br /&gt;
&lt;br /&gt;
# Check out mediagoblin from git to e.g. ~/mediagoblin&lt;br /&gt;
# Install MediaGoblin and all dependencies for MediaGoblin with easy_install.&lt;br /&gt;
:* In the mediagoblin directory issue:&lt;br /&gt;
:&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;python setup.py&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
:* You will also need to: easy_install lxml&lt;br /&gt;
:* Python-image was trickier to install: &amp;lt;pre&amp;gt;easy_install --find-links http://www.pythonware.com/products/pil/ Imaging&amp;lt;/pre&amp;gt;&lt;br /&gt;
::Test by leaving the mediagoblin directory and see if you can import it: &amp;lt;pre&amp;gt;python -c &amp;quot;import mediagoblin&amp;quot;&amp;lt;/pre&amp;gt; looking for error messages.&lt;br /&gt;
&lt;br /&gt;
===Set up an WSGI environment on Dreamhost===&lt;br /&gt;
&lt;br /&gt;
# Enable the mod_passenger setting for ruby/python in the domains web panel&lt;br /&gt;
# &#039;&#039;cd&#039;&#039; into the domain directory (e.g. ~/media.sspaeth.de for me)&lt;br /&gt;
# Copy mediagoblin.ini and paste.ini from the ~/mediagoblin directory here&lt;br /&gt;
# Create passenger_wsgi.py in your domain directory (e.g. ~/media.sspaeth.de for me):&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;import sys, os&lt;br /&gt;
INTERP = &amp;quot;/home/&amp;lt;username&amp;gt;/local/virtenv/bin/python&amp;quot;&lt;br /&gt;
#INTERP is present twice so that the new python interpreter knows the actual executable path&lt;br /&gt;
if sys.executable != INTERP: os.execl(INTERP, INTERP, *sys.argv)&lt;br /&gt;
&lt;br /&gt;
from paste.deploy import loadapp&lt;br /&gt;
application = loadapp(&#039;config:/home/mediagoblin/media.sspaeth.de/paste.ini&#039;)&lt;br /&gt;
&lt;br /&gt;
#If in case of errors, all you get are mysterious error 500, you can set debug=true in paste.ini to see stack traces&lt;br /&gt;
# Otherwise, add this:&lt;br /&gt;
#from paste.exceptions.errormiddleware import ErrorMiddleware&lt;br /&gt;
#application = ErrorMiddleware(application, debug=True)&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
# Set up the database by issueing: &amp;lt;pre&amp;gt;gmg dbupdate&amp;lt;/pre&amp;gt;&lt;br /&gt;
# (optional but recommended) Serve the static files directly from the webserver.&lt;br /&gt;
:In paste.ini in this section: [composite:routing] comment out the static files:&lt;br /&gt;
   #/mgoblin_static/ = mediagoblin_static&lt;br /&gt;
   #/theme_static/ = theme_static&lt;br /&gt;
:and symlink the mediagobin/mediagoblin/static directoy to public/mgoblin_static&lt;br /&gt;
:           and mediagoblin/mediagoblin/themes to public/theme_static&lt;br /&gt;
:&lt;br /&gt;
:so it is displayed directly. This step might be different depending on your web server configuration. There is no reason that static&lt;br /&gt;
:files need to go through all the python indirection when they can be served directly by nginx/apache/...&lt;br /&gt;
:&lt;br /&gt;
:In case you want to delete your git checkout after the installation (you don&#039;t need it, since you installed the mediagoblin package to ~/local/virtenv/lib/python2.7/mediagoblin... you should do the symlinking from there.&lt;br /&gt;
===Open Issues===&lt;br /&gt;
Please fill in the blanks if you find them out:&lt;br /&gt;
* How to enable logging to a file or standard html logs? Console output just disappears.&lt;br /&gt;
* How to set up things not using sqlite. What&#039;s wrong with mySQL?&lt;br /&gt;
&lt;br /&gt;
===Troubleshooting===&lt;br /&gt;
* First of all: invoke &amp;lt;pre&amp;gt;python passenger_wsgi.py&amp;lt;/pre&amp;gt; directly from the shell. This will tell you if there are import errors etc. If this command exits without any output on the console, you have already achieved a lot.&lt;br /&gt;
* In &#039;&#039;paste.ini&#039;&#039; set debug=true. This will show you python backtraces directly in the web page&lt;br /&gt;
* You will need to configure an smtp user/passwd/server in mediagoblin.ini, so you actually get the account creation token mailed out. Hint, the relevant settings are: &amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;email_debug_mode = false&lt;br /&gt;
email_sender_address = postmaster@sspaeth.de&lt;br /&gt;
email_smtp_host = SMTP.DOMAIN.TLD&lt;br /&gt;
email_smtp_user = USERNAME&lt;br /&gt;
email_smtp_pass = WEIRDPASSWORD&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* In case you can upload media, but it does not appear. You don&#039;t have the celery server running. Add &amp;lt;pre&amp;gt;CELERY_ALWAYS_EAGER = true&amp;lt;/pre&amp;gt; to the &#039;&#039;[celery]&#039;&#039; section in mediagoblin.ini&lt;br /&gt;
&lt;br /&gt;
=Miscellaneous Hacks=&lt;br /&gt;
==Force translation==&lt;br /&gt;
There might some conditions under which you would prefer that MediaGoblin always return the same translation.  If you are deploying with nginx and fastcgi, you can force MediaGoblin to return a specific translation regardless of browser preferences by passing a specific HTTP_ACCEPT_LANGUAGE fastcgi parameter in your location block. Example last line in location block:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
    fastcgi_param HTTP_ACCEPT_LANGUAGE es; #force spanish translation&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Create an admin user==&lt;br /&gt;
&lt;br /&gt;
To create an admin user, first create the user you need either via the website or the command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./bin/gmg adduser&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then to turn it into an admin account use&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./bin/gmg makeadmin your_username&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ayleph</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=Main_Page&amp;diff=1533</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=Main_Page&amp;diff=1533"/>
		<updated>2014-05-21T22:36:24Z</updated>

		<summary type="html">&lt;p&gt;Ayleph: Undo revision 1531 by Jenifferhomes (talk) Undo spam edit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Want to Join the MediaGoblin Community? =&lt;br /&gt;
&lt;br /&gt;
We’re really glad that you want to join the MediaGoblin community!&lt;br /&gt;
&lt;br /&gt;
There are a variety of ways to help and support MediaGoblin and to join the team.  If you want to code, great, if not, even better!  MediaGoblin interested contributors in many different roles: users, system administrators, technical writers, testers, evangelists, UI/UX and graphics designers, cheerleaders, and dreamers.&lt;br /&gt;
&lt;br /&gt;
We observe the [https://www.djangoproject.com/conduct/ Django code of conduct].  Be welcoming, friendly, and patient!&lt;br /&gt;
&lt;br /&gt;
This wiki covers a variety of ways that you can get involved with MediaGoblin as well as instructions on how to get started.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hang out with the MediaGoblin folk ==&lt;br /&gt;
&lt;br /&gt;
MediaGoblin has a mailing list and an IRC channel where we hang out.  See [http://mediagoblin.org/pages/join.html our join page] for links.&lt;br /&gt;
&lt;br /&gt;
Please drop by and say “Hi!”  And, if you’re looking for something to do, just ask---there’s always work to be done.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Take Part in the Monthly Meetings ==&lt;br /&gt;
&lt;br /&gt;
Each month is a [[:Category:Meeting|Meeting]]. You can take part and help decide on the future of MediaGoblin. Or just be around and see what&#039;s happening live!&lt;br /&gt;
&lt;br /&gt;
=How Can you help ?=&lt;br /&gt;
&lt;br /&gt;
First and foremost, for many (but not all) types of contributions you may want to set up a local instance.  To learn how to do this, see the [[HackingHowto]] page.  (If you&#039;re not familiar with command line level things, there are still ways you can help below!)&lt;br /&gt;
&lt;br /&gt;
== File Bugs / Triage Bugs ==&lt;br /&gt;
&lt;br /&gt;
Issue reports are critical for all projects.  Identified bugs give developers a basis for beginning work, and providing an idea of what features and issues are most important to users and the overall usability of the software.  If you identify errors, flaws, unexpected behaviors, or deficits that impede use, file a bug.&lt;br /&gt;
&lt;br /&gt;
* [[File Bugs]] -- notes on filing new bugs/issues/feature requests&lt;br /&gt;
* [[Feature Ideas]] -- notes on possible features&lt;br /&gt;
* [[Triage Bugs]] -- notes on triaging&lt;br /&gt;
* [[BugTriageDay]] -- every other Thursday is bug triage day where anyone can help out triaging bugs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Send Encouragement / Spread the Word ==&lt;br /&gt;
&lt;br /&gt;
Sometimes, a nice word, simple encouragement, and interest in the work we’re doing is enough to inspire a tizzy of productive work.  Just a bit more interest and encouragement can even make the difference between a complete feature and limited functionality; between a completed milestone and lost momentum.&lt;br /&gt;
&lt;br /&gt;
Similarly, MediaGoblin, and the movement for free network services, is always in need of encouragement.  Use free network services, understand the principals behind the movement, be able to articulate the benefits of free network services and the problems with psudo-free applications that don’t respect the users’ freedom.&lt;br /&gt;
&lt;br /&gt;
Write a blog post, post a status update, drop by the listserv or join #mediagoblin on freenode.net and let us know.  See [http://mediagoblin.org/join/ our join page] for links.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Write Documentation / Edit Documentation ==&lt;br /&gt;
&lt;br /&gt;
* [[Documentation quick start]] - How to contribute to the documentation effort.&lt;br /&gt;
* [[ManualStandards]] - covers the standards for writing the user manual (forthcoming.) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test MediaGoblin ==&lt;br /&gt;
&lt;br /&gt;
Do you have access to the web? Do you like sharing your opinions? If so, we need your help to test MediaGoblin! Testers play around with the current test instance, note what operating system and browser they use (notes on multiple set-ups are also helpful) and take some notes. That&#039;s it! It&#039;s a very important task that doesn&#039;t require any special knowledge and you&#039;re done in under an hour. Ready to help?  &lt;br /&gt;
&lt;br /&gt;
* [[User Experience]] - user experience testing.  Includes link to an instance you can try!&lt;br /&gt;
* [[UnitTests|Unit Tests]] - all about the unit tests&lt;br /&gt;
* [[Manual_Functional_Testing|Manual Functional Testing]] - a great way to get to know MediaGoblin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Translate MediaGoblin ==&lt;br /&gt;
&lt;br /&gt;
If you know English and another language and feel comfortable translating elements of the interface or even the documentation, we’d love to have help translating the software and resources.&lt;br /&gt;
Translating MediaGoblin is very easy with a web interface, so there is no programming knowledge required at all.&lt;br /&gt;
&lt;br /&gt;
* [[Translations]] - How to translate stuff or update the translations&lt;br /&gt;
&lt;br /&gt;
== Become a User ==&lt;br /&gt;
&lt;br /&gt;
Coming soon!&lt;br /&gt;
&lt;br /&gt;
We’re building MediaGoblin for us and for you but really you’re one of us and I am you and we are we and MediaGoblin is the walrus.&lt;br /&gt;
&lt;br /&gt;
We&#039;re planning to launch our own public instance of MediaGoblin in the near future--probably in the September/October 2011 time frame.  When we do, sign up for an account, use the service and relish in the thought that this service comes with a heaping side of Freedom and you can salt and pepper it to your liking.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Help Others ==&lt;br /&gt;
&lt;br /&gt;
Have you spent time with MediaGoblin?  If so, your experience and wisdom are invaluable and you’re the best person we can think of to help other users with their questions.&lt;br /&gt;
&lt;br /&gt;
Hang out on the IRC channel and help answer new peoples&#039; questions.  See [http://mediagoblin.org/join/ our join page] for links.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Run your own MediaGoblin Instance ==&lt;br /&gt;
&lt;br /&gt;
Are there things about our instance you want to change?  Are there things about other instances you wish were different?  Want to test upcoming changes?  Want to create patches to implement things you need?  That’s great—you can run your own instance!&lt;br /&gt;
&lt;br /&gt;
The primary documentation for this is at [http://docs.mediagoblin.org http://docs.mediagoblin.org] but here are some additional tips:&lt;br /&gt;
&lt;br /&gt;
* [[Configure_MediaGoblin|Configuration]] - Learn about MediaGoblin configuration files and file options.&lt;br /&gt;
* [[Deployment]] - General deployment advice&lt;br /&gt;
* [[Scaling Down]] - Minimizing MediaGoblin&#039;s resource requirements&lt;br /&gt;
* [[Virtual Machine Hosting]] - Deploy your own publicly available MediaGoblin server using [http://aws.amazon.com/free/?utm_source=adwords&amp;amp;utm_medium=cpc&amp;amp;utm_campaign=CPC_Google_AWS_ec2&amp;amp;utm_content=TextV01_PP_V01_EC2&amp;amp;trk=CPC_Google_AWS_ec2 Amazon&#039;s free EC2 tier].&lt;br /&gt;
&lt;br /&gt;
= Technical project documentation =&lt;br /&gt;
&lt;br /&gt;
The technical docs, that are more finished and the ones that are better maintained near the code (so they stay up to date) are in the more technical chapters of the [http://docs.mediagoblin.org/ main documentation].&lt;br /&gt;
* [[Storage]] - How MediaGoblin&#039;s internal storage system works.&lt;br /&gt;
* [[Processing]] - What happens after you submit your image/video/etc?  Processing!  More about that.&lt;br /&gt;
* [https://gitorious.org/mediagoblin/mediagoblin/blobs/master/extlib/README External Library Policy] - covers use of external libraries&lt;br /&gt;
* [[User:Cwebber/braindumps]] - Chris Webber&#039;s braindumps (you can help refactoring these into real sections of the site!)&lt;br /&gt;
* [[Multiple media support]] - Design plan for multiple media support&lt;br /&gt;
&lt;br /&gt;
== Write Code / Fix Code ==&lt;br /&gt;
&lt;br /&gt;
MedaGoblin development is premised on the idea that the entire interface for the platform be completely theme-able.  If you have a design or theming background, consider developing themes for MediaGoblin.  New themes help test the theming system, provide attractive and appealing interfaces for prospective users.  If you want to start a new theme but don’t know where to start, touch base with the development community on the list or in the IRC channel for more information.&lt;br /&gt;
&lt;br /&gt;
If you are a coder and you would like to write code, the repository is hosted on gitorious. Clone or fork the repository and start poking around. Become familiar with this manual for an overview of how the software works and is used. Consider the contributor wiki for more information about the project, our preferred methods, and guides for developing MediaGoblin. We even have tips on becoming a coder and we’re willing to help!&lt;br /&gt;
&lt;br /&gt;
* [[HackingHowto|Hacking]] - notes on making and sending in code contributions&lt;br /&gt;
** [[BeginnersCorner|Beginner&#039;s Corner]] - resources for those who are new to Python or Git.&lt;br /&gt;
** &#039;&#039;Started from an older version of the Hacking Howto?  We switched from buildout-&amp;gt;virtualenv, so look at [[Moving from buildout to virtualenv]] for information on how to move over.&#039;&#039;&lt;br /&gt;
* [[Git workflow]] - How to go about submitting patches via git.&lt;br /&gt;
* [[Code review tips]] - Tips on how to go about doing local code review&lt;br /&gt;
* [[Templating]] - How our templating structure is set up&lt;br /&gt;
* [[Code overview]] - Overview of the structure of the codebase&lt;br /&gt;
&lt;br /&gt;
== Create a Theme ==&lt;br /&gt;
&lt;br /&gt;
See [http://docs.mediagoblin.org/siteadmin/theming.html the theming docs]&lt;br /&gt;
&lt;br /&gt;
== Write a plugin ==&lt;br /&gt;
&lt;br /&gt;
If you start, you&#039;ll find some basic documentation [http://docs.mediagoblin.org/#part-4-developer-s-zone| in the docs site]&lt;br /&gt;
&lt;br /&gt;
You&#039;ve made a plugin ? List it here : &lt;br /&gt;
&lt;br /&gt;
[[Available_Plugins|Available plugins]]&lt;br /&gt;
&lt;br /&gt;
You&#039;ve written a plugin ? You got some tips to share ? A tutorial idea ? Please do :&lt;br /&gt;
 &lt;br /&gt;
[[PluginsTips|Plugins Tips]]&lt;br /&gt;
&lt;br /&gt;
= Misc =&lt;br /&gt;
&lt;br /&gt;
== Android client ==&lt;br /&gt;
&lt;br /&gt;
See [[Android Client]]&lt;br /&gt;
&lt;br /&gt;
= Inner workings of the secret sanctum =&lt;br /&gt;
&lt;br /&gt;
* [[IRCBot]] - covers our irc bot&lt;br /&gt;
* [[ReleaseProcess|Release Process]] - covers the release process&lt;br /&gt;
* [[Update the website]] - Learn how to update mediagoblin.org!&lt;br /&gt;
&lt;br /&gt;
=FAQ=&lt;br /&gt;
&lt;br /&gt;
[[GMG FAQ]]&lt;/div&gt;</summary>
		<author><name>Ayleph</name></author>
	</entry>
</feed>