Skip to content

Latest commit

 

History

History
117 lines (81 loc) · 6.49 KB

README.md

File metadata and controls

117 lines (81 loc) · 6.49 KB

pronoun.is is a website for personal pronoun usage examples

For users

You can use any pronouns you like simply by filling them into the url path. For example, https://pronoun.is/ze/zir/zir/zirs/zirself

That's pretty unwieldy! Fortunately you can also give it only the first pronoun or two: https://pronoun.is/she/her or https://pronoun.is/they

Automatically filling in the rest from only one or two forms only works for pronouns in the database. If the pronouns you or a friend uses aren't supported, please let us know and we'll add them. Alternatively you could add them yourself and submit a pull request (see the next section for details)

For developers

The database

The pronouns "database" is a tab-delimited file located in resources/pronouns.tab with fields and example values as follows:

subject object possessive-determiner possessive-pronoun reflexive
they them their theirs themselves

The top 6 pronouns are displayed on the front page. Please don't edit these without talking to me, they've been hand-curated based on usage frequency. Below the top 6, the remaining pronouns are sorted in alphabetical order by subject and then in roughly frequency order for sets that have the same subject pronoun. If you're adding a set that shares the same object pronoun as other set(s) already in the database, please insert it immediately below those ones.

If you edit the database with a text editor, make sure your editor inputs real tab characters in that file (a thing your editor might normally be configured not to do!) In Emacs, you can input real tabs by doing Ctrl+q . In Vi you can use Ctrl+v .

The code

The top-level logic for running the server lives in pronouns.web

Page rendering markup is in pronouns.pages, it uses hiccup for rendering HTML from Clojure datastructures.

pronouns.config is currently used only for loading the pronouns database

The unfortunately-named pronouns.util includes both actual utility functions used elsewhere in the code, but also what you might think of as "controllers" if you're used to the MVC model of web design - code that does the computations necessary for the pages (analogous to "views") to render themselves. We should probably break up util into (at least) two namespaces and be a little more deliberate about where everything currently in that namespace should live!

Tests

Run the suite with lein test

Test coverage is not great but getting better. Please run the tests and confirm that everything passes before merging changes, and please include tests with any new logic you introduce in a PR!

Goals for the future include setting up automated CI to run the tests for us on every PR branch

Running the app in a dev environment

First, install leiningen. Then you can launch the app on your own computer by running the following command:

$ lein ring server

This will launch a server running the app and open your default web browser to the index page. The server will automatically reload files as you edit them - with the unfortunate exception of pronouns.tab, which is loaded as a resource and requires an app restart to reload.

The git repo

For most of this project's history we had separate master and develop branches but that's proven to be more trouble than it's worth. Going forward we'll be doing all development in feature branches off of master, and PRs should be issued against master.

Please follow this guide for writing good commit messages :)

Philosophy on pronoun inclusion

Pronoun.is aims foremost and exclusively to be a useful resource for people to communicate the personal pronoun they use for themselves.

It is possible to use these example sentences to demonstrate the usage of words that are not personal pronouns, or even cleverly insert an entire story! However, as a policy we will not include such entries in the database.

License

Copyright © 2014-2018 Morgan Astra m@morganastra.me

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see https://www.gnu.org/licenses/