Public Lab Wiki documentation



GSoC ideas

This is a revision from May 31, 2016 15:31. View all revisions
31 | 221 | | #868

This is the ideas page for Public Lab's Google Summer of Code program.

Our main repositories can be found on our Github organization page, but a clearer listing with descriptions is on our main developers page

Important -- to learn how to contribute to Public Lab software, see our Contributing to Public Lab software page

Who to contact

Generally, with programming related topics, reach out on plots-dev - the Public Lab developers discussion list shown in the left sidebar.

For active Google Summer Code projects, use plots-gsoc - the GSoC discussion list.

For chatting and real-time meetings, use the Gitter chat room or type directly in here (if you have already authenticated on another page):


Contribution guidelines

Our 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, Spectral Workbench, or MapKnitter, 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.


Accepted proposals list

Rich Profile Pages on PublicLab.org

By: Lalith

Link to accepted proposal: https://publiclab.org/notes/Lalithr95/03-23-2016/rich-profile-tags-and-improving-the-performance-of-publiclab-org

Part of: PublicLab.org

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:

List: plots-dev@googlegroups.com

Links:

Prerequisites: Ruby on Rails

Difficulty level: hard

Potential mentors: Bronwen Densmore, Jeff Warren, Liz Barry, Bryan Bonvallet.


Search and sorting

Part of: PublicLab.org

Description: This project is to develop searching and sorting tools to help organize Public Lab's open science and technology knowledge base. These features will also be used by community managers to help people develop their projects and connect to others. Longer story: The search box is located in the top bar and at this URL: https://publiclab.org/search/. It does not search through the content on profile pages, which is the primary place that people communicate their research interests when they first join the site. Tags are hugely important to knowledge organization on the site: tags create relationships between pages by linking bodies of research, and powertags add hierarchy (parenting), trigger inclusion on metapages like /places, or change graphic styling as in /blog, and much more. The top level tag page needs the ability to sort alphabetically and by frequency of use. Tag sorting will also be a big help for moderating inappropriate content in terms of streamlining batch tag deletion. Currently even when spam is removed, any spam tags used remain in autosuggest which means users are shown offensive words nearly every time they begin typing to add a tag to a page or post. Sorting will also be useful on https://publiclab.org/people.

List: plots-dev@googlegroups.com

Links:

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

**By: Richard

Link to accepted proposal: https://publiclab.org/notes/rmeister/03-24-2016/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.

If you can, as a first step, see if you can connect a SoftModem-enabled arduino to a speaker and read the data into the modem.js demo.

List: plots-dev@googlegroups.com - Main discussion thread here

Update: it seems that modem.js and SoftModem use different encodings, and there is discussion about using or modifying Firmata as the protocol. Read more here

Links:

Prerequisites: JavaScript, Arduino

Difficulty level: medium/hard

Potential mentors: Jeff Warren


Expanded Q&A system for PublicLab.org

**By: Ananyo

Link to accepted proposal: https://publiclab.org/notes/ananyo2012/03-25-2016/expanded-q-a-system-for-publiclab-org

Part of: PublicLab.org

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 as things stand now, the same questions get asked again and again on the email forums, which is totally fine but we think we can do a little 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 publiclab.org/research and publiclab.org/wiki would give a question-asker confidence that a particular bit of documentation answers a particular question they have.

More on implementation

One resource for Q&A is to look at existing questions, even if the prototype system we have is very crudely made. https://publiclab.org/tag/question:* will show you all questions currently asked, and any tag page, for example, https://publiclab.org/tag/balloon-mapping will show the "Ask a question" button and current minimal interface.

Currently, questions are implemented as DrupalNodes with tags marking them as a question:foo on topic foo. We think this is fine, as the tagging system is robust, user-moddable without code, and quite flexible. This probably means that Questions don't need their own model, unless it simply inherits from DrupalNode but uses the same db table.

Informally, some questions are tagged answered once they're answered, but currently that doesn't do anything extra -- but it could be used to mark a question as answered, or a tag like answered:<cid> with the comment id could be used to indicate which question caused the answer, or perhaps answered:<uid> for who answered it.

If a student takes on the "Search/sorting" project, the Sunspot integration may be something they do, and you'd have to work with them on integration with your module. Establishing an API around the current search methods, perhaps with a Search model, would be a good way to compartmentalize this work, and some simple automated unit tests of the Search model would ensure that the other student's work would have to meet basic functionality before it was pulled in.

Other things that could be great add-ons for this project are some better way to alert subscribers who've signed up to answer questions on a topic, as currently we rely on the posted questions being well tagged at publication time. But if they aren't (and question askers may not be familiar with our tagging, so they may not be), there's no additional trigger for tags added later to trigger notifications. Perhaps some way to scan the question body could trigger this.

A way to view how many questions people have answered is also interesting, as it may incentivize people to answer lots of questions in order to gain some kind of visible "reputation". Considering how "helpful" people are, and how that's displayed on the site, is also an exciting direction.

List: plots-dev@googlegroups.com

Links:

Prerequisites: Ruby on Rails, JavaScript/jQuery

Difficulty level: easy

Potential mentors: Liz, Dan Henry


Internationalize publiclab.org

By: Jitesh

Link to accepted proposal: https://publiclab.org/notes/jiteshxyz/03-20-2016/internationalization-of-publiclab-org

Part of: PublicLab.org

Description: Internationalizing the plots2 codebase is the step required so that publiclab.org can be translated into other languages. Longer story: Internationalization is the process of designing a software application so that it can potentially be adapted to various languages and regions without engineering changes. Localization is the process of adapting internationalized software for a specific region or language by adding locale-specific components and translating text. Localization (which is performed multiple times, for different locales) uses the infrastructure or flexibility provided by internationalization (which is ideally performed only once, or as an integral part of ongoing development). So far, all we have is that you can tag a post or wiki with "lang:es" for spanish, you can see all content in Spanish by going to https://publiclab.org/tag/lang:es . You could do the same with any language code, like "lang:fr". We have also made sure all character sets work in page content, although are not sure about titles, due to URL generation. What would success look like for this project? Once internationalization is in place, people can localize the footer, header, sidebars, menus, posting forms, etc. A related project is to figure out which crowdtranslation platform would be good -- it would be simplest for the existing publiclab community to use github to track changes and versions, however, there are existing really successful platforms for translation especially in Chinese for video content. Finally, we would be able to have subdomains for each language like es.publiclab.org (for espanol) etc.

List: plots-dev@googlegroups.com

Links:

Prerequisites: Ruby on Rails

Difficulty level: easy to tackle the header and footer, but beyond that possibly hard because it would eventually touch almost every part of the template code.

Mentor: Liz Barry



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) and installed it on a test server. 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 describing your proposal in detail. Tag it gsoc and gsoc-2016. Here is the template we used last year.

Post a proposal here -- and view proposals posted so far


Other ideas list

Here are other project ideas we're interested in; however, we are also interested in any major feature request listed in our top project repository issue trackers, at Spectral Workbench, PublicLab.org, or MapKnitter -- so contact the plots-dev list (see above) if anything there interests you!

Mapknitter Annotations

Part of: Mapknitter.org

Description: building on 2014 mapknitter annotations project to get it live and integrated into Mapknitter. Read more on the state of development..

List: plots-dev@googlegroups.com

Prerequisites:

Difficulty Level: hard

Potential mentors: Jeff Warren, Liz Barry


Distortable image ordering in MapKnitter

Part of: MapKnitter, Leaflet.DistortableImage

Description: This project is for a long requested feature on our most popular websoftware -- being able to choose which image shows up on top of your map! Tackling this would be a huge contribution to community cartography. Currently, images are automatically ordered by their geographic extent: bigger images end up on the bottom, little images on top, with no way for the mapmaker to manually reorder them. Longer story: 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.

List: plots-dev@googlegroups.com

Links:

Prerequisites: Ruby on Rails, JavaScript/jQuery

Difficulty level: medium

Potential mentors: Diana Di Leonardo, Jeff Warren


Queue-based MapKnitter export system

Part of: 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:

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

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