Skip to content

wikitongues/poly

Repository files navigation

Poly

Poly

Poly is open source, modern software to share and learn every language in the world.

Poly streamlines the process of creating and sharing dictionaries between any two languages. Speakers of languages without a written standard, including the world's more than 200 sign languages, are supported by native video functionality.

Table of Contents

  1. Background
  2. About Wikitongues
  3. Set-up
  4. Pre-requisites
  5. Install
  6. Run
  7. Test 1. Staging and Production 1. Continuous Integration 1. Browser testing
  8. Usage
  9. Feature map
  10. Security
  11. Maintainers
  12. Contribute
  13. Request features
  14. PRs are accepted
  15. Best practices
  16. Code of conduct
  17. License

Background

Poly was conceived in response to a New York Times article that identified one of the last living speakers of her native language Wukchumni manually composing documentation using pen, paper and a voice recorder. Through years of dedication, Marie Wilcox produced an exhaustive dictionary of her mother language, with supplemental recordings, to be used by future generations in their revitalization efforts.

Marie's reality is not unique, and over 5% of the languages spoken in the world today are expected to have fewer than 100 speakers. We at Wikitongues resolved to provide tools to facilitate the experience of documentation.

Initial development on Poly was made possible by record-breaking a Kickstarter campaign. Thank you very much to all our backers.

In the next eighty years, 3,000 languages are expected to disappear. We won't let that happen.

Wikitongues

Wikitongues is a platform for every language in the world. We publish oral histories and dictionaries in all of the world's 7,000 languages and develop open source technology for cultural exchange.

The Oral Histories project lives on YouTube.

Set-up

Poly is written in Ruby on Rails and React.js, and uses RecordRTC for video recording. It uses a PostgreSQL database, is deployed to Heroku and uses Amazon S3 as CDN. RecordRTC relies on NPM, which in turn requires Browserify.

To install and set up this application locally, follow the steps below. For any specific questions, please email us at poly@wikitongues.org.

Pre-requisites

You will need the following things properly installed on your computer:

Install

  1. Clone or fork this repository:
git clone https://github.com/wikitongues/poly.git
  1. Change into the new directory.
  2. Install all dependencies:
bundle install && npm install
  1. Create a Postgres database:
rake db:setup

Run

To start the application locally, run:

rails server

Then, visit the app at http://localhost:3000.

Test

Testing is implemented with RSpec, FactoryGirl, shouldamatchers and simplecov.

To run tests:

rspec

Staging and Production

Poly has both a Staging server and the live production server.

Continuous Integration

Poly uses Continuous integration as provided by CircleCI.com. Right out of the box, it provides automated testing and automatically deploys merged changes to the staging server.

Browser Testing

We're proud to do our live, web-based browser testing together with the awesome people at BrowserStack.

BrowserStack gives you instant access to all real mobile and desktop browsers. Say goodbye to your lab of devices and virtual machines. Go check them out!

Usage

The app is intended to be used via the UI by any person with access to a modern browser. As of February 21st, 2017, anyone will be able to create an account and start creating content.

Video Demo

Live App

Feature Map

We use semantic versioning.

For an overview of planned features and future releases, refer to ROADMAP.md.

Security

The app requires a number of secret keys to function correctly. Features that will not work locally without keys:

  • Password reset
  • Video recording

Maintainers

Freddie Andrade
Chris Voxland

Core contributors

Ben Arias
Amr Adel
Scott Rohrer

Contribute

We are actively looking for help developing Poly. If you're interested in getting involved, be sure to let us know!

Request features

Feature requests may be made by opening new issues and labeling them enhancements.

Note on requesting features:

Before making a new request, please review our roadmap and issues list to avoid duplicates. If a feature is already described, please feel free to add your support in the comments!

PRs are accepted.

Make pull requests to have your contributions reviewed and deployed by the maintainers, or contact us directly by email at poly@wikitongues.org.

Best Practices

Refer to the Github Contribution guide or the more comprehensive Open-Source Contribution Guide for best practices in contributing to open source projects.

Code of Conduct

All contributors will be held accountable to the Contributor Covenant.

TLDR: be nice. But go read it anyway.

License

Poly uses the GNU General Purpose License v3.

Read the license in detail here.