This is the ideas page for Public Lab's Google Summer of Code program. Please go ahead and edit these if you see things that need changing, as well as add your new ideas. And reach out for help on the plots-dev list, in the left sidebar! For a quick flashback, see * [our 2015 GSOC page](/wiki/gsoc-2015) * [our 2014 GSOC page](/wiki/gsoc-2014) * [our 2013 GSOC page](/wiki/gsoc-2013) and [2013 mentor & student proposals](/wiki/gsoc-2013-mentors-and-student-proposals)am Our main repositories can be found [on our Github organization page](https://github.com/publiclab), but a clearer listing with descriptions is [on our main developers page](/wiki/developers) **Important** -- to learn how to contribute to Public Lab software, see: http://publiclab.org/wiki/contributing-to-public-lab-software ###Who to contact with ideas/proposals Reach out on **[plots-dev](https://groups.google.com/group/plots-dev)** - the Public Lab developers discussion list. This is the list for programming related topics. **Later,** we'll begin to use **[plots-gsoc](https://groups.google.com/group/plots-gsoc)** - the GSoC discussion list, more for GSOC logistics. _Used once GSoC begins, not for proposals, thanks!_ **** ###How to post a proposal Please first contact the above **plots-dev** list, and tell us what you're interested in and a bit about your experience. It's also great to hear if you've forked [one of our codebases](/wiki/developers)) and installed it [on a test server](/wiki/developers#Simple+installation+with+Cloud9). Done with that? How about running tests? Tell us how far you've gotten! Once your idea is more developed, please [post a research note](/post) describing your proposal in detail. Tag it "gsoc". Here is the [template](http://publiclab.org/wiki/gsoc-application-template) we used last year. ###Contribution guidelines Our [Contributing to Public Lab Software](/wiki/contributing-to-public-lab-software) page has our preferred guidelines for submitting changes. Please read it over! We also love it when students show that they can work well with us by checking out some of our easier issues in [PublicLab.org](https://github.com/publiclab/plots2/issues?q=is%3Aopen+is%3Aissue+label%3Aeasy), [Spectral Workbench](https://github.com/publiclab/spectral-workbench/issues?q=is%3Aopen+is%3Aissue+label%3Aeasy), or [MapKnitter](https://github.com/publiclab/mapknitter/issues?q=is%3Aopen+is%3Aissue+label%3Aeasy), and even submitting a pull request. This gives us confidence that you've read our contribution guidelines and would be ready to jump into a project. **** ##Ideas list Here are the project ideas we're most interested in; however, we are also interested in any major feature request listed in our top project repository issue trackers, at [Spectral Workbench](https://github.com/publiclab/spectral-workbench/issues), [PublicLab.org](https://github.com/publiclab/plots2/issues), or [MapKnitter](https://github.com/publiclab/mapknitter/issues) -- so contact the plots-dev list (see above) if anything there interests you! ###Mapknitter Annotations **Part of:** [Mapknitter.org](http://mapknitter.org] **Description:** building on [2014 mapknitter annotations](https://publiclab.org/notes/justinmanley/03-18-2014/mapknitter-annotations-using-fabric-js-gsoc-2014-proposal) project to get it live and integrated into Mapknitter. Read more on the [state of development.](https://publiclab.org/tag/annotations). **List:** plots-dev@googlegroups.com **Prerequisites:** **Difficulty Level:** hard **Potential mentors:** Jeff Warren, Liz Barry ###Rich Profile Pages on PublicLab.org **Part of:** [PublicLab.org](/wiki/plots2) **Description:** A major build-out of profile pages on PublicLab.org. Implement profile tagging for geographic data, role, tools, skills, and barnstars -- all highly requested features by the Public Lab community! Including: * a table and Rails model for `profile_tags` * a form for tagging users on the https://publiclab.org/profile page (only to admins or the user themselves) * some features built upon these tags, such as that only user.role == "admin" or the user themselves may create them * user.has_tag(), .powertag(), and similar methods based on drupal_node's examples: https://github.com/publiclab/plots2/blob/master/app/models/drupal_node.rb#L235-L283 * a user map using tags like "lat:45.01" and "lon:-91.341" similar to this example: https://github.com/publiclab/plots2/blob/master/app/views/notes/tools_places.html.erb#L4-L15 (view live here: https://publiclab.org/places) * a form for inputting location tags on a profile using an autocomplete input, similar to https://mapknitter.org/maps/new (code here: https://github.com/publiclab/mapknitter/blob/master/app/views/map/_new.html.erb#L29-L84) **List:** plots-dev@googlegroups.com **Links:** * powertagging your profile for location, topics, and gear: https://github.com/publiclab/plots2/issues/104 * barnstars: https://github.com/publiclab/plots2/issues/167 * barnstars custom graphics (extra fun): https://github.com/publiclab/plots2/issues/265 **Prerequisites:** Ruby on Rails **Difficulty level:** hard **Potential mentors:** Bronwen Densmore, Jeff Warren, Liz Barry, Bryan Bonvallet. **** ###Search and sorting **Part of:** [PublicLab.org](/wiki/plots2) **Description:** There's so much going on in Public Lab.org that it can be hard to follow. Choose to implement this project and create much-needed tools for people trying to organize this open science and technology knowledge base. These features will also be used by Public Lab's community managers to help people develop their projects and connect to others. **List:** plots-dev@googlegroups.com **Links:** * add more types of sorting to https://publiclab.org/profiles (AKA https://publiclab.org/people) https://github.com/publiclab/plots2/issues/317 * implement tag sorting https://github.com/publiclab/plots2/issues/179 and tag optomization: https://github.com/publiclab/plots2/issues/99 * expand search to include profile content (for admin users): https://github.com/publiclab/plots2/issues/209, currently only accessible via datadumps: https://github.com/publiclab/plots2/issues/308 **Prerequisites:** Ruby on Rails **Difficulty level:** hard **Potential mentors:** Jeff Warren, Liz Barry, Bryan Bonvallet, Dan Henry **** ###Browser-based Arduino sensor data transfer using WebRTC and headphone jack **Description:** A way to read data off of sensors from a website, using only an audio cable, building on modem.js and SoftModem (see links). Dramatically eases connecting to a sensor using a laptop or smartphone directly from a web page, no software installation necessary. **List:** plots-dev@googlegroups.com **Links:** * https://github.com/dolske/modem.js * https://github.com/arms22/SoftModem (poor/no documentation) * Example hardware, notes, and software links: http://www.elechouse.com/elechouse/index.php?main_page=product_info&cPath=90_92&products_id=2199 * Discussion on using SoftModem in Arduino forums: http://forum.arduino.cc/index.php?topic=86351.0 * Another related tutorial: http://learn.linksprite.com/arduino/shields/softmodem-data-communication-a/ * discussion: https://groups.google.com/forum/#!searchin/plots-airquality/audio/plots-airquality/3b3Y2vrMsoI/xebM6kNBEgAJ **Prerequisites:** JavaScript, Arduino **Difficulty level:** medium/hard **Potential mentors:** Jeff Warren **** ###Distortable image ordering in MapKnitter **Part of:** [MapKnitter](/wiki/mapknitter), Leaflet.DistortableImage **Description:** Create simple methods for ordering images in Leaflet.DistortableImage, the heart of MapKnitter, and saving these asynchronously in MapKnitter. Modification of export system to accept an `order` parameter. This could also integrate disabling images from export using: https://github.com/publiclab/mapknitter/issues/36 **List:** plots-dev@googlegroups.com **Links:** * https://github.com/publiclab/mapknitter/issues/116 * https://github.com/publiclab/Leaflet.DistortableImage **Prerequisites:** Ruby on Rails, JavaScript/jQuery **Difficulty level:** medium **Potential mentors:** Diana Di Leonardo, Jeff Warren **** ###Queue-based MapKnitter export system **Part of:** [MapKnitter](/wiki/mapknitter) **Description:** De-couple MapKnitter main app from GDAL-based export queue to enable better scaling of exports and fewer interruptions of primary MapKnitter.org service during large exports. **List:** plots-dev@googlegroups.com **Links:** * https://github.com/publiclab/mapknitter/issues * https://github.com/publiclab/mapknitter/blob/master/app/models/map.rb#L200 * https://github.com/publiclab/mapknitter/blob/master/app/models/warpable.rb#L152 **Prerequisites:** Ruby on Rails, GDAL, asynchronous queue-based server architecture, Amazon S3 **Difficulty level:** medium **Potential mentors:** Jeff Warren, Bryan Bonvallet, Dan Henry **** ###Commenting on specific wavelengths in Spectral Workbench **Part of:** [Spectral Workbench](/wiki/spectral-workbench) **Description:** Enable comments on specific wavelengths which highlight those wavelengths in the displayed spectrum graph. **List:** plots-dev@googlegroups.com **Links:** https://github.com/publiclab/spectral-workbench/issues/45 **Prerequisites:** JavaScript, Ruby on Rails, possibly d3.js **Difficulty level:** easy **Potential mentors:** Jeff Warren **** ###Expanded Q&A system for PublicLab.org **Part of:** [PublicLab.org](/wiki/plots2) **Description:** This is a critical step for moving from a separated email and website structure towards clearly answered questions prominently featured as the knowledge base of Public Lab. This project features a posting form, styling for presentation, answering feature, more outreach display for recruiting, integration with Rich Profiles to feature helpful people, displays of common questions. **Longer story:** Currently, the same questions get asked again and again on the email forums, which is fine, but we think we can do a lot better. Often the questions are the same "getting started" questions that are commonly compiled into an FAQ, however, in our experience, static FAQs quickly expire as new developments outpace documentation. A "Stack Overflow" model would allow questions to be re-answered over time, while preserving links into the wikis and notes of PublicLab.org. Adding a Q&A layer over https://publiclab.org/research and https://publiclab.org/wiki would give a question-asker confidence that a particular bit of documentation answers a particular question they have. **List:** plots-dev@googlegroups.com **Links:** * Closest: https://github.com/publiclab/plots2/issues/162 * Stub wiki page: https://publiclab.org/wiki/q-a * more background: https://github.com/publiclab/plots2/issues/209 **Prerequisites:** Ruby on Rails, JavaScript/jQuery **Difficulty level:** easy **Potential mentors:** Liz, Dan Henry