First Tasks

Hello! This page exists to provide you with good, small tasks as you get started contributing to open source projects. If you're reading this, you're probably from Princeton. Welcome! When you pick a task to start on, write down that you're doing so here. That way, people know who else is working on which tasks, and you can work together if you like.

Every project on this page has:
 * Clear instructions for how to contribute to their project, including setting up a development environment, contributing changes, and how to contact them.
 * At least one hand-picked task that (hopefully!) can be completed within an hour or two.
 * At least one maintainer/contributor who's really excited about welcoming you to their project.

To add a project, see the template at the bottom of the page.

= Open Science Collaboration blog =

Description: The Open Science Collaboration is "a loose network of researchers, professionals, citizen scientists, and others with an interest in open science, metascience, and good scientific practices." They keep a weekly blog to publish opinions and stimulate discussion. Most members of the OSC are not technical, so they could use some help adding features and fixing bugs with the software that runs their blog. The OSC blog is built using Pelican, a static-site generator built with Python. Most files in the project are Python, Markdown, or HTML/CSS files.

Resources:
 * The blog itself is here.
 * Overview and instructions for setting up the development environment and contributing changes can be found in the repository's main readme.
 * Main contact: Shauna (shauna on Freenode; shaunagm at gmail dot com); back-up contacts: Sheila (skay on Freenode); and the general mailing list (mostly not used for technical development)
 * If you run into issues with any of the tasks, please update them in the issue tracker! If you encounter new issues with the project - incomplete or confusing documentation, some other kind of bug - please feel free to make new issues in the issue tracker.

Tasks:
 * Add "Read more" functionality: Project members want the ability to shorten long posts using a "read more" link.  Add the pelican plug-in (linked on the issue) to the blog.  Make sure that the plug-in works, and add documentation to the main README showing how post editors should reference the plug-in in posts.
 * Sharing buttons for articles: Add buttons to allow readers to easily share articles across social media platforms.
 * Fix whitespace css issue: Currently all images on the blog have extra whitespace added via css.  Create a special class for "author avatars" with the appropriate amount of padding, and return the plain image class to having no padding.

= Open States =

Description: We gather legislative data from all 50 states, Washington D.C. and Puerto Rico, and then make it available in a common format via our API and bulk downloads. When states don't have clean data for us, we resort to scrapers, which are mostly written in Python. You can help us open up state legislatures!

Resources:
 * OpenStates itself is here.
 * Main contact: paultag (paultag on Freenode and OFTC; paultag at gmail dot com)
 * There are instructions for setting up the development environment here but they are not great. Please feel free to ask paultag or any other mentor about problems that arise. Here are some possible hurdles you might have:
 * These instructions are written for GNU/Linux and work on OSX fairly well, but have not been thoroughly tested on Windows. People using Windows might find themselves working mostly on improving the documentation for Windows developers.  Fair warning!  :)
 * When setting up your environment (see "SETTING UP YOUR ENVIRONMENT" in the setup instructions) before doing  do.
 * You will likely hit at least a few roadblocks when setting up the development environment, especially around installing dependencies. You can work with paultag and with other mentors to get over these hurdles.  To help OpenStates develop better documentation, record the problem and eventual solution on this etherpad.  You can also check this etherpad when you come across an error, to see if the solution is there.

Tasks:


 * Clean up scraped contact information: A legislator has unsightly Javascript on her page.


 * Missing scrapers:
 * Look to see if any Legislatures in the 50+2 states have events (committee hearings, etc) listed on their site, but no Events scraper. To do this:
 * Go to the openstates website for a particular state, for example North Dakota. Check to see whether event information is already being captured.  If it isn't:
 * Scroll down to the bottom of the openstates state site to where it says "Sources" and find the official website. Browse through and see if they're providing event information.  If they are:
 * Verify that there is no in-progress scraper by looking in source code. To do this, browse the repository locally or on github by going into, for example, openstates/nd/ and looking for a script called.
 * If there is in fact a missing scraper, create an issue for it in our issue tracker. Make sure to include a link to where on the official website the information to be scraped is hosted.
 * Additionally, you can write these missing scrapers. That would be a massive help!  You can find info on how to write scrapers here but it's hard to read, so you'll want to ping paultag for help.
 * If you do write a scraper, it would be helpful to keep notes on the steps you take to do so. This could be turned into a tutorial and added to the documentation.  See the list of documentation issues below.


 * Broken scrapers:
 * PAULTAG - each of these broken scrapers needs info on how someone trying to fix the problem would reproduce it (for instance, for Wisconsin, when does one get that error?). The answer might be the same for most of them (ie go to the directory containing the scraper and run it) but it needs to be spelled out.  Once you give me that, I can make issues for all of these.
 * Wisconsin looks to have a minor issue with scraping bills (`UnboundLocalError: local variable 'last_subject' referenced before assignment`)
 * Arkansas looks to have an issue with picking up non-absolute URLs. Might need one call to an LXML object to fix.
 * Arizona looks to be breaking on committee scrapes
 * Vermont (ditto)
 * Missouri needs to be checked for a new session (and if the scrape works after updating __init__.py)
 * Maryland (ditto)
 * Virginia (ditto)
 * South Dakota may or may not need to be rewritten, need to find out if it's still working and the session list just changed, or if the session list changed due to a site change.
 * Documentation:
 * As we mentioned above, the documentation for contributing to this project assumes a certain level of knowledge and is written primarily for GNU/Linux and OSX users. If you find the documentation confusing, you can:
 * Create an issue in the issue tracker. For instance, as you can see below, an issue has been made suggesting that a line about running virtualenv be added to the documentation.
 * Make changes to the documentation, which can be found in  (on Github).
 * Documentation issues:
 * [make and link to virtualenv documentation issue]
 * [make and link to a write-a-scraper tutorial documentation issue] - make sure to reference the "missing scrapers" section above

= WCWeekly =

Description: This project is an attempt to make a digital archive of a radical feminist newspaper published in the 1870s. The project currently involves no programming, but one potential feature is to build a tool (probably a web page) for browsing/searching through digitized scans.

Resources:
 * The project overview and instructions for contributing can be found in the README on the top level of the Github repository.
 * Issues can be found in the Github repository issue tracker.
 * Contact info: the maintainer of this project is Shauna (shauna on Freenode, shaunagm at gmail dot com).

Tasks:

= Dreamwidth =

Description: Please describe your project here. Make sure to mention the overall goal of your project as well as mentioning the main technologies it uses. People using this page may be doing searches for keywords such as topics, types of software, or language names, so make sure they can find your project!

Resources:
 * Project Overview
 * Setting up the development environment
 * Contributing changes
 * Contact info

Tasks:

= TEMPLATE: NAME =

Description: Please describe your project here. Make sure to mention the overall goal of your project as well as mentioning the main technologies it uses. People using this page may be doing searches for keywords such as topics, types of software, or language names, so make sure they can find your project!

Resources:
 * Project Overview
 * Setting up the development environment
 * Contributing changes
 * Contact info

Tasks: