New Zealand Sign Language (NZSL) is an official language of Aotearoa New Zealand. Like Te Reo Māori, it is important to foster understanding and use of the language in order to be an inclusive society. Victoria University of Wellington's Deaf Studies Research Unit (DSRU) produced the first paper based dictionary of NZSL 1997. An updated online dictionary website launched in 2011. The online dictionary contains over 5000 signs with equivalents in both English and Te Reo Māori with image and video references showing how a sign is produced and example videos showing how the sign is used in context. The online dictionary can be searched by the English or Te Reo Māori word, or by sign features, such as hand shape and location.
In 2013 Ackama took over responsibility for the website and both the iOS and Android apps, which were originally built by an independent developer. As well as maintenance and open sourcing, both the website and the apps required considerable updating and redesign. We worked closely with the language experts at DSRU and with other developers including Dave Moskovitz, the creator of the ‘Freelex’ database that originally provided the back-end for the website, and Greg Hewgill, the developer of the original mobile app. Although much of this work was funded through grants obtained by the DSRU from the NZSL Fund and other sources, Ackama has also sponsored and funded time on the project and Ackama staff have also volunteered their own investment time to contribute to the project.
Together with the DSRU, Ackama went on a journey from using open source technology for reasons of price and flexibility to building an entirely open source ecosystem whereby the website, apps, data and scripts are all open source technical components which work together to provide the NZSL dictionary. The community has access to all of these components and can improve upon them or add new features. By open sourcing the NZSL dictionary we encourage the wider community to be involved in making NZSL more accessible. We are also enabling international reuse of the codebase for other countries to have a technical head start in creating their own online sign language dictionary.
In May 2018 the NZSL Android app got up to the number 6 ranking in the worldwide category “Top Free in Books and Reference” apps on Google Play.
New Zealand Sign Language Dictionary consists of 2 major units
- Ruby on Rails Website (this repo)
- Mobile apps (transfer of ownership currently in motion)
As of May 2020 this app supports:
- IE10
- Last two versions of evergreen browsers
IE 10 support is currently important for some sections of our user-base.
Please read the accompanying CONTRIBUTING.md (in progress) before you follow the setup steps.
Fork the base repo ODNZSL repo, so you have a copy then clone your fork.
$ git clone <your fork>
$ cp env-example .env
$ bin/setup
$ bundle exec rails server
A suggestion is to create a local main
branch that acts as your local main. Then branch from your main branch when resolving issues or adding features.
- Create your feature branch. For example
Bugfix/Back-to-search-results
- Make changes
- Commit your changes
- Push to your remote branch. For example
git push origin <your feature branch>
- Ensure all changes to existing functionality and additions of new functionality have tests
- Create a new pull request to the ODNZSL
main
branch. - If you are not sure on any of the steps please do not hesitate to ask.
If you have run bin/setup
, then you will have the latest release of the
published dictionary data. If you have not run bin/setup
, or you have, but
wish to make sure you are using the latest published data, you can run bundle exec rake dictionary:update
anytime to update your local database.
Note that the dictionary SQLite file is gitignored to avoid growing the repository size unnecesarily.
# Ruby specs
$ bundle exec rspec
# ruby static analysis
brakeman --run-all-checks --exit-on-warn --format plain .
# Javascript linter
yarn run eslint
# Ruby dependency security vulnerability check
bundle exec bundle-audit check --update
# Ruby linter
bundle exec rubocop --display-cop-names
# ... or run all lints and specs sequentially
$ ./bin/run-ci-checks
- The design should follow brand guidelines (Link TBA)
- The design must follow accessibility guidelines
- Must follow the sign off process
- Choose a story from the backlog
- Get any other information you might need from the product owner
- Create your design
- Present to product owner and iterate depending on feedback
- Once the product owner is happy with the design and signs off on it, then it can go to the development team.
- The Ackama team uses Sketch app to create their designs. We recommend using Sketch when working on this project. Sketch
Functionality over Form
Because of the visual nature of NZSL, it is important that the videos take centre stage and are not obscured by playback controls or watermarks.
NZSL has taken ownership of the project at their ODNZSL repo, but is administrated by Ackama.
Open source contributors pull requests should be to the ODNZSL main
branch and ideally up to date with main
Deployments are done by Ackama, who will attempt to do so in a timely manner, but does depend on their availability - critical changes like security patches will receive priority.
To deploy to production: merge ODNZSL main
to ODNZSL production
.
Current servers (2017-12-15)
Environment | URL | Git Branch | Status |
---|---|---|---|
ODNZSL Staging | http://nzsl-staging.herokuapp.com/ | main | staging |
ODNZSL Production | http://nzsl.herokuapp.com/ | production | live |
- Ruby on Rails - web framework
- Bundler - dependency management
- Rspec - Ruby testing framework
- JQuery- frontend javascript library
- HAML - frontend templating
- Foundation - responsive front-end frameworks
- SCSS - CSS extension language
- BEM - Block, Element, Modifier methodology
- videojs
This project is licensed under the GNU License - see the GNU General Public License for details.
# Step 1: precompile assets
$ DEVISE_SECRET_KEY=blah RAILS_FORCE_SSL=false RAILS_ENV=production RAILS_LOG_TO_STDOUT=true RAILS_SERVE_STATIC_FILES=true bundle exec rails assets:precompile
# Step 2: Run server (note you need **all** these flags to run production locally)
$ DEVISE_SECRET_KEY=blah RAILS_FORCE_SSL=false RAILS_ENV=production RAILS_LOG_TO_STDOUT=true RAILS_SERVE_STATIC_FILES=true bundle exec rails server
# Step 3: Delete pre-compiled assets before you go back to normal development
$ DEVISE_SECRET_KEY=blah RAILS_FORCE_SSL=false RAILS_ENV=production RAILS_LOG_TO_STDOUT=true RAILS_SERVE_STATIC_FILES=true bundle exec rails assets:clobber