GSOC 2012

'''NOTE: We did NOT apply to GSOC in 2012... however, we are applying for GSOC 2013!'''

We are applying to be a mentoring organization for Google Summer of Code 2012 this year.

At the time of writing we haven't been accepted yet, but here are some ideas the team had collected:

= How do I apply as a student? =

Well, we need to be accepted as a mentoring org first :)

But then:
 * Submit your application (details coming soon)
 * Join us on IRC and on our mailing lists
 * Set up a development environment via our HackingHowto

It's important that you communicate... most MediaGoblin communication happens on IRC, so you should join there and discuss!

= Ideas =

Improved comments
Commenting currently isn't great. Several things could improve it:


 * Comment feeds
 * Notification about new comments, for the person who posted the media
 * Notification about new comments, for people participating in conversation or who want to "subscribe to comments" on this entry (look at wordpress)
 * Possibly also? notification of new comments on entries on the public timeline... see "Public Timeline" section of this page!

Kuneco development (OStatus federation library)
We've announced interest in building a library for making OStatus development easy, but not much has happened on it yet.

http://lists.mediagoblin.org/pipermail/devel/2011-December/000107.html

Some things we know we'd like:

Next generation lxml-based feed support
We'd like a replacement for the atom generation libraries we're already using from werkzeug. Not much has happened on it yet, though an almost verbatim lxml replacement was written. Nonetheless, we'd like a more "chainable" system that can allow for modification of individual feed nodes as well as the whole tree, either by simple funciton chaining (passing each xml node for the feed "entry" along through several functions) or something way more complex, using events and building a pipeline, a-la gstreamer.

This is important as different media types will have different needs and will need to modify the individual entries, and it also might be possible to build the work of one type of feed off of another (pubsubhubbub/salmon/or etc off of a more plain atom feed?). Discussion about this has already somewhat happened amongst mediagoblin developers, and a potential/interested student is encouraged to ask more on IRC.

PubSubHubbub hub WSGI application
We'd like to be able to provide a WSGI server for pushing PubSubHubbub updates along.

It might be great if the database backend (for storing subscribers, etc) could be fairly generic, providing a default sqlalchemy backend, but providing an interface design so that different backends for different applications could be plugged in nicely.

Media submission improvements
We could really afford to improve the state of media submission for users. A few possible improvements...

Drag and drop file submission
It would be nice to be able to take advantage of HTML5 drag and drop when uploading media. This could be convenient and pleasant for certain types of desktop users.

Multi-file submission tool
Particularly combined with the above, a multi-file submission tool would be great. For example, if I wanted to upload a whole bunch of photos of my friends from a trip, I might want to be able to do so without having to submit, move back to submit, move back to submit again. This would be particularly nice if combined with drag and drop file submission above.

OpenPhoto has a really great interface for this sort of thing; it might be nice to look there as an example.

"Uploading" status bar / improved ajaxiness
When uploading large files (videos, etc), it might be cool to have a way to see how much uploading time remains.

This might require some complex work, might be useful to look at http://pythonpaste.org/modules/progress.html

Improved media panel
We currently have a (mostly secret) media panel that displays information about media being processed at a URL like:

/u/{username}/panel/

There could be some improvements here:


 * Make this promient: next to the user's name, it might be nice to state something about information of uploads in progress, if there are any.
 * Improve display information, including "progress" reports, if there are any
 * A way to "clear" information about failed uploads once you've reviewed them
 * Make it look nice ;)

Admin panel
Administrators of more "public" sites might need some good tools to moderate the content on said sites. Some ideas:


 * A nice interface for searching for and taking actions on media (not so important, as admins can kind of already do this as if they were the users)
 * A way to suspend a user's account
 * A way to send a message to a particular user (like, if you're thinking of suspending their account ;))
 * DMCA and other "abuse" compliance: it might be good if there could be an (optional) feature where visitors to the site can "flag" materials that are illegal, whatever. Provide an interface for reviewing these and taking action.
 * Hooks that allow for adding extra admin tools for plugins (yeah yeah, we don't really have plugins yet though)

"ACL" &mdash; Access Control Lists
Short description: The idea basicly is: Some people only want to show some media to certain people. And possibly allow comments only from them.

Some details:
 * As OStatus isn't there yet, this all will be local only, for now.
 * Sketching up details of this will be part of the project.
 * Details might be things like:
 * Adding people to a group (say "family") first and only adding groups to a media's "viewing list".
 * Multiple permissions, like "view", "may comment", "may add tags", ...
 * The starting system should probably be simple, so that it can later be exteneded in any needed way. Or made easily compatible with anything OStatus might come up for distributed access.

Personal timeline
Very short description: "See what's new around you". Have page showing news about your media, your friends, your subscribed feeds, etc. schendje had some ideas on this...


 * Might be good to look at the kinds of notifications people get on DeviantArt and Youtube, etc
 * Would be good to be able to "subscribe" to media authors, a-la youtube subscriptions
 * Notifications of comments recently posted to your stuff

How to keep this from getting too messy? Would be good to hear suggestions on how to have this clean in a proposal.

Talking to schendje about this on IRC is recommended.

Improved tests, test coverage
Our testing situation could really be improved. It would be good if we could:


 * Get a test coverage script in place, to see just how much stuff needs to be covered
 * Write more tests!

Podcast feed support

 * Allow media types to provide a URL for "enclosure" support
 * Add support for feeds that are filtered by a specific type

That's pretty simple... Could even get more ambitious...


 * Plugin that would allow for bittorrent hosting of podcasts... Miro and Banshee will both try to download from a bittorrent to save the hosting provider bandwidth if they can. Would be cool to implement that.

More authentication options
Some people want Central Authentication System support, such as LDAP, etc. Would be good to provide a new system and develop a method for *cleanly* swapping in authentication systems.