pronoun.is is a website for personal pronoun usage examples
Table of Contents
- pronoun.is
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
You can also specify multiple pronoun sets with ?or= or /:or.
Example of both styles:
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)
There are several ways to run pronoun.is yourself:
- Recommended: Use podman or docker: e.g.
podman build -t witch-house/pronouns . - This repository has a
Procfilefor use with Heroku - Finally, you can create an uberjar (
lein uberjar), set thePORTenvironment variable, and run it using Java:java -jar target/pronouns-standalone.jar.
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 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!
Run the suite with lein test :all.
You can also do lein test :unit to skip e2e tests, however the e2e tests
only add about 4 seconds of run time and can be quite informative.
Test coverage is not 100% but getting pretty good. 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!
You can use lein preflight to run everything the CI pipeline does in one
go on the CLI. Do this before opening a PR.
First, install leiningen. Then you can launch the app on your own computer by running the following command:
$ PORT=3000 lein run
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.
All PRs should be issued against main.
Please follow this guide for writing good commit messages :)
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.
We consider the pronoun database to be essentially complete. If you believe that a set of personal pronouns meeting the guidelines above is missing and should be included, please reach out to me to discuss before opening a PR.
I'd love to see pronoun.is-like apps exist in the world for other languages. I'll answer any questions you need answered if you decide to fork the code to create a similar site for a different language, and I'll also entertain the idea of patching the pronoun.is codebase to support rending pages in different languages as long as it doesn't make the code substantially more complicated.
Even if we add I18N support to the code, other language versions of the site should have their own domains names (ideally with clever TLD puns like pronoun.is has for english!)
(This was discussed in issues #13, #14, and #66)
Probably not, sorry, I really like these ones! Maybe in the future we can add multiple different example sentence sets, though.
The short answer is, this is very hard! I'd love to have them if someone can come up with a design for how to do this that'd work (including the logistics of hosting media files and stuff).
(This was discussed in issues #43 and #80)
All of the ways I can think of to do this are pretty ugly (both visually and in the code) so I'm pretty reluctant to do it. That's not an absolute no, but any proposed solution would need to keep the pronouns database simple enough that non-programmers can edit it and keep the URLs short, pretty, and readable to humans as a sentence if you take all the punctuation out.
Copyright © 2014-2026 Morgan Astra morganastra@proton.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/