Coder Social home page Coder Social logo

pronoun.is's Introduction

pronoun.is

pronoun.is is a website for personal pronoun usage examples

Table of Contents

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.

FAQ

Can we translate pronoun.is into another language?

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)

Can we change the example sentences?

Probably not, sorry, I really like these ones! Maybe in the future we can add multiple different example sentence sets, though.

Can we add pronunciation guides?

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)

Can we add pluralization support (i.e. themself vs themselves)

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.

License

Copyright © 2014-2018 Morgan Astra [email protected]

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/

pronoun.is's People

Contributors

aliengeo avatar ardnaxelarak avatar cassiepeele avatar claiire avatar dariaphoebe avatar fco avatar finitud avatar garbados avatar jackwillis avatar jculpon avatar lynn avatar matschaffer avatar melindrea avatar morganastra avatar non avatar nononoagh avatar ticky avatar zzyzx-wolfe avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pronoun.is's Issues

JSON API

Basically, something along the lines of having (e.g.) http://pronoun.is/tpronouns.json?pronouns=they/them returning either:

{
  "subject-pronoun": "they",
  "object-pronoun": "them",
  "possessive-determiner": "their",
  "possessive-pronoun": "theirs",
  "reflexive": "themself"
}

Or:

["they", "them", "their", "theirs", "themself"]

Add info about specifying custom pronoun set to front + error pages

A few people in the #botALLY Slack pointed out that it's hard to discover the way to specify a custom pronoun set by providing an extended URL, because neither the front page nor the "pronouns not found" error page describes how to do this.

Hopefully I can get around to throwing together a pull request for this pretty soon.

Add :random and :any endpoints

What if one doesn't care about what pronouns other use to refer to them, and wants to make their choice explicit? E.g. "refer to me however you want, use whatever pronouns you want, it's all fine with me"? I might be wrong, but it seems pretty logical for me.

Currently, such people are left without much options: either they link to pronoun.is and explicitly say that they prefer some specific pronouns over others (which they don't); or they don't link to pronoun.is, and everyone else assumes they have some preferred pronoun and just didn't make their choice explicit and public.

Would it make sense to create e.g. http://pronoun.is/any, with text akin to the one below?

One who directed you there does not have strong preferences for any specific pronouns.
Here are some example sentences for such people:
They went to the park.
I went with her.
Ze brought zir frisbee.
At least I think it was his.

Rainbow Declensions!

Each pronoun declension should be assigned a distinctive color, and those colors should be used consistently in the example blocks and anywhere else on the site.

We won't know what the colors are supposed to be until we do the UI redesign/cleanup, but I'll accept a PR that adds support for this and just sets all the colors to ones that look nice-enough with the current color scheme.

Multiple pronouns

I'd appreciate being able to specify several alternatives for pronouns, and I imagine others would as well. I'm happy to make a pull request for this, just wanted to get feedback on some different options for the URL before jumping in!

Some possibilities I thought of:

pronoun.is/either?ze/zem,they
pronoun.is/either/they/she
pronoun.is?any_of=he,ze/hir

pronoun.is allows duplicate or's

Currently right now when you request for pronouns you can duplicate your request.

Example:
http://pronoun.is/he/?or=he&or=he
he/he/he

http://pronoun.is/he/?or=he&or=ze
he/he/ze

I believe this is where the issue lies: pronoun.is/src/pronouns/pages.clj with the following code where it's allowing this maybe? I think:

(defn pronouns [params]
  (let [path (params :*)
        alts (or (params "or") [])
        pronouns (concat [path] (u/vec-coerce alts))
        pronoun-declensions (filter some? (map #(lookup-pronouns
                                                 (escape-html %))
                                               pronouns))]
    (if (seq pronoun-declensions)
      (format-pronoun-examples pronoun-declensions)
      (not-found))))

I haven't done clojure before so I'm unsure if this would be the fix for that or not:

alts (distinct (params "or") [])
;; or
alts (or (distinct (params "or") []))
;; or something else?

I'd be happy to make a pull request if that's the fix! Either way I think this project is really cute and it makes me happy to see on Twitter a lot. Thank you so much for doing this.

let "them" folks concisely choose "themself" vs "themselves"

I think "themself" is more popular for gender-neutral people. People who describe themselves as plural[1] often are "themselves".

Right now, "themself" users can write https://pronoun.is/they/them/their/theirs/themself while "themselves" users can write https://pronoun.is/they . We (some friends I'm talking to) would like to write https://pronoun.is/they/themself or https://pronoun.is/they/themselves to specify which. (not sure which default is best).

I guess the way to do this is add a "they them their theirs themself" line in https://github.com/witch-house/pronoun.is/blob/master/resources/pronouns.tab and then edit the Clojure code to search in more ways for matching pronoun sets?

This may or may not interact with #38 . probably not.

[1] in case you're not familiar, this sort of thing http://healthymultiplicity.com/

Add integration tests

at minimum tests should cover:

  • page for a single pronoun (e.g. pronoun.is/they)
  • page for a pronoun with one and two alternates (e.g. pronoun.is/they?or=she and pronoun.is/they?or=she&or=ze)
  • page for properly described non-database pronouns (e.g. pronoun.is/a/b/c/d/e)
  • error page for improperly described non-database pronouns (e.g. pronoun.is/a/b)
  • front page showing proper list of pronouns
  • junk paths and query parameters give a reasonable error, not an info-free 503

Show pronunciation of pronouns

As it is currently:

Xey went to the park.

How is that word pronounced? Is it pronounced eck-say? zay? I don't know.

What would be nice:

She (SHEE) went to the park.

OR:

[... the current examples ...]

How to pronounce my he/him pronouns:

he - HEE
him - HIHM

IPA for English would be another option, although I find spelling-out more accessible.

Plural/singular could by specified in the database with an additional \t[form] for each declension of the pronoun on each line. If specifying non-in-database plurals, I propose this URL structure for "natural" structure:

pronoun.is/zerg/rush?pronounced=ZRRG/ROOSH

reads "My pronoun is zerg/rush, and it's pronounced ZRRG/ROOSH"

I do not feel adequately prepared to use a neopronoun when I read the pronoun.is examples, because I don't know how to pronounce the pronouns. This is, in my opinion, a big problem.

I'd be happy to work on this, if this is considered a good idea.

Get DNS set up properly

Currently it's just redirecting from pronoun.is to pronouns.herokuapp.com, but we want pronoun.is to actually stay in the URL bar when people visit the site

Indicate plural verbs in examples

As it is currently:

They went to the park

He went to the park

It is unclear which verb form I should use for the present tense form of demonstrated pronouns.

What would be nice: anything that has a plural verb form, like present tense:

They go to the park

He goes to the park

This way plurality is clearly demonstrated without being confusing. For ease of development, you could easily change the example to:

They walk to the park

He walks to the park

That way all verbs can be "singularized" simply by adding an s.

Plural/singular could by specified in the database with an additional \ttrue|false for "is plural" on each line. If specifying non-in-database plurals, I propose this URL structure for "natural" structure:

pronoun.is/he?verb=plural

reads "My pronoun is he, but I conjugate the verbs as plural."

I do not feel adequately prepared to use a neopronoun when I read the pronoun.is examples, because I don't know how to conjugate the verbs. This is, in my opinion, a big problem.

I'd be happy to work on this, if this is considered a good idea.

Internationalization?

It'd be great to use pronoun.is to communicate pronouns in languages other than English!

Why is this only in English?

There should be more than just English for the web page. There are many people that speak more than English. Please update. It has been months since last update: is this something you are already working on? Thank you.

Use correct verb tense

This could be done by adding an extra field to the db containing either "is" or "are"

Pronunciation guides

Since English's spelling is notoriously inconsistent, it might be helpful to give people a guide to pronunciation for some of these. This would be especially helpful for non-native English speakers, who are probably more likely to make a poor guess of pronunciation.

A given pronoun set might have multiple conceivable pronunciations. I don't think we could really say which is more correct, we can list whichever we're aware of. We'd have to crowdsource these much like we do pronoun sets themselves.

The guides could consist of, for example, International Phonetic Alphabet (e.g. a conceivable pronunciation of “zir” might be UK: /ˈzɜː(ɹ)/, US: /ˈzɝ/ using Wiktionary's English IPA key), re-spelled English (e.g. “zir” might be “zər” using Wikipedia's respelling key), and an intuitive guide (e.g. ‘”zir” is pronounced like “her” but with the “h” replaced with a “z”’).

Thoughts?

Allow pronoun.is/they/or/xe/xir/or/she

This syntax is far friendlier than /they?or=xe/xir&or=she, I think. I don't suppose anyone uses the English connective or as a pronoun, so splitting on ors should be fine.

Make pronoun.is cacheable

There is some part of the http standard (and also of the middleware) that should allow us to mark our pages as not dynamic. This might be useful in the case heroku puts our dyno to sleep or there is a spike in traffic. Not super high priority but I want to know how to do this.

Custom pronoun form

Given that it’s possible to use custom pronouns the site doesn’t know about by filling in the fully-qualified URL, it might be useful to have a form available to make that a bit more user-friendly!

multilingual support, or explain why we don't

We are not going to be able to do justice to non-English languages the way we've done this. That's maybe fine but we should say what we're doing rather than just assume English is a universal language.

First person pronouns

Might you consider adding first person pronouns to the database?

I was trying to use the site to demonstrate the we/us/our/ours/ourselves first person pronouns of this character: http://questionablecontent.net/view.php?comic=3393

I was able to do it but had to manually enter each of the pronouns. It might make sense to include personal pronouns in the database for future use. If this is outside of the scope of your project, I understand and respect your decision.

font rendering problem on windows

A friend of mine reported bad font rendering on Chrome on Windows 7.
example

However, if ve zooms in, apparently it's fine.

I inquired, and ve does have Futura installed, and thinks it's a legit version, not something from a free font site.

Add "please ask" as an option

Some people prefer not to state their pronoun, but be asked for it occasionally. I'm wondering if pronoun.is could support this as an option.

Redirect HTTP to HTTPS and fix cert for subdomains

I read #10, and I see HTTPS was enabled, but there was not strong interest in setting up the redirect. However, I strongly encourage you to redirect traffic.

Folks visiting pronoun.is who are trying to be better humans to their fellow humans shouldn't be subject to their ISP selling their browsing behavior or having malware or ads injected into their browsing. Plain HTTP subjects visitors to risk, no matter how "sensitive" the site is perceived to be.

As for cost (which I see was an issue), you can get free certificates from Let's Encrypt -- or, if you're using an Amazon ELB or CloudFront distribution, you can get free certificates through Amazon Certificate Manager. Both of these are new services that didn't exist when #10 was closed.

HTTP(retentiou)S

nobody in SF will ever look me in the eye again if we serve this this shit over raw http. I truly do not give a fuck but y'know. Support paranoid users using HTTPNowhere, etc.

Reflexive Elverson pronoun should be “emself”

please search the issues for duplicates and read the FAQ
before submitting a new issue :)

Describe the bug
On https://pronoun.is/ey, the reflexive pronoun is given as “eirself”, but this is incorrect. Everywhere else I’ve found online (eg wikipedia, nonbinary wiki, etc.) gives the reflexive form as “emself”. This also matches the parallel construction (everything else is the same as https://pronoun.is/they/.../themself, but with the leading th removed).

[The rest of this template omitted because it isn’t applicable: this is an issue with the database file, so the steps to reproduce are obvious, this is the same on all browsers and OSes, etc.]

No be-verb examples

None of the pronoun examples use a be-verb.

  • "He is over there"
  • "They are over there"
  • "Fey ____ over there"

I can't tell whether "fey" should use "is" or "are."

Add pronounciation to pronouns

Maybe on mouseover, or hidden behind a "show pronounciation" javascript button? Needs some UI thought before implementation.

license

another pretentious thing but let's put a good license on it, why not.

Second singular person problem

Is your feature request related to a problem? Please describe.
I am non native English speaker. I also haven't heard these pronouns. So I meet them and have to learn how to use them. Useful site.

Problem example sentence:

  • He goes where he wants.

And the problem is:

  • They goes where they wants?

or

  • They go where they want?

Second singular usage is not observable in your examples, and it is probably one of the most frequent uses.

Describe the solution you'd like
Well, it's a problem if you don't have a field about forced plurality; but generally requires a new example sentence and a forced plurality check.

Describe alternatives you've considered
Not caring about the problem. ;-)

Additional context
This page is referenced from lots of places, but if one has no prior knowledge of this language feature it's not providing all the info needed for everyday use.

image

I want a picture of what pronoun island looks like. It could look kinda like a blue land in magic the gathering. I wonder if Annie would want to contrib something.

Being discriminated against?

So why are my pronouns being rejected and my title and comment edited? What gives you the right to deny my identity?

If you'd rather I send a pull request - I can. But please communicate that rather than editing my posts.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.