First Tasks

Hello! This page exists to provide you with good, small tasks as you get started contributing to open source projects.

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.

If you don't find any tasks you'd like here, try these additional sources:


 * This page has curated tasks from previous events, but there are no maintainers for these projects at the event. That said, other mentors will probably be able to help you.
 * Search 700+ open source projects at once
 * Find a project that fits your interests using this guide.

You can see past first tasks, which have been successfully resolved, here.

This page was last curated 11/24/2013. Tasks on this page may have been resolved since then, so check their status in their respective issue trackers.

= Dreamwidth =

Dreamwidth Studios is an Open Source social networking, content management, and personal publishing platform. We're primarily a Perl shop, though there are places where CSS, javascript, and other languages are used.

Resources:
 * Project Overview
 * Developer getting started guide
 * Contributing changes -- look for "Bugzilla workflow" and "version control" in the Developer getting started guide
 * Contact: MissKat on #openhatch or #dreamwidth-dev

Tasks:
 * http://bugs.dwscoalition.org/show_bug.cgi?id=5099 -- talk to MissKat about what TABLE-related tags are allowed in anonymous comments, and write plain English so site visitors can see that in the frequently asked questions list
 * http://bugs.dwscoalition.org/show_bug.cgi?id=3359 -- this either requires reading gnarly Perl code, or testing a bunch of HTML expressions to find out what is and isn't allowed.
 * http://www.dreamwidth.org/support/faqbrowse?faqid=260&q=markdown&lang= -- could use a few examples of how to use !markdown. These should be tested both in comments and in entries to make sure they actually work.

Notes:
 * Dreamwidth offers free hosted developing sandboxes called Dreamhacks. If you're interested in digging a little deeper into some actual code, let MissKat know and she'll put you in contact with the person who handles that. You need a Github account set up already to do this.
 * One thing you'll need to do to get a dreamwidth account, that you can get started with, is to fork (just fork - you don't need to clone) two repositories: dw-free and dw-nonfree.

= OpenHatch =

Description: OpenHatch.org sees itself as "free software's welcoming committee." We make web tools and run events to help people join open source projects, primarily in Python and Django with some Javascript, CSS, and HTML. We're always looking for enthusiastic new people willing to file bugs, submit patches, ask questions, write documentation, and review code. To help you imagine the site, the volunteer opportunity finder helps people find "easy" bugs to work on in projects all over the web, and supporting code to download that data through API use and scraping; the profile tool helps people write about their experience contributing to open source; and the training missions are interactive, plot-based teaching tools to help people learn skills required in open source in a friendly setting.

Resources:
 * Project Overview
 * Setting up the development environment
 * Contributing changes
 * Contact info: paulproteus (aka, Asheesh) on #openhatch ; also, see community page in the documentation
 * Code: https://github.com/openhatch/oh-mainline

Tasks:

Each of these is a bug that you should fix on your computer, and when you are satisfied with the fix, create a pull request for.


 * No easy tasks at the moment.

Harder tasks:


 * https://openhatch.org/bugs/issue879 -- Get creative about changing the way searching for people works on the site (either fix a HTTPS related problem, or rewrite the interface; much more info on the bug)


 * https://openhatch.org/bugs/issue898

= 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. The issue tracker 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   and  . If you use   (which is strongly recommended on GNU/Linux (since it's easy to install), restart your terminal and do , and   when you want to start working on OpenStates)
 * 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:


 * 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:
 * To reproduce the problems in the issues, you'll need to follow the contributor guide above to set up OpenStates and Billy. (Don't forget there is an etherpad + a paultag for working through problems with installing.) After it's installed, you can invoke "billy" (get it, it scrapes bills!) by going to typing:  (where   is the state you want to scrape).  You can also just scrape with a single scraper (so, for instance, to scrape legislators without scraping bills) by passing the related flag -   for legislators,   for bills,   for events, and so on.
 * Tasks:
 * Wisconsin looks to have a minor issue with scraping bills
 * 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 looks to be breaking on committee scrapes
 * Missouri needs to be checked for a new session (and if the scrape works after updating __init__.py)
 * Maryland needs to be checked for a new session (and if the scrape works after updating __init__.py)
 * Virginia needs to be checked for a new session (and if the scrape works after updating __init__.py)
 * 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:
 * Add virtualenv instructions to contributor guide
 * Create newcomer tutorial for how to create a scraper

= 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:
 * Transcribe issues or excerpts from the magazine. See the README for information on how to do this.
 * Update formatting of old transcriptions - there are approximately 7 old transcriptions that need their formatting updated. See the issue for details.
 * Find sources for transcriptions - Look online and off for sources of transcriptions, and evaluate their reliability/legality.
 * Design/build a way to view materials - Create a simple interface to allow readers to browse through transcriptions and source material.

= 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: