<?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=ShawnRisk</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=ShawnRisk"/>
	<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/Special:Contributions/ShawnRisk"/>
	<updated>2026-05-19T11:04:44Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.17</generator>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=CommunityGovernance&amp;diff=1746</id>
		<title>CommunityGovernance</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=CommunityGovernance&amp;diff=1746"/>
		<updated>2016-01-04T13:09:25Z</updated>

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

		<summary type="html">&lt;p&gt;ShawnRisk: &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;
&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;br /&gt;
* Running the monthly meetings: breton&lt;br /&gt;
* Administrate the mailing list: larjona&lt;/div&gt;</summary>
		<author><name>ShawnRisk</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=CommunityGovernance&amp;diff=1708</id>
		<title>CommunityGovernance</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=CommunityGovernance&amp;diff=1708"/>
		<updated>2015-06-08T12:42:22Z</updated>

		<summary type="html">&lt;p&gt;ShawnRisk: /* MediaGoblin issue tracker */&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;
* Wiki administration&lt;br /&gt;
&lt;br /&gt;
== MediaGoblin issue tracker ==&lt;br /&gt;
&lt;br /&gt;
* Help triaging bugs: R13ose&lt;br /&gt;
&lt;br /&gt;
* People with permissions to create accounts in trac&lt;br /&gt;
&lt;br /&gt;
* People with permissions to delete users/issues/comments in trac&lt;br /&gt;
&lt;br /&gt;
* Volunteers for spam cleaning: LArjona&lt;br /&gt;
&lt;br /&gt;
* Talk to trac people about spam: R13ose&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>ShawnRisk</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=Meeting&amp;diff=1142</id>
		<title>Meeting</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=Meeting&amp;diff=1142"/>
		<updated>2013-03-02T14:50:10Z</updated>

		<summary type="html">&lt;p&gt;ShawnRisk: /* Next Meeting */&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;&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. [http://mediagoblin.org/irclogs/ Logs for past meetings.]&lt;br /&gt;
&lt;br /&gt;
== Next Meeting ==&lt;br /&gt;
&lt;br /&gt;
* Bug triage day discussion&lt;br /&gt;
* Upgrading Trac to 1.0&lt;br /&gt;
* Consider have release dates?&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;
&lt;br /&gt;
== Past Meetings ==&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>ShawnRisk</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=Meeting&amp;diff=1140</id>
		<title>Meeting</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=Meeting&amp;diff=1140"/>
		<updated>2013-02-23T21:02:42Z</updated>

		<summary type="html">&lt;p&gt;ShawnRisk: &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;&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. [http://mediagoblin.org/irclogs/ Logs for past meetings.]&lt;br /&gt;
&lt;br /&gt;
== Next Meeting ==&lt;br /&gt;
&lt;br /&gt;
* Bug triage day discussion&lt;br /&gt;
* Upgrading Trac to 1.0&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;
&lt;br /&gt;
== Past Meetings ==&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>ShawnRisk</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=HackingHowto&amp;diff=461</id>
		<title>HackingHowto</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=HackingHowto&amp;diff=461"/>
		<updated>2011-12-11T22:02:44Z</updated>

		<summary type="html">&lt;p&gt;ShawnRisk: /* How to set up and maintain an environment for hacking with virtualenv */&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/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.&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;
== 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.6 or 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;
* MongoDB            - http://www.mongodb.org/&lt;br /&gt;
* Python Imaging Library (PIL) - http://www.pythonware.com/products/pil/&lt;br /&gt;
* virtualenv         - http://www.virtualenv.org/&lt;br /&gt;
&lt;br /&gt;
Note, MongoDB can get to be pretty huge.  You might want to consider&lt;br /&gt;
looking at [[Scaling Down]] if you are installing this on a smallish&lt;br /&gt;
instance.&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 mongodb git-core python python-dev python-lxml python-imaging python-virtualenv}}&lt;br /&gt;
&lt;br /&gt;
==== Fedora / RedHat(?) ====&lt;br /&gt;
&lt;br /&gt;
On Fedora:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|yum install mongodb-server python-paste-deploy python-paste-script git-core python python-devel python-lxml python-imaging python-virtualenv}}&lt;br /&gt;
&lt;br /&gt;
=== Mac OS X ===&lt;br /&gt;
&lt;br /&gt;
On 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;
Install MongoDB from these instructions: http://www.mongodb.org/display/DOCS/Quickstart+OS+X&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;
Python Imaging Library (PIL): http://code.google.com/appengine/docs/python/images/installingPIL.html#mac&lt;br /&gt;
&lt;br /&gt;
Libjpeg &amp;amp; Libpng: http://ethan.tira-thompson.org/Mac_OS_X_Ports.html Combo Installer&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, 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;
&#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://gitorious.org/mediagoblin/mediagoblin.git&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
# Change directories to your new checkout: {{Cmd|cd mediagoblin}}&lt;br /&gt;
# Set up the in-package virtualenv: {{Cmd|virtualenv . &amp;amp;&amp;amp; ./bin/python setup.py develop}}&lt;br /&gt;
&lt;br /&gt;
That&#039;s it!&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;
&#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 migrate}}&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;
&lt;br /&gt;
== Running Mongo Database ==&lt;br /&gt;
&lt;br /&gt;
Startup the Database if you haven&#039;t already.  On most systems, this&lt;br /&gt;
should be started automatically.  If not, consult the documentation&lt;br /&gt;
for your distribution or the MongoDB docs themselves.&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;
== 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;
== 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;
=== pymongo.errors.AutoReconnect: could not find master/primary ===&lt;br /&gt;
&lt;br /&gt;
If you see this:&lt;br /&gt;
&lt;br /&gt;
    pymongo.errors.AutoReconnect: could not find master/primary&lt;br /&gt;
&lt;br /&gt;
then make sure mongodb is installed and running.&lt;br /&gt;
&lt;br /&gt;
If it&#039;s installed, check the mongodb log.  On my machine, that&#039;s &lt;br /&gt;
&amp;lt;tt&amp;gt;/var/log/mongodb/mongodb.log&amp;lt;/tt&amp;gt;.  If you see something like:&lt;br /&gt;
&lt;br /&gt;
    old lock file: /var/lib/mongodb/mongod.lock.  probably means...&lt;br /&gt;
&lt;br /&gt;
in that case you might have had an unclean shutdown.  Try:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|sudo mongod --repair}}&lt;br /&gt;
&lt;br /&gt;
If that didn&#039;t work, just delete the lock file and relaunch mongodb.&lt;br /&gt;
&lt;br /&gt;
Anyway, then start the mongodb server in whatever way is appropriate&lt;br /&gt;
for your distro / OS.&lt;br /&gt;
&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|gmg wipealldata}}&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.  Will&lt;br /&gt;
plans to do this work and thus he documented it.&lt;br /&gt;
&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 mongokit 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 MongoDB.  Basically, instead of a relational database with&lt;br /&gt;
tables, you have a big JSON structure which acts a lot like a Python&lt;br /&gt;
dict.&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;
&lt;br /&gt;
== Bite-sized bugs to start with ==&lt;br /&gt;
&lt;br /&gt;
Now you should visit our latest list of [http://bugs.foocorp.net/projects/mediagoblin/issues?query_id=3 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>ShawnRisk</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=HackingHowto&amp;diff=152</id>
		<title>HackingHowto</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=HackingHowto&amp;diff=152"/>
		<updated>2011-08-17T15:54:37Z</updated>

		<summary type="html">&lt;p&gt;ShawnRisk: &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 :ref:`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.&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 buildout,&lt;br /&gt;
but if you want to use virtualenv, there&#039;s a set of mediocre not-very-supported&lt;br /&gt;
steps in the [https://gitorious.org/mediagoblin/pages/Home evil wiki].&lt;br /&gt;
&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.6 or 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;
* MongoDB            - http://www.mongodb.org/&lt;br /&gt;
* Python Imaging Library (PIL) - http://www.pythonware.com/products/pil/&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 mongodb git-core python python-dev python-lxml python-imaging}}&lt;br /&gt;
&lt;br /&gt;
On Fedora:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|yum install mongodb-server python-paste-deploy python-paste-script git-core python python-devel python-lxml python-imaging}}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
On 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;
Install MongoDB from these instructions: http://www.mongodb.org/display/DOCS/Quickstart+OS+X&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;
Python Imaging Library (PIL): http://code.google.com/appengine/docs/python/images/installingPIL.html#mac&lt;br /&gt;
&lt;br /&gt;
Libjpeg &amp;amp; Libpng: http://ethan.tira-thompson.org/Mac_OS_X_Ports.html Combo Installer&lt;br /&gt;
&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 or Mac OS X to set&lt;br /&gt;
up requirements, let us know!&lt;br /&gt;
&lt;br /&gt;
== How to set up and maintain an environment for hacking with buildout ==&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://gitorious.org/mediagoblin/mediagoblin.git&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
# Bootstrap and run buildout: {{Cmd|cd mediagoblin}} and then one of the following:&lt;br /&gt;
#* {{Cmd|python bootstrap.py &amp;amp;&amp;amp; ./bin/buildout}}, &#039;&#039;&#039;OR&#039;&#039;&#039;&lt;br /&gt;
#* {{Cmd|python bootstrap.py --distribute &amp;amp;&amp;amp; ./bin/buildout}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Why would you want one over the other?  If the first doesn&#039;t work, then try the second.&lt;br /&gt;
&lt;br /&gt;
That&#039;s it!  Using this method, buildout should create a &amp;lt;tt&amp;gt;user_dev&amp;lt;/tt&amp;gt;&lt;br /&gt;
directory, in which certain things will be stored (media, beaker&lt;br /&gt;
session stuff, etc).  You can change this, but for development&lt;br /&gt;
purposes this default should be fine.&lt;br /&gt;
&lt;br /&gt;
If you have problems, please [http://mediagoblin.org/join/ let us know]!&lt;br /&gt;
&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/buildout &amp;amp;&amp;amp; ./bin/gmg migrate}}.&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;
You don&#039;t need to do anything---code changes are automatically available.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deleting your buildout&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
At some point, you may want to delete your buildout.  Perhaps it&#039;s to&lt;br /&gt;
start over.  Perhaps it&#039;s to test building development environments&lt;br /&gt;
with buildout.&lt;br /&gt;
&lt;br /&gt;
To do this, run:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|rm -rf bin develop-eggs eggs mediagoblin.egg-info parts user_dev}}.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Running Mongo Database ==&lt;br /&gt;
&lt;br /&gt;
Startup the Database: {{Cmd|./mongodb-xxxxxxx/bin/mongod}}.&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.  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;
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;
=== pymongo.errors.AutoReconnect: could not find master/primary ===&lt;br /&gt;
&lt;br /&gt;
If you see this:&lt;br /&gt;
&lt;br /&gt;
    pymongo.errors.AutoReconnect: could not find master/primary&lt;br /&gt;
&lt;br /&gt;
then make sure mongodb is installed and running.&lt;br /&gt;
&lt;br /&gt;
If it&#039;s installed, check the mongodb log.  On my machine, that&#039;s &lt;br /&gt;
&amp;lt;tt&amp;gt;/var/log/mongodb/mongodb.log&amp;lt;/tt&amp;gt;.  If you see something like:&lt;br /&gt;
&lt;br /&gt;
    old lock file: /var/lib/mongodb/mongod.lock.  probably means...&lt;br /&gt;
&lt;br /&gt;
in that case you might have had an unclean shutdown.  Try:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|sudo mongod --repair}}&lt;br /&gt;
&lt;br /&gt;
If that didn&#039;t work, just delete the lock file and relaunch mongodb.&lt;br /&gt;
&lt;br /&gt;
Anyway, then start the mongodb server in whatever way is appropriate&lt;br /&gt;
for your distro / OS.&lt;br /&gt;
&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|gmg wipealldata}}&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.  Will&lt;br /&gt;
plans to do this work and thus he documented it.&lt;br /&gt;
&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 mongokit 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 MongoDB.  Basically, instead of a relational database with&lt;br /&gt;
tables, you have a big JSON structure which acts a lot like a Python&lt;br /&gt;
dict.&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;
&lt;br /&gt;
== Bite-sized bugs to start with ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;May 3rd, 2011&#039;&#039;&#039;:  We don&#039;t have a list of bite-sized bugs, yet, but&lt;br /&gt;
this is important to us.  If you&#039;re interested in things to work on,&lt;br /&gt;
let us know on [http://mediagoblin.org/join/ the mailing list] or&lt;br /&gt;
on the [http://mediagoblin.org/join/ IRC channel].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tips for people new to coding ==&lt;br /&gt;
&lt;br /&gt;
=== Learning Python ===&lt;br /&gt;
&lt;br /&gt;
GNU MediaGoblin is written using a programming language called [http://python.org/ Python].&lt;br /&gt;
&lt;br /&gt;
There are two different incompatible iterations of Python which I&#039;ll&lt;br /&gt;
refer to as Python 2 and Python 3.  GNU MediaGoblin is written in&lt;br /&gt;
Python 2 and requires Python 2.6 or 2.7.  At some point, we might&lt;br /&gt;
switch to Python 3, but that&#039;s a future thing.&lt;br /&gt;
&lt;br /&gt;
You can learn how to code in Python 2 from several excellent books&lt;br /&gt;
that are freely available on the Internet:&lt;br /&gt;
&lt;br /&gt;
* [http://learnpythonthehardway.org/ Learn Python the Hard Way]&lt;br /&gt;
* [http://diveintopython.org/ Dive Into Python]&lt;br /&gt;
* [http://www.greenteapress.com/thinkpython/ Python for Software Design]&lt;br /&gt;
* [http://www.swaroopch.com/notes/Python A Byte of Python]&lt;br /&gt;
&lt;br /&gt;
These are all excellent texts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;You Can Help&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you know of other good quality Python tutorials and Python&lt;br /&gt;
tutorial videos, let us know!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Learning Libraries GNU MediaGoblin uses ===&lt;br /&gt;
&lt;br /&gt;
GNU MediaGoblin uses a variety of libraries in order to do what it&lt;br /&gt;
does.  These libraries are listed in the :ref:`codebase-chapter`&lt;br /&gt;
along with links to the project Web sites and documentation for the&lt;br /&gt;
libraries.&lt;br /&gt;
&lt;br /&gt;
There are a variety of Python-related conferences every year that have&lt;br /&gt;
sessions covering many aspects of these libraries.  You can find them&lt;br /&gt;
at [http://python.mirocommunity.org Python Miro Community] -- This is a shameless plug; Will Kahn-Greene runs Python Miro Community.&lt;br /&gt;
&lt;br /&gt;
If you have questions or need help, [http://mediagoblin.org/join/ let us know]!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Learning git ===&lt;br /&gt;
&lt;br /&gt;
git is an interesting and very powerful tool.  Like all powerful&lt;br /&gt;
tools, it has a learning curve.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re new to git, we highly recommend the following resources for&lt;br /&gt;
getting the hang of it:&lt;br /&gt;
&lt;br /&gt;
* [http://learn.github.com/p/intro.html Learn Git] --- the GitHub intro to git&lt;br /&gt;
* [http://progit.org/book/ Pro Git] --- fantastic book&lt;br /&gt;
* [http://gitcasts.com/ Git casts] --- screencast covering git usage&lt;br /&gt;
* [http://gitref.org/ Git Reference] --- Git reference that makes it easier to get the hang of git if you&#039;re coming from other version control systems&lt;br /&gt;
&lt;br /&gt;
There&#039;s also a git mission at [http://openhatch.org/ OpenHatch].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Learning other utilities ===&lt;br /&gt;
&lt;br /&gt;
The [http://openhatch.org/ OpenHatch] site has a series of&lt;br /&gt;
[http://openhatch.org/missions/ training missions] which are&lt;br /&gt;
designed to help you learn how to use these tools.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re new to tar, diff, patch and git, we highly recommend you sign&lt;br /&gt;
up with OpenHatch and do the missions.&lt;/div&gt;</summary>
		<author><name>ShawnRisk</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=HackingHowto&amp;diff=150</id>
		<title>HackingHowto</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=HackingHowto&amp;diff=150"/>
		<updated>2011-08-17T15:15:45Z</updated>

		<summary type="html">&lt;p&gt;ShawnRisk: &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 :ref:`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.&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 buildout,&lt;br /&gt;
but if you want to use virtualenv, there&#039;s a set of mediocre not-very-supported&lt;br /&gt;
steps in the [https://gitorious.org/mediagoblin/pages/Home evil wiki].&lt;br /&gt;
&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.6 or 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;
* MongoDB            - http://www.mongodb.org/&lt;br /&gt;
* Python Imaging Library (PIL) - http://www.pythonware.com/products/pil/&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 mongodb git-core python python-dev python-lxml python-imaging}}&lt;br /&gt;
&lt;br /&gt;
On Fedora:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|yum install mongodb-server python-paste-deploy python-paste-script git-core python python-devel python-lxml}}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
On 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;
Install MongoDB from these instructions: http://www.mongodb.org/display/DOCS/Quickstart+OS+X&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;
Python Imaging Library (PIL): http://code.google.com/appengine/docs/python/images/installingPIL.html#mac&lt;br /&gt;
&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 or Mac OS X to set&lt;br /&gt;
up requirements, let us know!&lt;br /&gt;
&lt;br /&gt;
== How to set up and maintain an environment for hacking with buildout ==&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://gitorious.org/mediagoblin/mediagoblin.git&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
# Bootstrap and run buildout: {{Cmd|cd mediagoblin}} and then one of the following:&lt;br /&gt;
#* {{Cmd|python bootstrap.py &amp;amp;&amp;amp; ./bin/buildout}}, &#039;&#039;&#039;OR&#039;&#039;&#039;&lt;br /&gt;
#* {{Cmd|python bootstrap.py --distribute &amp;amp;&amp;amp; ./bin/buildout}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Why would you want one over the other?  If the first doesn&#039;t work, then try the second.&lt;br /&gt;
&lt;br /&gt;
That&#039;s it!  Using this method, buildout should create a &amp;lt;tt&amp;gt;user_dev&amp;lt;/tt&amp;gt;&lt;br /&gt;
directory, in which certain things will be stored (media, beaker&lt;br /&gt;
session stuff, etc).  You can change this, but for development&lt;br /&gt;
purposes this default should be fine.&lt;br /&gt;
&lt;br /&gt;
If you have problems, please [http://mediagoblin.org/join/ let us know]!&lt;br /&gt;
&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/buildout &amp;amp;&amp;amp; ./bin/gmg migrate}}.&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;
You don&#039;t need to do anything---code changes are automatically available.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deleting your buildout&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
At some point, you may want to delete your buildout.  Perhaps it&#039;s to&lt;br /&gt;
start over.  Perhaps it&#039;s to test building development environments&lt;br /&gt;
with buildout.&lt;br /&gt;
&lt;br /&gt;
To do this, run:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|rm -rf bin develop-eggs eggs mediagoblin.egg-info parts user_dev}}.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Running Mongo Database ==&lt;br /&gt;
&lt;br /&gt;
Startup the Database: {{Cmd|./mongodb-xxxxxxx/bin/mongod}}.&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.  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;
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;
=== pymongo.errors.AutoReconnect: could not find master/primary ===&lt;br /&gt;
&lt;br /&gt;
If you see this:&lt;br /&gt;
&lt;br /&gt;
    pymongo.errors.AutoReconnect: could not find master/primary&lt;br /&gt;
&lt;br /&gt;
then make sure mongodb is installed and running.&lt;br /&gt;
&lt;br /&gt;
If it&#039;s installed, check the mongodb log.  On my machine, that&#039;s &lt;br /&gt;
&amp;lt;tt&amp;gt;/var/log/mongodb/mongodb.log&amp;lt;/tt&amp;gt;.  If you see something like:&lt;br /&gt;
&lt;br /&gt;
    old lock file: /var/lib/mongodb/mongod.lock.  probably means...&lt;br /&gt;
&lt;br /&gt;
in that case you might have had an unclean shutdown.  Try:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|sudo mongod --repair}}&lt;br /&gt;
&lt;br /&gt;
If that didn&#039;t work, just delete the lock file and relaunch mongodb.&lt;br /&gt;
&lt;br /&gt;
Anyway, then start the mongodb server in whatever way is appropriate&lt;br /&gt;
for your distro / OS.&lt;br /&gt;
&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|gmg wipealldata}}&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.  Will&lt;br /&gt;
plans to do this work and thus he documented it.&lt;br /&gt;
&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 mongokit 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 MongoDB.  Basically, instead of a relational database with&lt;br /&gt;
tables, you have a big JSON structure which acts a lot like a Python&lt;br /&gt;
dict.&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;
&lt;br /&gt;
== Bite-sized bugs to start with ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;May 3rd, 2011&#039;&#039;&#039;:  We don&#039;t have a list of bite-sized bugs, yet, but&lt;br /&gt;
this is important to us.  If you&#039;re interested in things to work on,&lt;br /&gt;
let us know on [http://mediagoblin.org/join/ the mailing list] or&lt;br /&gt;
on the [http://mediagoblin.org/join/ IRC channel].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tips for people new to coding ==&lt;br /&gt;
&lt;br /&gt;
=== Learning Python ===&lt;br /&gt;
&lt;br /&gt;
GNU MediaGoblin is written using a programming language called [http://python.org/ Python].&lt;br /&gt;
&lt;br /&gt;
There are two different incompatible iterations of Python which I&#039;ll&lt;br /&gt;
refer to as Python 2 and Python 3.  GNU MediaGoblin is written in&lt;br /&gt;
Python 2 and requires Python 2.6 or 2.7.  At some point, we might&lt;br /&gt;
switch to Python 3, but that&#039;s a future thing.&lt;br /&gt;
&lt;br /&gt;
You can learn how to code in Python 2 from several excellent books&lt;br /&gt;
that are freely available on the Internet:&lt;br /&gt;
&lt;br /&gt;
* [http://learnpythonthehardway.org/ Learn Python the Hard Way]&lt;br /&gt;
* [http://diveintopython.org/ Dive Into Python]&lt;br /&gt;
* [http://www.greenteapress.com/thinkpython/ Python for Software Design]&lt;br /&gt;
* [http://www.swaroopch.com/notes/Python A Byte of Python]&lt;br /&gt;
&lt;br /&gt;
These are all excellent texts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;You Can Help&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you know of other good quality Python tutorials and Python&lt;br /&gt;
tutorial videos, let us know!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Learning Libraries GNU MediaGoblin uses ===&lt;br /&gt;
&lt;br /&gt;
GNU MediaGoblin uses a variety of libraries in order to do what it&lt;br /&gt;
does.  These libraries are listed in the :ref:`codebase-chapter`&lt;br /&gt;
along with links to the project Web sites and documentation for the&lt;br /&gt;
libraries.&lt;br /&gt;
&lt;br /&gt;
There are a variety of Python-related conferences every year that have&lt;br /&gt;
sessions covering many aspects of these libraries.  You can find them&lt;br /&gt;
at [http://python.mirocommunity.org Python Miro Community] -- This is a shameless plug; Will Kahn-Greene runs Python Miro Community.&lt;br /&gt;
&lt;br /&gt;
If you have questions or need help, [http://mediagoblin.org/join/ let us know]!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Learning git ===&lt;br /&gt;
&lt;br /&gt;
git is an interesting and very powerful tool.  Like all powerful&lt;br /&gt;
tools, it has a learning curve.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re new to git, we highly recommend the following resources for&lt;br /&gt;
getting the hang of it:&lt;br /&gt;
&lt;br /&gt;
* [http://learn.github.com/p/intro.html Learn Git] --- the GitHub intro to git&lt;br /&gt;
* [http://progit.org/book/ Pro Git] --- fantastic book&lt;br /&gt;
* [http://gitcasts.com/ Git casts] --- screencast covering git usage&lt;br /&gt;
* [http://gitref.org/ Git Reference] --- Git reference that makes it easier to get the hang of git if you&#039;re coming from other version control systems&lt;br /&gt;
&lt;br /&gt;
There&#039;s also a git mission at [http://openhatch.org/ OpenHatch].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Learning other utilities ===&lt;br /&gt;
&lt;br /&gt;
The [http://openhatch.org/ OpenHatch] site has a series of&lt;br /&gt;
[http://openhatch.org/missions/ training missions] which are&lt;br /&gt;
designed to help you learn how to use these tools.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re new to tar, diff, patch and git, we highly recommend you sign&lt;br /&gt;
up with OpenHatch and do the missions.&lt;/div&gt;</summary>
		<author><name>ShawnRisk</name></author>
	</entry>
	<entry>
		<id>https://wiki.mediagoblin.org/index.php?title=HackingHowto&amp;diff=148</id>
		<title>HackingHowto</title>
		<link rel="alternate" type="text/html" href="https://wiki.mediagoblin.org/index.php?title=HackingHowto&amp;diff=148"/>
		<updated>2011-08-17T14:39:38Z</updated>

		<summary type="html">&lt;p&gt;ShawnRisk: &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 :ref:`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.&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 buildout,&lt;br /&gt;
but if you want to use virtualenv, there&#039;s a set of mediocre not-very-supported&lt;br /&gt;
steps in the [https://gitorious.org/mediagoblin/pages/Home evil wiki].&lt;br /&gt;
&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.6 or 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;
* MongoDB            - http://www.mongodb.org/&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 mongodb git-core python python-dev python-lxml python-imaging}}&lt;br /&gt;
&lt;br /&gt;
On Fedora:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|yum install mongodb-server python-paste-deploy python-paste-script git-core python python-devel python-lxml}}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
On 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;
Install MongoDB from these instructions: http://www.mongodb.org/display/DOCS/Quickstart+OS+X&lt;br /&gt;
&lt;br /&gt;
For Python-lxml: http://muffinresearch.co.uk/archives/2009/03/05/install-lxml-on-osx/ with sudo&lt;br /&gt;
&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 or Mac OS X to set&lt;br /&gt;
up requirements, let us know!&lt;br /&gt;
&lt;br /&gt;
== How to set up and maintain an environment for hacking with buildout ==&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://gitorious.org/mediagoblin/mediagoblin.git&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
# Bootstrap and run buildout: {{Cmd|cd mediagoblin}} and then one of the following:&lt;br /&gt;
#* {{Cmd|python bootstrap.py &amp;amp;&amp;amp; ./bin/buildout}}, &#039;&#039;&#039;OR&#039;&#039;&#039;&lt;br /&gt;
#* {{Cmd|python bootstrap.py --distribute &amp;amp;&amp;amp; ./bin/buildout}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Why would you want one over the other?  If the first doesn&#039;t work, then try the second.&lt;br /&gt;
&lt;br /&gt;
That&#039;s it!  Using this method, buildout should create a &amp;lt;tt&amp;gt;user_dev&amp;lt;/tt&amp;gt;&lt;br /&gt;
directory, in which certain things will be stored (media, beaker&lt;br /&gt;
session stuff, etc).  You can change this, but for development&lt;br /&gt;
purposes this default should be fine.&lt;br /&gt;
&lt;br /&gt;
If you have problems, please [http://mediagoblin.org/join/ let us know]!&lt;br /&gt;
&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/buildout &amp;amp;&amp;amp; ./bin/gmg migrate}}.&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;
You don&#039;t need to do anything---code changes are automatically available.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deleting your buildout&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
At some point, you may want to delete your buildout.  Perhaps it&#039;s to&lt;br /&gt;
start over.  Perhaps it&#039;s to test building development environments&lt;br /&gt;
with buildout.&lt;br /&gt;
&lt;br /&gt;
To do this, run:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|rm -rf bin develop-eggs eggs mediagoblin.egg-info parts user_dev}}.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Running Mongo Database ==&lt;br /&gt;
&lt;br /&gt;
Startup the Database: {{Cmd|./mongodb-xxxxxxx/bin/mongod}}.&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.  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;
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;
=== pymongo.errors.AutoReconnect: could not find master/primary ===&lt;br /&gt;
&lt;br /&gt;
If you see this:&lt;br /&gt;
&lt;br /&gt;
    pymongo.errors.AutoReconnect: could not find master/primary&lt;br /&gt;
&lt;br /&gt;
then make sure mongodb is installed and running.&lt;br /&gt;
&lt;br /&gt;
If it&#039;s installed, check the mongodb log.  On my machine, that&#039;s &lt;br /&gt;
&amp;lt;tt&amp;gt;/var/log/mongodb/mongodb.log&amp;lt;/tt&amp;gt;.  If you see something like:&lt;br /&gt;
&lt;br /&gt;
    old lock file: /var/lib/mongodb/mongod.lock.  probably means...&lt;br /&gt;
&lt;br /&gt;
in that case you might have had an unclean shutdown.  Try:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|sudo mongod --repair}}&lt;br /&gt;
&lt;br /&gt;
If that didn&#039;t work, just delete the lock file and relaunch mongodb.&lt;br /&gt;
&lt;br /&gt;
Anyway, then start the mongodb server in whatever way is appropriate&lt;br /&gt;
for your distro / OS.&lt;br /&gt;
&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|gmg wipealldata}}&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.  Will&lt;br /&gt;
plans to do this work and thus he documented it.&lt;br /&gt;
&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 mongokit 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 MongoDB.  Basically, instead of a relational database with&lt;br /&gt;
tables, you have a big JSON structure which acts a lot like a Python&lt;br /&gt;
dict.&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;
&lt;br /&gt;
== Bite-sized bugs to start with ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;May 3rd, 2011&#039;&#039;&#039;:  We don&#039;t have a list of bite-sized bugs, yet, but&lt;br /&gt;
this is important to us.  If you&#039;re interested in things to work on,&lt;br /&gt;
let us know on [http://mediagoblin.org/join/ the mailing list] or&lt;br /&gt;
on the [http://mediagoblin.org/join/ IRC channel].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tips for people new to coding ==&lt;br /&gt;
&lt;br /&gt;
=== Learning Python ===&lt;br /&gt;
&lt;br /&gt;
GNU MediaGoblin is written using a programming language called [http://python.org/ Python].&lt;br /&gt;
&lt;br /&gt;
There are two different incompatible iterations of Python which I&#039;ll&lt;br /&gt;
refer to as Python 2 and Python 3.  GNU MediaGoblin is written in&lt;br /&gt;
Python 2 and requires Python 2.6 or 2.7.  At some point, we might&lt;br /&gt;
switch to Python 3, but that&#039;s a future thing.&lt;br /&gt;
&lt;br /&gt;
You can learn how to code in Python 2 from several excellent books&lt;br /&gt;
that are freely available on the Internet:&lt;br /&gt;
&lt;br /&gt;
* [http://learnpythonthehardway.org/ Learn Python the Hard Way]&lt;br /&gt;
* [http://diveintopython.org/ Dive Into Python]&lt;br /&gt;
* [http://www.greenteapress.com/thinkpython/ Python for Software Design]&lt;br /&gt;
* [http://www.swaroopch.com/notes/Python A Byte of Python]&lt;br /&gt;
&lt;br /&gt;
These are all excellent texts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;You Can Help&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you know of other good quality Python tutorials and Python&lt;br /&gt;
tutorial videos, let us know!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Learning Libraries GNU MediaGoblin uses ===&lt;br /&gt;
&lt;br /&gt;
GNU MediaGoblin uses a variety of libraries in order to do what it&lt;br /&gt;
does.  These libraries are listed in the :ref:`codebase-chapter`&lt;br /&gt;
along with links to the project Web sites and documentation for the&lt;br /&gt;
libraries.&lt;br /&gt;
&lt;br /&gt;
There are a variety of Python-related conferences every year that have&lt;br /&gt;
sessions covering many aspects of these libraries.  You can find them&lt;br /&gt;
at [http://python.mirocommunity.org Python Miro Community] -- This is a shameless plug; Will Kahn-Greene runs Python Miro Community.&lt;br /&gt;
&lt;br /&gt;
If you have questions or need help, [http://mediagoblin.org/join/ let us know]!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Learning git ===&lt;br /&gt;
&lt;br /&gt;
git is an interesting and very powerful tool.  Like all powerful&lt;br /&gt;
tools, it has a learning curve.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re new to git, we highly recommend the following resources for&lt;br /&gt;
getting the hang of it:&lt;br /&gt;
&lt;br /&gt;
* [http://learn.github.com/p/intro.html Learn Git] --- the GitHub intro to git&lt;br /&gt;
* [http://progit.org/book/ Pro Git] --- fantastic book&lt;br /&gt;
* [http://gitcasts.com/ Git casts] --- screencast covering git usage&lt;br /&gt;
* [http://gitref.org/ Git Reference] --- Git reference that makes it easier to get the hang of git if you&#039;re coming from other version control systems&lt;br /&gt;
&lt;br /&gt;
There&#039;s also a git mission at [http://openhatch.org/ OpenHatch].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Learning other utilities ===&lt;br /&gt;
&lt;br /&gt;
The [http://openhatch.org/ OpenHatch] site has a series of&lt;br /&gt;
[http://openhatch.org/missions/ training missions] which are&lt;br /&gt;
designed to help you learn how to use these tools.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re new to tar, diff, patch and git, we highly recommend you sign&lt;br /&gt;
up with OpenHatch and do the missions.&lt;/div&gt;</summary>
		<author><name>ShawnRisk</name></author>
	</entry>
</feed>